Building Product Requirements
Help users create professional, implementation-ready product requirements. The
output is a PRD (the "what" and "why") plus a set of focused RFCs (the "how"),
designed so that a coding agent can pick up any single RFC and implement it
with minimal hallucination.
Why this structure matters
A PRD without RFCs is too vague for implementation. RFCs without a PRD lack
product context and user grounding. The combination gives coding agents:
- Focused context — each RFC addresses one implementation area
- Clear boundaries — explicit scope prevents agents from drifting
- Traceability — every technical decision links back to a user need
- Reduced errors — smaller, well-defined documents produce better code
Workflow overview
Copy this checklist and track progress:
Requirements Progress:
- [ ] Phase 1: Discovery — understand the product vision
- [ ] Phase 2: PRD Draft — write the product requirements document
- [ ] Phase 3: RFC Breakdown — identify implementation areas
- [ ] Phase 4: RFC Drafting — write each RFC
- [ ] Phase 5: Review — validate completeness and consistency
- [ ] Phase 6: Generate Prompt — create implementation prompts for coding agents
Output location and naming
Save all documents in a Product requirements/ directory at the project root.
Ask the user if they prefer a different location. If a directory already exists
with PRDs or RFCs, use that location instead.
Naming convention:
| Document |
Filename |
| PRD |
PRD-[ProjectName].md |
| Architecture RFC |
RFC-000-architecture.md |
| Feature RFCs |
RFC-[NNN]-[slug].md (e.g., RFC-003-voice-capture.md) |
- Use zero-padded three-digit numbers:
001, 002, 012
- Slugs are lowercase, hyphen-separated, 2-4 words max
- When adding RFCs to an existing project, continue the numbering sequence
Phase 1: Discovery
Before asking questions, read the existing codebase if one exists. Scan the
project directory for:
- Architecture patterns (MVVM, Clean Architecture, MVC, etc.)
- Tech stack and frameworks in use
- Existing data models, schemas, and entities
- Services, APIs, and integrations already built
- Naming conventions, DI approach, project structure
- Existing PRDs or RFCs (check for a
Product requirements/, docs/, specs/,
or rfcs/ directory)
This context prevents you from producing specs that conflict with the codebase.
If a PRD already exists and the user wants to add a feature, skip to Phase 3
(see "Adding an RFC to an existing project" below).
Now interview the user. Adapt your questions to what the codebase and user have
already told you — don't re-ask what's obvious from context.
Core questions (ask what's missing, skip what's known):
- What problem are you solving? Who has this problem, and how painful is it?
- Who are your users? What are their goals, frustrations, and current workarounds?
- What does success look like? Measurable criteria — time saved, error rates, adoption targets.
- What's the MVP scope? What's in for v1, what's explicitly out?
- Technical constraints? Platform (web/mobile/both), tech stack preferences, third-party services, offline needs.
- What exists already? Any prior art, mockups, codebases, or competitor references?
Capture answers in your working memory. You'll weave them into the PRD.
Adding an RFC to an existing project
If the project already has a PRD and the user wants to add a feature (not start
from scratch):
- Read the existing PRD and all existing RFCs to understand current scope,
data models, glossary, and conventions
- Skip Phase 2 — the PRD exists
- Go to Phase 3 to define the new RFC's scope, checking for overlap with
existing RFCs
- Continue with Phase 4-6 as normal
- After drafting, update the PRD's Features Overview table with the new RFC
Phase 2: PRD Draft
Use the PRD template. See templates/prd-template.md
for the full template with section guidance.
Key sections (every PRD needs these):
- Overview — project description, goals/objectives, success criteria
- Problem Statement — the pain, the business context, user pain points
- User Requirements — personas, job stories (not user stories), functional requirements broken into MVP vs. future
- Technical Requirements — architecture overview, tech stack, API specs, data models, security, performance targets
- Design Requirements — interaction patterns, accessibility, platform-specific considerations
- Success Metrics — quantitative measures tied to goals
- Timeline — milestones and phases
- Features Overview — summary table linking each feature to its RFC
- Glossary — define every domain term; this prevents agent confusion
Writing principles:
- Use job stories ("When [situation], I want to [motivation], so I can [outcome]") rather than user stories. They focus on context and motivation rather than role.
- Be specific about what's in scope and what's not. Ambiguity is where coding agents hallucinate.
- Include edge cases in functional requirements. If you can think of it, write it down.
- Define data models early — field names, types, relationships, constraints. These are the foundation everything else builds on.
Phase 3: RFC Breakdown
Decompose the product into discrete, implementable RFCs. Each RFC should:
- Be implementable independently (or with explicit dependencies noted)
- Have clear inputs and outputs
- Map to a logical area of the codebase
- Be small enough that a coding agent can hold the full context
Common decomposition pattern:
| RFC |
Area |
Typical Content |
| RFC-000 |
Architecture Overview |
User flows, state management, service architecture, performance targets |
| RFC-001 |
Database & Data Models |
Schema, ORM models, migrations, sync strategy, RLS policies |
| RFC-002 |
Core Feature A |
The primary user-facing capability |
| RFC-003 |
Core Feature B |
Secondary capability |
| RFC-004 |
Integration / API |
External service integration, edge functions |
| RFC-005 |
UI Components |
Screens, navigation, state management, accessibility |
Adapt this to the project. A simple web app might need 3 RFCs. A cross-platform
mobile app might need 6+. Always start with RFC-000 as the architecture overview
that all other RFCs reference.
Implementation order: After defining all RFCs, determine the order they
should be implemented. List them with a one-line justification:
Implementation Order:
1. RFC-000: Architecture — foundation everything else depends on
2. RFC-001: Database & Models — data layer must exist before features
3. RFC-002: Core Feature A — primary user value, validates the architecture
4. RFC-004: API Integration — needed by Feature B
5. RFC-003: Feature B — depends on API integration
6. RFC-005: UI Polish — requires all features to be functional
Include this in the PRD's "Features Overview" section so the implementation
agent knows what to build first.
Phase 4: RFC Drafting
Use the RFC template. See templates/rfc-template.md
for the full template with section guidance.
Each RFC must include:
- Overview — what this RFC covers, one paragraph
- Goals — numbered list, specific and testable
- Technical Design — architecture, data flow, code structure
- Implementation Details — platform-specific code samples, file paths, configuration
- Edge Cases — every failure mode you can anticipate, with handling strategy
- Testing Strategy — unit tests, integration tests, manual testing checklist
- Security Considerations — auth, data privacy, permissions
- Dependencies — libraries, APIs, other RFCs this depends on
- Related Documents — links back to PRD and sibling RFCs
Writing principles for RFCs:
- Include code samples in the language/framework of the project. Not pseudocode — actual compilable/runnable snippets.
- Specify file paths where code should live (e.g.,
src/database/schema.ts).
- List explicit exclusions — "Do NOT implement X (that's RFC-003)". This prevents coding agents from scope-creeping.
- Use consistent naming across all RFCs. If the PRD calls it "Idea", every RFC calls it "Idea" (not "Note" or "Entry").
Phase 5: Review
Before finalizing, actively verify each item — don't just eyeball it.
Traceability check: Read every JS-XXX job story in the PRD. For each one,
search the RFC files to confirm at least one RFC references it. List any
orphaned stories.
Data model consistency: Compare entity field names, types, and relationships
across the PRD and every RFC that references them. Flag any mismatches
(e.g., PRD says categoryId: UUID but RFC-003 says category: String).
Scope overlap check: For each RFC, read its "Scope Boundaries" section.
Flag any capability that appears in more than one RFC's "This RFC covers" list.
Exclusion check: Verify each RFC has an explicit "This RFC does NOT cover"
section with cross-references to sibling RFCs.
Terminology consistency: Pick the glossary terms from the PRD and search
all RFC files for variant spellings or synonyms (e.g., "Note" vs "Idea",
"Category" vs "Folder"). Fix inconsistencies.
Edge case coverage: Confirm each RFC's Edge Cases section is populated
(not empty or placeholder). Check that error/failure scenarios are addressed,
not just happy paths.
Tech stack alignment: Verify code samples use the language, framework,
and libraries declared in the PRD's Technology Stack table.
Performance targets: Confirm specific numbers exist (not just "should be
fast") with acceptable ranges.
Present the review results to the user as a checklist with pass/fail for each
item and details on anything that needs fixing.
Phase 6: Generate Implementation Prompt
After all RFCs are reviewed and finalized, ask the user:
"Would you like me to generate a complete implementation prompt for any of these RFCs? You can paste it into a new Claude Code session to implement the feature."
If the user says yes, ask which RFC(s) they want a prompt for (or offer to do all of them).
For large projects (3+ RFCs, parallel implementation): generate a full orchestration prompt instead of per-RFC prompts. An orchestration prompt assigns the agent an orchestrator role: it defines phases, spawns one sub-agent per RFC, verifies integration between phases, and never writes code directly. Use the orchestrator skill to execute this kind of prompt. Mention this option to the user when the implementation scope warrants it.
To generate the prompt, you must:
Read the project codebase — scan the actual project directory to identify:
- Existing files that will be modified or replaced
- Related services, utilities, or shared code the implementation will touch
- Project conventions (naming patterns, DI approach, architecture style)
Build the prompt with these sections in order:
a. Opening context — tell the agent what RFC to implement and where to find it (absolute path)
b. Files to read first — list every existing file the agent should read before writing code:
- The RFC document itself
- All files that will be modified/replaced
- Related RFCs for cross-cutting context
- Services or utilities the implementation depends on
c. Step-by-step implementation plan — ordered steps with:
- Specific file changes (what to create, modify, rename, delete)
- Detailed instructions for each change (not just "implement X" — spell out the logic)
- Dependencies between steps (what must happen before what)
- "Build after each major step to catch errors early"
d. Project conventions — any patterns the agent must follow:
- Architecture patterns (MVVM, Clean Architecture, etc.)
- DI approach, state management, naming conventions
- Custom colors, design tokens, shared components
- Testing patterns, deployment targets
- Feature flags or configuration to respect
Format the prompt as a single copyable block — the user should be able to paste it directly into a new Claude Code session with no edits needed.
What makes a good implementation prompt:
- Absolute file paths — no guessing, no relative paths from unknown roots
- Read before write — always tell the agent to read existing code first
- Ordered steps — numbered, with clear dependencies
- Specificity over brevity — spell out exactly what each step involves (which structs to rename, which enum cases to add, which UI sections to build)
- Explicit exclusions — "Do NOT touch X" or "That's handled in RFC-Y"
- Build verification — remind the agent to build/test after each major step
- Plan file — tell the agent to create a plan in
tasks/todo.md first and mark items as it goes
See references/example-prompt-patterns.md for simpler prompt patterns that can be used as building blocks.
Adapting to project scale
Small project (landing page, simple tool, single-platform app):
- Combine PRD into a shorter format — skip personas if there's only one user type
- 2-3 RFCs may be sufficient
- Architecture overview can be a section within the PRD rather than a separate RFC
Medium project (multi-feature app, API + frontend):
- Full PRD with all sections
- 4-6 RFCs
- Separate architecture RFC (RFC-000)
Large project (cross-platform, multiple integrations, team of developers):
- Full PRD, possibly with appendices
- 6+ RFCs, potentially with sub-RFCs for complex areas
- Consider a "RFC-000: Architecture" that serves as the index document
- Add a dependency graph showing RFC implementation order
Reference files
- templates/prd-template.md — Full PRD template with section-by-section guidance
- templates/rfc-template.md — Full RFC template with section-by-section guidance
- references/job-stories-guide.md — How to write effective job stories
- references/example-prompt-patterns.md — Prompt patterns for feeding RFCs to coding agents
1---2name: product-requirements-builder3description: Build comprehensive product requirements documents (PRDs) and technical RFC specifications for software projects. Guides the user through structured discovery — from problem statement and user personas to technical architecture, data models, and implementation RFCs. Use this skill whenever the user wants to plan a new product, define requirements for a feature, create technical specs, write an RFC, break down a project into implementable pieces, or prepare documentation for AI-assisted coding (Claude Code, Cursor, etc.). Also use when the user says things like "help me spec this out", "let's plan this project", "write a PRD", "create an RFC", "break this into tasks", or "I need to define requirements for...".4---56# Building Product Requirements78Help users create professional, implementation-ready product requirements. The9output is a PRD (the "what" and "why") plus a set of focused RFCs (the "how"),10designed so that a coding agent can pick up any single RFC and implement it11with minimal hallucination.1213## Why this structure matters1415A PRD without RFCs is too vague for implementation. RFCs without a PRD lack16product context and user grounding. The combination gives coding agents:1718- **Focused context** — each RFC addresses one implementation area19- **Clear boundaries** — explicit scope prevents agents from drifting20- **Traceability** — every technical decision links back to a user need21- **Reduced errors** — smaller, well-defined documents produce better code2223## Workflow overview2425Copy this checklist and track progress:2627```28Requirements Progress:29- [ ] Phase 1: Discovery — understand the product vision30- [ ] Phase 2: PRD Draft — write the product requirements document31- [ ] Phase 3: RFC Breakdown — identify implementation areas32- [ ] Phase 4: RFC Drafting — write each RFC33- [ ] Phase 5: Review — validate completeness and consistency34- [ ] Phase 6: Generate Prompt — create implementation prompts for coding agents35```3637### Output location and naming3839Save all documents in a `Product requirements/` directory at the project root.40Ask the user if they prefer a different location. If a directory already exists41with PRDs or RFCs, use that location instead.4243**Naming convention:**4445| Document | Filename |46|----------|----------|47| PRD | `PRD-[ProjectName].md` |48| Architecture RFC | `RFC-000-architecture.md` |49| Feature RFCs | `RFC-[NNN]-[slug].md` (e.g., `RFC-003-voice-capture.md`) |5051- Use zero-padded three-digit numbers: `001`, `002`, `012`52- Slugs are lowercase, hyphen-separated, 2-4 words max53- When adding RFCs to an existing project, continue the numbering sequence5455### Phase 1: Discovery5657Before asking questions, **read the existing codebase** if one exists. Scan the58project directory for:5960- Architecture patterns (MVVM, Clean Architecture, MVC, etc.)61- Tech stack and frameworks in use62- Existing data models, schemas, and entities63- Services, APIs, and integrations already built64- Naming conventions, DI approach, project structure65- Existing PRDs or RFCs (check for a `Product requirements/`, `docs/`, `specs/`,66 or `rfcs/` directory)6768This context prevents you from producing specs that conflict with the codebase.69If a PRD already exists and the user wants to add a feature, skip to Phase 370(see "Adding an RFC to an existing project" below).7172Now interview the user. Adapt your questions to what the codebase and user have73already told you — don't re-ask what's obvious from context.7475**Core questions** (ask what's missing, skip what's known):76771. **What problem are you solving?** Who has this problem, and how painful is it?782. **Who are your users?** What are their goals, frustrations, and current workarounds?793. **What does success look like?** Measurable criteria — time saved, error rates, adoption targets.804. **What's the MVP scope?** What's in for v1, what's explicitly out?815. **Technical constraints?** Platform (web/mobile/both), tech stack preferences, third-party services, offline needs.826. **What exists already?** Any prior art, mockups, codebases, or competitor references?8384Capture answers in your working memory. You'll weave them into the PRD.8586#### Adding an RFC to an existing project8788If the project already has a PRD and the user wants to add a feature (not start89from scratch):90911. Read the existing PRD and all existing RFCs to understand current scope,92 data models, glossary, and conventions932. Skip Phase 2 — the PRD exists943. Go to Phase 3 to define the new RFC's scope, checking for overlap with95 existing RFCs964. Continue with Phase 4-6 as normal975. After drafting, update the PRD's Features Overview table with the new RFC9899### Phase 2: PRD Draft100101Use the PRD template. See [templates/prd-template.md](templates/prd-template.md)102for the full template with section guidance.103104**Key sections** (every PRD needs these):1051061. **Overview** — project description, goals/objectives, success criteria1072. **Problem Statement** — the pain, the business context, user pain points1083. **User Requirements** — personas, job stories (not user stories), functional requirements broken into MVP vs. future1094. **Technical Requirements** — architecture overview, tech stack, API specs, data models, security, performance targets1105. **Design Requirements** — interaction patterns, accessibility, platform-specific considerations1116. **Success Metrics** — quantitative measures tied to goals1127. **Timeline** — milestones and phases1138. **Features Overview** — summary table linking each feature to its RFC1149. **Glossary** — define every domain term; this prevents agent confusion115116**Writing principles:**117118- Use **job stories** ("When [situation], I want to [motivation], so I can [outcome]") rather than user stories. They focus on context and motivation rather than role.119- Be specific about **what's in scope and what's not**. Ambiguity is where coding agents hallucinate.120- Include **edge cases** in functional requirements. If you can think of it, write it down.121- Define **data models early** — field names, types, relationships, constraints. These are the foundation everything else builds on.122123### Phase 3: RFC Breakdown124125Decompose the product into discrete, implementable RFCs. Each RFC should:126127- Be implementable independently (or with explicit dependencies noted)128- Have clear inputs and outputs129- Map to a logical area of the codebase130- Be small enough that a coding agent can hold the full context131132**Common decomposition pattern:**133134| RFC | Area | Typical Content |135|-----|------|----------------|136| RFC-000 | Architecture Overview | User flows, state management, service architecture, performance targets |137| RFC-001 | Database & Data Models | Schema, ORM models, migrations, sync strategy, RLS policies |138| RFC-002 | Core Feature A | The primary user-facing capability |139| RFC-003 | Core Feature B | Secondary capability |140| RFC-004 | Integration / API | External service integration, edge functions |141| RFC-005 | UI Components | Screens, navigation, state management, accessibility |142143Adapt this to the project. A simple web app might need 3 RFCs. A cross-platform144mobile app might need 6+. Always start with RFC-000 as the architecture overview145that all other RFCs reference.146147**Implementation order**: After defining all RFCs, determine the order they148should be implemented. List them with a one-line justification:149150```151Implementation Order:1521. RFC-000: Architecture — foundation everything else depends on1532. RFC-001: Database & Models — data layer must exist before features1543. RFC-002: Core Feature A — primary user value, validates the architecture1554. RFC-004: API Integration — needed by Feature B1565. RFC-003: Feature B — depends on API integration1576. RFC-005: UI Polish — requires all features to be functional158```159160Include this in the PRD's "Features Overview" section so the implementation161agent knows what to build first.162163### Phase 4: RFC Drafting164165Use the RFC template. See [templates/rfc-template.md](templates/rfc-template.md)166for the full template with section guidance.167168**Each RFC must include:**1691701. **Overview** — what this RFC covers, one paragraph1712. **Goals** — numbered list, specific and testable1723. **Technical Design** — architecture, data flow, code structure1734. **Implementation Details** — platform-specific code samples, file paths, configuration1745. **Edge Cases** — every failure mode you can anticipate, with handling strategy1756. **Testing Strategy** — unit tests, integration tests, manual testing checklist1767. **Security Considerations** — auth, data privacy, permissions1778. **Dependencies** — libraries, APIs, other RFCs this depends on1789. **Related Documents** — links back to PRD and sibling RFCs179180**Writing principles for RFCs:**181182- Include **code samples** in the language/framework of the project. Not pseudocode — actual compilable/runnable snippets.183- Specify **file paths** where code should live (e.g., `src/database/schema.ts`).184- List **explicit exclusions** — "Do NOT implement X (that's RFC-003)". This prevents coding agents from scope-creeping.185- Use **consistent naming** across all RFCs. If the PRD calls it "Idea", every RFC calls it "Idea" (not "Note" or "Entry").186187### Phase 5: Review188189Before finalizing, **actively verify** each item — don't just eyeball it.1901911. **Traceability check**: Read every JS-XXX job story in the PRD. For each one,192 search the RFC files to confirm at least one RFC references it. List any193 orphaned stories.1941952. **Data model consistency**: Compare entity field names, types, and relationships196 across the PRD and every RFC that references them. Flag any mismatches197 (e.g., PRD says `categoryId: UUID` but RFC-003 says `category: String`).1981993. **Scope overlap check**: For each RFC, read its "Scope Boundaries" section.200 Flag any capability that appears in more than one RFC's "This RFC covers" list.2012024. **Exclusion check**: Verify each RFC has an explicit "This RFC does NOT cover"203 section with cross-references to sibling RFCs.2042055. **Terminology consistency**: Pick the glossary terms from the PRD and search206 all RFC files for variant spellings or synonyms (e.g., "Note" vs "Idea",207 "Category" vs "Folder"). Fix inconsistencies.2082096. **Edge case coverage**: Confirm each RFC's Edge Cases section is populated210 (not empty or placeholder). Check that error/failure scenarios are addressed,211 not just happy paths.2122137. **Tech stack alignment**: Verify code samples use the language, framework,214 and libraries declared in the PRD's Technology Stack table.2152168. **Performance targets**: Confirm specific numbers exist (not just "should be217 fast") with acceptable ranges.218219Present the review results to the user as a checklist with pass/fail for each220item and details on anything that needs fixing.221222### Phase 6: Generate Implementation Prompt223224After all RFCs are reviewed and finalized, **ask the user**:225226> "Would you like me to generate a complete implementation prompt for any of these RFCs? You can paste it into a new Claude Code session to implement the feature."227228If the user says yes, ask which RFC(s) they want a prompt for (or offer to do all of them).229230**For large projects (3+ RFCs, parallel implementation):** generate a full orchestration prompt instead of per-RFC prompts. An orchestration prompt assigns the agent an orchestrator role: it defines phases, spawns one sub-agent per RFC, verifies integration between phases, and never writes code directly. Use the `orchestrator` skill to execute this kind of prompt. Mention this option to the user when the implementation scope warrants it.231232**To generate the prompt, you must:**2332341. **Read the project codebase** — scan the actual project directory to identify:235 - Existing files that will be modified or replaced236 - Related services, utilities, or shared code the implementation will touch237 - Project conventions (naming patterns, DI approach, architecture style)2382392. **Build the prompt** with these sections in order:240241 a. **Opening context** — tell the agent what RFC to implement and where to find it (absolute path)242243 b. **Files to read first** — list every existing file the agent should read before writing code:244 - The RFC document itself245 - All files that will be modified/replaced246 - Related RFCs for cross-cutting context247 - Services or utilities the implementation depends on248249 c. **Step-by-step implementation plan** — ordered steps with:250 - Specific file changes (what to create, modify, rename, delete)251 - Detailed instructions for each change (not just "implement X" — spell out the logic)252 - Dependencies between steps (what must happen before what)253 - "Build after each major step to catch errors early"254255 d. **Project conventions** — any patterns the agent must follow:256 - Architecture patterns (MVVM, Clean Architecture, etc.)257 - DI approach, state management, naming conventions258 - Custom colors, design tokens, shared components259 - Testing patterns, deployment targets260 - Feature flags or configuration to respect2612623. **Format the prompt** as a single copyable block — the user should be able to paste it directly into a new Claude Code session with no edits needed.263264**What makes a good implementation prompt:**265266- **Absolute file paths** — no guessing, no relative paths from unknown roots267- **Read before write** — always tell the agent to read existing code first268- **Ordered steps** — numbered, with clear dependencies269- **Specificity over brevity** — spell out exactly what each step involves (which structs to rename, which enum cases to add, which UI sections to build)270- **Explicit exclusions** — "Do NOT touch X" or "That's handled in RFC-Y"271- **Build verification** — remind the agent to build/test after each major step272- **Plan file** — tell the agent to create a plan in `tasks/todo.md` first and mark items as it goes273274See [references/example-prompt-patterns.md](references/example-prompt-patterns.md) for simpler prompt patterns that can be used as building blocks.275276## Adapting to project scale277278**Small project** (landing page, simple tool, single-platform app):279- Combine PRD into a shorter format — skip personas if there's only one user type280- 2-3 RFCs may be sufficient281- Architecture overview can be a section within the PRD rather than a separate RFC282283**Medium project** (multi-feature app, API + frontend):284- Full PRD with all sections285- 4-6 RFCs286- Separate architecture RFC (RFC-000)287288**Large project** (cross-platform, multiple integrations, team of developers):289- Full PRD, possibly with appendices290- 6+ RFCs, potentially with sub-RFCs for complex areas291- Consider a "RFC-000: Architecture" that serves as the index document292- Add a dependency graph showing RFC implementation order293294## Reference files295296- [templates/prd-template.md](templates/prd-template.md) — Full PRD template with section-by-section guidance297- [templates/rfc-template.md](templates/rfc-template.md) — Full RFC template with section-by-section guidance298- [references/job-stories-guide.md](references/job-stories-guide.md) — How to write effective job stories299- [references/example-prompt-patterns.md](references/example-prompt-patterns.md) — Prompt patterns for feeding RFCs to coding agents