Document Project Workflow Router
The workflow execution engine is governed by: {project-root}/bmad/core/tasks/workflow.xml
You MUST have already loaded and processed: {project-root}/bmad/bmm/workflows/document-project/workflow.yaml
This router determines workflow mode and delegates to specialized sub-workflows
Search {output_folder}/ for files matching pattern: bmm-workflow-status*.md
Find the most recent file (by date in filename: bmm-workflow-status.md)
Load the status file
Extract key information:
- current_step: From “Current Step:” field
- next_step: From “Next Step:” field
- planned_workflow: From “Planned Workflow Journey” table
- progress_percentage: From “Overall Progress:” field
- current_phase: From “Current Phase:” field
- field_type: From “Greenfield/Brownfield:” field
Validate this workflow is in the planned workflow
Set status_file_path = file path
Set status_file_found = true
⚠️ Workflow Sequence Note
According to your status file, your next planned step is: {{next_step}}
But you’re running: document-project
This is expected if plan-project invoked this workflow automatically for brownfield documentation.
Options:
- Continue - Run document-project (status will be updated)
- Exit - I’ll follow the planned sequence instead
Your choice (1-2):
<check if='choice == "2"'>
<output>**Recommended Next Step:**
Run: {{next_step}}
You can return to document-project later if needed.
Exit workflow
ℹ️ No Workflow Status File Found
This workflow works best with a workflow status file for progress tracking.
Options:
- Run workflow-status first - Create status file and plan workflow (recommended)
- Continue anyway - Run document-project standalone
- Exit - I’ll set up the workflow first
Your choice (1-3):
Load any agent and run: workflow-status
After planning your workflow, you can return here or follow the planned sequence.
Exit workflow
Set status_file_found = false
Set standalone_mode = true
Continue without status file integration
Exit workflow
SMART LOADING STRATEGY: Check state file FIRST before loading any CSV files
Check for existing state file at: {output_folder}/project-scan-report.json
Read state file and extract: timestamps, mode, scan_level, current_step, completed_steps, project_classification
Extract cached project_type_id(s) from state file if present
Calculate age of state file (current time - last_updated)
I found an in-progress workflow state from {{last_updated}}.
Current Progress:
- Mode: {{mode}}
- Scan Level: {{scan_level}}
- Completed Steps: {{completed_steps_count}}/{{total_steps}}
- Last Step: {{current_step}}
- Project Type(s): {{cached_project_types}}
Would you like to:
- Resume from where we left off - Continue from step {{current_step}}
- Start fresh - Archive old state and begin new scan
- Cancel - Exit without changes
Your choice [½/3]:
<check if="user selects 1">
<action>Set resume_mode = true</action>
<action>Set workflow_mode = {{mode}}</action>
<action>Load findings summaries from state file</action>
<action>Load cached project_type_id(s) from state file</action>
<critical>CONDITIONAL CSV LOADING FOR RESUME:</critical>
<action>For each cached project_type_id, load ONLY the corresponding row from: {documentation_requirements_csv}</action>
<action>Skip loading project-types.csv and architecture_registry.csv (not needed on resume)</action>
<action>Store loaded doc requirements for use in remaining steps</action>
<action>Display: "Resuming {{workflow_mode}} from {{current_step}} with cached project type(s): {{cached_project_types}}"</action>
<check if="workflow_mode == deep_dive">
<action>Load and execute: {installed_path}/workflows/deep-dive-instructions.md with resume context</action>
</check>
<check if="workflow_mode == initial_scan OR workflow_mode == full_rescan">
<action>Load and execute: {installed_path}/workflows/full-scan-instructions.md with resume context</action>
</check>
</check>
<check if="user selects 2">
<action>Create archive directory: {output_folder}/.archive/</action>
<action>Move old state file to: {output_folder}/.archive/project-scan-report-{{timestamp}}.json</action>
<action>Set resume_mode = false</action>
<action>Continue to Step 0.5</action>
</check>
<check if="user selects 3">
<action>Display: "Exiting workflow without changes."</action>
<action>Exit workflow</action>
</check>
Display: “Found old state file (>24 hours). Starting fresh scan.”
Archive old state file to: {output_folder}/.archive/project-scan-report-{{timestamp}}.json
Set resume_mode = false
Continue to Step 0.5
Check if {output_folder}/index.md exists
Read existing index.md to extract metadata (date, project structure, parts count)
Store as {{existing_doc_date}}, {{existing_structure}}
I found existing documentation generated on {{existing_doc_date}}.
What would you like to do?
- Re-scan entire project - Update all documentation with latest changes
- Deep-dive into specific area - Generate detailed documentation for a particular feature/module/folder
- Cancel - Keep existing documentation as-is
Your choice [½/3]:
Set workflow_mode = “full_rescan”
Display: “Starting full project rescan…”
Load and execute: {installed_path}/workflows/full-scan-instructions.md
After sub-workflow completes, continue to Step 4
Set workflow_mode = “deep_dive”
Set scan_level = “exhaustive”
Display: “Starting deep-dive documentation mode…”
Load and execute: {installed_path}/workflows/deep-dive-instructions.md
After sub-workflow completes, continue to Step 4
Display message: “Keeping existing documentation. Exiting workflow.”
Exit workflow
Set workflow_mode = “initial_scan”
Display: “No existing documentation found. Starting initial project scan…”
Load and execute: {installed_path}/workflows/full-scan-instructions.md
After sub-workflow completes, continue to Step 4
Load the status file from {{status_file_path}}
<template-output file=“{{status_file_path}}”>planned_workflow</template-output>
Find “document-project” in the planned_workflow table
Update Status field from “Planned” or “In Progress” to “Complete”
<template-output file=“{{status_file_path}}”>current_step</template-output>
Set to: “document-project”
<template-output file=“{{status_file_path}}”>next_step</template-output>
Find next item with Status != “Complete” in planned_workflow table
Set to: “{{next_workflow_step}} ({{next_workflow_agent}} agent)”
<template-output file=“{{status_file_path}}”>progress_percentage</template-output>
Increment by: 10%
<template-output file=“{{status_file_path}}”>current_workflow</template-output>
Set to: “document-project - Complete”
<template-output file=“{{status_file_path}}”>decisions_log</template-output>
Add entry:
- **{{date}}**: Completed document-project workflow ({{workflow_mode}} mode, {{scan_level}} scan). Generated brownfield documentation in {output_folder}/. Next: {{next_step}}.
Documentation Generated:
- Mode: {{workflow_mode}}
- Scan Level: {{scan_level}}
- Output: {output_folder}/index.md and related files
Status file updated:
- Current step: document-project ✓
- Next step: {{next_step}}
- Progress: {{new_progress_percentage}}%
To proceed:
Load {{next_agent}} and run: {{next_command}}
Or check status anytime with: workflow-status
Documentation Generated:
- Mode: {{workflow_mode}}
- Scan Level: {{scan_level}}
- Output: {output_folder}/index.md and related files
Note: Running in standalone mode (no status file).
To track progress across workflows, run workflow-status first next time.