some output should be improved and not run together in chat windows

This commit is contained in:
Brian Madison 2025-10-30 08:13:18 -05:00
parent 6d7f42dbec
commit ec111972a0
29 changed files with 1098 additions and 713 deletions

View File

@ -23,6 +23,14 @@ BMad-CORE (**C**ollaboration **O**ptimized **R**eflection **E**ngine) is a revol
---
## 🚀 New to v6? Start Here!
**[→ BMad Method V6 Quick Start Guide](./docs/BMad-Method-V6-Quick-Start.md)** - **NEW!** Get up and running with v6 in minutes
Learn how to build your first greenfield project with BMad Method v6 using our brand new quick start guide!
---
## 🔄 Upgrading from v4?
**[→ v4 to v6 Upgrade Guide](./docs/v4-to-v6-upgrade.md)** - Complete migration instructions for existing v4 users

View File

@ -20,8 +20,6 @@
<check if="user answered no">
<action>Proceed directly to Step 0</action>
</check>
<template-output>brainstorming_results</template-output>
</step>
<step n="0" goal="Load technical documentation">
@ -103,9 +101,24 @@
7. Wise Sage/Yoda - Cryptic wisdom, inverted syntax
8. Game Show Host - Enthusiastic, game show tropes
**Professional Presets:** 9. Analytical Expert - Systematic, data-driven, hierarchical 10. Supportive Mentor - Patient guidance, celebrates wins 11. Direct Consultant - Straight to the point, efficient 12. Collaborative Partner - Team-oriented, inclusive
**Professional Presets:**
**Quirky Presets:** 13. Cooking Show Chef - Recipe metaphors, culinary terms 14. Sports Commentator - Play-by-play, excitement 15. Nature Documentarian - Wildlife documentary style 16. Time Traveler - Temporal references, timeline talk 17. Conspiracy Theorist - Everything is connected 18. Zen Master - Philosophical, paradoxical 19. Star Trek Captain - Space exploration protocols 20. Soap Opera Drama - Dramatic reveals, gasps 21. Reality TV Contestant - Confessionals, drama
9. Analytical Expert - Systematic, data-driven, hierarchical
10. Supportive Mentor - Patient guidance, celebrates wins
11. Direct Consultant - Straight to the point, efficient
12. Collaborative Partner - Team-oriented, inclusive
**Quirky Presets:**
13. Cooking Show Chef - Recipe metaphors, culinary terms
14. Sports Commentator - Play-by-play, excitement
15. Nature Documentarian - Wildlife documentary style
16. Time Traveler - Temporal references, timeline talk
17. Conspiracy Theorist - Everything is connected
18. Zen Master - Philosophical, paradoxical
19. Star Trek Captain - Space exploration protocols
20. Soap Opera Drama - Dramatic reveals, gasps
21. Reality TV Contestant - Confessionals, drama
<action>If user wants to see more examples or create custom styles, show relevant sections from {communication_styles} guide and help them craft their unique style</action>
@ -352,16 +365,16 @@ Add domain-specific resources here.
<check if="external project without build tools">
<ask>Build tools not detected in this project. Would you like me to:
1. Generate the compiled agent (.md with XML) ready to use
2. Keep the YAML and build it elsewhere
3. Provide both formats
1. Generate the compiled agent (.md with XML) ready to use
2. Keep the YAML and build it elsewhere
3. Provide both formats
</ask>
<check if="option 1 or 3 selected">
<action>Generate compiled agent XML with proper structure including activation rules, persona sections, and menu items</action>
<action>Save compiled version as {{agent_filename}}.md</action>
<action>Provide path for .claude/commands/ or similar</action>
</check>
<check if="option 1 or 3 selected">
<action>Generate compiled agent XML with proper structure including activation rules, persona sections, and menu items</action>
<action>Save compiled version as {{agent_filename}}.md</action>
<action>Provide path for .claude/commands/ or similar</action>
</check>
</check>

View File

