remove legacy workflow manager

This commit is contained in:
Brian Madison
2026-01-19 21:52:04 -06:00
parent 01bbe2a3ef
commit e29a1273e1
29 changed files with 16 additions and 924 deletions

View File

@@ -19,10 +19,6 @@ agent:
- Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md` - Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md`
menu: menu:
- trigger: WS or fuzzy match on workflow-status
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
description: "[WS] Workflow Status: Initialize, Get or Update the Project Workflow"
- trigger: BP or fuzzy match on brainstorm-project - trigger: BP or fuzzy match on brainstorm-project
exec: "{project-root}/_bmad/core/workflows/brainstorming/workflow.md" exec: "{project-root}/_bmad/core/workflows/brainstorming/workflow.md"
data: "{project-root}/_bmad/bmm/data/project-context-template.md" data: "{project-root}/_bmad/bmm/data/project-context-template.md"

View File

@@ -20,10 +20,6 @@ agent:
- Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md` - Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md`
menu: menu:
- trigger: WS or fuzzy match on workflow-status
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
description: "[WS] Workflow Status: Initialize, Get or Update the Project Workflow"
- trigger: CA or fuzzy match on create-architecture - trigger: CA or fuzzy match on create-architecture
exec: "{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md" exec: "{project-root}/_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md"
description: "[CA] Create Architecture: Guided Workflow to document technical decisions to keep implementation on track" description: "[CA] Create Architecture: Guided Workflow to document technical decisions to keep implementation on track"

View File

@@ -22,10 +22,6 @@ agent:
- Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md` - Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md`
menu: menu:
- trigger: WS or fuzzy match on workflow-status
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
description: "[WS] Workflow Status: Initialize, Get or Update the Project Workflow"
- trigger: CP or fuzzy match on create-prd - trigger: CP or fuzzy match on create-prd
exec: "{project-root}/_bmad/bmm/workflows/2-plan-workflows/prd/workflow.md" exec: "{project-root}/_bmad/bmm/workflows/2-plan-workflows/prd/workflow.md"
description: "[CP] Create PRD: Expert led facilitation to produce your Product Requirements Document" description: "[CP] Create PRD: Expert led facilitation to produce your Product Requirements Document"

View File

@@ -25,10 +25,6 @@ agent:
- "Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md`" - "Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md`"
menu: menu:
- trigger: WS or fuzzy match on workflow-status
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
description: "[WS] Workflow Status: Initialize, Get or Update the Project Workflow"
- trigger: SP or fuzzy match on sprint-planning - trigger: SP or fuzzy match on sprint-planning
workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml" workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml"
description: "[SP] Sprint Planning: Generate or update the record that will sequence the tasks to complete the full project that the dev agent will follow" description: "[SP] Sprint Planning: Generate or update the record that will sequence the tasks to complete the full project that the dev agent will follow"

View File

@@ -31,10 +31,6 @@ agent:
- "Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md`" - "Find if this exists, if it does, always treat it as the bible I plan and execute against: `**/project-context.md`"
menu: menu:
- trigger: WS or fuzzy match on workflow-status
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
description: "[WS] Workflow Status: Initialize, Get or Update the Project Workflow"
- trigger: TF or fuzzy match on test-framework - trigger: TF or fuzzy match on test-framework
workflow: "{project-root}/_bmad/bmm/workflows/testarch/framework/workflow.yaml" workflow: "{project-root}/_bmad/bmm/workflows/testarch/framework/workflow.yaml"
description: "[TF] Test Framework: Initialize production-ready test framework architecture" description: "[TF] Test Framework: Initialize production-ready test framework architecture"

View File

@@ -20,10 +20,6 @@ agent:
- I will always strive to follow `_bmad/_memory/tech-writer-sidecar/documentation-standards.md` best practices. - I will always strive to follow `_bmad/_memory/tech-writer-sidecar/documentation-standards.md` best practices.
menu: menu:
- trigger: WS or fuzzy match on workflow-status
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
description: "[WS] Workflow Status: Initialize, Get or Update the Project Workflow"
- trigger: DP or fuzzy match on document-project - trigger: DP or fuzzy match on document-project
workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.yaml" workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.yaml"
description: "[DP] Document Project: Generate comprehensive project documentation (brownfield analysis, architecture scanning)" description: "[DP] Document Project: Generate comprehensive project documentation (brownfield analysis, architecture scanning)"

View File

@@ -21,10 +21,6 @@ agent:
- Data-informed but always creative - Data-informed but always creative
menu: menu:
- trigger: WS or fuzzy match on workflow-status
workflow: "{project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml"
description: "[WS] Workflow Status: Initialize, Get or Update the Project Workflow"
- trigger: UX or fuzzy match on ux-design - trigger: UX or fuzzy match on ux-design
exec: "{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md" exec: "{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md"
description: "[UX] UX: Guidance through realizing the plan for your UX to inform architecture and implementation. PRovides more details that what was discovered in the PRD" description: "[UX] UX: Guidance through realizing the plan for your UX to inform architecture and implementation. PRovides more details that what was discovered in the PRD"

