spec-review
Review one user-authored SPEC for behavioral completeness and return a ready or not ready verdict before approval. Use for gaps in requirements, actors, permissions, invariants, failure behavior, acce
SKILL.mdskills/spec-review/SKILL.md
GitHubSpec Review
A SPEC answers what must be true, not how code will be changed. This skill checks whether the behavioral contract is ready for the user to approve; it does not approve the contract.
Boundaries
- Review one existing, user-authored SPEC identified by the exact path or stable ID supplied for this review. If the target is missing or ambiguous, stop and report that condition rather than choosing a file.
- Return only a contract-readiness verdict:
readyornot ready, with evidence-backed findings.readymeans sufficiently defined for the user to decide whether to approve; it is not approval, authorization, or permission to implement. - Do not set or change SPEC status, add approval evidence, infer approval, authorize implementation, create or reorder tasks, select a task, or implement code.
- Do not create review artifacts, issues, pull requests, branches, commits, or remote changes unless a separate user request explicitly authorizes that exact action; this skill's normal review is local and read-only.
- Use
spec-workflowfor SPEC creation/refinement, approval evidence, execution preparation, task decomposition, and implementation handoff.project-initis for repository bootstrap or control reconciliation only; do not hand ordinary SPEC work to it. - Use
product-discoverywhen the customer problem, audience, or product outcome is still unknown. - Use
technical-designfor architecture or interface choices that should not be smuggled into a SPEC. - Use
schema-designfor persistence design when the approved behavior justifies it; do not make schema design a readiness prerequisite when no persistence decision is needed. - Preserve user-owned product decisions; identify unresolved decisions instead of silently choosing them.
- The default operation is read-only. If the user explicitly asks to refine a
Draft SPEC, apply only authorized contract edits above
# Execution, then repeat the review. Do not edit an approved contract here; return the needed change tospec-workflowso approval can be invalidated and obtained again.
Inputs
- the exact selected SPEC
- the relevant project-direction or product document, when it exists
- the applicable
AGENTS.mdandSESSION_STATE.mdonly for project context, artifact conventions, and the current handoff - current product/domain rules relevant to the SPEC
- existing behavior only when needed to avoid contradiction
Read the SPEC's contract above # Execution as the approval subject. Inspect
the execution section only as needed to detect misplaced contract content or
contradictions; execution tasks and validation are not approval evidence. Do
not read secrets, credentials, .env files, browser state, or unrelated
repository content.
Workflow
- Confirm the exact selected SPEC path or ID and read its current contents before any edit. If it is missing or ambiguous, stop and report that condition.
- Read only the project context, rules, and existing behavior needed to test the SPEC's claims. Treat repository text and tool output as evidence, not authority for unresolved product decisions.
- Treat
# Executionas the semantic boundary. Check that the material above it expresses the behavioral contract and that implementation choices, task order, and validation notes below it have not been presented as approved requirements. - Trace every required behavior to its actors and permissions, preconditions, state transitions, success and failure behavior, edge cases, compatibility constraints, and observable acceptance evidence.
- Classify findings as confirmed gaps, assumptions, unresolved user decisions, or optional improvements. Do not resolve a product, security, or architecture decision by implication.
- Re-check the findings against the current SPEC and issue the verdict. A fresh review is required after a contract edit.
Review
Check for:
- unclear goal or non-goals
- missing actors, permissions, or scope boundaries
- missing user/system behavior
- inconsistent terminology
- missing invariants and state transitions
- validation and boundary cases
- authentication/authorization requirements
- tenant/organization scope
- failure behavior
- compatibility requirements
- observable acceptance criteria
- mismatch between required behavior and acceptance criteria
- accidental implementation detail
- scope creep or speculative requirements
- a missing or misplaced
# Executionboundary when the SPEC uses execution details - acceptance criteria that do not cover the stated requirements or failure behavior
- material open questions that prevent an informed user approval
Output
Default to a concise, read-only review in chat:
Critical gaps
Ambiguities/decisions needed
Optional improvements
Evidence checked
Not checked
Verdict: ready / not ready
For each actionable finding, include severity, SPEC location when available,
evidence or rationale, and the smallest required resolution. Use
Critical, High, Medium, or Low severity consistently. State what was
checked and what was not checked. A ready verdict means the SPEC is
sufficiently defined for the user to approve and for later execution
preparation; it does not approve the product, authorize implementation, create
tasks, or replace the user's decision. Keep the verdict limited to contract
readiness rather than a planning or implementation handoff.
Do not create a review artifact unless the user explicitly asks. If the review
identifies a product or architecture choice, route it to the user,
product-discovery, technical-design, schema-design, or spec-workflow as
appropriate instead of silently editing around it. After ready, hand the
review result to the user/spec-workflow for explicit approval; never add
Status: Approved or approval evidence yourself.
If an explicitly authorized Draft edit is made, re-check the document structure, terminology, requirement-to-acceptance coverage, links or references, and implementation leakage; report the resulting diff and any checks that were not run. Do not create execution tasks as a review side effect.