mirror of
https://github.com/bmadcode/BMAD-METHOD.git
synced 2025-12-29 16:14:59 +00:00
291 lines
10 KiB
Markdown
291 lines
10 KiB
Markdown
|
|
# BMAD Workflow Step Template
|
||
|
|
|
||
|
|
This template provides the standard structure for all BMAD workflow step files. Copy and modify this template for each new step you create.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
---
|
||
|
|
name: 'step-[N]-[short-name]'
|
||
|
|
description: '[Brief description of what this step accomplishes]'
|
||
|
|
|
||
|
|
# Path Definitions
|
||
|
|
workflow_path: '{project-root}/{bmad_folder}/bmb/reference/workflows/[workflow-name]'
|
||
|
|
|
||
|
|
# File References (all use {variable} format in file)
|
||
|
|
thisStepFile: '{workflow_path}/steps/step-[N]-[short-name].md'
|
||
|
|
nextStepFile: '{workflow_path}/steps/step-[N+1]-[next-short-name].md' # Remove for final step
|
||
|
|
workflowFile: '{workflow_path}/workflow.md'
|
||
|
|
outputFile: '{output_folder}/[output-file-name]-{project_name}.md'
|
||
|
|
|
||
|
|
# Task References
|
||
|
|
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
|
||
|
|
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
|
||
|
|
|
||
|
|
# Template References (if this step uses templates)
|
||
|
|
profileTemplate: '{workflow_path}/templates/profile-section.md'
|
||
|
|
assessmentTemplate: '{workflow_path}/templates/assessment-section.md'
|
||
|
|
strategyTemplate: '{workflow_path}/templates/strategy-section.md'
|
||
|
|
# Add more as needed
|
||
|
|
---
|
||
|
|
```
|
||
|
|
|
||
|
|
# Step [N]: [Step Name]
|
||
|
|
|
||
|
|
## STEP GOAL:
|
||
|
|
|
||
|
|
[State the goal in context of the overall workflow goal. Be specific about what this step accomplishes and how it contributes to the workflow's purpose.]
|
||
|
|
|
||
|
|
Example: "To analyze user requirements and document functional specifications that will guide the development process"
|
||
|
|
|
||
|
|
## MANDATORY EXECUTION RULES (READ FIRST):
|
||
|
|
|
||
|
|
### Universal Rules:
|
||
|
|
|
||
|
|
- 🛑 NEVER generate content without user input
|
||
|
|
- 📖 CRITICAL: Read the complete step file before taking any action
|
||
|
|
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
|
||
|
|
- 📋 YOU ARE A FACILITATOR, not a content generator
|
||
|
|
|
||
|
|
### Role Reinforcement:
|
||
|
|
|
||
|
|
- ✅ You are a [specific role, e.g., "business analyst" or "technical architect"]
|
||
|
|
- ✅ If you already have been given a name, communication_style and identity, continue to use those while playing this new role
|
||
|
|
- ✅ We engage in collaborative dialogue, not command-response
|
||
|
|
- ✅ You bring [your expertise], user brings [their expertise], and together we produce something better than the sum of our own parts
|
||
|
|
- ✅ Maintain collaborative [adjective] tone throughout
|
||
|
|
|
||
|
|
### Step-Specific Rules:
|
||
|
|
|
||
|
|
- 🎯 Focus only on [specific task for this step]
|
||
|
|
- 🚫 FORBIDDEN to [what not to do in this step]
|
||
|
|
- 💬 Approach: [how to handle this specific task]
|
||
|
|
- 📋 Additional rule relevant to this step
|
||
|
|
|
||
|
|
## EXECUTION PROTOCOLS:
|
||
|
|
|
||
|
|
- 🎯 [Step-specific protocol 1]
|
||
|
|
- 💾 [Step-specific protocol 2 - e.g., document updates]
|
||
|
|
- 📖 [Step-specific protocol 3 - e.g., tracking requirements]
|
||
|
|
- 🚫 [Step-specific restriction]
|
||
|
|
|
||
|
|
## CONTEXT BOUNDARIES:
|
||
|
|
|
||
|
|
- Available context: [what context is available from previous steps]
|
||
|
|
- Focus: [what this step should concentrate on]
|
||
|
|
- Limits: [what not to assume or do]
|
||
|
|
- Dependencies: [what this step depends on]
|
||
|
|
|
||
|
|
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||
|
|
|
||
|
|
[Detailed instructions for the step's work]
|
||
|
|
|
||
|
|
### 1. Title
|
||
|
|
|
||
|
|
[Specific instructions for first part of the work]
|
||
|
|
|
||
|
|
### 2. Title
|
||
|
|
|
||
|
|
[Specific instructions for second part of the work]
|
||
|
|
|
||
|
|
#### Content to Append (if applicable):
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
## [Section Title]
|
||
|
|
|
||
|
|
[Content template or instructions for what to append]
|
||
|
|
```
|
||
|
|
|
||
|
|
### N. (Continue as needed)
|
||
|
|
|
||
|
|
### N. Present MENU OPTIONS
|
||
|
|
|
||
|
|
Display: **Select an Option:** [A] [Action Label] [P] Party Mode [C] Continue
|
||
|
|
|
||
|
|
#### EXECUTION RULES:
|
||
|
|
|
||
|
|
- ALWAYS halt and wait for user input after presenting menu
|
||
|
|
- ONLY proceed to next step when user selects 'C'
|
||
|
|
- After other menu items execution, return to this menu
|
||
|
|
- User can chat or ask questions - always respond and then end with display again of the menu options
|
||
|
|
- Use menu handling logic section below
|
||
|
|
|
||
|
|
#### Menu Handling Logic:
|
||
|
|
|
||
|
|
- IF A: Execute {advancedElicitationTask} # Or custom action
|
||
|
|
- IF P: Execute {partyModeWorkflow}
|
||
|
|
- IF C: Save content to {outputFile}, update frontmatter, then only then load, read entire file, then execute {nextStepFile}
|
||
|
|
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#n-present-menu-options)
|
||
|
|
|
||
|
|
Note: The menu number (N) should continue sequentially from previous sections (e.g., if the last section was "5. Content Analysis", use "6. Present MENU OPTIONS")
|
||
|
|
|
||
|
|
## CRITICAL STEP COMPLETION NOTE
|
||
|
|
|
||
|
|
[Specific conditions for completing this step and transitioning to the next, such as output to file being created with this tasks updates]
|
||
|
|
|
||
|
|
ONLY WHEN [C continue option] is selected and [completion requirements], will you then load and read fully `[installed_path]/step-[next-number]-[name].md` to execute and begin [next step description].
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
||
|
|
|
||
|
|
### ✅ SUCCESS:
|
||
|
|
|
||
|
|
- [Step-specific success criteria 1]
|
||
|
|
- [Step-specific success criteria 2]
|
||
|
|
- Content properly saved/document updated
|
||
|
|
- Menu presented and user input handled correctly
|
||
|
|
- [General success criteria]
|
||
|
|
|
||
|
|
### ❌ SYSTEM FAILURE:
|
||
|
|
|
||
|
|
- [Step-specific failure mode 1]
|
||
|
|
- [Step-specific failure mode 2]
|
||
|
|
- Proceeding without user input/selection
|
||
|
|
- Not updating required documents/frontmatter
|
||
|
|
- [General failure modes]
|
||
|
|
|
||
|
|
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Common Menu Patterns
|
||
|
|
|
||
|
|
### Standard Menu (A/P/C)
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### N. Present MENU OPTIONS
|
||
|
|
|
||
|
|
Display: **Select an Option:** [A] [Advanced Label] [P] Party Mode [C] Continue
|
||
|
|
|
||
|
|
#### EXECUTION RULES:
|
||
|
|
|
||
|
|
- ALWAYS halt and wait for user input after presenting menu
|
||
|
|
- ONLY proceed to next step when user selects 'C'
|
||
|
|
- After other menu items execution, return to this menu
|
||
|
|
- User can chat or ask questions - always respond and then end with display again of the menu options
|
||
|
|
- Use menu handling logic section below
|
||
|
|
|
||
|
|
#### Menu Handling Logic:
|
||
|
|
|
||
|
|
- IF A: Execute {advancedElicitationTask}
|
||
|
|
- IF P: Execute {partyModeWorkflow}
|
||
|
|
- IF C: Save content to {outputFile}, update frontmatter, then only then load, read entire file, then execute {nextStepFile}
|
||
|
|
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#n-present-menu-options)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Auto-Proceed Menu (No User Choice)
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### N. Present MENU OPTIONS
|
||
|
|
|
||
|
|
Display: **Proceeding to [next action]...**
|
||
|
|
|
||
|
|
#### EXECUTION RULES:
|
||
|
|
|
||
|
|
- This is an [auto-proceed reason] step with no user choices
|
||
|
|
- Proceed directly to next step after setup
|
||
|
|
- Use menu handling logic section below
|
||
|
|
|
||
|
|
#### Menu Handling Logic:
|
||
|
|
|
||
|
|
- After [completion condition], immediately load, read entire file, then execute {nextStepFile}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Custom Menu Options
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### N. Present MENU OPTIONS
|
||
|
|
|
||
|
|
Display: **Select an Option:** [A] [Custom Action 1] [B] [Custom Action 2] [C] Continue
|
||
|
|
|
||
|
|
#### EXECUTION RULES:
|
||
|
|
|
||
|
|
- ALWAYS halt and wait for user input after presenting menu
|
||
|
|
- ONLY proceed to next step when user selects 'C'
|
||
|
|
- After other menu items execution, return to this menu
|
||
|
|
- User can chat or ask questions - always respond and then end with display again of the menu options
|
||
|
|
- Use menu handling logic section below
|
||
|
|
|
||
|
|
#### Menu Handling Logic:
|
||
|
|
|
||
|
|
- IF A: [Custom handler for option A]
|
||
|
|
- IF B: [Custom handler for option B]
|
||
|
|
- IF C: Save content to {outputFile}, update frontmatter, then only then load, read entire file, then execute {nextStepFile}
|
||
|
|
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#n-present-menu-options)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Conditional Menu (Based on Workflow State)
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
### N. Present MENU OPTIONS
|
||
|
|
|
||
|
|
Display: **Select an Option:** [A] [Custom Label] [C] Continue
|
||
|
|
|
||
|
|
#### EXECUTION RULES:
|
||
|
|
|
||
|
|
- ALWAYS halt and wait for user input after presenting menu
|
||
|
|
- ONLY proceed to next step when user selects 'C'
|
||
|
|
- After other menu items execution, return to this menu
|
||
|
|
- User can chat or ask questions - always respond and then end with display again of the menu options
|
||
|
|
- Use menu handling logic section below
|
||
|
|
|
||
|
|
#### Menu Handling Logic:
|
||
|
|
|
||
|
|
- IF A: Execute {customAction}
|
||
|
|
- IF C: Save content to {outputFile}, update frontmatter, check [condition]:
|
||
|
|
- IF [condition true]: load, read entire file, then execute {pathA}
|
||
|
|
- IF [condition false]: load, read entire file, then execute {pathB}
|
||
|
|
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#n-present-menu-options)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Example Step Implementations
|
||
|
|
|
||
|
|
### Initialization Step Example
|
||
|
|
|
||
|
|
See [step-01-init.md](../reference/workflows/meal-prep-nutrition/steps/step-01-init.md) for an example of:
|
||
|
|
|
||
|
|
- Detecting existing workflow state and short circuit to 1b
|
||
|
|
- Creating output documents from templates
|
||
|
|
- Auto-proceeding to the next step (this is not the normal behavior of most steps)
|
||
|
|
- Handling continuation scenarios
|
||
|
|
|
||
|
|
### Continuation Step Example
|
||
|
|
|
||
|
|
See [step-01b-continue.md](../reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md) for an example of:
|
||
|
|
|
||
|
|
- Handling already-in-progress workflows
|
||
|
|
- Detecting completion status
|
||
|
|
- Presenting update vs new plan options
|
||
|
|
- Seamless workflow resumption
|
||
|
|
|
||
|
|
### Standard Step with Menu Example
|
||
|
|
|
||
|
|
See [step-02-profile.md](../reference/workflows/meal-prep-nutrition/steps/step-02-profile.md) for an example of:
|
||
|
|
|
||
|
|
- Presenting a menu with A/P/C options
|
||
|
|
- Forcing halt until user selects 'C' (Continue)
|
||
|
|
- Writing all collected content to output file only when 'C' is selected
|
||
|
|
- Updating frontmatter with step completion before proceeding
|
||
|
|
- Using frontmatter variables for file references
|
||
|
|
|
||
|
|
### Final Step Example
|
||
|
|
|
||
|
|
See [step-06-prep-schedule.md](../reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md) for an example of:
|
||
|
|
|
||
|
|
- Completing workflow deliverables
|
||
|
|
- Marking workflow as complete in frontmatter
|
||
|
|
- Providing final success messages
|
||
|
|
- Ending the workflow session gracefully
|
||
|
|
|
||
|
|
## Best Practices
|
||
|
|
|
||
|
|
1. **Keep step files focused** - Each step should do one thing well
|
||
|
|
2. **Be explicit in instructions** - No ambiguity about what to do
|
||
|
|
3. **Include all critical rules** - Don't assume anything from other steps
|
||
|
|
4. **Use clear, concise language** - Avoid jargon unless necessary
|
||
|
|
5. **Ensure all menu paths have handlers** - Ensure every option has clear instructions
|
||
|
|
6. **Document dependencies** - Clearly state what this step needs
|
||
|
|
7. **Define success clearly** - Both for the step and the workflow
|
||
|
|
8. **Mark completion clearly** - Ensure final steps update frontmatter to indicate workflow completion
|