Cross-artefact consistency and quality review of an approved or draft SPEC. Use when the user says "review SPEC-NNN," before `implement-spec` runs, or by `draft-spec` / `revise-spec` before opening or updating a spec PR. Checks the SPEC against the constitution, ADRs, parent epic (if any), and tech debt register. Read-only — produces a structured report, never edits files.
78
90%
Does it follow best practices?
Impact
80%
1.42xAverage score across 1 eval scenario
Passed
No known issues
Use this skill to gate a SPEC between Draft and Approved, or between
Approved and implement-spec. Also suitable for ad-hoc consistency
checks on a SPEC the user references by number.
Do not use this skill to write or edit a SPEC. It is read-only by design — the report goes to the human, who decides what to change.
The user will identify the SPEC by number (e.g. "review SPEC-005"). If ambiguous, ask. Do not guess.
docs/specs/SPEC-NNN-*.md.Parent epic: field is not —, read that epic file end-to-end
(docs/epics/EPIC-MMM-*.md). Pay close attention to §6 (non-goals),
§7 (slice table), and §10 (cross-cutting decisions).CONSTITUTION.md.docs/decisions/README.md to scan ADR titles. Then read any specific
ADRs that the SPEC references in §13 or that are obviously implicated by
the SPEC's subject area (e.g. SPEC touches money → read ADR 038; SPEC adds
a /api/v1/* route → read ADR 050).docs/tech-debt.md (Outstanding Items table only).For each finding, record severity: Critical (blocks implementation), Warning (should be fixed or explicitly justified), Suggestion (consider).
Check the SPEC against CONSTITUTION.md and the ADRs you loaded.
Examples of what to flag:
Result (ADR 038)./api/v1/* route whose error envelope or status codes disagree with
ADR 050 / docs/api-conventions.md.Constitution / ADR violations are Critical by default. They cannot be downgraded by reinterpretation — surface them and let the human decide.
Search the SPEC body for unresolved language:
TBD, TODO, XXX, ???, [?], <placeholder>,
FIXME.probably, maybe, might, we could,
should consider, not sure whether.… in design sections.§14 ("Risks & open questions") is the correct home for unresolved items — hedging there is fine. Anywhere else, flag as Warning (or Critical if the ambiguity blocks the very first step of §12).
Mid-deliberation prose is a Warning, not a Suggestion. Watch for passages where the SPEC narrates the process of deciding rather than stating the outcome. Tell-tale shape:
"X would be ugly. Cleaner: Y or Z. Decision: Y. Added as ..."
Both the rejected option and the chosen option end up in the final design section. A future reader (or implementer) has to re-derive which sentences describe the final design and which describe the path not taken. This pattern empirically correlates with deviations at implementation time — the decision wasn't fully made when the SPEC was approved.
Rewrite rule when you flag this: the final design section should describe the chosen design as a fact. Rejected alternatives belong in the draft brief or in a dedicated "Alternatives considered" subsection, not interleaved with the decided design.
Phrases that should trigger this check:
would be ugly, would be cleaner, would be nicerinline X or split it into Y, either ... or ...**Decision: ...** or Decision: ... inside a design section (the
decision marker itself signals the surrounding prose was deliberation)N/A without a reason → Warning. Template requires
N/A — [reason].N/A for a SPEC that clearly handles user data, auth,
or money → Critical, regardless of stated reason.N/A for a SPEC touching production data, auth, or
money → Critical.For each Outstanding Item in docs/tech-debt.md:
Produce a structured report directly to the user. Use this template verbatim:
the four section headings (## Critical, ## Warnings, ## Suggestions,
## Passes with no findings) and the Verdict — exactly one of Ready for implementation, Needs revision, Blocked — are a fixed contract. Do not
reword the verdict (no "Approve"/"LGTM") or invent a different structure.
# Review of SPEC-NNN — <title>
**Verdict:** Ready for implementation | Needs revision | Blocked
## Critical
- [Section §N] <finding> — <why it blocks>
## Warnings
- [Section §N] <finding> — <suggested fix>
## Suggestions
- [Section §N] <finding>
## Passes with no findings
- e.g. "Pass 2 — Epic alignment: clean"Rules:
revise-spec + ai:revise-now) resolve it, or fall back to an
interactive agent-skills:grill-me session on the specific point.implement-spec even if the verdict is Ready —
proceeding is a human decision.draft-spec / revise-spec to rewrite the SPEC. Report and stop.