Skip to main content
General

check-project

Validate project structure against scaffold conventions -- check for required files, CI consistency, documentation completeness, sub-package/workspace members, and optional directory usage, reporting PASS/WARN/FAIL with fix suggestions. Use to audit an existing project or verify a scaffold was applied correctly. Do NOT use to create or modify project files; this is a read-only auditor (use the scaffold-* skills to generate structure).

check-project

Check Project

Audit a project against the conventions defined in scaffold-project, write-readme, and the language-specific scaffold skills. Report PASS/WARN/FAIL per check with actionable fix suggestions.

Required Files

Every project must have these. Report FAIL if missing:

FileWhat to Check
README.mdExists; has centered header block
AGENTS.mdExists
LICENSEExists; contains “Apache”
CONTRIBUTING.mdExists
CODE_OF_CONDUCT.mdExists; Contributor Covenant 2.1 (see community-health)
SECURITY.mdExists; has vulnerability reporting instructions; no unrendered {REPO} or {CURRENT_MAJOR} placeholders; contact matches $PROJECT_CONTACT or git config user.email
.github/pull_request_template.mdExists; has Summary, Changes, Verification sections; no unrendered {CHECK_COMMAND} placeholder (see community-health)
.github/ISSUE_TEMPLATE/bug_report.ymlExists; YAML issue form (see community-health)
.github/ISSUE_TEMPLATE/feature_request.ymlExists; YAML issue form (see community-health)
.github/ISSUE_TEMPLATE/config.ymlExists; blank_issues_enabled: false; contact links for security + discussions (see community-health)
sr.yamlExists; has git.tag_prefix: "v" and git.floating_tag: true
.envrcExists (direnv config: layout, dotenv, env vars, etc.)
llms.txtExists
skills/*/SKILL.mdAt least one skill exists
.github/workflows/ci.ymlExists (or terraform.yml for Terraform projects)
.github/workflows/release.ymlExists (or terraform.yml for Terraform projects)

Documentation Completeness

Report WARN if missing:

FileCondition
docs/Directory should exist in every non-trivial project
CHANGELOG.mdShould exist after first release (auto-generated by sr)
CODEOWNERSShould exist for team projects with multiple contributors

CI Consistency

Check workflow files for convention compliance. Report FAIL if violated:

CheckExpected
ci.yml permissionscontents: read at workflow level
ci.yml workflow_callPresent in on: triggers
ci.yml concurrencycancel-in-progress: true
release.yml concurrencycancel-in-progress: false
release.yml CI gateuses: ./.github/workflows/ci.yml
release.yml bot skipgithub.actor != 'sr[bot]'
release.yml force dispatchworkflow_dispatch with force boolean input

Optional Directory Checks

Report WARN (not FAIL) when conventions suggest a directory should exist:

ConditionExpected
teasr.toml existsshowcase/ directory should exist
Project is a library (has pkg/, exports in package.json, or [project.scripts] in pyproject.toml)examples/ directory should exist
Project has API routes or consumes external APIsspec/ directory should exist
examples/ existsexamples/basic/ (or equivalent simplest example) should exist

README Checks

Report WARN if:

CheckExpected
Demo image pathReferences showcase/ (not assets/)
Quick Start sectionExists with “Quick Start” heading
fsrc markersNot stale (content between markers matches referenced files)
Section orderFeatures before Installation before Quick Start

Sub-Package Checks

For workspace projects (Cargo workspace, npm workspaces, etc.), audit each publishable member. Report FAIL if missing:

CheckExpected
LICENSE in each workspace memberExists; matches root LICENSE
README.md in each workspace memberExists; has crate name as heading

Skip examples/ workspace members — they are not published independently.

How to Run

  1. Detect the project language from manifest files (Cargo.toml, go.mod, pyproject.toml, package.json, main.tf)
  2. Run all required file checks
  3. Run documentation completeness checks
  4. Run CI consistency checks
  5. Run optional directory checks based on detected project type
  6. If workspace detected, run sub-package checks on each publishable member
  7. Run README checks
  8. Report results grouped by severity: FAIL first, then WARN, then PASS

Output Format

## Project Audit: {project-name}

### FAIL (must fix)
- [ ] Missing SECURITY.md -- create with vulnerability reporting instructions
- [ ] ci.yml missing `permissions: contents: read` -- add at workflow level

### WARN (should fix)
- [ ] Missing docs/ directory -- create with at least architecture.md
- [ ] teasr.toml exists but no showcase/ directory -- run `teasr showme`
- [ ] Library project without examples/ -- add examples/basic/ with minimal usage
- [ ] Missing CHANGELOG.md -- will be created on first `sr release`

### PASS
- [x] README.md with centered header
- [x] sr.yaml with floating_tag and v prefix
- [x] CI gates release, bot skip present
- [x] CONTRIBUTING.md present
- [x] llms.txt present