@ -108,7 +108,8 @@ Most workflows should be `standalone: true` to give users direct access.
1. **Yes (Recommended)** - Users can run it directly (standalone: true)
2. **No** - Only called by other workflows/agents (standalone: false)
Most workflows choose option 1:</ask>
Most workflows choose option 1:
</ask>
<action>Store {{standalone_setting}} as true or false based on response</action>
@ -150,7 +151,8 @@ The architecture workflow is an excellent example of intent-based with prescript
2. **Prescriptive** - Structured, consistent, controlled interactions
3. **Mixed/Balanced** - I'll help you decide step-by-step
What feels right for your workflow's purpose?</ask>
What feels right for your workflow's purpose?
</ask>
<action>Store {{instruction_style}} preference</action>
@ -185,11 +187,12 @@ Beyond style, consider **how interactive** this workflow should be:
<ask>What interactivity level suits this workflow?
1. **High** - Highly collaborative, user actively involved throughout
2. **Medium** - Guided with key decision points (most common)
3. **Low** - Autonomous with final review
1. **High** - Highly collaborative, user actively involved throughout (Recommended)
2. **Medium** - Guided with key decision points
3. **Low** - Mostly autonomous with final review
Select the level that matches your workflow's purpose:</ask>
Select the level that matches your workflow's purpose:
</ask>
<action>Store {{interactivity_level}} preference</action>
@ -487,6 +490,7 @@ Generate the template.md file following guide conventions:
# Document Title
**Date:** {{date}}
**Author:** {{user_name}}
```
@ -575,7 +579,9 @@ Review the created workflow:
4. Validate YAML syntax
5. Confirm all placeholders are replaced
**Standard Config Validation:** 6. Verify workflow.yaml contains standard config block:
**Standard Config Validation:**
6. Verify workflow.yaml contains standard config block:
- config_source defined
- output_folder, user_name, communication_language pulled from config
@ -584,7 +590,9 @@ Review the created workflow:
7. Check instructions use config variables where appropriate
8. Verify template includes config variables in metadata (if document workflow)
**YAML/Instruction/Template Alignment:** 9. Cross-check all workflow.yaml variables against instruction usage:
**YAML/Instruction/Template Alignment:**
9. Cross-check all workflow.yaml variables against instruction usage:
- Are all yaml variables referenced in instructions.md OR template.md?
- Are there hardcoded values that should be variables?

View File

@ -5,20 +5,20 @@
<workflow>
<step n="1" goal="Validate workflow readiness">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: brainstorm-game</param>
</invoke-workflow>
<step n="1" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<check if="status_exists == false">
<output>{{suggestion}}</output>
<output>Note: Game brainstorming is optional. Continuing without progress tracking.</output>
<check if="status file not found">
<output>No workflow status file found. Game brainstorming is optional - you can continue without status tracking.</output>
<action>Set standalone_mode = true</action>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "brainstorm-game" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<check if="project_type != 'game'">
<output>Note: This is a {{project_type}} project. Game brainstorming is designed for game projects.</output>
@ -28,10 +28,25 @@
</check>
</check>
<check if="warning != ''">
<output>{{warning}}</output>
<output>Note: Game brainstorming can be valuable at any project stage.</output>
<check if="brainstorm-game status is file path (already completed)">
<output>⚠️ Game brainstorming session already completed: {{brainstorm-game status}}</output>
<ask>Re-running will create a new session. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="brainstorm-game is not the next expected workflow (latter items are completed already in the list)">
<output>⚠️ Next expected workflow: {{next_workflow}}. Game brainstorming is out of sequence.</output>
<ask>Continue with game brainstorming anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
</step>
@ -66,17 +81,16 @@
</invoke-workflow>
</step>
<step n="4" goal="Update status and complete">
<step n="4" goal="Update status and complete" tag="workflow-status">
<check if="standalone_mode != true">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: brainstorm-game</param>
</invoke-workflow>
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "brainstorm-game"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["brainstorm-game"] = "{output_folder}/bmm-brainstorming-session-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="success == true">
<output>Status updated! Next: {{next_workflow}}</output>
</check>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>**✅ Game Brainstorming Session Complete, {user_name}!**
@ -88,16 +102,21 @@
{{#if standalone_mode != true}}
**Status Updated:**
- Progress tracking updated
- Progress tracking updated: brainstorm-game marked complete
- Next workflow: {{next_workflow}}
{{else}}
**Note:** Running in standalone mode (no progress tracking)
{{/if}}
**Next Steps:**
- **Next required:** {{next_workflow}} ({{next_agent}} agent)
{{#if standalone_mode != true}}
- **Next workflow:** {{next_workflow}} ({{next_agent}} agent)
- **Optional:** You can run other analysis workflows (research, game-brief) before proceeding
Check status anytime with: `workflow-status`
{{else}}
**Next Steps:**
Since no workflow is in progress:
- Refer to the BMM workflow guide if unsure what to do next

View File

@ -8,25 +8,40 @@
<workflow>
<step n="1" goal="Validate workflow readiness">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: brainstorm-project</param>
</invoke-workflow>
<step n="1" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<check if="status_exists == false">
<output>{{suggestion}}</output>
<output>Note: Brainstorming is optional. Continuing without progress tracking.</output>
<check if="status file not found">
<output>No workflow status file found. Brainstorming is optional - you can continue without status tracking.</output>
<action>Set standalone_mode = true</action>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "brainstorm-project" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<check if="warning != ''">
<output>{{warning}}</output>
<output>Note: Brainstorming can be valuable at any project stage.</output>
<check if="brainstorm-project status is file path (already completed)">
<output>⚠️ Brainstorming session already completed: {{brainstorm-project status}}</output>
<ask>Re-running will create a new session. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="brainstorm-project is not the next expected workflow (anything after brainstorm-project is completed already)">
<output>⚠️ Next expected workflow: {{next_workflow}}. Brainstorming is out of sequence.</output>
<ask>Continue with brainstorming anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
</step>
@ -51,36 +66,40 @@
</invoke-workflow>
</step>
<step n="4" goal="Update status and complete">
<step n="4" goal="Update status and complete" tag="workflow-status">
<check if="standalone_mode != true">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: brainstorm-project</param>
</invoke-workflow>
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "brainstorm-project"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["brainstorm-project"] = "{output_folder}/bmm-brainstorming-session-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="success == true">
<output>Status updated! Next: {{next_workflow}}</output>
</check>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>**✅ Brainstorming Session Complete, {user_name}!**
**Session Results:**
- Brainstorming results saved to: {output_folder}/bmm-brainstorming-session-{{date}}.md
{{#if standalone_mode != true}}
**Status Updated:**
- Progress tracking updated
**Next Steps:**
- **Next required:** {{next_workflow}} ({{next_agent}} agent)
- **Optional:** You can run other analysis workflows (research, product-brief) before proceeding
Check status anytime with: `workflow-status`
{{else}}
**Next Steps:**
Since no workflow is in progress:
- Refer to the BMM workflow guide if unsure what to do next
- Or run `workflow-init` to create a workflow path and get guided next steps
{{/if}}

View File

@ -9,20 +9,20 @@
<workflow>
<step n="0" goal="Validate workflow readiness">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: game-brief</param>
</invoke-workflow>
<step n="0" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<check if="status_exists == false">
<output>{{suggestion}}</output>
<output>Note: Game brief is optional. Continuing without progress tracking.</output>
<check if="status file not found">
<output>No workflow status file found. Game brief is optional - you can continue without status tracking.</output>
<action>Set standalone_mode = true</action>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "game-brief" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<check if="project_type != 'game'">
<output>Note: This is a {{project_type}} project. Game brief is designed for game projects.</output>
@ -32,10 +32,25 @@
</check>
</check>
<check if="warning != ''">
<output>{{warning}}</output>
<output>Note: Game brief can provide valuable vision clarity at any stage.</output>
<check if="game-brief status is file path (already completed)">
<output>⚠️ Game Brief already completed: {{game-brief status}}</output>
<ask>Re-running will overwrite the existing brief. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="game-brief is not the next expected workflow (latter items are completed already in the list)">
<output>⚠️ Next expected workflow: {{next_workflow}}. Game Brief is out of sequence.</output>
<ask>Continue with Game Brief anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
</step>
@ -309,17 +324,16 @@ This brief will serve as the primary input for creating the Game Design Document
<template-output>executive_brief</template-output>
</step>
<step n="16" goal="Update status and complete">
<step n="16" goal="Update status and complete" tag="workflow-status">
<check if="standalone_mode != true">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: game-brief</param>
</invoke-workflow>
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "game-brief"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["game-brief"] = "{output_folder}/bmm-game-brief-{{game_name}}-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="success == true">
<output>Status updated! Next: {{next_workflow}}</output>
</check>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>**✅ Game Brief Complete, {user_name}!**
@ -331,17 +345,17 @@ This brief will serve as the primary input for creating the Game Design Document
{{#if standalone_mode != true}}
**Status Updated:**
- Progress tracking updated
- Progress tracking updated: game-brief marked complete
- Next workflow: {{next_workflow}}
{{else}}
Note: Running in standalone mode (no status file).
To track progress across workflows, run `workflow-init` first.
**Note:** Running in standalone mode (no progress tracking)
{{/if}}
**Next Steps:**
{{#if standalone_mode != true}}
- **Next required:** {{next_workflow}} ({{next_agent}} agent)
- **Next workflow:** {{next_workflow}} ({{next_agent}} agent)
- **Optional:** Consider creating a prototype of core mechanic or validating assumptions with target players before proceeding
Check status anytime with: `workflow-status`

View File

@ -9,34 +9,45 @@
<workflow>
<step n="0" goal="Validate workflow readiness">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: product-brief</param>
</invoke-workflow>
<step n="0" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<check if="status_exists == false">
<output>{{suggestion}}</output>
<output>Note: Product Brief is optional. You can continue without status tracking.</output>
<check if="status file not found">
<output>No workflow status file found. Product Brief is optional - you can continue without status tracking.</output>
<action>Set standalone_mode = true</action>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "product-brief" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<check if="project_level < 2">
<output>Note: Product Brief is most valuable for Level 2+ projects. Your project is Level {{project_level}}.</output>
<output>You may want to skip directly to technical planning instead.</output>
</check>
<check if="warning != ''">
<output>{{warning}}</output>
<ask>Continue with Product Brief anyway? (y/n)</ask>
<check if="product-brief status is file path (already completed)">
<output>⚠️ Product Brief already completed: {{product-brief status}}</output>
<ask>Re-running will overwrite the existing brief. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. {{suggestion}}</output>
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="product-brief is not the next expected workflow (latter items are completed already in the list)">
<output>⚠️ Next expected workflow: {{next_workflow}}. Product Brief is out of sequence.</output>
<ask>Continue with Product Brief anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
</step>
@ -61,6 +72,7 @@
<ask>How would you like to work through the brief?
**1. Interactive Mode** - We'll work through each section together, discussing and refining as we go
**2. YOLO Mode** - I'll generate a complete draft based on our conversation so far, then we'll refine it together
Which approach works best for you?</ask>
@ -273,17 +285,16 @@ This brief will serve as the primary input for creating the Product Requirements
<template-output>executive_brief</template-output>
</step>
<step n="16" goal="Update status file on completion">
<step n="16" goal="Update status file on completion" tag="workflow-status">
<check if="standalone_mode != true">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: product-brief</param>
</invoke-workflow>
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "product-brief"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["product-brief"] = "{output_folder}/bmm-product-brief-{{project_name}}-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="success == true">
<output>Status updated! Next: {{next_workflow}}</output>
</check>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>**✅ Product Brief Complete, {user_name}!**
@ -295,8 +306,8 @@ This brief will serve as the primary input for creating the Product Requirements
{{#if standalone_mode != true}}
**Status Updated:**
- Progress tracking updated
- Current workflow marked complete
- Progress tracking updated: product-brief marked complete
- Next workflow: {{next_workflow}}
{{else}}
**Note:** Running in standalone mode (no progress tracking)
{{/if}}
@ -305,7 +316,7 @@ This brief will serve as the primary input for creating the Product Requirements
{{#if standalone_mode != true}}
- **Next required:** {{next_workflow}} ({{next_agent}} agent)
- **Next workflow:** {{next_workflow}} ({{next_agent}} agent)
- **Optional:** Gather additional stakeholder input or run research workflows before proceeding
Check status anytime with: `workflow-status`

View File

@ -374,60 +374,50 @@ Select option (1-4):</ask>
</step>
<step n="FINAL" goal="Update status file on completion">
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
<action>Find the most recent file (by date in filename)</action>
<step n="FINAL" goal="Update status file on completion" tag="workflow-status">
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "research"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["research"] = "{output_folder}/bmm-research-deep-prompt-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="status file exists">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: research</param>
</invoke-workflow>
<check if="success == true">
<output>Status updated! Next: {{next_workflow}}</output>
</check>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>**✅ Deep Research Prompt Generated**
**Research Prompt:**
- Structured research prompt generated and saved
- Structured research prompt generated and saved to {output_folder}/bmm-research-deep-prompt-{{date}}.md
- Ready to execute with ChatGPT, Claude, Gemini, or Grok
**Status file updated:**
{{#if standalone_mode != true}}
**Status Updated:**
- Current step: research (deep-prompt) ✓
- Progress: {{new_progress_percentage}}%
- Progress tracking updated: research marked complete
- Next workflow: {{next_workflow}}
{{else}}
**Note:** Running in standalone mode (no progress tracking)
{{/if}}
**Next Steps:**
- **Next required:** {{next_workflow}} ({{next_agent}} agent)
{{#if standalone_mode != true}}
- **Next workflow:** {{next_workflow}} ({{next_agent}} agent)
- **Optional:** Execute the research prompt with AI platform, gather findings, or run additional research workflows
Check status anytime with: `workflow-status`
</output>
</check>
<check if="status file not found">
<output>**✅ Deep Research Prompt Generated**
**Research Prompt:**
- Structured research prompt generated and saved
Note: Running in standalone mode (no status file).
**Next Steps:**
{{else}}
Since no workflow is in progress:
- Execute the research prompt with AI platform and gather findings
- Refer to the BMM workflow guide if unsure what to do next
- Or run `workflow-init` to create a workflow path and get guided next steps
{{/if}}
</output>
</check>
</step>
</workflow>

View File

@ -554,60 +554,49 @@ Create compelling executive summary with:
</step>
<step n="14" goal="Update status file on completion">
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
<action>Find the most recent file (by date in filename)</action>
<step n="14" goal="Update status file on completion" tag="workflow-status">
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "research"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["research"] = "{output_folder}/bmm-research-{{research_mode}}-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="status file exists">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: research</param>
</invoke-workflow>
<check if="success == true">
<output>Status updated! Next: {{next_workflow}}</output>
</check>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>**✅ Research Complete ({{research_mode}} mode)**
**Research Report:**
- Research report generated and saved
- Research report generated and saved to {output_folder}/bmm-research-{{research_mode}}-{{date}}.md
**Status file updated:**
{{#if standalone_mode != true}}
**Status Updated:**
- Current step: research ({{research_mode}}) ✓
- Progress: {{new_progress_percentage}}%
- Progress tracking updated: research marked complete
- Next workflow: {{next_workflow}}
{{else}}
**Note:** Running in standalone mode (no progress tracking)
{{/if}}
**Next Steps:**
- **Next required:** {{next_workflow}} ({{next_agent}} agent)
{{#if standalone_mode != true}}
- **Next workflow:** {{next_workflow}} ({{next_agent}} agent)
- **Optional:** Review findings with stakeholders, or run additional analysis workflows (product-brief, game-brief, etc.)
Check status anytime with: `workflow-status`
</output>
</check>
<check if="status file not found">
<output>**✅ Research Complete ({{research_mode}} mode)**
**Research Report:**
- Research report generated and saved
Note: Running in standalone mode (no status file).
**Next Steps:**
{{else}}
Since no workflow is in progress:
- Review research findings
- Refer to the BMM workflow guide if unsure what to do next
- Or run `workflow-init` to create a workflow path and get guided next steps
{{/if}}
</output>
</check>
</step>
</workflow>

View File

@ -10,26 +10,42 @@
<critical>This is a ROUTER that directs to specialized research instruction sets</critical>
<step n="1" goal="Validate workflow readiness">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: research</param>
</invoke-workflow>
<step n="1" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<check if="status_exists == false">
<output>{{suggestion}}</output>
<output>Note: Research is optional. Continuing without progress tracking.</output>
<check if="status file not found">
<output>No workflow status file found. Research is optional - you can continue without status tracking.</output>
<action>Set standalone_mode = true</action>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for status updates in sub-workflows</action>
<action>Pass status_file_path to loaded instruction set</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "research" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<action>Pass status context to loaded instruction set for final update</action>
<check if="warning != ''">
<output>{{warning}}</output>
<output>Note: Research can provide valuable insights at any project stage.</output>
<check if="research status is file path (already completed)">
<output>⚠️ Research already completed: {{research status}}</output>
<ask>Re-running will create a new research report. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="research is not the next expected workflow (latter items are completed already in the list)">
<output>⚠️ Next expected workflow: {{next_workflow}}. Research is out of sequence.</output>
<output>Note: Research can provide valuable insights at any project stage.</output>
<ask>Continue with Research anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
</step>

View File

@ -442,60 +442,49 @@ Select option (1-5):</ask>
</step>
<step n="FINAL" goal="Update status file on completion">
<action>Search {output_folder}/ for files matching pattern: bmm-workflow-status.md</action>
<action>Find the most recent file (by date in filename)</action>
<step n="FINAL" goal="Update status file on completion" tag="workflow-status">
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "research"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["research"] = "{output_folder}/bmm-research-technical-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="status file exists">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: research</param>
</invoke-workflow>
<check if="success == true">
<output>Status updated! Next: {{next_workflow}}</output>
</check>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>**✅ Technical Research Complete**
**Research Report:**
- Technical research report generated and saved
- Technical research report generated and saved to {output_folder}/bmm-research-technical-{{date}}.md
**Status file updated:**
{{#if standalone_mode != true}}
**Status Updated:**
- Current step: research (technical) ✓
- Progress: {{new_progress_percentage}}%
- Progress tracking updated: research marked complete
- Next workflow: {{next_workflow}}
{{else}}
**Note:** Running in standalone mode (no progress tracking)
{{/if}}
**Next Steps:**
- **Next required:** {{next_workflow}} ({{next_agent}} agent)
{{#if standalone_mode != true}}
- **Next workflow:** {{next_workflow}} ({{next_agent}} agent)
- **Optional:** Review findings with architecture team, or run additional analysis workflows
Check status anytime with: `workflow-status`
</output>
</check>
<check if="status file not found">
<output>**✅ Technical Research Complete**
**Research Report:**
- Technical research report generated and saved
Note: Running in standalone mode (no status file).
**Next Steps:**
{{else}}
Since no workflow is in progress:
- Review technical research findings
- Refer to the BMM workflow guide if unsure what to do next
- Or run `workflow-init` to create a workflow path and get guided next steps
{{/if}}
</output>
</check>
</step>
</workflow>

View File

@ -12,28 +12,42 @@
<critical>DOCUMENT OUTPUT: Professional, specific, actionable UX design decisions WITH RATIONALE. User skill level ({user_skill_level}) affects conversation style ONLY, not document content.</critical>
<step n="0" goal="Validate workflow and extract project configuration">
<step n="0" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: data</param>
<param>data_request: project_config</param>
</invoke-workflow>
<check if="status_exists == false">
<output>**Note: No Workflow Status File Found**
Create UX Design can run standalone or as part of the BMM planning workflow.
For standalone use, we'll gather requirements as we go.
For integrated use, run `workflow-init` first for better context.
</output>
<action>Set mode: standalone</action>
<check if="status file not found">
<output>No workflow status file found. Create UX Design can run standalone or as part of BMM planning workflow.</output>
<output>For standalone use, we'll gather requirements as we go. For integrated use, run `workflow-init` first for better context.</output>
<action>Set standalone_mode = true</action>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<action>Store {{project_level}} for scoping decisions</action>
<action>Set mode: integrated</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "create-design" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<check if="create-design status is file path (already completed)">
<output>⚠️ UX Design already completed: {{create-design status}}</output>
<ask>Re-running will overwrite the existing UX design. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="create-design is not the next expected workflow">
<output>⚠️ Next expected workflow: {{next_workflow}}. UX Design is out of sequence.</output>
<ask>Continue with UX Design anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
<action>Store {{project_level}} for scoping decisions</action>
</check>
</step>
@ -1116,12 +1130,16 @@ Based on your deployment intent: {{recommendation}}
<action>Save final document to {default_output_file}</action>
<check if="tracking_mode == true">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: create-ux-design</param>
</invoke-workflow>
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "create-design"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["create-design"] = "{default_output_file}"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<ask>🎨 **One more thing!** Want to see your design come to life?

View File

@ -67,19 +67,27 @@ Use: `prd`
</check>
</step>
<step n="0.5" goal="Validate workflow sequencing">
<step n="0.5" goal="Validate workflow sequencing" tag="workflow-status">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: gdd</param>
</invoke-workflow>
<check if="standalone_mode != true">
<action>Check status of "gdd" workflow in loaded status file</action>
<check if="warning != ''">
<output>{{warning}}</output>
<ask>Continue with GDD anyway? (y/n)</ask>
<check if="n">
<output>{{suggestion}}</output>
<action>Exit workflow</action>
<check if="gdd status is file path (already completed)">
<output>⚠️ GDD already completed: {{gdd status}}</output>
<ask>Re-running will overwrite the existing GDD. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="gdd is not the next expected workflow (latter items are completed already in the list)">
<output>⚠️ Next expected workflow: {{next_workflow}}. GDD is out of sequence.</output>
<ask>Continue with GDD anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
</check>
</step>
@ -328,18 +336,23 @@ For each {{placeholder}} in the fragment, elicit and capture that information.
</step>
<step n="15" goal="Update status and populate story sequence">
<step n="15" goal="Update status and populate story sequence" tag="workflow-status">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: gdd</param>
<param>populate_stories_from: {epics_output_file}</param>
</invoke-workflow>
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "gdd"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["gdd"] = "{output_folder}/bmm-gdd-{{game_name}}-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="success == true">
<output>Status updated! Next: {{next_workflow}} ({{next_agent}} agent)</output>
<output>Loaded {{total_stories}} stories from epics.</output>
<action>Parse {epics_output_file} to extract all stories</action>
<action>Populate story_sequence section in status file with story IDs</action>
<action>Set each story status to "not-started"</action>
<output>Loaded {{total_stories}} stories from epics into story sequence.</output>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
<output>Next workflow: {{next_workflow}} ({{next_agent}} agent)</output>
</check>
</step>

View File

@ -10,20 +10,40 @@
<critical>If users mention gameplay mechanics, note them but keep focus on narrative</critical>
<critical>Facilitate good brainstorming techniques throughout with the user, pushing them to come up with much of the narrative you will help weave together. The goal is for the user to feel that they crafted the narrative and story arc unless they push you to do it all or indicate YOLO</critical>
<step n="0" goal="Check for workflow status">
<step n="0" goal="Check for workflow status" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: init-check</param>
</invoke-workflow>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<action>Set tracking_mode = true</action>
<check if="status file not found">
<output>No workflow status file found. Narrative workflow is optional - you can continue without status tracking.</output>
<action>Set standalone_mode = true</action>
</check>
<check if="status_exists == false">
<action>Set tracking_mode = false</action>
<output>Note: Running without workflow tracking. Run `workflow-init` to enable progress tracking.</output>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "narrative" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<check if="narrative status is file path (already completed)">
<output>⚠️ Narrative Design Document already completed: {{narrative status}}</output>
<ask>Re-running will overwrite the existing narrative document. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="narrative is not the next expected workflow (latter items are completed already in the list)">
<output>⚠️ Next expected workflow: {{next_workflow}}. Narrative is out of sequence.</output>
<ask>Continue with Narrative Design anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
</step>
@ -539,19 +559,50 @@ Which would you like?</ask>
</step>
<step n="17" goal="Update status if tracking enabled">
<step n="17" goal="Update status if tracking enabled" tag="workflow-status">
<check if="tracking_mode == true">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: narrative</param>
</invoke-workflow>
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "narrative"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["narrative"] = "{output_folder}/bmm-narrative-{{game_name}}-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="success == true">
<output>✅ Status updated! Next: {{next_workflow}}</output>
</check>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
</step>
<output>**✅ Narrative Design Complete, {user_name}!**
**Narrative Document:**
- Narrative design saved to {output_folder}/bmm-narrative-{{game_name}}-{{date}}.md
{{#if standalone_mode != true}}
**Status Updated:**
- Progress tracking updated: narrative marked complete
- Next workflow: {{next_workflow}}
{{else}}
**Note:** Running in standalone mode (no progress tracking)
{{/if}}
**Next Steps:**
{{#if standalone_mode != true}}
- **Next workflow:** {{next_workflow}} ({{next_agent}} agent)
- **Optional:** Review narrative with writing team or stakeholders
Check status anytime with: `workflow-status`
{{else}}
Since no workflow is in progress:
- Review narrative design with team
- Refer to the BMM workflow guide if unsure what to do next
- Or run `workflow-init` to create a workflow path and get guided next steps
{{/if}}
</output>
</step>
</workflow>

View File

@ -12,37 +12,27 @@
<workflow>
<step n="0" goal="Validate workflow and extract project configuration">
<step n="0" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: data</param>
<param>data_request: project_config</param>
</invoke-workflow>
<check if="status_exists == false">
<output>**Note: No Workflow Status File Found**
The PRD workflow can run standalone or as part of the BMM workflow path.
**Recommended:** Run `workflow-init` first for:
- Project context tracking
- Workflow sequencing guidance
- Progress monitoring across workflows
**Or continue standalone** without progress tracking.
</output>
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
<check if="continue">
<action>Set standalone_mode = true</action>
</check>
<check if="exit">
<action>Exit workflow</action>
</check>
<check if="status file not found">
<output>No workflow status file found. PRD workflow can run standalone or as part of BMM workflow path.</output>
<output>**Recommended:** Run `workflow-init` first for project context tracking and workflow sequencing.</output>
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
<check if="continue">
<action>Set standalone_mode = true</action>
</check>
<check if="exit">
<action>Exit workflow</action>
</check>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "prd" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<check if="project_level < 2">
<output>**Incorrect Workflow for Level {{project_level}}**
@ -54,32 +44,25 @@ PRD is for Level 2-4 projects. Level 0-1 should use tech-spec directly.
<action>Exit and redirect to tech-spec</action>
</check>
<check if="project_type == game">
<output>**Incorrect Workflow for Game Projects**
Game projects should use GDD workflow instead of PRD.
**Correct workflow:** `gdd` (PM agent)
</output>
<action>Exit and redirect to gdd</action>
</check>
</check>
</step>
<step n="0.5" goal="Validate workflow sequencing">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: prd</param>
</invoke-workflow>
<check if="warning != ''">
<output>{{warning}}</output>
<ask>Continue with PRD anyway? (y/n)</ask>
<check if="n">
<output>{{suggestion}}</output>
<action>Exit workflow</action>
<check if="prd status is file path (already completed)">
<output>⚠️ PRD already completed: {{prd status}}</output>
<ask>Re-running will overwrite the existing PRD. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="prd is not the next expected workflow">
<output>⚠️ Next expected workflow: {{next_workflow}}. PRD is out of sequence.</output>
<ask>Continue with PRD anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
</step>
@ -409,18 +392,17 @@ For each epic from the epic list, expand with full story details:
</step>
<step n="10" goal="Update status and complete">
<step n="10" goal="Update status and complete" tag="workflow-status">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: prd</param>
<param>populate_stories_from: {epics_output_file}</param>
</invoke-workflow>
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "prd"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["prd"] = "{default_output_file}"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="success == true">
<output>Status updated! Next: {{next_workflow}} ({{next_agent}} agent)</output>
<output>Loaded {{total_stories}} stories from epics.</output>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>**✅ PRD Workflow Complete, {user_name}!**

View File

@ -13,37 +13,27 @@
<critical>DOCUMENT OUTPUT: Technical, precise, definitive. Specific versions only. User skill level ({user_skill_level}) affects conversation style ONLY, not document content.</critical>
<step n="0" goal="Validate workflow and extract project configuration">
<step n="0" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: data</param>
<param>data_request: project_config</param>
</invoke-workflow>
<check if="status_exists == false">
<output>**Note: No Workflow Status File Found**
The tech-spec workflow can run standalone or as part of the BMM workflow path.
**Recommended:** Run `workflow-init` first for:
- Project context tracking
- Workflow sequencing guidance
- Progress monitoring across workflows
**Or continue standalone** without progress tracking.
</output>
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
<check if="continue">
<action>Set standalone_mode = true</action>
</check>
<check if="exit">
<action>Exit workflow</action>
</check>
<check if="status file not found">
<output>No workflow status file found. Tech-spec workflow can run standalone or as part of BMM workflow path.</output>
<output>**Recommended:** Run `workflow-init` first for project context tracking and workflow sequencing.</output>
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
<check if="continue">
<action>Set standalone_mode = true</action>
</check>
<check if="exit">
<action>Exit workflow</action>
</check>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "tech-spec" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<check if="project_level >= 2">
<output>**Incorrect Workflow for Level {{project_level}}**
@ -55,32 +45,25 @@ Tech-spec is for Level 0-1 projects. Level 2-4 should use PRD workflow.
<action>Exit and redirect to prd</action>
</check>
<check if="project_type == game">
<output>**Incorrect Workflow for Game Projects**
Game projects should use GDD workflow instead of tech-spec.
**Correct workflow:** `gdd` (PM agent)
</output>
<action>Exit and redirect to gdd</action>
</check>
</check>
</step>
<step n="0.5" goal="Validate workflow sequencing">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: tech-spec</param>
</invoke-workflow>
<check if="warning != ''">
<output>{{warning}}</output>
<ask>Continue with tech-spec anyway? (y/n)</ask>
<check if="n">
<output>{{suggestion}}</output>
<action>Exit workflow</action>
<check if="tech-spec status is file path (already completed)">
<output>⚠️ Tech-spec already completed: {{tech-spec status}}</output>
<ask>Re-running will overwrite the existing tech-spec. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="tech-spec is not the next expected workflow">
<output>⚠️ Next expected workflow: {{next_workflow}}. Tech-spec is out of sequence.</output>
<ask>Continue with tech-spec anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
</step>
@ -232,24 +215,25 @@ Run cohesion validation? (y/n)</ask>
## Next Steps
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: tech-spec</param>
</invoke-workflow>
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "tech-spec"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["tech-spec"] = "{output_folder}/bmm-tech-spec-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="success == true">
<output>Status updated!</output>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>**✅ Tech-Spec Complete, {user_name}!**
**Deliverables Created:**
<check if="project_level == 0">
<check if="project_level == 0">
- ✅ tech-spec.md - Technical specification
- ✅ user-story.md - Single user story
</check>
</check>
<check if="project_level == 1">
- ✅ tech-spec.md - Technical specification

View File

@ -10,37 +10,27 @@
<critical>Generate all documents in {document_output_language}</critical>
<critical>This workflow replaces architecture with a conversation-driven approach</critical>
<step n="0" goal="Validate workflow and extract project configuration">
<step n="0" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: data</param>
<param>data_request: project_config</param>
</invoke-workflow>
<check if="status_exists == false">
<output>**Note: No Workflow Status File Found**
The Decision Architecture workflow can run standalone or as part of the BMM workflow path.
**Recommended:** Run `workflow-init` first for:
- Project context tracking
- Workflow sequencing guidance
- Progress monitoring across workflows
**Or continue standalone** without progress tracking.
</output>
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
<check if="continue">
<action>Set standalone_mode = true</action>
</check>
<check if="exit">
<action>Exit workflow</action>
</check>
<check if="status file not found">
<output>No workflow status file found. Decision Architecture can run standalone or as part of BMM workflow path.</output>
<output>**Recommended:** Run `workflow-init` first for project context tracking and workflow sequencing.</output>
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
<check if="continue">
<action>Set standalone_mode = true</action>
</check>
<check if="exit">
<action>Exit workflow</action>
</check>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "create-architecture" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<check if="project_level < 3">
<output>**Note: Level {{project_level}} Project**
@ -50,23 +40,26 @@ Decision Architecture is typically for Level 3-4 projects, but can be used for a
For Level {{project_level}}, we'll keep the architecture appropriately scoped.
</output>
</check>
</check>
</step>
<step n="0.5" goal="Validate workflow sequencing">
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: validate</param>
<param>calling_workflow: architecture</param>
</invoke-workflow>
<check if="warning != ''">
<output>{{warning}}</output>
<ask>Continue with Decision Architecture anyway? (y/n)</ask>
<check if="n">
<output>{{suggestion}}</output>
<action>Exit workflow</action>
<check if="create-architecture status is file path (already completed)">
<output>⚠️ Architecture already completed: {{create-architecture status}}</output>
<ask>Re-running will overwrite the existing architecture. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="create-architecture is not the next expected workflow">
<output>⚠️ Next expected workflow: {{next_workflow}}. Architecture is out of sequence.</output>
<ask>Continue with Architecture anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
<action>Check for existing PRD and epics files using fuzzy matching</action>
@ -663,20 +656,20 @@ Enforcement: "All agents MUST follow this pattern"
<action>Save document to {output_folder}/architecture.md</action>
<invoke-workflow path="{project-root}/bmad/bmm/workflows/workflow-status">
<param>mode: update</param>
<param>action: complete_workflow</param>
<param>workflow_name: architecture</param>
</invoke-workflow>
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "create-architecture"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["create-architecture"] = "{output_folder}/bmm-architecture-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<check if="success == true">
<output>✅ Decision Architecture workflow complete!
Status updated.
</output>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<output>✅ Decision Architecture workflow complete!</output>
<output>**Deliverables Created:**
- ✅ architecture.md - Complete architectural decisions document

View File

@ -6,47 +6,53 @@
<workflow>
<step n="0" goal="Initialize and understand project context">
<invoke-workflow path="{workflow_status_workflow}">
<param>mode: data</param>
<param>data_request: project_config</param>
</invoke-workflow>
<step n="0" goal="Validate workflow readiness" tag="workflow-status">
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<check if="status_exists == false">
<output>**Note: No Workflow Status File Found**
The Implementation Ready Check can run standalone or as part of the BMM workflow path.
**Recommended:** Run `workflow-init` first for:
- Project context tracking
- Workflow sequencing guidance
- Progress monitoring across workflows
**Or continue standalone** without progress tracking.
</output>
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
<check if="continue">
<action>Set standalone_mode = true</action>
</check>
<check if="exit">
<action>Exit workflow</action>
</check>
<check if="status file not found">
<output>No workflow status file found. Implementation Ready Check can run standalone or as part of BMM workflow path.</output>
<output>**Recommended:** Run `workflow-init` first for project context tracking and workflow sequencing.</output>
<ask>Continue in standalone mode or exit to run workflow-init? (continue/exit)</ask>
<check if="continue">
<action>Set standalone_mode = true</action>
</check>
<check if="exit">
<action>Exit workflow</action>
</check>
</check>
<check if="status_exists == true">
<action>Store {{status_file_path}} for later updates</action>
<action>Store {{project_level}}, {{active_path}}, and {{workflow_phase}} for validation context</action>
<check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action>
<action>Check status of "solutioning-gate-check" workflow</action>
<action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action>
<action>Based on the project_level, understand what artifacts should exist:
<action>Based on the project_level, understand what artifacts should exist: - Level 0-1: Tech spec and simple stories only (no PRD, minimal solutioning) - Level 2: PRD, tech spec, epics/stories (no separate architecture doc) - Level 3-4: Full suite - PRD, architecture document, epics/stories, possible UX artifacts
</action>
- Level 0-1: Tech spec and simple stories only (no PRD, minimal solutioning)
- Level 2: PRD, tech spec, epics/stories (no separate architecture doc)
- Level 3-4: Full suite - PRD, architecture document, epics/stories, possible UX artifacts
</action>
<check if="solutioning-gate-check status is file path (already completed)">
<output>⚠️ Gate check already completed: {{solutioning-gate-check status}}</output>
<ask>Re-running will create a new validation report. Continue? (y/n)</ask>
<check if="n">
<output>Exiting. Use workflow-status to see your next step.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="solutioning-gate-check is not the next expected workflow">
<output>⚠️ Next expected workflow: {{next_workflow}}. Gate check is out of sequence.</output>
<ask>Continue with gate check anyway? (y/n)</ask>
<check if="n">
<output>Exiting. Run {{next_workflow}} instead.</output>
<action>Exit workflow</action>
</check>
</check>
<action>Set standalone_mode = false</action>
</check>
<critical>The validation approach must adapt to the project level - don't look for documents that shouldn't exist at lower levels</critical>
</check>
<template-output>project_context</template-output>
</step>
@ -249,23 +255,48 @@ The Implementation Ready Check can run standalone or as part of the BMM workflow
<template-output>readiness_assessment</template-output>
</step>
<step n="7" goal="Workflow status update offer" optional="true">
<ask>The readiness assessment is complete. Would you like to update the workflow status to proceed to the next phase? [yes/no]
<step n="7" goal="Update status and complete" tag="workflow-status">
<check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "solutioning-gate-check"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["solutioning-gate-check"] = "{output_folder}/bmm-readiness-assessment-{{date}}.md"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
Note: This will advance the project workflow to the next phase in your current path.</ask>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action>
<action>Determine next agent from path file based on next workflow</action>
</check>
<action if="user_response == 'yes'">
Determine the next workflow phase based on current status:
- If Level 0-1: Advance to implementation phase
- If Level 2-4 in solutioning: Advance to Phase 4 (Implementation)
- Update the workflow status configuration accordingly
- Confirm the update with the user
</action>
<output>**✅ Implementation Ready Check Complete!**
<action if="user_response == 'no'">
Acknowledge that the workflow status remains unchanged.
Remind user they can manually update when ready.
</action>
**Assessment Report:**
- Readiness assessment saved to: {output_folder}/bmm-readiness-assessment-{{date}}.md
{{#if standalone_mode != true}}
**Status Updated:**
- Progress tracking updated: solutioning-gate-check marked complete
- Next workflow: {{next_workflow}}
{{else}}
**Note:** Running in standalone mode (no progress tracking)
{{/if}}
**Next Steps:**
{{#if standalone_mode != true}}
- **Next workflow:** {{next_workflow}} ({{next_agent}} agent)
- Review the assessment report and address any critical issues before proceeding
Check status anytime with: `workflow-status`
{{else}}
Since no workflow is in progress:
- Refer to the BMM workflow guide if unsure what to do next
- Or run `workflow-init` to create a workflow path and get guided next steps
{{/if}}
</output>
<template-output>status_update_result</template-output>
</step>

View File

@ -234,6 +234,7 @@ You may need to run sprint-planning to refresh tracking, or manually set the sto
<output>**✅ Story Created Successfully, {user_name}!**
**Story Details:**
- Story ID: {{story_id}}
- Story Key: {{story_key}}
- File: {{story_file}}
@ -242,6 +243,7 @@ You may need to run sprint-planning to refresh tracking, or manually set the sto
**⚠️ Important:** The following workflows are context-intensive. It's recommended to clear context and restart the SM agent before running the next command.
**Next Steps:**
1. Review the drafted story in {{story_file}}
2. **[RECOMMENDED]** Run `story-context` to generate technical context XML and mark story ready for development (combines context + ready in one step)
3. Or run `story-ready` to manually mark the story ready without generating technical context

View File

@ -178,12 +178,14 @@ You may need to run sprint-planning to refresh tracking.
<output>✅ Story context generated successfully, {user_name}!
**Story Details:**
- Story: {{epic_id}}.{{story_id}} - {{story_title}}
- Story Key: {{story_key}}
- Context File: {default_output_file}
- Status: drafted → ready-for-dev
**Context Includes:**
- Documentation artifacts and references
- Existing code and interfaces
- Dependencies and frameworks
@ -191,6 +193,7 @@ You may need to run sprint-planning to refresh tracking.
- Development constraints
**Next Steps:**
1. Review the context file: {default_output_file}
2. Run `dev-story` to implement the story
3. Generate context for more drafted stories if needed

View File

@ -19,7 +19,7 @@ The workflow status system provides:
workflow-status/
├── workflow.yaml # Main configuration
├── instructions.md # Status checker (99 lines)
├── workflow-status-template.md # Clean key-value template
├── workflow-status-template.yaml # Clean YAML status template
├── project-levels.yaml # Source of truth for scale definitions
└── paths/ # Modular workflow definitions
├── greenfield-level-0.yaml through level-4.yaml
@ -61,25 +61,44 @@ workflow-init/
## Status File Format
Simple key-value pairs for instant parsing:
Clean YAML format with all workflows listed up front:
```markdown
PROJECT_NAME: MyProject
PROJECT_TYPE: software
PROJECT_LEVEL: 2
FIELD_TYPE: greenfield
CURRENT_PHASE: 2-Planning
CURRENT_WORKFLOW: prd
NEXT_ACTION: Continue PRD
NEXT_COMMAND: prd
NEXT_AGENT: pm
```yaml
# generated: 2025-10-29
# project: MyProject
# project_type: software
# project_level: 2
# field_type: greenfield
# workflow_path: greenfield-level-2.yaml
workflow_status:
# Phase 1: Analysis
brainstorm-project: optional
research: optional
product-brief: recommended
# Phase 2: Planning
prd: docs/prd.md
validate-prd: optional
create-design: conditional
# Phase 3: Solutioning
create-architecture: required
validate-architecture: optional
solutioning-gate-check: required
```
Any agent can instantly grep what they need:
**Status Values:**
- Any: `grep 'NEXT_ACTION:' status.md`
- Any: `grep 'CURRENT_PHASE:' status.md`
- Any: `grep 'NEXT_COMMAND:' status.md`
- `required` / `optional` / `recommended` / `conditional` - Not yet started
- `{file-path}` - Completed (e.g., `docs/prd.md`)
- `skipped` - Optional workflow that was skipped
Any agent can instantly parse what they need:
- Read YAML to see all workflows and their status
- Check which workflows are completed vs pending
- Auto-detect existing work by scanning for output files
## Project Levels
@ -213,10 +232,10 @@ Other workflows read the status to coordinate:
**Phase 4 (Implementation):**
- workflow-status only tracks sprint-planning completion
- After sprint-planning, all story/epic tracking happens in the sprint plan output file
- After sprint-planning, all story/epic tracking happens in sprint-status.yaml
- Phase 4 workflows do NOT read/write workflow-status (except sprint-planning for prerequisite verification)
The status file is the single source of truth for Phases 1-3 and the hub that keeps all agents synchronized.
The workflow-status.yaml file is the single source of truth for Phases 1-3, and sprint-status.yaml takes over for Phase 4 implementation tracking.
## Benefits

