Skill: sdd-review-requirements
Invocation
/sdd-review-requirements <slug>
Arguments:
<slug> — kebab-case feature identifier matching an existing .claude/specs/<slug>/ directory
Purpose
Review requirements.md for completeness, clarity, EARS compliance, ambiguity, and missing edge cases. Appends a structured "Requirements Review" section to .claude/specs/<slug>/review.md. The mode is read from progress.md and determines which agents are invoked and which checks are run.
Execution Steps
Step 1: Read mode and validate prerequisites
Read .claude/specs/<slug>/progress.md:
- Extract
**Mode**: value (standard or auto).
- Check that
sdd-requirements phase is marked ✅ complete. If not, abort and instruct the user to run /sdd-requirements <slug> first.
- If
progress.md does not exist, abort and instruct the user to run /sdd-init <slug> first.
Step 2: Load requirements.md
Read .claude/specs/<slug>/requirements.md in full.
- If the file contains only the placeholder comment (
<!-- Artifact not yet generated... -->), abort and instruct the user to run /sdd-requirements <slug> first.
- Count the number of REQ blocks for the review summary.
Step 3: Mode-specific review execution
Standard Mode
Invoke the following in sequence:
requirements-analyst agent (primary)
- Focus: EARS compliance, acceptance criteria quality, stakeholder roles, ambiguity detection.
- Prompt: "Review the following requirements.md for EARS format compliance, ambiguous terms, missing acceptance criteria, and untestable criteria. Return a structured list of findings with REQ ID, issue description, severity, and suggested correction."
Plan agent (secondary)
- Focus: Scope boundaries, dependency risks, missing scenarios, implementation sequencing concerns.
- Prompt: "Review the following requirements for missing edge cases, scope gaps, inter-requirement conflicts, and sequencing risks. Return findings with REQ ID and impact."
Project spec-tech-research skill (technical feasibility)
- Focus: Validate that each REQ is feasible given the project stack (Next.js, TypeScript, Mantine, SWR, Jotai, MSW, Vitest, aspida, Valibot).
- Flag any REQ whose acceptance criteria would require capabilities not supported by the stack, or would require significant architectural changes.
Merge all findings into a unified table.
Auto Mode
Invoke only:
requirements-analyst agent
- Focus: Business clarity, acceptance criteria completeness, stakeholder roles, ambiguity, risks.
- Do NOT run
planner or spec-tech-research.
- Prioritize findings that a non-engineer product owner can act on directly.
Checks Performed
Run all checks below regardless of mode. Flag each finding with the REQ ID and severity.
Check 1: EARS Format Compliance
- Each REQ block must contain: a User Story, a
When ... the system shall ... clause, and at least 2 Acceptance Criteria.
- Missing any element → HIGH
- Using EARS keywords incorrectly (e.g. "Where" used instead of "When" for event-driven behavior) → MEDIUM
Check 2: Ambiguous Terms
Scan all requirement text for vague qualifiers. Flag occurrences as MEDIUM:
- Adjectives: "fast", "slow", "easy", "simple", "appropriate", "reasonable", "sufficient"
- Quantities: "some", "many", "few", "several", "various", "etc.", "and so on"
- Time: "soon", "quickly", "immediately" (unless a specific duration is given)
- Replace suggestion: "Replace with a measurable criterion (e.g. 'within 2 seconds', 'up to 100 items')."
Check 3: Missing Elements
- Missing actor (role) in User Story → HIGH
- Missing triggering event (When clause) → HIGH
- Missing system response (shall clause) → HIGH
- Requirement describes implementation, not behavior (e.g. "the database will store...") → MEDIUM
Check 4: Testability
- Each Acceptance Criterion must be binary (pass/fail) and observable without access to internals.
- Subjective criteria ("looks good", "feels intuitive") → HIGH
- Criteria requiring knowledge of internal state not exposed to users → MEDIUM
Check 5: Completeness
- No obvious error paths covered (e.g. what happens when an API call fails) → MEDIUM
- No empty state handling (e.g. what the user sees when the list is empty) → MEDIUM
- No permission / role boundary specified when the feature involves restricted access → HIGH
- No pagination or data limit stated for list-type features → LOW
Check 6: REQ ID Numbering
- IDs must be sequential with no gaps → LOW
- Duplicate IDs → HIGH
Check 7: Technical Feasibility (Standard mode only)
- REQ requiring a non-existent API endpoint → HIGH
- REQ assuming real-time behavior (WebSocket/SSE) not currently in the stack → MEDIUM
- REQ whose acceptance criteria would require bypassing Valibot schema validation → MEDIUM
Output Format
Append the following section to .claude/specs/<slug>/review.md under a dated heading.
If review.md does not yet exist, create it with this content only.
## Requirements Review (<YYYY-MM-DD>)
**Reviewer**: sdd-review-requirements skill
**Mode**: <standard|auto>
**Requirements reviewed**: <N> REQs (REQ-001 through REQ-NNN)
### Overall Assessment
<!-- 2-4 sentences: Is this requirements doc ready to proceed? What is the most critical concern? -->
### Findings
| REQ | Issue | Severity | Suggestion |
| ------- | ------------------- | -------- | ------------------- |
| REQ-001 | <issue description> | HIGH | <corrective action> |
| REQ-002 | <issue description> | MEDIUM | <corrective action> |
| REQ-003 | <issue description> | LOW | <corrective action> |
_Severity: HIGH = blocks implementation, MEDIUM = should fix before design, LOW = consider before PR_
### Recommended Actions Before Proceeding
- [ ] **HIGH**: <action 1>
- [ ] **HIGH**: <action 2>
- [ ] **MEDIUM**: <action 3>
### Sign-off Condition
All HIGH severity findings must be resolved before running `/sdd-design <slug>`.
progress.md Updates
After writing the review:
- Change
sdd-review-requirements status from ⬜ not started to ✅ complete.
- Add a row to the Change Log:
| <YYYY-MM-DD> | review-requirements | N findings (X HIGH, Y MEDIUM, Z LOW) |
Notes
- Do not modify
requirements.md. This skill is read-only with respect to requirements. The user must update requirements separately and rerun this skill if needed.
- If all checks pass with zero HIGH severity findings, state this clearly in the Overall Assessment section. The user may still choose to proceed immediately.
- In
--mode auto, present findings in plain language without jargon. Label each finding with its business impact rather than technical category (e.g. "Users won't know what to do if the upload fails" instead of "Missing error path for REQ-003").
- If
review.md already has a Requirements Review section, append the new dated section below the existing one. Do not overwrite prior reviews.
== PHASE COMPLETE: sdd-review-requirements ==
Artifact: .claude/specs//review.md
Summary:
- Mode read from progress.md
- requirements.md loaded and analyzed (N REQs)
- Checks run: EARS compliance, ambiguity, missing elements, testability, completeness, numbering, technical feasibility (standard only)
- Agents invoked: requirements-analyst (both modes), planner + spec-tech-research (standard only)
- Findings written to review.md under dated heading
- progress.md updated: sdd-review-requirements → complete
⏸ WAITING FOR CONFIRMATION
Type CONFIRM sdd-design to proceed. Or describe changes needed.
1---2name: sdd-review-requirements-23description: Skill: sdd-review-requirements4---5# Skill: sdd-review-requirements67## Invocation89```10/sdd-review-requirements <slug>11```1213**Arguments:**1415- `<slug>` — kebab-case feature identifier matching an existing `.claude/specs/<slug>/` directory1617---1819## Purpose2021Review `requirements.md` for completeness, clarity, EARS compliance, ambiguity, and missing edge cases. Appends a structured "Requirements Review" section to `.claude/specs/<slug>/review.md`. The mode is read from `progress.md` and determines which agents are invoked and which checks are run.2223---2425## Execution Steps2627### Step 1: Read mode and validate prerequisites2829Read `.claude/specs/<slug>/progress.md`:3031- Extract `**Mode**:` value (`standard` or `auto`).32- Check that `sdd-requirements` phase is marked `✅ complete`. If not, abort and instruct the user to run `/sdd-requirements <slug>` first.33- If `progress.md` does not exist, abort and instruct the user to run `/sdd-init <slug>` first.3435### Step 2: Load requirements.md3637Read `.claude/specs/<slug>/requirements.md` in full.3839- If the file contains only the placeholder comment (`<!-- Artifact not yet generated... -->`), abort and instruct the user to run `/sdd-requirements <slug>` first.40- Count the number of REQ blocks for the review summary.4142### Step 3: Mode-specific review execution4344#### Standard Mode4546Invoke the following in sequence:47481. **`requirements-analyst` agent** (primary)49 - Focus: EARS compliance, acceptance criteria quality, stakeholder roles, ambiguity detection.50 - Prompt: "Review the following requirements.md for EARS format compliance, ambiguous terms, missing acceptance criteria, and untestable criteria. Return a structured list of findings with REQ ID, issue description, severity, and suggested correction."51522. **`Plan` agent** (secondary)53 - Focus: Scope boundaries, dependency risks, missing scenarios, implementation sequencing concerns.54 - Prompt: "Review the following requirements for missing edge cases, scope gaps, inter-requirement conflicts, and sequencing risks. Return findings with REQ ID and impact."55563. **Project `spec-tech-research` skill** (technical feasibility)57 - Focus: Validate that each REQ is feasible given the project stack (Next.js, TypeScript, Mantine, SWR, Jotai, MSW, Vitest, aspida, Valibot).58 - Flag any REQ whose acceptance criteria would require capabilities not supported by the stack, or would require significant architectural changes.5960Merge all findings into a unified table.6162#### Auto Mode6364Invoke only:65661. **`requirements-analyst` agent**67 - Focus: Business clarity, acceptance criteria completeness, stakeholder roles, ambiguity, risks.68 - Do NOT run `planner` or `spec-tech-research`.69 - Prioritize findings that a non-engineer product owner can act on directly.7071---7273## Checks Performed7475Run all checks below regardless of mode. Flag each finding with the REQ ID and severity.7677### Check 1: EARS Format Compliance7879- Each REQ block must contain: a User Story, a `When ... the system shall ...` clause, and at least 2 Acceptance Criteria.80- Missing any element → **HIGH**81- Using EARS keywords incorrectly (e.g. "Where" used instead of "When" for event-driven behavior) → **MEDIUM**8283### Check 2: Ambiguous Terms8485Scan all requirement text for vague qualifiers. Flag occurrences as **MEDIUM**:8687- Adjectives: "fast", "slow", "easy", "simple", "appropriate", "reasonable", "sufficient"88- Quantities: "some", "many", "few", "several", "various", "etc.", "and so on"89- Time: "soon", "quickly", "immediately" (unless a specific duration is given)90- Replace suggestion: "Replace with a measurable criterion (e.g. 'within 2 seconds', 'up to 100 items')."9192### Check 3: Missing Elements9394- Missing actor (role) in User Story → **HIGH**95- Missing triggering event (When clause) → **HIGH**96- Missing system response (shall clause) → **HIGH**97- Requirement describes implementation, not behavior (e.g. "the database will store...") → **MEDIUM**9899### Check 4: Testability100101- Each Acceptance Criterion must be binary (pass/fail) and observable without access to internals.102- Subjective criteria ("looks good", "feels intuitive") → **HIGH**103- Criteria requiring knowledge of internal state not exposed to users → **MEDIUM**104105### Check 5: Completeness106107- No obvious error paths covered (e.g. what happens when an API call fails) → **MEDIUM**108- No empty state handling (e.g. what the user sees when the list is empty) → **MEDIUM**109- No permission / role boundary specified when the feature involves restricted access → **HIGH**110- No pagination or data limit stated for list-type features → **LOW**111112### Check 6: REQ ID Numbering113114- IDs must be sequential with no gaps → **LOW**115- Duplicate IDs → **HIGH**116117### Check 7: Technical Feasibility (Standard mode only)118119- REQ requiring a non-existent API endpoint → **HIGH**120- REQ assuming real-time behavior (WebSocket/SSE) not currently in the stack → **MEDIUM**121- REQ whose acceptance criteria would require bypassing Valibot schema validation → **MEDIUM**122123---124125## Output Format126127Append the following section to `.claude/specs/<slug>/review.md` under a dated heading.128129If `review.md` does not yet exist, create it with this content only.130131```markdown132## Requirements Review (<YYYY-MM-DD>)133134**Reviewer**: sdd-review-requirements skill135**Mode**: <standard|auto>136**Requirements reviewed**: <N> REQs (REQ-001 through REQ-NNN)137138### Overall Assessment139140<!-- 2-4 sentences: Is this requirements doc ready to proceed? What is the most critical concern? -->141142### Findings143144| REQ | Issue | Severity | Suggestion |145| ------- | ------------------- | -------- | ------------------- |146| REQ-001 | <issue description> | HIGH | <corrective action> |147| REQ-002 | <issue description> | MEDIUM | <corrective action> |148| REQ-003 | <issue description> | LOW | <corrective action> |149150_Severity: HIGH = blocks implementation, MEDIUM = should fix before design, LOW = consider before PR_151152### Recommended Actions Before Proceeding153154- [ ] **HIGH**: <action 1>155- [ ] **HIGH**: <action 2>156- [ ] **MEDIUM**: <action 3>157158### Sign-off Condition159160All HIGH severity findings must be resolved before running `/sdd-design <slug>`.161```162163---164165## progress.md Updates166167After writing the review:168169- Change `sdd-review-requirements` status from `⬜ not started` to `✅ complete`.170- Add a row to the Change Log: `| <YYYY-MM-DD> | review-requirements | N findings (X HIGH, Y MEDIUM, Z LOW) |`171172---173174## Notes175176- Do not modify `requirements.md`. This skill is read-only with respect to requirements. The user must update requirements separately and rerun this skill if needed.177- If all checks pass with zero HIGH severity findings, state this clearly in the Overall Assessment section. The user may still choose to proceed immediately.178- In `--mode auto`, present findings in plain language without jargon. Label each finding with its business impact rather than technical category (e.g. "Users won't know what to do if the upload fails" instead of "Missing error path for REQ-003").179- If `review.md` already has a Requirements Review section, append the new dated section below the existing one. Do not overwrite prior reviews.180181---182183== PHASE COMPLETE: sdd-review-requirements ==184Artifact: .claude/specs/<slug>/review.md185Summary:186187- Mode read from progress.md188- requirements.md loaded and analyzed (N REQs)189- Checks run: EARS compliance, ambiguity, missing elements, testability, completeness, numbering, technical feasibility (standard only)190- Agents invoked: requirements-analyst (both modes), planner + spec-tech-research (standard only)191- Findings written to review.md under dated heading192- progress.md updated: sdd-review-requirements → complete193194⏸ WAITING FOR CONFIRMATION195Type `CONFIRM sdd-design` to proceed. Or describe changes needed.