name: 'step-09-functional' description: 'Synthesize all discovery into comprehensive functional requirements'
workflow_path: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/prd'
thisStepFile: '{workflow_path}/steps/step-09-functional.md' nextStepFile: '{workflow_path}/steps/step-10-nonfunctional.md' workflowFile: '{workflow_path}/workflow.md' outputFile: '{planning_artifacts}/prd.md'
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
Progress: Step 9 of 11 - Next: Non-Functional Requirements
🛑 NEVER generate content without user input
📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions
🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding
✅ ALWAYS treat this as collaborative discovery between PM peers
📋 YOU ARE A FACILITATOR, not a content generator
💬 FOCUS on creating comprehensive capability inventory for the product
🎯 CRITICAL: This is THE CAPABILITY CONTRACT for all downstream work
✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config {communication_language}
stepsCompleted: [1, 2, 3, 4, 5, 6, 7, 8] before loading next stepThis step will generate content and present choices:
This section defines THE CAPABILITY CONTRACT for the entire product:
Start by explaining the critical role of functional requirements:
Purpose: FRs define WHAT capabilities the product must have. They are the complete inventory of user-facing and system capabilities that deliver the product vision.
Critical Properties: ✅ Each FR is a testable capability ✅ Each FR is implementation-agnostic (could be built many ways) ✅ Each FR specifies WHO and WHAT, not HOW ✅ No UI details, no performance numbers, no technology choices ✅ Comprehensive coverage of capability areas
How They Will Be Used:
Systematically review all previous sections to extract capabilities:
Extract From:
Group FRs by logical capability areas (NOT by technology or layer):
Good Grouping Examples:
Target 5-8 Capability Areas for typical projects.
Create complete functional requirements using this format:
Format:
Altitude Check: Each FR should answer "WHAT capability exists?" NOT "HOW it's implemented?"
Examples:
Before presenting to user, validate the FR list:
Completeness Check:
Altitude Check:
Quality Check:
Prepare the content to append to the document:
When saving to document, append these Level 2 and Level 3 sections:
## Functional Requirements
### [Capability Area Name]
- FR1: [Specific Actor] can [specific capability]
- FR2: [Specific Actor] can [specific capability]
- FR3: [Specific Actor] can [specific capability]
### [Another Capability Area]
- FR4: [Specific Actor] can [specific capability]
- FR5: [Specific Actor] can [specific capability]
[Continue for all capability areas discovered in conversation]
Show the generated functional requirements and present choices: "I've synthesized all our discussions into comprehensive functional requirements. This becomes the capability contract that UX designers, architects, and developers will all work from.
Here's what I'll add to the document:
[Show the complete FR list from step 6]
This is critical because:
What would you like to do? [A] Advanced Elicitation - Let's ensure we haven't missed any capabilities [P] Party Mode - Bring different perspectives to validate complete coverage [C] Continue - Save this and move to Non-Functional Requirements (Step 10 of 11)"
{outputFile}{project-root}/_bmad/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.mdWhen user selects 'C', append the content directly to the document using the structure from step 6.
✅ All previous discovery content synthesized into FRs ✅ FRs organized by capability areas (not technology) ✅ Each FR states WHAT capability exists, not HOW to implement ✅ Comprehensive coverage with 20-50 FRs typical ✅ Altitude validation ensures implementation-agnostic requirements ✅ Completeness check validates coverage of all discussed capabilities ✅ A/P/C menu presented and handled correctly ✅ Content properly appended to document when C selected
❌ Missing capabilities from previous discovery sections ❌ Organizing FRs by technology instead of capability areas ❌ Including implementation details or UI specifics in FRs ❌ Not achieving comprehensive coverage of discussed capabilities ❌ Using vague terms instead of testable capabilities ❌ Not presenting A/P/C menu after content generation ❌ Appending content without user selecting 'C'
❌ CRITICAL: Reading only partial step file - leads to incomplete understanding and poor decisions ❌ CRITICAL: Proceeding with 'C' without fully reading and understanding the next step file ❌ CRITICAL: Making decisions without complete understanding of step requirements and protocols
Emphasize to user: "This FR list is now binding. Any feature not listed here will not exist in the final product unless we explicitly add it. This is why it's critical to ensure completeness now."
After user selects 'C' and content is saved to document, load {project-root}/_bmad/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md to define non-functional requirements.
Remember: Do NOT proceed to step-10 until user explicitly selects 'C' from the A/P/C menu and content is saved!