View File

@ -261,36 +261,129 @@ Here's the complexity scale for reference:
<template-output>workflow_path_file</template-output>
</step>
<step n="5" goal="Generate workflow summary">
<action>Build workflow from loaded path file</action>
<action>Display phases and workflows</action>
<action>Set initial values for status file</action>
<step n="5" goal="Build workflow status YAML structure">
<action>Parse the loaded workflow path file and extract all workflows</action>
<template-output>current_phase</template-output>
<template-output>current_workflow</template-output>
<template-output>current_agent</template-output>
<template-output>next_action</template-output>
<template-output>next_command</template-output>
<template-output>next_agent</template-output>
<action>For each phase in the path file:
- Extract phase number and name
- Extract all workflows in that phase
- For each workflow, determine its status type:
- required: true → status = "required"
- recommended: true → status = "recommended"
- conditional: "if_has_ui" → status = "conditional"
- optional: true → status = "optional"
- Default if not specified → status = "required"
</action>
<action>Build the workflow_items list in this format:
For each phase:
1. Add comment header: ` # Phase {n}: {Phase Name}`
2. For each workflow in phase:
- Add entry: ` {workflow-id}: {status}`
3. Add blank line between phases
Example structure:
```
# Phase 1: Analysis
brainstorm-project: optional
research: optional
product-brief: recommended
# Phase 2: Planning
prd: required
validate-prd: optional
create-design: conditional
```
</action>
<action>Scan for existing workflow output files to auto-detect completion:
For each workflow in the list, check common output locations:
- {output_folder}/brainstorm-\*.md for brainstorm-project
- {output_folder}/research-\*.md for research
- {output_folder}/product-brief.md for product-brief
- {output_folder}/prd.md for prd
- {output_folder}/ux-design.md for create-design
- {output_folder}/architecture.md for create-architecture
- {output_folder}/tech-spec.md for tech-spec
- {output_folder}/sprint-status.yaml for sprint-planning
CRITICAL: If file exists, replace status with ONLY the file path - nothing else.
Example: product-brief: docs/product-brief.md
NOT: product-brief: "completed - docs/product-brief.md" or any other text.
</action>
<template-output>workflow_items</template-output>
</step>
<step n="6" goal="Create status file">
<action>Initialize all status values</action>
<template-output>start_date</template-output>
<template-output>last_updated</template-output>
<template-output>phase_1_complete</template-output>
<template-output>phase_2_complete</template-output>
<template-output>phase_3_complete</template-output>
<template-output>phase_4_complete</template-output>
<step n="6" goal="Create workflow status file">
<action>Set generated date to current date</action>
<template-output>generated</template-output>
<action>Prepare all template variables for workflow-status-template.yaml:
- generated: {current_date}
- project_name: {project_name}
- project_type: {project_type}
- project_level: {project_level}
- field_type: {field_type}
- workflow_path_file: {workflow_path_file}
- workflow_items: {workflow_items from step 5}
</action>
<action>Display a preview of what will be created:
Show the first workflow in each phase and total count:
"Ready to create workflow status tracking:
- Phase 1 ({phase_1_workflow_count} workflows): Starting with {first_workflow_phase_1}
- Phase 2 ({phase_2_workflow_count} workflows): Starting with {first_workflow_phase_2}
- Phase 3 ({phase_3_workflow_count} workflows): Starting with {first_workflow_phase_3}
- Phase 4 (Implementation tracked separately in sprint-status.yaml)
{{#if detected_completed_workflows}}
Found existing work:
{{#each detected_files}}
- {{workflow_name}}: {{file_path}}
{{/each}}
{{/if}}"
</action>
<ask>Ready to create your workflow status file? (y/n)</ask>
<check if="answer == y">
<action>Save status file to {output_folder}/bmm-workflow-status.md</action>
<output>✅ Status file created! Next up: {{next_agent}} agent, run `{{next_command}}`</output>
<check if="next_agent !== current_agent">
<output>It is strongly recommended to clear the context or start a new chat and load the next agent to execute the next command from that agents help menu, unless there is something else I can do for you first.</output>
</check>
<action>Generate YAML from workflow-status-template.yaml with all variables</action>
<action>Save status file to {output_folder}/bmm-workflow-status.yaml</action>
<action>Identify the first non-completed workflow in the list</action>
<action>Look up that workflow's agent and command from the path file</action>
<output>✅ Workflow status file created at {output_folder}/bmm-workflow-status.yaml
**Next Steps:**
{{#if detected_completed_workflows}}
You have {{detected_count}} workflow(s) already completed. Great progress!
{{/if}}
**Next Workflow:** {{next_workflow_name}}
**Agent:** {{next_agent}}
**Command:** /bmad:bmm:workflows:{{next_workflow_id}}
{{#if next_agent !== 'pm'}}
It is recommended to start a new chat and load the {{next_agent}} agent before running the next workflow.
{{/if}}
</output>
</check>
</step>

View File

@ -16,13 +16,13 @@ date: system-generated
# Workflow components
installed_path: "{project-root}/bmad/bmm/workflows/workflow-status/init"
instructions: "{installed_path}/instructions.md"
template: "{project-root}/bmad/bmm/workflows/workflow-status/workflow-status-template.md"
template: "{project-root}/bmad/bmm/workflows/workflow-status/workflow-status-template.yaml"
# Path data files
path_files: "{project-root}/bmad/bmm/workflows/workflow-status/paths/"
# Output configuration
default_output_file: "{output_folder}/bmm-workflow-status.md"
default_output_file: "{output_folder}/bmm-workflow-status.yaml"
standalone: true
web_bundle: false

View File

@ -33,7 +33,7 @@
</step>
<step n="1" goal="Check for status file">
<action>Search {output_folder}/ for file: bmm-workflow-status.md</action>
<action>Search {output_folder}/ for file: bmm-workflow-status.yaml</action>
<check if="no status file found">
<output>No workflow status found. To get started:
@ -50,51 +50,66 @@ This will guide you through project setup and create your workflow path.</output
</step>
<step n="2" goal="Read and parse status">
<action>Read bmm-workflow-status.md</action>
<action>Extract key-value pairs from status file:</action>
<action>Read bmm-workflow-status.yaml</action>
<action>Parse YAML file and extract metadata from comments and fields:</action>
Parse these fields:
Parse these fields from YAML comments and metadata:
- PROJECT_NAME
- PROJECT_TYPE
- PROJECT_LEVEL
- FIELD_TYPE
- CURRENT_PHASE
- CURRENT_WORKFLOW
- NEXT_ACTION
- NEXT_COMMAND
- NEXT_AGENT
- project (from YAML field)
- project_type (from YAML field)
- project_level (from YAML field)
- field_type (from YAML field)
- workflow_path (from YAML field)
<action>Parse workflow_status section:</action>
- Extract all workflow entries with their statuses
- Identify completed workflows (status = file path)
- Identify pending workflows (status = required/optional/recommended/conditional)
- Identify skipped workflows (status = skipped)
<action>Determine current state:</action>
- Find first workflow with status != file path and != skipped
- This is the NEXT workflow to work on
- Look up agent and command from workflow path file
</step>
<step n="3" goal="Display current status and options">
<action>Load workflow path file to check for optional steps</action>
<action>Check if current workflow is in progress or complete</action>
<action>Load workflow path file based on workflow_path field</action>
<action>Identify current phase from next workflow to be done</action>
<action>Build list of completed, pending, and optional workflows</action>
<output>
## 📊 Current Status
**Project:** {{PROJECT_NAME}} (Level {{PROJECT_LEVEL}} {{PROJECT_TYPE}})
**Phase:** {{CURRENT_PHASE}}
**Current Workflow:** {{CURRENT_WORKFLOW}}
**Project:** {{project}} (Level {{project_level}} {{project_type}})
## 🎯 Your Options
**Path:** {{workflow_path}}
{{#if CURRENT_WORKFLOW != "complete"}}
**Continue in progress:**
**Progress:**
- {{CURRENT_WORKFLOW}} ({{CURRENT_AGENT}} agent)
{{/if}}
{{#each phases}}
{{phase_name}}:
{{#each workflows_in_phase}}
**Next required step:**
- {{workflow_name}}: {{status_display}}
{{/each}}
{{/each}}
- Command: `{{NEXT_COMMAND}}`
- Agent: {{NEXT_AGENT}}
## 🎯 Next Steps
**Next Workflow:** {{next_workflow_name}}
**Agent:** {{next_agent}}
**Command:** /bmad:bmm:workflows:{{next_workflow_id}}
{{#if optional_workflows_available}}
**Optional workflows available:**
**Optional Workflows Available:**
{{#each optional_workflows}}
- {{workflow_name}} ({{agent}})
- {{workflow_name}} ({{agent}}) - {{status}}
{{/each}}
{{/if}}
</output>
@ -103,20 +118,69 @@ Parse these fields:
<step n="4" goal="Offer actions">
<ask>What would you like to do?
{{#if CURRENT_WORKFLOW != "complete"}}
1. **Continue current** - Resume {{CURRENT_WORKFLOW}}
{{/if}}
2. **Next required** - {{NEXT_COMMAND}}
1. **Start next workflow** - {{next_workflow_name}} ({{next_agent}} agent)
{{#if optional_workflows_available}}
3. **Optional workflow** - Choose from available options
2. **Run optional workflow** - Choose from available options
{{/if}}
4. **View full status** - See complete status file
3. **View full status YAML** - See complete status file
4. **Update workflow status** - Mark a workflow as completed or skipped
5. **Exit** - Return to agent
Your choice:</ask>
<action>Handle user selection based on available options</action>
<check if="choice == 1">
<output>Ready to run {{next_workflow_name}}!
**Command:** /bmad:bmm:workflows:{{next_workflow_id}}
**Agent:** Load {{next_agent}} agent first
{{#if next_agent !== current_agent}}
Tip: Start a new chat and load the {{next_agent}} agent before running this workflow.
{{/if}}
</output>
</check>
<check if="choice == 2 AND optional_workflows_available">
<ask>Which optional workflow?
{{#each optional_workflows numbered}}
{{number}}. {{workflow_name}} ({{agent}})
{{/each}}
Your choice:</ask>
<action>Display selected workflow command and agent</action>
</check>
<check if="choice == 3">
<action>Display complete bmm-workflow-status.yaml file contents</action>
</check>
<check if="choice == 4">
<ask>What would you like to update?
1. Mark a workflow as **completed** (provide file path)
2. Mark a workflow as **skipped**
Your choice:</ask>
<check if="update_choice == 1">
<ask>Which workflow? (Enter workflow ID like 'prd' or 'create-architecture')</ask>
<ask>File path created? (e.g., docs/prd.md)</ask>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status in YAML file: {{workflow_id}}: {{file_path}}</action>
<action>Save updated YAML file preserving ALL structure and comments</action>
<output>✅ Updated {{workflow_id}} to completed: {{file_path}}</output>
</check>
<check if="update_choice == 2">
<ask>Which workflow to skip? (Enter workflow ID)</ask>
<action>Update workflow_status in YAML file: {{workflow_id}}: skipped</action>
<action>Save updated YAML file</action>
<output>✅ Marked {{workflow_id}} as skipped</output>
</check>
</check>
</step>
<!-- ============================================= -->
@ -124,7 +188,7 @@ Your choice:</ask>
<!-- ============================================= -->
<step n="10" goal="Validate mode - Check if calling workflow should proceed">
<action>Read {output_folder}/bmm-workflow-status.md if exists</action>
<action>Read {output_folder}/bmm-workflow-status.yaml if exists</action>
<check if="status file not found">
<template-output>status_exists = false</template-output>
@ -135,23 +199,16 @@ Your choice:</ask>
</check>
<check if="status file found">
<action>Parse status file fields</action>
<action>Load workflow path file from WORKFLOW_PATH field</action>
<action>Check if {{calling_workflow}} matches CURRENT_WORKFLOW or NEXT_COMMAND</action>
<action>Parse YAML file to extract project metadata and workflow_status</action>
<action>Load workflow path file from workflow_path field</action>
<action>Find first non-completed workflow in workflow_status (next workflow)</action>
<action>Check if {{calling_workflow}} matches next workflow or is in the workflow list</action>
<template-output>status_exists = true</template-output>
<template-output>current_phase = {{CURRENT_PHASE}}</template-output>
<template-output>current_workflow = {{CURRENT_WORKFLOW}}</template-output>
<template-output>next_workflow = {{NEXT_COMMAND}}</template-output>
<template-output>project_level = {{PROJECT_LEVEL}}</template-output>
<template-output>project_type = {{PROJECT_TYPE}}</template-output>
<template-output>field_type = {{FIELD_TYPE}}</template-output>
<check if="calling_workflow == current_workflow">
<template-output>should_proceed = true</template-output>
<template-output>warning = ""</template-output>
<template-output>suggestion = "Resuming {{current_workflow}}"</template-output>
</check>
<template-output>project_level = {{project_level}}</template-output>
<template-output>project_type = {{project_type}}</template-output>
<template-output>field_type = {{field_type}}</template-output>
<template-output>next_workflow = {{next_workflow_id}}</template-output>
<check if="calling_workflow == next_workflow">
<template-output>should_proceed = true</template-output>
@ -159,16 +216,22 @@ Your choice:</ask>
<template-output>suggestion = "Proceeding with planned next step"</template-output>
</check>
<check if="calling_workflow != current_workflow AND calling_workflow != next_workflow">
<action>Check if calling_workflow is in optional workflows list</action>
<check if="calling_workflow in workflow_status list">
<action>Check the status of calling_workflow in YAML</action>
<check if="is optional">
<check if="status is file path">
<template-output>should_proceed = true</template-output>
<template-output>warning = "⚠️ Workflow already completed: {{calling_workflow}}"</template-output>
<template-output>suggestion = "This workflow was already completed. Re-running will overwrite: {{status}}"</template-output>
</check>
<check if="status is optional/recommended">
<template-output>should_proceed = true</template-output>
<template-output>warning = "Running optional workflow {{calling_workflow}}"</template-output>
<template-output>suggestion = "This is optional. Expected next: {{next_workflow}}"</template-output>
</check>
<check if="not optional">
<check if="status is required but not next">
<template-output>should_proceed = true</template-output>
<template-output>warning = "⚠️ Out of sequence: Expected {{next_workflow}}, running {{calling_workflow}}"</template-output>
<template-output>suggestion = "Consider running {{next_workflow}} instead, or continue if intentional"</template-output>
@ -176,14 +239,20 @@ Your choice:</ask>
</check>
<template-output>status_file_path = {{path to bmm-workflow-status.md}}</template-output>
<check if="calling_workflow NOT in workflow_status list">
<template-output>should_proceed = true</template-output>
<template-output>warning = "⚠️ Unknown workflow: {{calling_workflow}} not in workflow path"</template-output>
<template-output>suggestion = "This workflow is not part of the defined path for this project"</template-output>
</check>
<template-output>status_file_path = {{path to bmm-workflow-status.yaml}}</template-output>
</check>
<action>Return control to calling workflow with all template outputs</action>
</step>
<step n="20" goal="Data mode - Extract specific information">
<action>Read {output_folder}/bmm-workflow-status.md if exists</action>
<action>Read {output_folder}/bmm-workflow-status.yaml if exists</action>
<check if="status file not found">
<template-output>status_exists = false</template-output>
@ -192,37 +261,46 @@ Your choice:</ask>
</check>
<check if="status file found">
<action>Parse status file completely</action>
<action>Parse YAML file completely</action>
<template-output>status_exists = true</template-output>
<check if="data_request == project_config">
<template-output>project_name = {{PROJECT_NAME}}</template-output>
<template-output>project_type = {{PROJECT_TYPE}}</template-output>
<template-output>project_level = {{PROJECT_LEVEL}}</template-output>
<template-output>field_type = {{FIELD_TYPE}}</template-output>
<template-output>workflow_path = {{WORKFLOW_PATH}}</template-output>
<template-output>project_name = {{project}}</template-output>
<template-output>project_type = {{project_type}}</template-output>
<template-output>project_level = {{project_level}}</template-output>
<template-output>field_type = {{field_type}}</template-output>
<template-output>workflow_path = {{workflow_path}}</template-output>
</check>
<check if="data_request == phase_status">
<template-output>current_phase = {{CURRENT_PHASE}}</template-output>
<template-output>phase_1_complete = {{PHASE_1_COMPLETE}}</template-output>
<template-output>phase_2_complete = {{PHASE_2_COMPLETE}}</template-output>
<template-output>phase_3_complete = {{PHASE_3_COMPLETE}}</template-output>
<template-output>phase_4_complete = {{PHASE_4_COMPLETE}}</template-output>
<check if="data_request == workflow_status">
<action>Parse workflow_status section and return all workflow: status pairs</action>
<template-output>workflow_status = {{workflow_status_object}}</template-output>
<action>Calculate completion stats:</action>
<template-output>total_workflows = {{count all workflows}}</template-output>
<template-output>completed_workflows = {{count file path statuses}}</template-output>
<template-output>pending_workflows = {{count required/optional/etc}}</template-output>
<template-output>skipped_workflows = {{count skipped}}</template-output>
</check>
<check if="data_request == all">
<action>Return all parsed fields as template outputs</action>
<template-output>project = {{project}}</template-output>
<template-output>project_type = {{project_type}}</template-output>
<template-output>project_level = {{project_level}}</template-output>
<template-output>field_type = {{field_type}}</template-output>
<template-output>workflow_path = {{workflow_path}}</template-output>
<template-output>workflow_status = {{workflow_status_object}}</template-output>
<template-output>generated = {{generated}}</template-output>
</check>
<template-output>status_file_path = {{path to bmm-workflow-status.md}}</template-output>
<template-output>status_file_path = {{path to bmm-workflow-status.yaml}}</template-output>
</check>
<action>Return control to calling workflow with requested data</action>
</step>
<step n="30" goal="Init-check mode - Simple existence check">
<action>Check if {output_folder}/bmm-workflow-status.md exists</action>
<action>Check if {output_folder}/bmm-workflow-status.yaml exists</action>
<check if="exists">
<template-output>status_exists = true</template-output>
@ -238,7 +316,7 @@ Your choice:</ask>
</step>
<step n="40" goal="Update mode - Centralized status file updates">
<action>Read {output_folder}/bmm-workflow-status.md</action>
<action>Read {output_folder}/bmm-workflow-status.yaml</action>
<check if="status file not found">
<template-output>success = false</template-output>
@ -247,64 +325,48 @@ Your choice:</ask>
</check>
<check if="status file found">
<action>Parse all current values from status file</action>
<action>Load workflow path file from WORKFLOW_PATH field</action>
<action>Parse YAML file completely</action>
<action>Load workflow path file from workflow_path field</action>
<action>Check {{action}} parameter to determine update type</action>
<!-- ============================================= -->
<!-- ACTION: complete_workflow -->
<!-- ============================================= -->
<check if="action == complete_workflow">
<action>Get {{workflow_name}} parameter (required)</action>
<action>Get {{workflow_id}} parameter (required)</action>
<action>Get {{output_file}} parameter (required - path to created file)</action>
<action>Mark workflow complete:</action>
- Update CURRENT_WORKFLOW to "{{workflow_name}} - Complete"
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow status in YAML:</action>
- In workflow_status section, update: {{workflow_id}}: {{output_file}}
<action>Find {{workflow_name}} in loaded path YAML</action>
<action>Find {{workflow_id}} in loaded path YAML</action>
<action>Determine next workflow from path sequence</action>
<action>Find first workflow in workflow_status with status != file path and != skipped</action>
<action>Update Next Action fields:</action>
- NEXT_ACTION: Description from next workflow in path
- NEXT_COMMAND: Command for next workflow
- NEXT_AGENT: Agent for next workflow
- CURRENT_WORKFLOW: Set to next workflow name (or "Complete" if no more)
- CURRENT_AGENT: Set to next agent
<action>Check if phase complete:</action>
- If {{workflow_name}} is last required workflow in current phase
- Update PHASE_X_COMPLETE to true
- Update CURRENT_PHASE to next phase (if applicable)
<action>Update LAST_UPDATED to {{date}}</action>
<action>Save status file</action>
<action>Save updated YAML file preserving ALL structure and comments</action>
<template-output>success = true</template-output>
<template-output>next_workflow = {{determined next workflow}}</template-output>
<template-output>next_agent = {{determined next agent}}</template-output>
<template-output>phase_complete = {{true/false}}</template-output>
<template-output>next_agent = {{determined next agent from path file}}</template-output>
<template-output>completed_workflow = {{workflow_id}}</template-output>
<template-output>output_file = {{output_file}}</template-output>
</check>
<!-- ============================================= -->
<!-- ACTION: set_current_workflow (manual override) -->
<!-- ACTION: skip_workflow -->
<!-- ============================================= -->
<check if="action == set_current_workflow">
<action>Get {{workflow_name}} parameter (required)</action>
<action>Get {{agent_name}} parameter (optional)</action>
<check if="action == skip_workflow">
<action>Get {{workflow_id}} parameter (required)</action>
<action>Update current workflow:</action>
- CURRENT_WORKFLOW: {{workflow_name}}
- CURRENT_AGENT: {{agent_name or infer from path}}
<action>Update workflow status in YAML:</action>
- In workflow_status section, update: {{workflow_id}}: skipped
<action>Find {{workflow_name}} in path to determine next:</action>
- NEXT_ACTION: Next workflow description
- NEXT_COMMAND: Next workflow command
- NEXT_AGENT: Next workflow agent
<action>Update LAST_UPDATED to {{date}}</action>
<action>Save status file</action>
<action>Save updated YAML file</action>
<template-output>success = true</template-output>
<template-output>skipped_workflow = {{workflow_id}}</template-output>
</check>
@ -313,7 +375,7 @@ Your choice:</ask>
<!-- ============================================= -->
<check if="action not recognized">
<template-output>success = false</template-output>
<template-output>error = "Unknown action: {{action}}. Valid actions: complete_workflow, set_current_workflow"</template-output>
<template-output>error = "Unknown action: {{action}}. Valid actions: complete_workflow, skip_workflow"</template-output>
</check>
</check>

View File

@ -0,0 +1,49 @@
# Workflow Status Template
# This tracks progress through phases 1-3 of the BMM methodology
# Phase 4 (Implementation) is tracked separately in sprint-status.yaml
# generated: 2025-10-29
# project: Enterprise Customer Portal
# project_type: software
# project_level: 3
# field_type: greenfield
# workflow_path: greenfield-level-3.yaml
# STATUS DEFINITIONS:
# ==================
# Initial Status (before completion):
# - required: Must be completed to progress
# - optional: Can be completed but not required
# - recommended: Strongly suggested but not required
# - conditional: Required only if certain conditions met (e.g., if_has_ui)
#
# Completion Status:
# - {file-path}: File created/found (e.g., "docs/product-brief.md")
# - skipped: Optional/conditional workflow that was skipped
generated: 2025-10-29
project: Enterprise Customer Portal
project_type: software
project_level: 3
field_type: greenfield
workflow_path: greenfield-level-3.yaml
workflow_status:
# Phase 1: Analysis
brainstorm-project: docs/brainstorm-session-2025-10-15.md
research: docs/research-api-patterns.md
product-brief: docs/product-brief.md
# Phase 2: Planning
prd: docs/prd.md
validate-prd: skipped
create-design: docs/ux-design.md
# Phase 3: Solutioning
create-architecture: required
validate-architecture: optional
solutioning-gate-check: recommended
# Phase 4: Implementation
sprint-planning: required
# Note: Subsequent implementation workflows tracked in sprint-status.yaml

View File

@ -1,30 +0,0 @@
# BMM Workflow Status
## Project Configuration
PROJECT_NAME: {{project_name}}
PROJECT_TYPE: {{project_type}}
PROJECT_LEVEL: {{project_level}}
FIELD_TYPE: {{field_type}}
START_DATE: {{start_date}}
WORKFLOW_PATH: {{workflow_path_file}}
## Current State
CURRENT_PHASE: {{current_phase}}
CURRENT_WORKFLOW: {{current_workflow}}
CURRENT_AGENT: {{current_agent}}
PHASE_1_COMPLETE: {{phase_1_complete}}
PHASE_2_COMPLETE: {{phase_2_complete}}
PHASE_3_COMPLETE: {{phase_3_complete}}
PHASE_4_COMPLETE: {{phase_4_complete}}
## Next Action
NEXT_ACTION: {{next_action}}
NEXT_COMMAND: {{next_command}}
NEXT_AGENT: {{next_agent}}
---
_Last Updated: {{last_updated}}_

View File

@ -0,0 +1,31 @@
# Workflow Status Template
# This tracks progress through phases 1-3 of the BMM methodology
# Phase 4 (Implementation) is tracked separately in sprint-status.yaml
# generated: {{generated}}
# project: {{project_name}}
# project_type: {{project_type}}
# project_level: {{project_level}}
# field_type: {{field_type}}
# workflow_path: {{workflow_path_file}}
# STATUS DEFINITIONS:
# ==================
# Initial Status (before completion):
# - required: Must be completed to progress
# - optional: Can be completed but not required
# - recommended: Strongly suggested but not required
# - conditional: Required only if certain conditions met (e.g., if_has_ui)
#
# Completion Status:
# - {file-path}: File created/found (e.g., "docs/product-brief.md")
# - skipped: Optional/conditional workflow that was skipped
generated: "{{generated}}"
project: "{{project_name}}"
project_type: "{{project_type}}"
project_level: "{{project_level}}"
field_type: "{{field_type}}"
workflow_path: "{{workflow_path_file}}"
workflow_status: "{{workflow_items}}"

View File

@ -1,6 +1,6 @@
# Workflow Status - Master Router and Status Tracker
name: workflow-status
description: 'Lightweight status checker - answers "what should I do now?" for any agent. Reads simple key-value status file for instant parsing. Use workflow-init for new projects.'
description: 'Lightweight status checker - answers "what should I do now?" for any agent. Reads YAML status file for workflow tracking. Use workflow-init for new projects.'
author: "BMad"
# Critical variables from config
@ -17,13 +17,13 @@ installed_path: "{project-root}/bmad/bmm/workflows/workflow-status"
instructions: "{installed_path}/instructions.md"
# Template for status file creation (used by workflow-init)
template: "{installed_path}/workflow-status-template.md"
template: "{installed_path}/workflow-status-template.yaml"
# Path definitions for project types
path_files: "{installed_path}/paths/"
# Output configuration - reads existing status
default_output_file: "{output_folder}/bmm-workflow-status.md"
default_output_file: "{output_folder}/bmm-workflow-status.yaml"
standalone: true

View File

@ -50,9 +50,17 @@ I can help craft your story using these proven narrative frameworks:
3. **Customer Journey Story** - Before/after transformation narrative
4. **Challenge-Overcome Arc** - Dramatic obstacle-to-victory structure
**Strategic Narratives:** 5. **Brand Story** - Values, mission, and unique positioning 6. **Pitch Narrative** - Persuasive problem-to-solution structure 7. **Vision Narrative** - Future-focused aspirational story 8. **Origin Story** - Foundational narrative of how it began
**Strategic Narratives:**
**Specialized Narratives:** 9. **Data Storytelling** - Transform insights into compelling narrative 10. **Emotional Hooks** - Craft powerful opening and touchpoints
5. **Brand Story** - Values, mission, and unique positioning
6. **Pitch Narrative** - Persuasive problem-to-solution structure
7. **Vision Narrative** - Future-focused aspirational story
8. **Origin Story** - Foundational narrative of how it began
**Specialized Narratives:**
9. **Data Storytelling** - Transform insights into compelling narrative
10. **Emotional Hooks** - Craft powerful opening and touchpoints
Which framework best fits your purpose? (Enter 1-10, or ask for my recommendation)
</ask>