View File

@@ -73,17 +73,7 @@ I've successfully collaborated with you to create a comprehensive Product Brief
This brief serves as the foundation for all subsequent product development activities and strategic decisions." This brief serves as the foundation for all subsequent product development activities and strategic decisions."
### 2. Workflow Status Update ### 2. Document Quality Check
**Status File Management:**
Update the main workflow status file:
- Check if `{output_folder} or {planning_artifacts}/bmm-workflow-status.yaml` exists
- If so, update workflow_status["product-brief"] = `{outputFile}`
- Add completion timestamp and metadata
- Save file, preserving all comments and structure
### 3. Document Quality Check
**Completeness Validation:** **Completeness Validation:**
Perform final validation of the product brief: Perform final validation of the product brief:
@@ -101,7 +91,7 @@ Perform final validation of the product brief:
- Are success criteria traceable to user needs and business goals? - Are success criteria traceable to user needs and business goals?
- Does MVP scope align with the problem and solution? - Does MVP scope align with the problem and solution?
### 4. Suggest Next Steps ### 3. Suggest Next Steps
**Recommended Next Workflow:** **Recommended Next Workflow:**
Provide guidance on logical next workflows: Provide guidance on logical next workflows:
@@ -124,7 +114,7 @@ Provide guidance on logical next workflows:
- Use brief to validate concept before committing to detailed work - Use brief to validate concept before committing to detailed work
- Brief can guide early technical feasibility discussions - Brief can guide early technical feasibility discussions
### 5. Present MENU OPTIONS ### 4. Present MENU OPTIONS
**Completion Confirmation:** **Completion Confirmation:**
"**Your Product Brief for {{project_name}} is now complete and ready for the next phase!** "**Your Product Brief for {{project_name}} is now complete and ready for the next phase!**

View File

@@ -96,7 +96,7 @@ Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue witho
3. Else if any story status == ready-for-dev → recommend `dev-story` 3. Else if any story status == ready-for-dev → recommend `dev-story`
4. Else if any story status == backlog → recommend `create-story` 4. Else if any story status == backlog → recommend `create-story`
5. Else if any retrospective status == optional → recommend `retrospective` 5. Else if any retrospective status == optional → recommend `retrospective`
6. Else → All implementation items done; suggest `workflow-status` to plan next phase 6. Else → All implementation items done; congratulate the user - you both did amazing work together!
<action>Store selected recommendation as: next_story_id, next_workflow_id, next_agent (SM/DEV as appropriate)</action> <action>Store selected recommendation as: next_story_id, next_workflow_id, next_agent (SM/DEV as appropriate)</action>
</step> </step>

View File

@@ -104,12 +104,12 @@ Present choice:
This looks like a focused feature with multiple components. This looks like a focused feature with multiple components.
**[t] Create tech-spec first** (recommended) **[t] Create tech-spec first** (recommended)
**[w] Seems bigger than quick-dev** - see what BMad Method recommends **[w] Seems bigger than quick-dev** - Recommend the Full BMad Flow PRD Process
**[e] Execute directly** **[e] Execute directly**
``` ```
- **[t]:** Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.** - **[t]:** Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.**
- **[w]:** Direct to `{workflow_init}`. **EXIT Quick Dev.** - **[w]:** Direct user to run the PRD workflow instead. **EXIT Quick Dev.**
- **[e]:** Ask for guidance, then **NEXT:** Load `step-02-context-gathering.md` - **[e]:** Ask for guidance, then **NEXT:** Load `step-02-context-gathering.md`
### Escalation Triggered - Level 3+ ### Escalation Triggered - Level 3+
@@ -122,8 +122,8 @@ This sounds like platform/system work.
**[e] Execute directly** - feeling lucky **[e] Execute directly** - feeling lucky
``` ```
- **[w]:** Direct to `{workflow_init}`. **EXIT Quick Dev.**
- **[t]:** Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.** - **[t]:** Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.**
- **[w]:** Direct user to run the PRD workflow instead. **EXIT Quick Dev.**
- **[e]:** Ask for guidance, then **NEXT:** Load `step-02-context-gathering.md` - **[e]:** Ask for guidance, then **NEXT:** Load `step-02-context-gathering.md`
--- ---

View File

@@ -36,12 +36,10 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
- `installed_path` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev` - `installed_path` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev`
- `project_context` = `**/project-context.md` (load if exists) - `project_context` = `**/project-context.md` (load if exists)
- `project_levels` = `{project-root}/_bmad/bmm/workflows/workflow-status/project-levels.yaml`
### Related Workflows ### Related Workflows
- `quick_spec_workflow` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md` - `quick_spec_workflow` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md`
- `workflow_init` = `{project-root}/_bmad/bmm/workflows/workflow-status/init/workflow.yaml`
- `party_mode_exec` = `{project-root}/_bmad/core/workflows/party-mode/workflow.md` - `party_mode_exec` = `{project-root}/_bmad/core/workflows/party-mode/workflow.md`
- `advanced_elicitation` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml` - `advanced_elicitation` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml`

