agentleFS
oneafrikanoneafrikan/the-grid/skills/spec-scout/SKILL.md

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".

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
  1. Very specific:

    Default target is the current repo.

    line 21
  2. Very specific:

    Read sections/drift-signals.md for the signals to check.

    line 50
  3. Very specific:

    If the openspec CLI is installed, run its own validation and fold the output in:

    line 54
  4. Distinctive:

    If the CLI is missing, note it and skip — do not install it, and do not hand-roll the check.

    line 61
  5. Distinctive:

    Every finding cites a file path, and a line number where one applies.

    line 77
  6. Very specific:

    Never edit openspec/specs/ to "fix" drift.

    line 97
  7. Distinctive:

    Keep the report short enough to read in one screen per repo.

    line 100
  8. Distinctive:

    Read a section only when its condition applies.

    line 104

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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/:

StateSignal
noneNo openspec/ directory
initialisedopenspec/ exists, specs/ empty or absent
activeopenspec/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>/ (excluding archive/).
  • 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 || true

If 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 change

Notes

  • Absence of a spec is not automatically a defect. SPECS.md prescribes 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)

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.