mirror of
https://github.com/bmad-code-org/BMAD-METHOD.git
synced 2026-01-30 04:32:02 +00:00
remove legacy workflow manager
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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!**
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -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`
|
||||||
|
|
||||||
|
|||||||
@@ -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`
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -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>
|
|
||||||
@@ -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
|
|
||||||
@@ -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>
|
|
||||||
@@ -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}}"
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user