View File

@@ -257,7 +257,6 @@ test('should do something', async ({ {fixtureName} }) => {
- Check off tasks as you complete them - Check off tasks as you complete them
- Share progress in daily standup - Share progress in daily standup
- Mark story as IN PROGRESS in `bmm-workflow-status.md`
--- ---

View File

@@ -143,7 +143,6 @@ Note: CI setup is typically a one-time task per repo and can be run any time aft
### Status File Integration ### Status File Integration
- [ ] `bmm-workflow-status.md` exists
- [ ] CI setup logged in Quality & Testing Progress section - [ ] CI setup logged in Quality & Testing Progress section
- [ ] Status updated with completion timestamp - [ ] Status updated with completion timestamp
- [ ] Platform and configuration noted - [ ] Platform and configuration noted

View File

@@ -201,7 +201,6 @@ Before starting the workflow:
### Status File Integration ### Status File Integration
- [ ] `bmm-workflow-status.md` exists
- [ ] Framework initialization logged in Quality & Testing Progress section - [ ] Framework initialization logged in Quality & Testing Progress section
- [ ] Status file updated with completion timestamp - [ ] Status file updated with completion timestamp
- [ ] Status file shows framework: Playwright or Cypress - [ ] Status file shows framework: Playwright or Cypress

View File

@@ -145,7 +145,6 @@
### Status File Integration ### Status File Integration
- [ ] bmm-workflow-status.md exists
- [ ] Test design logged in Quality & Testing Progress - [ ] Test design logged in Quality & Testing Progress
- [ ] Epic number and scope documented - [ ] Epic number and scope documented
- [ ] Completion timestamp recorded - [ ] Completion timestamp recorded

View File

@@ -28,12 +28,7 @@ The workflow auto-detects which mode to use based on project phase.
- If `{implementation_artifacts}/sprint-status.yaml` exists → **Epic-Level Mode** (Phase 4) - If `{implementation_artifacts}/sprint-status.yaml` exists → **Epic-Level Mode** (Phase 4)
- If NOT exists → Check workflow status - If NOT exists → Check workflow status
2. **Check workflow-status.yaml** 2. **Mode-Specific Requirements**
- Read `{planning_artifacts}/bmm-workflow-status.yaml`
- If `implementation-readiness: required` or `implementation-readiness: recommended`**System-Level Mode** (Phase 3)
- Otherwise → **Epic-Level Mode** (Phase 4 without sprint status yet)
3. **Mode-Specific Requirements**
**System-Level Mode (Phase 3 - Testability Review):** **System-Level Mode (Phase 3 - Testability Review):**
- ✅ Architecture document exists (architecture.md or tech-spec) - ✅ Architecture document exists (architecture.md or tech-spec)

View File

@@ -375,12 +375,6 @@ Knowledge fragments referenced:
### Step 5: Status Updates and Notifications ### Step 5: Status Updates and Notifications
**Status File Updated:**
- [ ] Gate decision appended to bmm-workflow-status.md (if append_to_history: true)
- [ ] Format correct: `[DATE] Gate Decision: DECISION - Target {ID} - {rationale}`
- [ ] Status file committed or staged for commit
**Gate YAML Created:** **Gate YAML Created:**
- [ ] Gate YAML snippet generated with decision and criteria - [ ] Gate YAML snippet generated with decision and criteria
@@ -480,13 +474,6 @@ Knowledge fragments referenced:
## Phase 2 Integration Points ## Phase 2 Integration Points
### BMad Workflow Status
- [ ] Gate decision added to `bmm-workflow-status.md`
- [ ] Format matches existing gate history entries
- [ ] Timestamp is accurate
- [ ] Decision summary is concise (<80 chars)
### CI/CD Pipeline ### CI/CD Pipeline
- [ ] Gate YAML is CI/CD-compatible - [ ] Gate YAML is CI/CD-compatible

View File

@@ -292,7 +292,6 @@ This phase uses traceability results to make a quality gate decision (PASS/CONCE
4. **Load supporting artifacts**: 4. **Load supporting artifacts**:
- `test-design.md` → Risk priorities, DoD checklist - `test-design.md` → Risk priorities, DoD checklist
- `story-*.md` or `Epics.md` → Requirements context - `story-*.md` or `Epics.md` → Requirements context
- `bmm-workflow-status.md` → Workflow completion status (if `check_all_workflows_complete: true`)
5. **Validate evidence freshness** (if `validate_evidence_freshness: true`): 5. **Validate evidence freshness** (if `validate_evidence_freshness: true`):
- Check timestamps of test-design, traceability, NFR assessments - Check timestamps of test-design, traceability, NFR assessments
@@ -398,8 +397,8 @@ This phase uses traceability results to make a quality gate decision (PASS/CONCE
## Decision Criteria ## Decision Criteria
| Criterion | Threshold | Actual | Status | | Criterion | Threshold | Actual | Status |
| ----------------- | --------- | -------- | ------- | | ----------------- | --------- | -------- | ------ |
| P0 Coverage | ≥100% | 100% | ✅ PASS | | P0 Coverage | ≥100% | 100% | ✅ PASS |
| P1 Coverage | ≥90% | 88% | ⚠️ FAIL | | P1 Coverage | ≥90% | 88% | ⚠️ FAIL |
| Overall Coverage | ≥80% | 92% | ✅ PASS | | Overall Coverage | ≥80% | 92% | ✅ PASS |
@@ -506,22 +505,7 @@ This phase uses traceability results to make a quality gate decision (PASS/CONCE
**Actions:** **Actions:**
1. **Update workflow status** (if `append_to_history: true`): 1. **Generate stakeholder notification** (if `notify_stakeholders: true`):
- Append gate decision to `bmm-workflow-status.md` under "Gate History" section
- Format:
```markdown
## Gate History
### Story 1.3 - User Login (2025-01-15)
- **Decision**: CONCERNS
- **Reason**: P1 coverage 88% (below 90%)
- **Document**: [gate-decision-story-1.3.md](_bmad/output/gate-decision-story-1.3.md)
- **Action**: Deploy with follow-up story for AC-5
```
2. **Generate stakeholder notification** (if `notify_stakeholders: true`):
- Create concise summary message for team communication - Create concise summary message for team communication
- Include: Decision, key metrics, action items - Include: Decision, key metrics, action items
- Format for Slack/email/chat: - Format for Slack/email/chat:
@@ -541,7 +525,7 @@ This phase uses traceability results to make a quality gate decision (PASS/CONCE
Full Report: _bmad/output/gate-decision-story-1.3.md Full Report: _bmad/output/gate-decision-story-1.3.md
``` ```
3. **Request sign-off** (if `require_sign_off: true`): 2. **Request sign-off** (if `require_sign_off: true`):
- Prompt for named approver (tech lead, QA lead, PM) - Prompt for named approver (tech lead, QA lead, PM)
- Document approver name and timestamp in gate decision - Document approver name and timestamp in gate decision
- Block until sign-off received (interactive prompt) - Block until sign-off received (interactive prompt)
@@ -836,8 +820,8 @@ Use selective testing principles from `selective-testing.md`:
## Coverage Summary ## Coverage Summary
| Priority | Total Criteria | FULL Coverage | Coverage % | Status | | Priority | Total Criteria | FULL Coverage | Coverage % | Status |
| --------- | -------------- | ------------- | ---------- | ------- | | --------- | -------------- | ------------- | ---------- | ------ |
| P0 | 3 | 3 | 100% | ✅ PASS | | P0 | 3 | 3 | 100% | ✅ PASS |
| P1 | 5 | 4 | 80% | ⚠️ WARN | | P1 | 5 | 4 | 80% | ⚠️ WARN |
| P2 | 4 | 3 | 75% | ✅ PASS | | P2 | 4 | 3 | 75% | ✅ PASS |
@@ -968,7 +952,6 @@ Before completing this workflow, verify:
- ✅ Decision rules applied consistently (PASS/CONCERNS/FAIL/WAIVED) - ✅ Decision rules applied consistently (PASS/CONCERNS/FAIL/WAIVED)
- ✅ Gate decision document created with evidence - ✅ Gate decision document created with evidence
- ✅ Waiver documented if decision is WAIVED (approver, justification, mitigation) - ✅ Waiver documented if decision is WAIVED (approver, justification, mitigation)
- ✅ Workflow status updated (bmm-workflow-status.md)
- ✅ Stakeholders notified (if enabled) - ✅ Stakeholders notified (if enabled)
--- ---

View File

@@ -1,346 +0,0 @@
# Workflow Init - Project Setup Instructions
<critical>The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml</critical>
<critical>You MUST have already loaded and processed: workflow-init/workflow.yaml</critical>
<critical>Communicate in {communication_language} with {user_name}</critical>
<critical>This workflow handles BOTH new projects AND legacy projects following the BMad Method</critical>
<workflow>
<step n="1" goal="Scan for existing work">
<output>Welcome to BMad Method, {user_name}!</output>
<action>Perform comprehensive scan for existing work:
- BMM artifacts: PRD, epics, architecture, UX, brief, research, brainstorm
- Implementation: stories, sprint-status, workflow-status
- Codebase: source directories, package files, git repo
- Check both {planning_artifacts} and {implementation_artifacts} locations
</action>
<action>Categorize into one of these states:
- CLEAN: No artifacts or code (or scaffold only)
- PLANNING: Has PRD/spec but no implementation
- ACTIVE: Has stories or sprint status
- LEGACY: Has code but no BMM artifacts
- UNCLEAR: Mixed state needs clarification
</action>
<ask>What's your project called? {{#if project_name}}(Config shows: {{project_name}}){{/if}}</ask>
<action>Store project_name</action>
<template-output>project_name</template-output>
</step>
<step n="2" goal="Choose setup path">
<check if="state == CLEAN">
<output>Perfect! Fresh start detected.</output>
<action>Continue to step 3</action>
</check>
<check if="state == ACTIVE AND workflow_status exists">
<output>✅ You already have workflow tracking at: {{workflow_status_path}}
To check progress: Load any BMM agent and run /bmad:bmm:workflows:workflow-status
Happy building! 🚀</output>
<action>Exit workflow (already initialized)</action>
</check>
<check if="state != CLEAN">
<output>Found existing work:
{{summary_of_findings}}</output>
<ask>How would you like to proceed?
1. **Continue** - Work with existing artifacts
2. **Archive & Start Fresh** - Move old work to archive
3. **Express Setup** - I know exactly what I need
4. **Guided Setup** - Walk me through options
Choice [1-4]</ask>
<check if="choice == 1">
<action>Set continuing_existing = true</action>
<action>Store found artifacts</action>
<action>Continue to step 7 (detect track from artifacts)</action>
</check>
<check if="choice == 2">
<ask>Archive existing work? (y/n)</ask>
<action if="y">Move artifacts to {planning_artifacts}/archive/</action>
<output>Ready for fresh start!</output>
<action>Continue to step 3</action>
</check>
<check if="choice == 3">
<action>Jump to step 3 (express path)</action>
</check>
<check if="choice == 4">
<action>Continue to step 4 (guided path)</action>
</check>
</check>
<check if="state == CLEAN">
<ask>Setup approach:
1. **Express** - I know what I need
2. **Guided** - Show me the options
Choice [1 or 2]:</ask>
<check if="choice == 1">
<action>Continue to step 3 (express)</action>
</check>
<check if="choice == 2">
<action>Continue to step 4 (guided)</action>
</check>
</check>
</step>
<step n="3" goal="Express setup path">
<ask>Is this for:
1. **New project** (greenfield)
2. **Existing codebase** (brownfield)
Choice [1/2]:</ask>
<action>Set field_type based on choice</action>
<ask>Planning approach:
1. **BMad Method** - Full planning for complex projects
2. **Enterprise Method** - Extended planning with security/DevOps
Choice [1/2]:</ask>
<action>Map to selected_track: method/enterprise</action>
<output>🚀 **For Quick Flow (minimal planning, straight to code):**
Load the **quick-flow-solo-dev** agent instead - use Quick Flow agent for faster development</output>
<template-output>field_type</template-output>
<template-output>selected_track</template-output>
<action>Jump to step 6 (discovery options)</action>
</step>
<step n="4" goal="Guided setup - understand project">
<ask>Tell me about what you're working on. What's the goal?</ask>
<action>Store user_description</action>
<action>Analyze for field type indicators:
- Brownfield: "existing", "current", "enhance", "modify"
- Greenfield: "new", "build", "create", "from scratch"
- If codebase exists, default to brownfield unless user indicates scaffold
</action>
<check if="field_type unclear AND codebase exists">
<ask>I see existing code. Are you:
1. **Modifying** existing codebase (brownfield)
2. **Starting fresh** - code is just scaffold (greenfield)
Choice [1/2]:</ask>
<action>Set field_type based on answer</action>
</check>
<action if="field_type not set">Set based on codebase presence</action>
<action>Check for game development keywords</action>
<check if="game_detected">
<output>🎮 **GAME DEVELOPMENT DETECTED**
For game development, install the BMGD module:
```bash
bmad install bmgd
```
Continue with software workflows? (y/n)</output>
<ask>Choice:</ask>
<action if="n">Exit workflow</action>
</check>
<template-output>user_description</template-output>
<template-output>field_type</template-output>
<action>Continue to step 5</action>
</step>
<step n="5" goal="Guided setup - select track">
<output>Based on your project, here are your BMad Method planning options:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
**1. BMad Method** 🎯 {{#if recommended}}(RECOMMENDED){{/if}}
- Full planning: PRD + UX + Architecture
- Best for: Products, platforms, complex features
- Benefit: AI agents have complete context for better results
**2. Enterprise Method** 🏢
- Extended: Method + Security + DevOps + Testing
- Best for: Enterprise, compliance, mission-critical
- Benefit: Comprehensive planning for complex systems
**🚀 For Quick Flow (minimal planning, straight to code):**
Load the **quick-flow-solo-dev** agent instead - use Quick Flow agent for faster development
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{{#if brownfield}}
💡 Architecture creates focused solution design from your codebase, keeping AI agents on track.
{{/if}}</output>
<ask>Which BMad Method approach fits best?
1. BMad Method {{#if recommended}}(recommended){{/if}}
2. Enterprise Method
3. Help me decide
4. Switch to Quick Flow (use quick-flow-solo-dev agent)
Choice [1/2/3/4]:</ask>
<check if="choice == 4">
<output>🚀 **Switching to Quick Flow!**
Load the **quick-flow-solo-dev** agent instead:
- Start a new chat
- Load the quick-flow-solo-dev agent
- Use Quick Flow for minimal planning and faster development
Quick Flow is perfect for:
- Simple features and bug fixes
- Rapid prototyping
- When you want to get straight to code
Happy coding! 🚀</output>
<action>Exit workflow</action>
</check>
<check if="choice == 3">
<ask>What concerns you about choosing?</ask>
<action>Provide tailored guidance based on concerns</action>
<action>Loop back to choice</action>
</check>
<action>Map choice to selected_track</action>
<template-output>selected_track</template-output>
</step>
<step n="6" goal="Discovery workflows selection (unified)">
<action>Determine available discovery workflows based on:
- field_type (greenfield gets product-brief option)
- selected_track (method/enterprise options)
</action>
<check if="field_type == greenfield AND selected_track in [method, enterprise]">
<output>Optional discovery workflows can help clarify your vision:</output>
<ask>Select any you'd like to include:
1. 🧠 **Brainstorm** - Creative exploration and ideation
2. 🔍 **Research** - Technical/competitive analysis
3. 📋 **Product Brief** - Strategic product planning (recommended)
Enter numbers (e.g., "1,3" or "all" or "none"): </ask>
</check>
<check if="field_type == brownfield AND selected_track in [method, enterprise]">
<output>Optional discovery workflows:</output>
<ask>Include any of these?
1. 🧠 **Brainstorm** - Creative exploration
2. 🔍 **Research** - Domain analysis
Enter numbers (e.g., "1,2" or "none"): </ask>
</check>
<action>Parse selections and set:
- brainstorm_requested
- research_requested
- product_brief_requested (if applicable)
</action>
<template-output>brainstorm_requested</template-output>
<template-output>research_requested</template-output>
<template-output>product_brief_requested</template-output>
<check if="brownfield">
<output>💡 **Note:** For brownfield projects, run document-project workflow first to analyze your codebase.</output>
</check>
</step>
<step n="7" goal="Detect track from artifacts" if="continuing_existing OR migrating_legacy">
<action>Analyze artifacts to detect track:
- Has PRD → BMad Method
- Has Security/DevOps → Enterprise Method
- Has tech-spec only → Suggest switching to quick-flow-solo-dev agent
</action>
<output>Detected: **{{detected_track}}** based on {{found_artifacts}}</output>
<ask>Correct? (y/n)</ask>
<ask if="n">Which BMad Method track instead?
1. BMad Method
2. Enterprise Method
3. Switch to Quick Flow (use quick-flow-solo-dev agent)
Choice:</ask>
<action>Set selected_track</action>
<template-output>selected_track</template-output>
</step>
<step n="8" goal="Generate workflow path">
<action>Load path file: {path_files}/{{selected_track}}-{{field_type}}.yaml</action>
<action>Build workflow_items from path file</action>
<action>Scan for existing completed work and update statuses</action>
<action>Set generated date</action>
<template-output>generated</template-output>
<template-output>workflow_path_file</template-output>
<template-output>workflow_items</template-output>
</step>
<step n="9" goal="Create tracking file">
<output>Your BMad workflow path:
**Track:** {{selected_track}}
**Type:** {{field_type}}
**Project:** {{project_name}}
{{#if brownfield}}Prerequisites: document-project{{/if}}
{{#if has_discovery}}Discovery: {{list_selected_discovery}}{{/if}}
{{workflow_path_summary}}
</output>
<ask>Create workflow tracking file? (y/n)</ask>
<check if="y">
<action>Generate YAML from template with all variables</action>
<action>Save to {planning_artifacts}/bmm-workflow-status.yaml</action>
<action>Identify next workflow and agent</action>
<output>**Created:** {planning_artifacts}/bmm-workflow-status.yaml
**Next:** {{next_workflow_name}}
**Agent:** {{next_agent}}
**Command:** /bmad:bmm:workflows:{{next_workflow_id}}
{{#if next_agent not in [analyst, pm]}}
💡 Start new chat with **{{next_agent}}** agent first.
{{/if}}
To check progress: /bmad:bmm:workflows:workflow-status
Happy building! 🚀</output>
</check>
</step>
</workflow>

View File

@@ -1,30 +0,0 @@
# Workflow Init - Initial Project Setup
name: workflow-init
description: "Initialize a new BMM project by determining level, type, and creating workflow path"
author: "BMad"
# Critical variables from config
config_source: "{project-root}/_bmad/bmm/config.yaml"
output_folder: "{config_source}:output_folder"
implementation_artifacts: "{config_source}:implementation_artifacts"
planning_artifacts: "{config_source}:planning_artifacts"
user_name: "{config_source}:user_name"
project_name: "{config_source}:project_name"
communication_language: "{config_source}:communication_language"
document_output_language: "{config_source}:document_output_language"
user_skill_level: "{config_source}:user_skill_level"
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.yaml"
# Path data files
path_files: "{project-root}/_bmad/bmm/workflows/workflow-status/paths/"
# Output configuration
default_output_file: "{planning_artifacts}/bmm-workflow-status.yaml"
standalone: true
web_bundle: false

View File

@@ -1,397 +0,0 @@
# Workflow Status Check - Multi-Mode Service
<critical>The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml</critical>
<critical>You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/workflow-status/workflow.yaml</critical>
<critical>This workflow operates in multiple modes: interactive (default), validate, data, init-check, update</critical>
<critical>Other workflows can call this as a service to avoid duplicating status logic</critical>
<critical>⚠️ ABSOLUTELY NO TIME ESTIMATES - NEVER mention hours, days, weeks, months, or ANY time-based predictions. AI has fundamentally changed development speed - what once took teams weeks/months can now be done by one person in hours. DO NOT give ANY time estimates whatsoever.</critical>
<workflow>
<step n="0" goal="Determine execution mode">
<action>Check for {{mode}} parameter passed by calling workflow</action>
<action>Default mode = "interactive" if not specified</action>
<check if="mode == interactive">
<action>Continue to Step 1 for normal status check flow</action>
</check>
<check if="mode == validate">
<action>Jump to Step 10 for workflow validation service</action>
</check>
<check if="mode == data">
<action>Jump to Step 20 for data extraction service</action>
</check>
<check if="mode == init-check">
<action>Jump to Step 30 for simple init check</action>
</check>
<check if="mode == update">
<action>Jump to Step 40 for status update service</action>
</check>
</step>
<step n="1" goal="Check for status file">
<action>Search {planning_artifacts}/ for file: bmm-workflow-status.yaml</action>
<check if="no status file found">
<output>No workflow status found.</output>
<ask>Would you like to run Workflow Init now? (y/n)</ask>
<check if="response == y OR response == yes">
<action>Launching workflow-init to set up your project tracking...</action>
<invoke-workflow path="{project-root}/_bmad/bmm/workflows/workflow-status/init/workflow.yaml"></invoke-workflow>
<action>Exit workflow and let workflow-init take over</action>
</check>
<check if="else">
<output>No workflow status file. Run workflow-init when ready to enable progress tracking.</output>
<action>Exit workflow</action>
</check>
</check>
<check if="status file found">
<action>Continue to step 2</action>
</check>
</step>
<step n="2" goal="Read and parse status">
<action>Read bmm-workflow-status.yaml</action>
<action>Parse YAML file and extract metadata from comments and fields:</action>
Parse these fields from YAML comments and metadata:
- 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 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>
<action>For each workflow, look up its agent from the path file</action>
<output>
## 📊 Current Status
**Project:** {{project}} (Level {{project_level}} {{project_type}})
**Path:** {{workflow_path}}
**Progress:**
{{#each phases}}
{{phase_name}}:
{{#each workflows_in_phase}}
- {{workflow_name}} ({{agent}}): {{status_display}}
{{/each}}
{{/each}}
## 🎯 Next Steps
**Next Workflow:** {{next_workflow_name}}
**Agent:** {{next_agent}}
**Command:** /bmad:bmm:workflows:{{next_workflow_id}}
{{#if optional_workflows_available}}
**Optional Workflows Available:**
{{#each optional_workflows}}
- {{workflow_name}} ({{agent}}) - {{status}}
{{/each}}
{{/if}}
**Tip:** For guardrail tests, run TEA `*automate` after `dev-story`. If you lose context, TEA workflows resume from artifacts in `{{output_folder}}`.
</output>
</step>
<step n="4" goal="Offer actions">
<ask>What would you like to do?
1. **Start next workflow** - {{next_workflow_name}} ({{next_agent}})
{{#if optional_workflows_available}}
2. **Run optional workflow** - Choose from available options
{{/if}}
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>
<!-- ============================================= -->
<!-- SERVICE MODES - Called by other workflows -->
<!-- ============================================= -->
<step n="10" goal="Validate mode - Check if calling workflow should proceed">
<action>Read {planning_artifacts}/bmm-workflow-status.yaml if exists</action>
<check if="status file not found">
<template-output>status_exists = false</template-output>
<template-output>should_proceed = true</template-output>
<template-output>warning = "No status file found. Running without progress tracking."</template-output>
<template-output>suggestion = "Consider running workflow-init first for progress tracking"</template-output>
<action>Return to calling workflow</action>
</check>
<check if="status file found">
<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>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>
<template-output>warning = ""</template-output>
<template-output>suggestion = "Proceeding with planned next step"</template-output>
</check>
<check if="calling_workflow in workflow_status list">
<action>Check the status of calling_workflow in YAML</action>
<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="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>
</check>
</check>
<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 {planning_artifacts}/bmm-workflow-status.yaml if exists</action>
<check if="status file not found">
<template-output>status_exists = false</template-output>
<template-output>error = "No status file to extract data from"</template-output>
<action>Return to calling workflow</action>
</check>
<check if="status file found">
<action>Parse YAML file completely</action>
<template-output>status_exists = true</template-output>
<check if="data_request == project_config">
<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 == 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.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 {planning_artifacts}/bmm-workflow-status.yaml exists</action>
<check if="exists">
<template-output>status_exists = true</template-output>
<template-output>suggestion = "Status file found. Ready to proceed."</template-output>
</check>
<check if="not exists">
<template-output>status_exists = false</template-output>
<template-output>suggestion = "No status file. Run workflow-init to create one (optional for progress tracking)"</template-output>
</check>
<action>Return immediately to calling workflow</action>
</step>
<step n="40" goal="Update mode - Centralized status file updates">
<action>Read {planning_artifacts}/bmm-workflow-status.yaml</action>
<check if="status file not found">
<template-output>success = false</template-output>
<template-output>error = "No status file found. Cannot update."</template-output>
<action>Return to calling workflow</action>
</check>
<check if="status file found">
<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_id}} parameter (required)</action>
<action>Get {{default_output_file}} parameter (required - path to created file)</action>
<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}}: {{default_output_file}}
<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>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 from path file}}</template-output>
<template-output>completed_workflow = {{workflow_id}}</template-output>
<template-output>default_output_file = {{default_output_file}}</template-output>
</check>
<!-- ============================================= -->
<!-- ACTION: skip_workflow -->
<!-- ============================================= -->
<check if="action == skip_workflow">
<action>Get {{workflow_id}} parameter (required)</action>
<action>Update workflow status in YAML:</action>
- In workflow_status section, update: {{workflow_id}}: skipped
<action>Save updated YAML file</action>
<template-output>success = true</template-output>
<template-output>skipped_workflow = {{workflow_id}}</template-output>
</check>
<!-- ============================================= -->
<!-- Unknown action -->
<!-- ============================================= -->
<check if="action not recognized">
<template-output>success = false</template-output>
<template-output>error = "Unknown action: {{action}}. Valid actions: complete_workflow, skip_workflow"</template-output>
</check>
</check>
<action>Return control to calling workflow with template outputs</action>
</step>
</workflow>

View File

@@ -1,24 +0,0 @@
# Workflow Status Template
# This tracks progress through BMM methodology Analysis, Planning, and Solutioning phases.
# Implementation phase is tracked separately in sprint-status.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: "{{generated}}"
project: "{{project_name}}"
project_type: "{{project_type}}"
selected_track: "{{selected_track}}"
field_type: "{{field_type}}"
workflow_path: "{{workflow_path_file}}"
workflow_status: "{{workflow_items}}"

View File

@@ -1,32 +0,0 @@
# Workflow Status - Master Router and Status Tracker
name: workflow-status
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
config_source: "{project-root}/_bmad/bmm/config.yaml"
output_folder: "{config_source}:output_folder"
planning_artifacts: "{config_source}:planning_artifacts"
implementation_artifacts: "{config_source}:implementation_artifacts"
user_name: "{config_source}:user_name"
communication_language: "{config_source}:communication_language"
document_output_language: "{config_source}:document_output_language"
user_skill_level: "{config_source}:user_skill_level"
date: system-generated
# Workflow components
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.yaml"
# Path definitions for project types
path_files: "{installed_path}/paths/"
# Output configuration - reads existing status
default_output_file: "{planning_artifacts}/bmm-workflow-status.yaml"
standalone: true
web_bundle: false

View File

@@ -23,9 +23,9 @@ agent:
- trigger: DS or fuzzy match on dev-story - trigger: DS or fuzzy match on dev-story
description: "[DS] Another two-word compound trigger" description: "[DS] Another two-word compound trigger"
action: dev_story action: dev_story
- trigger: WI or fuzzy match on workflow-init-process - trigger: WI or fuzzy match on three-name-thing
description: "[WI] Three-word compound trigger (uses first 2 words for shortcut)" description: "[WI] Three-word compound trigger (uses first 2 words for shortcut)"
action: workflow_init action: three_name_thing
- trigger: H or fuzzy match on help - trigger: H or fuzzy match on help
description: "[H] Single-word compound trigger (1-letter shortcut)" description: "[H] Single-word compound trigger (1-letter shortcut)"
action: help action: help