agentleFS
stjarnstromstjarnstrom/spec-system/skills/spec-review/SKILL.md

spec-review

Skill0 starsChanged 46 days agoMITView on GitHub

Review a diff against the spec layer in specs/ — does the change contradict a pinned spec statement, or change owned behaviour with no amendment? Use when the user asks to spec-review a branch, PR, commit range, or working-tree changes, or invokes /spec-review. Reviews against specs only; the review skill runs this beside a standards review.

47 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use get-pr-reviews, push-everything and 9 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • saffron-healthSkill

    get-pr-reviews

    Get nicely formatted output of the last review comments on a PR. Used internally by other skills.

    Also in 3 projects that use this

  • saffron-healthSkill

    push-everything

    Stage ALL changes in the repository (not just session changes), commit, and push. Use when you need to commit all pending changes.

    Also in 3 projects that use this

  • NVIDIASkill

    generate-spec

    Produce a feature specification covering API changes, backward compatibility, cross-language impact, performance, and a file-level change plan. Use when designing a new feature, planning a significant change, or the user asks to spec something out.

    Also in 3 projects that use this

  • AWSSkill

    implement-spec

    Implement the result of /to-spec and /to-tickets in code.

    Also in 8 projects that use this

  • ArvorCoSkill

    specify

    Create feature specification from natural language description. Use when starting a new feature or creating a spec. Triggers on: create spec, specify feature, new feature spec.

    Also in 3 projects that use this

  • YougLin-devSkill

    plan-review

    Reviews and adjusts PRD plans based on research findings. Use after completing research to evaluate story modifications. Triggers on: review plan, adjust stories, update prd based on research.

    Also in 3 projects that use this

  • +2 more from saffron-health

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 2 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 43 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Gate: Run node specs/registry.mjs check.

    line 21
  2. Very specific:

    If a touched capability's spec file no longer matches its pin, an amendment is outstanding — check the diff against the plan's tasks and …

    line 63
  3. Very specific:

    If the diff deletes or weakens a test named in a verified-by:, flag it — evidence is detaching from a statement.

    line 67
  4. Distinctive:

    Do not propose spec edits inline — findings say *what* contradicts.

    line 82
  5. Distinctive:

    If every touched file is seam or unowned, say so in one line and stop.

    line 84

“Common” is measured: kept by at least 6 in 10 of the 43 edited versions of this file we could read. “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

Review the given diff against the spec layer. The registry is the substrate: never re-derive capability boundaries from the code.

Inputs

The argument is a diff target: a base ref (main), a range (a..b), a commit, or nothing (default: working tree + staged vs HEAD; if clean, HEAD~1..HEAD).

Procedure

  1. Gate. Run node specs/registry.mjs check. If it fails, report that first and stop — reviewing against a broken registry proves nothing. A VIOLATED invariant caused by this diff is already a finding.
  2. Ownership. git diff --name-only <target> | xargs node specs/registry.mjs owns Partition the files:
    • Owned by a pinned capability → review (steps 3–5).
    • (tests <src>) → evidence for that capability; check step 5.
    • Seam → no spec delta by definition. Comment only if the diff makes a seam carry behaviour (then the finding is "this belongs in a capability").
    • Unowned → silence. Not this review's business.
  3. Read the touched statements, not the whole spec. For each touched capability open specs/<spec>.md and run

    git diff --stat <target> | node ${CLAUDE_PLUGIN_ROOT}/scripts/openrouter.mjs review --spec specs/<spec>.md

    For each statement in the JSON, mustRead: false means a heading skim is enough. mustRead: true, or "acted": false, means read that block in full. The prior is not a verdict: you still judge every block you read, you still cite file:line, and a statement the diff obviously touches gets read even when the prior said otherwise. With no key the script does not act and this step is the manual selection it always was — match on the functions, channels, messages, and fields the diff changes, read those blocks in full, and skim headings for ones you may have missed.

  4. Judge each selected statement against the diff, one of:
    • CONSISTENT — the change preserves the stated behaviour.
    • CONTRADICTS <ID> — the diff makes the statement false and no amendment accompanies it. Quote the statement, cite the diff hunk. This is the finding that matters most.
    • DRIFT — the diff adds or changes observable behaviour of owned paths that no statement covers and no amendment introduces. Spec-first means this arrives as an amendment; say which section of the spec it belongs in.
    • RESOLVES <U-ID> — the diff answers an open uncertainty in code. Flag it: the answer belongs in the spec, not only in the diff. If the choice was hard to reverse, surprising, and a real trade-off, say that the reasoning belongs in an ADR with registry.yaml pointing at it (FORMAT.md, "Recording a decision as an ADR") — never in the spec file.
  5. Pins and plans. From the owns output:
    • If a touched capability's spec file no longer matches its pin, an amendment is outstanding — check the diff against the plan's tasks and say which statements it satisfies. Remind that the pin move (registry.mjs pin) is the last act.
    • If the diff deletes or weakens a test named in a verified-by:, flag it — evidence is detaching from a statement.
  6. Report. Per capability: pin state, then findings as <VERDICT> <statement-id> — one sentence + file:line. End with a one-line overall: clean, needs amendment, or contradicts pinned spec. No general code-quality commentary — that is the standards axis of spec-system:review.

Rules

  • Statement IDs are the language. Every finding cites one, or names the spec section where a missing statement belongs.
  • An uncertainty (-U-) is not a licence: code that picks a side of an open uncertainty without recording the answer is a finding, not a resolution.
  • Do not propose spec edits inline — findings say what contradicts; the amendment (spec-amend) decides how the spec moves.
  • If every touched file is seam or unowned, say so in one line and stop.

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.