spec-scout
Skill4 starsChanged 8 days agoMITView on GitHub
Audit a repo's OpenSpec adoption and report drift between openspec/specs/ and the code. Use when the user says "spec-scout", "audit specs", "are our specs current" or "check spec drift".
In this repository15 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- cavemanSkill
- gh-issues-by-severitySkill
- grid-helpSkill
- grill-meSkill
- growth-psychSkill
- handoffSkill
- mine-learningsSkill
- openspec-helpSkill
- rubber-duckSkill
- setup-repo-skillsSkill
- skill-scoutSkill
- standupSkill
- tightenSkill
- un-claudishSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 4 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 21
Default target is the current repo.
- Very specific: line 50
Read sections/drift-signals.md for the signals to check.
- Very specific: line 54
If the openspec CLI is installed, run its own validation and fold the output in:
- Distinctive: line 61
If the CLI is missing, note it and skip — do not install it, and do not hand-roll the check.
- Distinctive: line 77
Every finding cites a file path, and a line number where one applies.
- Very specific: line 97
Never edit openspec/specs/ to "fix" drift.
- Distinctive: line 100
Keep the report short enough to read in one screen per repo.
- Distinctive: line 104
Read a section only when its condition applies.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
spec-scout
The skill-scout shape, pointed at specs instead of skills: survey and
propose, never act. Reports adoption status and drift; does not run
openspec init, does not write specs, does not edit openspec/. The user
decides what to fix — and fixes go through the normal
/openspec-propose → review → /openspec-apply-change flow, not through this
skill.
Convention reference: project-factory/templates/_common/SPECS.md.
Requires the openspec CLI only for the optional validation step (step 4);
everything else is filesystem reads and git.
Scope
Default target is the current repo. If the user names a directory of repos
(e.g. ~/code), scan each immediate subdirectory that is a git repo and report
a summary table first, then detail only the ones with findings.
How to run
1. Classify adoption
For each target repo, check for openspec/:
| State | Signal |
| none | No openspec/ directory |
| initialised | openspec/ exists, specs/ empty or absent |
| active | openspec/specs/*/spec.md exists |
For none, say so in one line and stop there for that repo — a repo with no specs has no drift to report, only a decision to make. Don't lecture.
2. Inventory
For an active repo, list:
- Capabilities: each
openspec/specs/<capability>/spec.md. - In-flight changes: each
openspec/changes/<id>/(excludingarchive/). - Archived changes: count from
openspec/changes/archive/.
3. Drift signals
Read sections/drift-signals.md for the signals to check.
4. Validate (optional)
If the openspec CLI is installed, run its own validation and fold the output
in:
openspec validate 2>&1 || trueIf the CLI is missing, note it and skip — do not install it, and do not hand-roll the check.
5. Report
## <repo> — <state>
Capabilities: N In-flight: N Archived: N
| Finding | Where | Evidence | Suggested next step |
|---|---|---|---|Rules for the report:
- Every finding cites a file path, and a line number where one applies.
- "Evidence" is what you observed, not what you infer from it.
- Rank by cost of being wrong: contradicted specs first, then stale changes, then coverage gaps.
- Separate confirmed (you read both sides) from suspected (heuristic match only). Never present a heuristic hit as a confirmed contradiction.
- End with the exact commands the user would run, but do not run them:
openspec init # adopt (state: none)
/openspec-propose <change> # fix drift the normal way
/openspec-archive-change # close out a finished changeNotes
- Absence of a spec is not automatically a defect.
SPECS.mdprescribes incremental adoption, so a brownfield repo with three specs and forty modules is following the convention correctly, not failing it. Report coverage as a fact; only call it a gap where the code is actively changing. - Never edit
openspec/specs/to "fix" drift. Deltas go in a change folder — editing current-truth specs directly is exactly the failure mode the convention prevents. - Keep the report short enough to read in one screen per repo. Detail belongs behind the file paths.
Sections
Read a section only when its condition applies; do not preload them.
- sections/drift-signals.md: read when running step 3 (drift signals)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

