Adds /gsd:define-requirements to transform research findings into checkable requirements before roadmap creation. New flow: new-project → research-project → define-requirements → create-roadmap New files: - commands/gsd/define-requirements.md - get-shit-done/workflows/define-requirements.md - get-shit-done/templates/requirements.md Modified: - new-project.md: updated next steps - research-project.md: points to define-requirements - create-roadmap.md: requires REQUIREMENTS.md, validates coverage - workflows/create-roadmap.md: maps phases to requirements, updates traceability Key changes: - Phases now map to specific requirement IDs - 100% requirement coverage required before roadmap creation - REQUIREMENTS.md traceability section tracks phase assignments Co-Authored-By: Claude <noreply@anthropic.com>
6.2 KiB
Research tells you what products in this domain typically have. Requirements tell you what YOU are building for v1.
This is the bridge between "what's possible" and "what we're committing to."
<required_reading> Read these files NOW:
- ~/.claude/get-shit-done/templates/requirements.md
- .planning/PROJECT.md
- .planning/research/FEATURES.md
- .planning/research/SUMMARY.md </required_reading>
Read research/FEATURES.md and extract:
- Table stakes (users expect these)
- Differentiators (competitive advantage)
- Anti-features (commonly requested, often problematic)
- Feature dependencies
- MVP vs full product recommendations
Read research/SUMMARY.md for:
- Overall confidence level
- Key architectural constraints
- Suggested phase structure (informational only)
Based on research, here are the features for [domain]:
## Authentication
**Table stakes:**
- Sign up with email/password
- Email verification
- Password reset
- Session management
**Differentiators:**
- Magic link login
- OAuth (Google, GitHub)
- 2FA
**Research notes:** [any relevant notes from FEATURES.md]
---
## [Next Category]
...
For each category, include:
- Table stakes from FEATURES.md
- Differentiators from FEATURES.md
- Any anti-features flagged (with warnings)
- Complexity notes where relevant
- header: "[Category name]"
- question: "Which [category] features are in v1?"
- multiSelect: true
- options:
- "[Feature 1]" — [brief description or complexity note]
- "[Feature 2]" — [brief description]
- "[Feature 3]" — [brief description]
- "None for v1" — Defer entire category
Repeat for each category from research.
Track responses:
- Selected features → v1 requirements
- Unselected table stakes → flag as v2 (users expect these)
- Unselected differentiators → out of scope (unless user specifies v2)
Use AskUserQuestion:
- header: "Additions"
- question: "Any requirements research missed? (Features specific to your vision)"
- options:
- "No, research covered it" — Proceed to generate
- "Yes, let me add some" — Capture additional requirements
If "Yes":
Ask inline (freeform): "What additional requirements do you need?"
Parse response into requirement format and add to v1 list.
Cross-check requirements against Core Value from PROJECT.md:Core value: "[from PROJECT.md]"
Requirements that directly support core value:
- [requirement 1]
- [requirement 2]
⚠️ Warning: Core value may not be fully covered by selected requirements.
Missing coverage: [gap description]
If gap detected:
Use AskUserQuestion:
- header: "Core value"
- question: "Core value '[X]' may need additional requirements. Add coverage?"
- options:
- "Yes, suggest requirements" — Claude suggests, user confirms
- "No, it's covered" — Proceed
- "Adjust core value" — User provides updated core value
Structure:
- Header with project name and date
- v1 Requirements grouped by category (checkboxes)
- v2 Requirements (deferred, no checkboxes yet)
- Out of Scope (explicit exclusions with reasoning)
- Traceability section (empty, filled by create-roadmap)
Requirement format:
### [Category]
- [ ] **[REQ-ID]**: [Requirement description]
- [ ] **[REQ-ID]**: [Requirement description]
REQ-ID format: [CATEGORY]-[NUMBER]
- AUTH-01, AUTH-02
- CONTENT-01, CONTENT-02
- SOCIAL-01, SOCIAL-02
IDs enable traceability from roadmap phases.
Present summary before committing:## Requirements Summary
**v1 Scope:**
- Authentication: [N] requirements
- [Category]: [N] requirements
- [Category]: [N] requirements
Total: [X] requirements
**v2 (Deferred):**
- [Category]: [N] requirements
Total: [Y] requirements
**Out of Scope:**
- [Feature]: [reason]
- [Feature]: [reason]
**Core Value Alignment:** ✓ Covered / ⚠️ Gaps noted
---
Does this capture what you're building? (yes / adjust)
If "adjust": Return to scope_categories or identify_gaps as appropriate.
Commit requirements:git add .planning/REQUIREMENTS.md
git commit -m "$(cat <<'EOF'
docs: define v1 requirements
[X] requirements across [N] categories.
[Y] requirements deferred to v2.
Core value: [from PROJECT.md]
EOF
)"
- Requirements: .planning/REQUIREMENTS.md
- v1 scope: [X] requirements across [N] categories
- v2 deferred: [Y] requirements
- Out of scope: [Z] exclusions
▶ Next Up
Create roadmap — phases mapped to requirements
/gsd:create-roadmap
/clear first → fresh context window
</step>
</process>
<quality_criteria>
**Good requirements:**
- Specific and testable ("User can reset password via email link")
- User-centric ("User can X" not "System does Y")
- Atomic (one capability per requirement)
- Independent where possible (minimal dependencies)
**Bad requirements:**
- Vague ("Handle authentication")
- Technical implementation ("Use bcrypt for passwords")
- Compound ("User can login and manage profile and change settings")
- Dependent on unstated assumptions
</quality_criteria>
<success_criteria>
- [ ] PROJECT.md core value extracted
- [ ] Research FEATURES.md loaded and parsed
- [ ] All categories presented to user
- [ ] User scoped each category (v1/v2/out of scope)
- [ ] User had opportunity to add requirements
- [ ] Core value alignment validated
- [ ] REQUIREMENTS.md created with REQ-IDs
- [ ] v1, v2, and out of scope clearly separated
- [ ] Requirements committed to git
</success_criteria>