spec-check
Skill1 starsChanged 34 days agoMITView on GitHub
Intent-fidelity check: does the built diff match its spec (a FROZEN SPEC, or the ratified intent /work planned from)? Runs in an isolated fork that sees only the spec and the code, never the build's rationale, and returns a recap: each criterion met / gap / diverged, gaps tagged for the caller, divergences listed for the caller to decide. Chained by /work after the build; standalone on "did we build this to spec?" or "does this match the ticket?". Without a frozen spec it reconstructs one from the ticket and its sources. NOT /code-review (is the code correct), NOT /qa (does it behave).
4 other projects use a version of this.
Adopted by
Most recently taken up by
- matthull/my-skillstheir own version, first seen Oct 20, 2026
- MelbourneDeveloper/dart_nodetheir own version, first seen Oct 9, 2026
- yisean/claude-spec-skillstheir own version, first seen Jun 15, 2026
- p-larsson/spec-orbittheir own version, first seen Jun 5, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- MelbourneDeveloper/dart_node★ 113same name
- p-larsson/spec-orbit★ 2same name
- matthull/my-skills★ 0same name
- yisean/claude-spec-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository56 other files it gives its agents.
- autopilotSkill
- before-afterSkill
- bigpictureSkill
- blast-radiusSkill
- brainstormSkill
- compoundSkill
- confidence-checkSkill
- contextualizeSkill
- create-ship-skillSkill
- create-skillSkill
- curateSkill
- debugSkill
- deep-researchSkill
- devtoolsSkill
- distillSkill
- done-checkSkill
- doneSkill
- double-checkSkill
- envsetSkill
- explainSkill
- fortifySkill
- goSkill
- handoffSkill
- harness-auditSkill
- interviewSkill
- matrixSkill
- mockupSkill
- mutateSkill
- notesSkill
- postmortemSkill
- presentSkill
- qaSkill
- readableSkill
- recommendSkill
- reportSkill
- retireSkill
- review-planSkill
- scoutSkill
- sec-reviewSkill
- setup-ticketingSkill
- setup-worktreesSkill
- specSkill
- stepsSkill
- successionSkill
- super-reviewSkill
- tangentSkill
- tddSkill
- tend-memorySkill
- testSkill
- ticketSkill
- tldrSkill
- triageSkill
- waitSkill
- workSkill
- worth-itSkill
- wrap-upSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 3 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 23
Run in a fork on purpose. The build session has spent hours justifying every shortcut it took.
- Very specific: line 44
Read this skill's references/sources.md (e.g.
- Distinctive: line 71
Don't mark it met.
- Distinctive: line 88
When more than one applies, Status goes to the highest: 🛑 > ⚠️ > 🔧 > ✅.
“Common” is measured: kept by at least 6 in 10 of the 3 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.
Files
Answer one question: does the built thing match what was agreed? Whether the code is
correct and whether it runs are /code-review and /qa's questions. This is intent in,
conformance out.
Run in a fork on purpose. The build session has spent hours justifying every shortcut it took; you haven't. You see only the spec and the code. That separation is the value, so don't go looking for the build's reasoning in order to excuse a gap. Use it only to classify a divergence (step 3).
1. Load the spec
Find the baseline in this order:
- The spec location in the args — a ticket key (read its newest comment starting
🔒 FROZEN SPEC), a memory or handoff path (read the file), or the user's approving words quoted inline. A handoff or quoted scope is the spec; don't reconstruct around it. A handoff is AI-written, so anything it narrows or drops from the ticket's criteria is a divergence, not part of the spec. - By scope — the ticket's newest
🔒 FROZEN SPECcomment, else aspec-*memory whose title matches (scan the memory index).
Found one → it is the spec. Do one cheap drift check: is there a ticket comment dated after the freeze (or the handoff or approval) that changes the ask? Carry any such drift as a divergence; don't rebuild the spec around it.
No frozen spec (an old ticket, or a standalone ask on specless work) → reconstruct one.
Read this skill's references/sources.md (e.g.
~/.claude/skills/spec-check/references/sources.md) and follow it. It maps each project to
its sources and gives the rules for reconciling an ask that changed over time. Chained runs
from /work usually take this path too when they pass only a ticket key: /work treats
ratified ticket criteria as the spec rather than re-freezing them.
2. Load what was built
The diff in the args (git -C <worktree> diff <base ref>...HEAD plus untracked files from
git status --porcelain, because /work doesn't commit). If there's no diff arg, use the
ticket's landed commits or branch. Read the code behind each in-scope item. You're reading
what the code says it does, not running it.
3. Compare
For each in-scope item and each success criterion, pick one:
- met — the code does it. Cite
file:line. - gap — the code doesn't do it, or does part of it. Tag it:
[caller-resolvable]: the missing piece is buildable from the spec as written. The caller builds it.[needs-user]: building it needs a decision the spec doesn't contain.
- diverged — the code deliberately does something other than the spec says, such as
a narrower rule, an extra behavior, or a different UX. Report it; don't judge it. The
caller holds the build's context and decides whether it stands (
/workstep 3b). - unverifiable here — the criterion's check is
QA:, so it's proven by a browser walk, not by reading. Pass the walk item through to the recap so the QA pass can pick it up. Don't mark it met.
Also check the Deferred list. A deferred item that shows up in the build anyway is scope creep: mark it diverged.
4. Recap — always the last thing you emit
### Spec-check Recap
**Status:** <✅ built to spec | 🔧 gaps owed — caller-resolvable | ⚠️ diverged and/or gaps needing a decision | 🛑 can't verify — <why>>
**Spec:** <ticket key, when there is one · location · frozen <date> | handoff | quoted | reconstructed · drift since: none | <what>>
| # | Item / criterion | Verdict | Evidence / note |
**Gaps:** <each: what's missing · tag · where it belongs> | none
**Built differently:** <each divergence: what the spec said → what was built · what changes for a user> | none
**QA walk:** <criteria only a browser walk can prove> | noneWhen more than one applies, Status goes to the highest: 🛑 > ⚠️ > 🔧 > ✅. 🛑 is for when there's nothing to measure against: no spec findable and nothing to reconstruct from, or no diff. It's never for a hard verdict. Write each Built-differently item in plain terms, for a reader who never saw the build: what a user would notice, not which function moved.
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.

