Specification Review Protocol
Review technical specifications for inconsistencies, gaps, contradictions, and ambiguities. This skill is for finding specification issues, not proposing design changes.
Use this skill when:
When the reviewed artifact contains ## Source References, apply the shared
Reference-First Authoring contract and ADR-0133.
The assigned carrier plus its declared direct references is the review corpus; do not require a
broad parent or ancestor read when those spans are sufficient. Mechanical path, revision, anchor,
and freshness checks are compositor-owned. The reviewer owns semantic coverage and authority.
Reject a strict planning artifact for any of these contract violations:
output[] is used as a second detailed specification;output[] character-identical;A finding cannot create a commitment: before blocking, name the binding requirement, exclusion, or correctness obligation the artifact violates. A demand for a Should/Could feature, a stronger unspecified guarantee, or Won't scope is at most a non-blocking suggestion; a real Must conflict is reported with evidence and routed to the human.
Repeated labels and IDs, short task intents, exact action-boundary values, and clearly marked quotations are permitted. Marker-free legacy artifacts retain the existing review path.
The user should provide:
specs/ if it exists.If not provided, ask:
To review your specifications, I need:
1. Where are the spec files? (e.g., specs/, docs/)
2. Any specific concerns to focus on?
If token limits force truncation mid-analysis, stop and report:
Map the specification corpus
Classify documents
Read all documents completely
Review against these categories. For each issue found, record:
file.md:123, file.md:50-55, file.md#section, or quoted snippet (≤15 words) if line numbers unavailable| Type | Definition |
|---|---|
| Inconsistency | Same concept defined differently in different places |
| Gap | Missing information needed for implementation |
| Contradiction | Two statements that cannot both be true |
| Ambiguity | Statement that can be interpreted multiple ways |
| Missing Reference | Cross-reference to non-existent section or document |
| Undefined Term | Term used without definition |
| Severity | Definition |
|---|---|
| Critical | Blocks implementation or causes runtime failure |
| High | Causes significant confusion or likely bugs |
| Medium | Reduces spec quality, may cause minor issues |
| Low | Nitpick, polish, or style issue |
Apply these checks to the specification corpus:
Generate report in this format:
# Specification Review: [Project/Component Name]
## Summary
- Critical: N
- High: N
- Medium: N
- Low: N
---
## Critical Issues
### [Issue Title]
- **Location:** file.md:123 or file.md#section
- **Type:** [Issue Type]
- **Description:** [What's wrong]
- **Suggestion:** [How to fix]
---
## High Issues
[Same format]
---
## Medium Issues
[Same format]
---
## Low Issues
[Same format]
---
## Recommendations
[Overall observations about spec quality and suggested improvements]
### Agent State Missing from State Machine
- **Location:** roles.md:330 vs state-machines.md:102-108
- **Type:** Inconsistency
- **Description:** roles.md shows agents register with `status: STARTING`, but state-machines.md only defines IDLE, WORKING, WAITING, HANDOFF. STARTING is not a valid state.
- **Suggestion:** Add STARTING to state machine with transition STARTING → IDLE, or change registration to use IDLE.
### Grace Period Duration Undefined
- **Location:** state-machines.md:263
- **Type:** Undefined Term
- **Description:** Validation rule references "grace period" but duration is never defined.
- **Suggestion:** Define explicitly (e.g., "60 seconds") or reference related timing constant.
### Backoff Timing Mismatch
- **Location:** design.md:50-55 vs implementation.md:120-125
- **Type:** Contradiction
- **Description:** design.md specifies exponential backoff (10s, 20s, 40s), but implementation.md shows fixed 5s delay.
- **Suggestion:** Align documents — update implementation to match design or document the simplification.