name: 'step-01-understand' description: 'Analyze the requirement delta between current state and what user wants to build'
workflow_path: '{project-root}/_bmad/bmm/workflows/bmad-quick-flow/create-tech-spec' nextStepFile: '{workflow_path}/steps/step-02-investigate.md' skipToStepFile: '{workflow_path}/steps/step-03-generate.md' templateFile: '{workflow_path}/tech-spec-template.md'
Progress: Step 1 of 4 - Next: Deep Investigation
{communication_language}workflow.md are available in memory.a) Before anything else, check if {wipFile} exists:
b) IF WIP FILE EXISTS:
title, slug, stepsCompletedlastStep = max(stepsCompleted)Present to user:
Hey {user_name}! Found a tech-spec in progress:
**{title}** - Step {lastStep} of 4 complete
Is this what you're here to continue?
[y] Yes, pick up where I left off
[n] No, archive it and start something new
HALT and wait for user selection.
a) Menu Handling:
stepsCompleted:[1] → Load {nextStepFile} (Step 2)[1, 2] → Load {skipToStepFile} (Step 3)[1, 2, 3] → Load {workflow_path}/steps/step-04-review.md (Step 4){wipFile} to {implementation_artifacts}/tech-spec-{slug}-archived-{date}.mda) Greet the user briefly:
"Hey {user_name}! What are we building today?"
b) Get their initial description. Don't ask detailed questions yet - just understand enough to know where to look.
a) Before asking detailed questions, do a rapid scan to understand the landscape:
b) Check for existing context docs:
{output_folder} and {planning_artifacts}for planning documents (PRD, architecture, epics, research)**/project-context.md - if it exists, skim for patterns and conventionsc) If user mentioned specific code/features, do a quick scan:
d) Build mental model:
This scan should take < 30 seconds. Just enough to ask smart questions.
a) Now ask clarifying questions - but make them INFORMED by what you found:
Instead of generic questions like "What's the scope?", ask specific ones like:
AuthService handles validation in the controller — should the new field follow that pattern or move it to a dedicated validator?"NavigationSidebar component uses local state for the 'collapsed' toggle — should we stick with that or move it to the global store?"Adapt to {user_skill_level}. Technical users want technical questions. Non-technical users need translation.
b) If no existing code is found:
a) From the conversation, extract and confirm:
b) Ask the user to confirm the captured understanding before proceeding.
a) Create the tech-spec WIP file:
{templateFile}{wipFile}Update frontmatter with captured values:
---
title: '{title}'
slug: '{slug}'
created: '{date}'
status: 'in-progress'
stepsCompleted: [1]
tech_stack: []
files_to_modify: []
code_patterns: []
test_patterns: []
---
Fill in Overview section with Problem Statement, Solution, and Scope
Fill in Context for Development section with any technical preferences or constraints gathered during informed discovery.
Write the file
b) Report to user:
"Created: {wipFile}
Captured:
a) Display menu:
[a] Advanced Elicitation - dig deeper into requirements
[c] Continue - proceed to next step
[p] Party Mode - bring in other experts
b) HALT and wait for user selection.
{advanced_elicitation}, then return here and redisplay menu{nextStepFile} (Map Technical Constraints){party_mode_exec}, then return here and redisplay menu{wipFile} created with correct frontmatter, Overview, Context for Development, and stepsCompleted: [1].