spec-review
Skill3 starsChanged 3 months agoMITView on GitHub
Run a cold Gate-1 spec review against a GitHub work-item issue. Use when a GH issue body needs reviewing AS A SPEC (not as code, not as a build request) — "spec review", "Gate 1", "review the issue as a spec", "/spec-review <issue>". Spawns a fresh subagent that reads only the published issue, reports findings, and never implements.
47 other projects use a version of this.
Adopted by
Most recently taken up by
- utopia-rise/fmod-gdextensiontheir own version, first seen Nov 9, 2026
- crsmithdev/alephtheir own version, first seen Nov 8, 2026
- maxatwork/skillstheir own version, first seen Nov 8, 2026
- salasebas/skillstheir own version, first seen Nov 8, 2026
- komluk/scaffoldingtheir own version, first seen Nov 7, 2026
- rioffe/specchecktheir own version, first seen Nov 6, 2026
Used with
Projects with it also use get-pr-reviews, push-everything and 10 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-healthSkillget-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-healthSkillpush-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
NVIDIASkillgenerate-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
telefrekSkillspec-init
Bootstrap the spec corpus for this project
Also in 3 projects that use this
AWSSkillimplement-spec
Implement the result of /to-spec and /to-tickets in code.
Also in 8 projects that use this
ArvorCoSkillspecify
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
- +2 more from saffron-health
Other versions47 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 47
- microsoft/winappCli★ 1.4ksame name
- utopia-rise/godot-kotlin-jvm★ 995same name
- utopia-rise/fmod-gdextension★ 954same name
- cashew-labs/libretto★ 898same name
- saffron-health/libretto★ 883same name
- liza-mas/liza★ 418same name
- HHU3637kr/skills★ 146same name
- saffron-health/opencode-gui★ 59same name
- agent-ix/quoin★ 20same name
- microsoft/WinAppVSCE★ 18same name
37 more not listed
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 repository4 other files it gives its agents.
- brevity-enforcerSkill
- claims-verifierSkill
- pr-neighborsSkill
- senior-code-reviewSkill
The file
We split this skill into the rules it gives an agent
12 rules. 0 are common, 10 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 43 edited versions we read keep these.
10
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 11
Document. The reviewer is a fresh subagent invocation.
- Distinctive: line 45
Keep two files per ticket, wherever your team keeps its work-item records:
- Very specific: line 60
Run a pass (below). Append the raw output to spec-review.md under the next ## Pass N.
- Distinctive: line 70
Do not post the review to the issue without the Architect's per-draft approval.
- Distinctive: line 108
Do NOT write, modify, or delete any repository file.
- Distinctive: line 110
Do NOT write code, pseudo-code, method bodies, SOQL, or metadata XML anywhere, including inside a finding as an illustration.
- Distinctive: line 112
Do NOT open a pull request, push a branch, or post a comment.
- Distinctive: line 113
Do NOT propose an implementation approach.
- Distinctive: line 138
Default CMDT record must carry explicit values or production reads null"), keep the requirement and drop the mechanic.
- Distinctive: line 146
SHOULD where a justified deviation is possible, MAY where it is genuinely discretionary.
- Distinctive: line 153
Completeness: No missing stakeholder, non-functional requirement, or edge case.
- Very specific: line 191
If none, write _None_.
“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.
Files
Spec review (Gate 1)
Runs one cold pass over a GitHub work-item issue treated as the Software Design Document. The reviewer is a fresh subagent invocation; it reads the published issue body and reports findings. Nothing is built.
Throughout, the Architect means the human who owns the spec and declares the gate green.
Why a subagent and not this session
The session that authored the spec cannot review it. A fresh invocation is the structural independence reset — a fresh window resets memory, but a separate invocation is what establishes production independence. Never review a spec you wrote in the same context.
Inputs the reviewer gets, and nothing else
- The issue number and the repo (
owner/name). - The tracker ticket ID, so it can read the SRS. This gate checks that the SDD faithfully encodes the SRS, so withholding the SRS makes that uncheckable — and invites the reviewer to demand a Requirements section the house SDD skeleton deliberately does not have. The SRS is a source artifact, not deliberation.
- The path to
CONSTITUTION.mdin the local checkout. If that checkout is a stale mirror, tell the reviewer to read it fromorigin/maininstead. - The prompt below, verbatim.
It fetches both bodies itself. Do not paste them in, do not summarise them, and do not mention what you think is wrong with either.
Never pass prior-pass findings, your own reasoning, or the ticket's internal rationale. Those are the deliberation record. Feeding any of them back means the pass returns your own conclusions instead of an independent read.
Where the record lives
Keep two files per ticket, wherever your team keeps its work-item records:
work-item.md— the spec body. The authoring surface.spec-review.md— every pass appended under a## Pass Nheading, with the disposition written under each finding.
Edit work-item.md, then push it. Never edit the issue body on GitHub
directly. One direction only is what keeps the two from drifting.
gh issue edit <N> --repo <owner>/<name> --body-file <path>/work-item.mdThe loop
- Run a pass (below). Append the raw output to
spec-review.mdunder the next## Pass N. - Work the findings one at a time with the Architect — fix / accept with a stated reason / below the altitude fence. Write each disposition under its finding. Never revise the spec off a batch of findings unilaterally.
- Apply the survivors to
work-item.md, push to GitHub, run the next pass cold. - Converged when a pass returns zero findings against a body unchanged since a distinct reviewer last cleared it. Findings at this gate get fixed, not waived. The Architect declares green; never propose calling it green.
Do not post the review to the issue without the Architect's per-draft approval.
Running a pass
Spawn one subagent with run_in_background: false. Restrict it to read-only
tools: Bash(gh issue view:*), Read, Grep, Glob. No Write, no Edit.
With no write tool at all, an implementation attempt is structurally impossible
rather than merely forbidden, and no stray file lands in the repo. The review
comes back as the subagent's return text; you append it to spec-review.md.
Prompt, verbatim, substituting the issue number, repo, ticket ID, and Constitution path:
You are reviewing GitHub issue #<N> in <repo> as a specification. You are not
a code reviewer and you are not the implementer. Nothing is built in this pass.
Fetch both artifacts yourself:
gh issue view <N> --repo <repo> — the SDD under review
the tracker ticket <TICKET> — the SRS it must faithfully encode
What you are reviewing
The issue body is the Software Design Document: the technical contract a future
PR will implement. The house skeleton sections on ###, not ##: Linear
Ticket Number, Work Type, Description, Architectural Notes, and
Acceptance Criteria. There is deliberately no Requirements section — the
tracker ticket is the Software Requirements Specification, and requirements in
EARS form live there. Check that every SRS requirement is encoded and that no
acceptance criterion is ungoverned; do not ask the SDD to restate the SRS. Read it against <constitution-path> and
any ADR or design doc it links. You may read repository source only to verify
a factual claim the spec makes — that a named precedent class exists, that a
cited section says what the spec says it says, that a planned class name fits the
40-character limit. You may not read source to plan an implementation.
Hard prohibitions
- Do NOT write, modify, or delete any repository file. Your single write is the review file named at the end.
- Do NOT write code, pseudo-code, method bodies, SOQL, or metadata XML anywhere, including inside a finding as an illustration.
- Do NOT open a pull request, push a branch, or post a comment.
- Do NOT propose an implementation approach. Where the spec has decided something, test whether the decision is stated well enough to build from. Do not offer a different decision.
Hold the altitude
Many work-item issues open with a Review scope / altitude blockquote naming
the build-time mechanics held out of scope. If one is present, honour it as
written — findings below that fence are out of scope and must not be raised.
If there is no such blockquote, apply the default fence below and say in your Observations that the issue carries no explicit altitude statement. Do not infer a fence from the issue's contents, and do not treat its absence as licence to review build mechanics. Most issues do not carry one, so this is the common case, not the exception.
Fenced, so not review material: query-build paths, DML call shapes, assertion helper choices, cron string internals, exact XML element form, and any other coding of an already-decided contract.
In scope regardless of the fence: the behavioural contract, method signatures and return types, security context, flag and state lifecycles, the acceptance criteria, and the named deliverables.
One narrow exception. When a genuine deliverable is dressed as a mechanic ("the Default CMDT record must carry explicit values or production reads null"), keep the requirement and drop the mechanic. State it as a requirement the spec is missing, never as the XML that would satisfy it.
What to check
Requirements. Modally conformant: every requirement carries a capitalised RFC 2119 keyword as clarified by RFC 8174 — MUST for an absolute requirement, SHOULD where a justified deviation is possible, MAY where it is genuinely discretionary. Prefer MUST over SHALL; they bind identically and MUST is the plainer word. A lowercase should, may, could, or might binds nothing and is a finding. Each requirement semantically unambiguous, testable without reading code, and describing WHAT the system does rather than HOW it is built. No two contradict each other.
Completeness. No missing stakeholder, non-functional requirement, or edge case. A requirement the acceptance criteria do not cover, and an acceptance criterion with no governing requirement, are both findings.
Acceptance criteria. Given / When / Then scenarios, not declarative checkboxes. Grouped under the three confirmation categories, each in the right one: a scenario a test proves does not belong under manual validation, and one needing a human does not belong under automated. Each mechanically verifiable by an engineer without interpretation.
Architectural Notes. Decisions, not restated requirements. Deep rationale cited to the ADR rather than reproduced. A note that only repeats a requirement is a finding; so is a note that has quietly become a draft implementation.
External behaviour is flagged, not pinned. Where the spec relies on the behaviour of something not visible from the repo — a managed package, a host API, a platform quirk — it must be marked as a reliance to verify against reality, not asserted as a design pin. You cannot validate such a claim, so do not reason about whether it is true. Flag any stated as settled fact.
Non-contradiction with the Constitution. The spec may not silently violate a rule; if it must, the Constitution is amended first. A deliberate, explicitly named deviation with a stated reason is not a finding. An unnamed one is.
Housekeeping. Planned class names within 40 characters. No tracker ID destined to ship in committed code, comments, strings, or tests.
Output
Return your review as your final message. Markdown, no wrapper tags. Write no files.
Verdict: one of Green — no findings or Findings to clear
Findings
Numbered. Each names the section of the issue it applies to, states the gap in
one or two sentences, and says what the spec would need to say instead. No code.
If none, write _None_.
Observations
Non-blocking, same form. If none, write _None_.
Findings at this gate get fixed, not waived. Do not offer a verdict on whether to proceed — that decision is the Architect's.
Related
The cold-read independence rule, the finding lifecycle, and the rule against
tuning a trigger for a cleaner result are shared with the senior-code-review
skill in this repo, and with claims-verifier, which does the same job for a
document's factual claims. What a compliant SDD contains and the altitude fence
the reviewer honours are both stated in the prompt above, so the skill is
self-contained; where your team has its own spec-authoring guide, that guide
sets the house form of the skeleton and this file is the review procedure under
it.
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.

