From 7fc8318e0814c44a5bfdf903dae2368da89705fb Mon Sep 17 00:00:00 2001 From: Dicky Moore Date: Sat, 7 Feb 2026 13:34:26 +0000 Subject: [PATCH] Migrate remaining workflows to workflow.md and fix CLI/test regressions --- docs/how-to/customize-bmad.md | 2 +- src/bmm/agents/analyst.agent.yaml | 2 +- src/bmm/agents/dev.agent.yaml | 4 +- src/bmm/agents/pm.agent.yaml | 2 +- src/bmm/agents/quick-flow-solo-dev.agent.yaml | 2 +- src/bmm/agents/sm.agent.yaml | 8 +- .../agents/tech-writer/tech-writer.agent.yaml | 2 +- src/bmm/module-help.csv | 39 +- .../steps/step-02-vision.md | 2 +- .../steps/step-03-users.md | 2 +- .../steps/step-04-metrics.md | 2 +- .../steps/step-05-scope.md | 2 +- .../create-prd/steps-c/step-02-discovery.md | 2 +- .../create-prd/steps-c/step-03-success.md | 2 +- .../create-prd/steps-c/step-04-journeys.md | 2 +- .../create-prd/steps-c/step-05-domain.md | 2 +- .../create-prd/steps-c/step-06-innovation.md | 2 +- .../steps-c/step-07-project-type.md | 2 +- .../create-prd/steps-c/step-08-scoping.md | 2 +- .../create-prd/steps-c/step-09-functional.md | 2 +- .../steps-c/step-10-nonfunctional.md | 2 +- .../create-prd/steps-c/step-11-polish.md | 2 +- .../create-prd/steps-e/step-e-01-discovery.md | 2 +- .../create-prd/steps-e/step-e-02-review.md | 2 +- .../create-prd/steps-v/step-v-01-discovery.md | 4 +- .../steps-v/step-v-10-smart-validation.md | 2 +- .../step-v-11-holistic-quality-validation.md | 2 +- .../steps/step-02-discovery.md | 2 +- .../steps/step-03-core-experience.md | 4 +- .../steps/step-04-emotional-response.md | 4 +- .../steps/step-05-inspiration.md | 4 +- .../steps/step-06-design-system.md | 4 +- .../steps/step-07-defining-experience.md | 4 +- .../steps/step-08-visual-foundation.md | 4 +- .../steps/step-09-design-directions.md | 4 +- .../steps/step-10-user-journeys.md | 4 +- .../steps/step-11-component-strategy.md | 4 +- .../steps/step-12-ux-patterns.md | 4 +- .../steps/step-13-responsive-accessibility.md | 4 +- .../steps/step-02-context.md | 4 +- .../steps/step-03-starter.md | 4 +- .../steps/step-04-decisions.md | 4 +- .../steps/step-05-patterns.md | 4 +- .../steps/step-06-structure.md | 4 +- .../steps/step-07-validation.md | 4 +- .../steps/step-01-validate-prerequisites.md | 2 +- .../steps/step-02-design-epics.md | 2 +- .../steps/step-03-create-stories.md | 2 +- .../steps/step-04-final-validation.md | 2 +- .../code-review/instructions.xml | 4 +- .../4-implementation/code-review/workflow.md | 33 + .../code-review/workflow.yaml | 48 - .../correct-course/checklist.md | 2 +- .../correct-course/instructions.md | 4 +- .../correct-course/workflow.md | 33 + .../correct-course/workflow.yaml | 56 - .../create-story/checklist.md | 14 +- .../create-story/instructions.xml | 6 +- .../4-implementation/create-story/workflow.md | 56 - .../create-story/workflow.yaml | 57 - .../dev-story/instructions.xml | 4 +- .../4-implementation/dev-story/workflow.md | 33 + .../4-implementation/dev-story/workflow.yaml | 23 - .../retrospective/instructions.md | 4 +- .../retrospective/workflow.md | 29 + .../retrospective/workflow.yaml | 55 - .../sprint-planning/instructions.md | 4 +- .../sprint-planning/workflow.md | 31 + .../sprint-planning/workflow.yaml | 51 - .../sprint-status/instructions.md | 4 +- .../sprint-status/workflow.md | 26 + .../sprint-status/workflow.yaml | 30 - .../bmad-quick-flow/quick-dev/workflow.md | 2 +- .../bmad-quick-flow/quick-spec/workflow.md | 2 +- .../document-project/instructions.md | 4 +- .../workflows/document-project/workflow.md | 30 + .../workflows/document-project/workflow.yaml | 22 - .../document-project/workflows/deep-dive.yaml | 4 +- .../document-project/workflows/full-scan.yaml | 4 +- .../create-dataflow/instructions.md | 128 -- .../create-diagram/instructions.md | 139 --- .../create-flowchart/instructions.md | 239 ---- .../create-wireframe/instructions.md | 131 --- src/bmm/workflows/qa/automate/workflow.md | 5 +- src/bmm/workflows/testarch/trace/checklist.md | 642 ---------- .../workflows/testarch/trace/instructions.md | 1030 ----------------- .../advanced-elicitation/workflow.md | 124 ++ .../advanced-elicitation/workflow.xml | 117 -- .../steps/step-03-technique-execution.md | 2 +- src/core/workflows/brainstorming/workflow.md | 2 +- .../agent-components/handler-multi.txt | 2 +- .../handler-validate-workflow.txt | 8 +- .../agent-components/handler-workflow.txt | 12 +- test/test-installation-components.js | 133 ++- .../installers/lib/core/manifest-generator.js | 2 +- tools/cli/installers/lib/ide/_base-ide.js | 13 +- .../combined/claude-workflow-yaml.md | 1 - .../combined/default-workflow-yaml.md | 15 - .../templates/workflow-command-template.md | 14 - tools/cli/installers/lib/modules/manager.js | 3 +- 100 files changed, 551 insertions(+), 3065 deletions(-) create mode 100644 src/bmm/workflows/4-implementation/code-review/workflow.md delete mode 100644 src/bmm/workflows/4-implementation/code-review/workflow.yaml create mode 100644 src/bmm/workflows/4-implementation/correct-course/workflow.md delete mode 100644 src/bmm/workflows/4-implementation/correct-course/workflow.yaml delete mode 100644 src/bmm/workflows/4-implementation/create-story/workflow.yaml create mode 100644 src/bmm/workflows/4-implementation/dev-story/workflow.md delete mode 100644 src/bmm/workflows/4-implementation/dev-story/workflow.yaml create mode 100644 src/bmm/workflows/4-implementation/retrospective/workflow.md delete mode 100644 src/bmm/workflows/4-implementation/retrospective/workflow.yaml create mode 100644 src/bmm/workflows/4-implementation/sprint-planning/workflow.md delete mode 100644 src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml create mode 100644 src/bmm/workflows/4-implementation/sprint-status/workflow.md delete mode 100644 src/bmm/workflows/4-implementation/sprint-status/workflow.yaml create mode 100644 src/bmm/workflows/document-project/workflow.md delete mode 100644 src/bmm/workflows/document-project/workflow.yaml delete mode 100644 src/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md delete mode 100644 src/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md delete mode 100644 src/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md delete mode 100644 src/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md delete mode 100644 src/bmm/workflows/testarch/trace/checklist.md delete mode 100644 src/bmm/workflows/testarch/trace/instructions.md create mode 100644 src/core/workflows/advanced-elicitation/workflow.md delete mode 100644 src/core/workflows/advanced-elicitation/workflow.xml delete mode 120000 tools/cli/installers/lib/ide/templates/combined/claude-workflow-yaml.md delete mode 100644 tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md delete mode 100644 tools/cli/installers/lib/ide/templates/workflow-command-template.md diff --git a/docs/how-to/customize-bmad.md b/docs/how-to/customize-bmad.md index 3c356373f..5a0981758 100644 --- a/docs/how-to/customize-bmad.md +++ b/docs/how-to/customize-bmad.md @@ -101,7 +101,7 @@ Any custom items you add here will be included in the agents display menu. ```yaml menu: - trigger: my-workflow - workflow: '{project-root}/my-custom/workflows/my-workflow.yaml' + workflow: '{project-root}/my-custom/workflows/my-workflow.md' description: My custom workflow - trigger: deploy action: '#deploy-prompt' diff --git a/src/bmm/agents/analyst.agent.yaml b/src/bmm/agents/analyst.agent.yaml index c340f69c1..0e6aab780 100644 --- a/src/bmm/agents/analyst.agent.yaml +++ b/src/bmm/agents/analyst.agent.yaml @@ -38,5 +38,5 @@ agent: description: "[CB] Create Brief: A guided experience to nail down your product idea into an executive brief" - 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.md" description: "[DP] Document Project: Analyze an existing project to produce useful documentation for both human and LLM" diff --git a/src/bmm/agents/dev.agent.yaml b/src/bmm/agents/dev.agent.yaml index d88166eda..807fea8ff 100644 --- a/src/bmm/agents/dev.agent.yaml +++ b/src/bmm/agents/dev.agent.yaml @@ -29,9 +29,9 @@ agent: menu: - trigger: DS or fuzzy match on dev-story - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml" + workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/dev-story/workflow.md" description: "[DS] Dev Story: Write the next or specified stories tests and code." - trigger: CR or fuzzy match on code-review - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml" + workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review/workflow.md" description: "[CR] Code Review: Initiate a comprehensive code review across multiple quality facets. For best results, use a fresh context and a different quality LLM if available" diff --git a/src/bmm/agents/pm.agent.yaml b/src/bmm/agents/pm.agent.yaml index 9ce0bf32f..c990759c3 100644 --- a/src/bmm/agents/pm.agent.yaml +++ b/src/bmm/agents/pm.agent.yaml @@ -39,5 +39,5 @@ agent: description: "[IR] Implementation Readiness: Ensure the PRD, UX, and Architecture and Epics and Stories List are all aligned" - trigger: CC or fuzzy match on correct-course - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml" + workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.md" description: "[CC] Course Correction: Use this so we can determine how to proceed if major need for change is discovered mid implementation" diff --git a/src/bmm/agents/quick-flow-solo-dev.agent.yaml b/src/bmm/agents/quick-flow-solo-dev.agent.yaml index 6d207a399..a20c8a206 100644 --- a/src/bmm/agents/quick-flow-solo-dev.agent.yaml +++ b/src/bmm/agents/quick-flow-solo-dev.agent.yaml @@ -27,5 +27,5 @@ agent: description: "[QD] Quick-flow Develop: Implement a story tech spec end-to-end (Core of Quick Flow)" - trigger: CR or fuzzy match on code-review - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml" + workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review/workflow.md" description: "[CR] Code Review: Initiate a comprehensive code review across multiple quality facets. For best results, use a fresh context and a different quality LLM if available" diff --git a/src/bmm/agents/sm.agent.yaml b/src/bmm/agents/sm.agent.yaml index 9e51f4259..e244c280f 100644 --- a/src/bmm/agents/sm.agent.yaml +++ b/src/bmm/agents/sm.agent.yaml @@ -19,18 +19,18 @@ agent: menu: - 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.md" 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" - trigger: CS or fuzzy match on create-story - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml" + workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/create-story/workflow.md" description: "[CS] Context Story: Prepare a story with all required context for implementation for the developer agent" - trigger: ER or fuzzy match on epic-retrospective - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml" + workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/retrospective/workflow.md" data: "{project-root}/_bmad/_config/agent-manifest.csv" description: "[ER] Epic Retrospective: Party Mode review of all work completed across an epic." - trigger: CC or fuzzy match on correct-course - workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml" + workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.md" description: "[CC] Course Correction: Use this so we can determine how to proceed if major need for change is discovered mid implementation" diff --git a/src/bmm/agents/tech-writer/tech-writer.agent.yaml b/src/bmm/agents/tech-writer/tech-writer.agent.yaml index a742a6c9f..4a99f52d7 100644 --- a/src/bmm/agents/tech-writer/tech-writer.agent.yaml +++ b/src/bmm/agents/tech-writer/tech-writer.agent.yaml @@ -21,7 +21,7 @@ agent: menu: - 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.md" description: "[DP] Document Project: Generate comprehensive project documentation (brownfield analysis, architecture scanning)" - trigger: WD or fuzzy match on write-document diff --git a/src/bmm/module-help.csv b/src/bmm/module-help.csv index 9ba42ca0f..0c8096831 100644 --- a/src/bmm/module-help.csv +++ b/src/bmm/module-help.csv @@ -1,32 +1,31 @@ module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs, -bmm,anytime,Document Project,DP,10,_bmad/bmm/workflows/document-project/workflow.md,bmad-bmm-document-project,false,analyst,Create Mode,"Analyze an existing project to produce useful documentation",project-knowledge,*, -bmm,anytime,Quick Spec,TS,20,_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md,bmad-bmm-quick-spec,false,quick-flow-solo-dev,Create Mode,"Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method. Quick one-off tasks small changes simple apps utilities without extensive planning",planning_artifacts,"tech spec", -bmm,anytime,Quick Dev,QD,30,_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md,bmad-bmm-quick-dev,false,quick-flow-solo-dev,Create Mode,"Quick one-off tasks small changes simple apps utilities without extensive planning - Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method, unless the user is already working through the implementation phase and just requests a 1 off things not already in the plan",,, -bmm,anytime,Correct Course,CC,40,_bmad/bmm/workflows/4-implementation/correct-course/workflow.md,bmad-bmm-correct-course,false,sm,Create Mode,"Anytime: Navigate significant changes. May recommend start over update PRD redo architecture sprint planning or correct epics and stories",planning_artifacts,"change proposal", +bmm,anytime,Document Project,DP,,_bmad/bmm/workflows/document-project/workflow.md,bmad-bmm-document-project,false,analyst,Create Mode,"Analyze an existing project to produce useful documentation",project-knowledge,*, +bmm,anytime,Generate Project Context,GPC,,_bmad/bmm/workflows/generate-project-context/workflow.md,bmad-bmm-generate-project-context,false,analyst,Create Mode,"Scan existing codebase to generate a lean LLM-optimized project-context.md containing critical implementation rules patterns and conventions for AI agents. Essential for brownfield projects and quick-flow.",output_folder,"project context", +bmm,anytime,Quick Spec,QS,,_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md,bmad-bmm-quick-spec,false,quick-flow-solo-dev,Create Mode,"Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method. Quick one-off tasks small changes simple apps brownfield additions to well established patterns utilities without extensive planning",planning_artifacts,"tech spec", +bmm,anytime,Quick Dev,QD,,_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md,bmad-bmm-quick-dev,false,quick-flow-solo-dev,Create Mode,"Quick one-off tasks small changes simple apps utilities without extensive planning - Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method, unless the user is already working through the implementation phase and just requests a 1 off things not already in the plan",,, +bmm,anytime,Correct Course,CC,,_bmad/bmm/workflows/4-implementation/correct-course/workflow.md,bmad-bmm-correct-course,false,sm,Create Mode,"Anytime: Navigate significant changes. May recommend start over update PRD redo architecture sprint planning or correct epics and stories",planning_artifacts,"change proposal", +bmm,anytime,Write Document,WD,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Describe in detail what you want, and the agent will follow the documentation best practices defined in agent memory. Multi-turn conversation with subprocess for research/review.",project-knowledge,"document", +bmm,anytime,Update Standards,US,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Update agent memory documentation-standards.md with your specific preferences if you discover missing document conventions.",_bmad/_memory/tech-writer-sidecar,"standards", +bmm,anytime,Mermaid Generate,MG,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Create a Mermaid diagram based on user description. Will suggest diagram types if not specified.",planning_artifacts,"mermaid diagram", +bmm,anytime,Validate Document,VD,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Review the specified document against documentation standards and best practices. Returns specific actionable improvement suggestions organized by priority.",planning_artifacts,"validation report", +bmm,anytime,Explain Concept,EC,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Create clear technical explanations with examples and diagrams for complex concepts. Breaks down into digestible sections using task-oriented approach.",project_knowledge,"explanation", bmm,1-analysis,Brainstorm Project,BP,10,_bmad/core/workflows/brainstorming/workflow.md,bmad-brainstorming,false,analyst,data=_bmad/bmm/data/project-context-template.md,"Expert Guided Facilitation through a single or multiple techniques",planning_artifacts,"brainstorming session", -bmm,1-analysis,Market Research,MR,20,_bmad/bmm/workflows/1-analysis/research/workflow.md,bmad-bmm-research,false,analyst,Create Mode research_type=market,"Market analysis competitive landscape customer needs and trends","planning_artifacts|project-knowledge","research documents" -bmm,1-analysis,Domain Research,DR,21,_bmad/bmm/workflows/1-analysis/research/workflow.md,bmad-bmm-research,false,analyst,Create Mode research_type=domain,"Industry domain deep dive subject matter expertise and terminology","planning_artifacts|project-knowledge","research documents" -bmm,1-analysis,Technical Research,TR,22,_bmad/bmm/workflows/1-analysis/research/workflow.md,bmad-bmm-research,false,analyst,Create Mode research_type=technical,"Technical feasibility architecture options and implementation approaches","planning_artifacts|project-knowledge","research documents" -bmm,1-analysis,Create Brief,CB,30,_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md,bmad-bmm-create-brief,false,analyst,Create Mode,"A guided experience to nail down your product idea",planning_artifacts,"product brief", -bmm,1-analysis,Validate Brief,VB,40,_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md,bmad-bmm-validate-brief,false,analyst,Validate Mode,"Validates product brief completeness",planning_artifacts,"brief validation report", -bmm,2-planning,Create PRD,CP,10,_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow.md,bmad-bmm-prd,true,pm,Create Mode,"Expert led facilitation to produce your Product Requirements Document",planning_artifacts,prd, -bmm,2-planning,Validate PRD,VP,20,_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow.md,bmad-bmm-prd,false,pm,Validate Mode,"Validate PRD is comprehensive lean well organized and cohesive",planning_artifacts,"prd validation report", +bmm,1-analysis,Market Research,MR,20,_bmad/bmm/workflows/1-analysis/research/workflow-market-research.md,bmad-bmm-market-research,false,analyst,Create Mode,"Market analysis competitive landscape customer needs and trends","planning_artifacts|project-knowledge","research documents", +bmm,1-analysis,Domain Research,DR,21,_bmad/bmm/workflows/1-analysis/research/workflow-domain-research.md,bmad-bmm-domain-research,false,analyst,Create Mode,"Industry domain deep dive subject matter expertise and terminology","planning_artifacts|project_knowledge","research documents", +bmm,1-analysis,Technical Research,TR,22,_bmad/bmm/workflows/1-analysis/research/workflow-technical-research.md,bmad-bmm-technical-research,false,analyst,Create Mode,"Technical feasibility architecture options and implementation approaches","planning_artifacts|project_knowledge","research documents", +bmm,1-analysis,Create Brief,CB,30,_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md,bmad-bmm-create-product-brief,false,analyst,Create Mode,"A guided experience to nail down your product idea",planning_artifacts,"product brief", +bmm,2-planning,Create PRD,CP,10,_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md,bmad-bmm-create-prd,true,pm,Create Mode,"Expert led facilitation to produce your Product Requirements Document",planning_artifacts,prd, +bmm,2-planning,Validate PRD,VP,20,_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md,bmad-bmm-validate-prd,false,pm,Validate Mode,"Validate PRD is comprehensive lean well organized and cohesive",planning_artifacts,"prd validation report", +bmm,2-planning,Edit PRD,EP,25,_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md,bmad-bmm-edit-prd,false,pm,Edit Mode,"Improve and enhance an existing PRD",planning_artifacts,"updated prd", bmm,2-planning,Create UX,CU,30,_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md,bmad-bmm-create-ux-design,false,ux-designer,Create Mode,"Guidance through realizing the plan for your UX, strongly recommended if a UI is a primary piece of the proposed project",planning_artifacts,"ux design", -bmm,2-planning,Validate UX,VU,40,_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md,bmad-bmm-create-ux-design,false,ux-designer,Validate Mode,"Validates UX design deliverables",planning_artifacts,"ux validation report", -,anytime,Create Dataflow,CDF,50,_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.md,bmad-bmm-create-excalidraw-dataflow,false,ux-designer,Create Mode,"Create data flow diagrams (DFD) in Excalidraw format - can be called standalone or during any workflow to add visual documentation",planning_artifacts,"dataflow diagram", -,anytime,Create Diagram,CED,51,_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.md,bmad-bmm-create-excalidraw-diagram,false,ux-designer,Create Mode,"Create system architecture diagrams ERDs UML diagrams or general technical diagrams in Excalidraw format - use anytime or call from architecture workflow to add visual documentation",planning_artifacts,"diagram", -,anytime,Create Flowchart,CFC,52,_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.md,bmad-bmm-create-excalidraw-flowchart,false,ux-designer,Create Mode,"Create a flowchart visualization in Excalidraw format for processes pipelines or logic flows - use anytime or during architecture to add process documentation",planning_artifacts,"flowchart", -,anytime,Create Wireframe,CEW,53,_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.md,bmad-bmm-create-excalidraw-wireframe,false,ux-designer,Create Mode,"Create website or app wireframes in Excalidraw format - use anytime standalone or call from UX workflow to add UI mockups",planning_artifacts,"wireframe", bmm,3-solutioning,Create Architecture,CA,10,_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md,bmad-bmm-create-architecture,true,architect,Create Mode,"Guided Workflow to document technical decisions",planning_artifacts,architecture, -bmm,3-solutioning,Validate Architecture,VA,20,_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md,bmad-bmm-create-architecture,false,architect,Validate Mode,"Validates architecture completeness",planning_artifacts,"architecture validation report", bmm,3-solutioning,Create Epics and Stories,CE,30,_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md,bmad-bmm-create-epics-and-stories,true,pm,Create Mode,"Create the Epics and Stories Listing",planning_artifacts,"epics and stories", -bmm,3-solutioning,Validate Epics and Stories,VE,40,_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md,bmad-bmm-create-epics-and-stories,false,pm,Validate Mode,"Validates epics and stories completeness",planning_artifacts,"epics validation report", -bmm,3-solutioning,Test Design,TD,50,_bmad/bmm/workflows/testarch/test-design/workflow.md,bmad-bmm-testarch-test-design,false,tea,Create Mode,"Create comprehensive test scenarios ahead of development, recommended if string test compliance or assurance is needed. Very critical for distributed applications with separate front ends and backends outside of a monorepo.",planning_artifacts,"test design", bmm,3-solutioning,Check Implementation Readiness,IR,70,_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md,bmad-bmm-check-implementation-readiness,true,architect,Validate Mode,"Ensure PRD UX Architecture and Epics Stories are aligned",planning_artifacts,"readiness report", bmm,4-implementation,Sprint Planning,SP,10,_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.md,bmad-bmm-sprint-planning,true,sm,Create Mode,"Generate sprint plan for development tasks - this kicks off the implementation phase by producing a plan the implementation agents will follow in sequence for every story in the plan.",implementation_artifacts,"sprint status", bmm,4-implementation,Sprint Status,SS,20,_bmad/bmm/workflows/4-implementation/sprint-status/workflow.md,bmad-bmm-sprint-status,false,sm,Create Mode,"Anytime: Summarize sprint status and route to next workflow",,, -bmm,4-implementation,Create Story,CS,30,_bmad/bmm/workflows/4-implementation/create-story/workflow.md,bmad-bmm-create-story,true,sm,Create Mode,"Story cycle start: Prepare first found story in the sprint plan that is next, or if the command is run with a specific epic and story designation with context. Once complete, then VS then DS then CR then back to DS if needed or next CS or ER",implementation_artifacts,story, bmm,4-implementation,Validate Story,VS,35,_bmad/bmm/workflows/4-implementation/create-story/workflow.md,bmad-bmm-create-story,false,sm,Validate Mode,"Validates story readiness and completeness before development work begins",implementation_artifacts,"story validation report", +bmm,4-implementation,Create Story,CS,30,_bmad/bmm/workflows/4-implementation/create-story/workflow.md,bmad-bmm-create-story,true,sm,Create Mode,"Story cycle start: Prepare first found story in the sprint plan that is next, or if the command is run with a specific epic and story designation with context. Once complete, then VS then DS then CR then back to DS if needed or next CS or ER",implementation_artifacts,story, bmm,4-implementation,Dev Story,DS,40,_bmad/bmm/workflows/4-implementation/dev-story/workflow.md,bmad-bmm-dev-story,true,dev,Create Mode,"Story cycle: Execute story implementation tasks and tests then CR then back to DS if fixes needed",,, bmm,4-implementation,Code Review,CR,50,_bmad/bmm/workflows/4-implementation/code-review/workflow.md,bmad-bmm-code-review,false,dev,Create Mode,"Story cycle: If issues back to DS if approved then next CS or ER if epic complete",,, +bmm,4-implementation,QA Automation Test,QA,45,_bmad/bmm/workflows/qa/automate/workflow.md,bmad-bmm-qa-automate,false,qa,Create Mode,"Generate automated API and E2E tests for implemented code using the project's existing test framework (detects existing well known in use test frameworks). Use after implementation to add test coverage. NOT for code review or story validation - use CR for that.",implementation_artifacts,"test suite", bmm,4-implementation,Retrospective,ER,60,_bmad/bmm/workflows/4-implementation/retrospective/workflow.md,bmad-bmm-retrospective,false,sm,Create Mode,"Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC",implementation_artifacts,retrospective, diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md index f00e18faa..5ae6e3347 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +++ b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md @@ -7,7 +7,7 @@ nextStepFile: './step-03-users.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md index cba266411..b2881ed78 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +++ b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md @@ -7,7 +7,7 @@ nextStepFile: './step-04-metrics.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md index e6b297c3d..0bfc5519b 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +++ b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md @@ -7,7 +7,7 @@ nextStepFile: './step-05-scope.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md index 0914b835d..d3f6b7ccc 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +++ b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md @@ -7,7 +7,7 @@ nextStepFile: './step-06-complete.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md index 4829a4d36..1201b286f 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md @@ -11,7 +11,7 @@ projectTypesCSV: '../data/project-types.csv' domainComplexityCSV: '../data/domain-complexity.csv' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md index 9a3c5e341..49cb1339e 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md @@ -7,7 +7,7 @@ nextStepFile: './step-04-journeys.md' outputFile: '{planning_artifacts}/prd.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md index 314dab564..5c7570890 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md @@ -7,7 +7,7 @@ nextStepFile: './step-05-domain.md' outputFile: '{planning_artifacts}/prd.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md index 9539527dc..60b30cb15 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md @@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md' domainComplexityCSV: '../data/domain-complexity.csv' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md index 440ccf2d2..8d2f03dd4 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md @@ -10,7 +10,7 @@ outputFile: '{planning_artifacts}/prd.md' projectTypesCSV: '../data/project-types.csv' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md index c078d6db1..9dd55e1c0 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md @@ -10,7 +10,7 @@ outputFile: '{planning_artifacts}/prd.md' projectTypesCSV: '../data/project-types.csv' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md index da9230adc..36c4e5293 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md @@ -7,7 +7,7 @@ nextStepFile: './step-09-functional.md' outputFile: '{planning_artifacts}/prd.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md index d689ebf37..210fd60c1 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md @@ -7,7 +7,7 @@ nextStepFile: './step-10-nonfunctional.md' outputFile: '{planning_artifacts}/prd.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md index 40919635d..121ea53ce 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md @@ -7,7 +7,7 @@ nextStepFile: './step-11-polish.md' outputFile: '{planning_artifacts}/prd.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md index 70bf198c3..04ad786e8 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md @@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md' purposeFile: '../data/prd-purpose.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md index 09f84b5f5..cfe2a0335 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md @@ -4,7 +4,7 @@ description: 'Discovery & Understanding - Understand what user wants to edit and # File references (ONLY variables used in this step) altStepFile: './step-e-01b-legacy-conversion.md' -prdPurpose: '{project-root}/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' +prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md index 64e0acbb3..1f7f9215e 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md @@ -6,7 +6,7 @@ description: 'Deep Review & Analysis - Thoroughly review existing PRD and prepar nextStepFile: './step-e-03-edit.md' prdFile: '{prd_file_path}' validationReport: '{validation_report_path}' # If provided -prdPurpose: '{project-root}/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' +prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' --- diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md index b79e12fe0..ae3f954dd 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md @@ -4,9 +4,9 @@ description: 'Document Discovery & Confirmation - Handle fresh context validatio # File references (ONLY variables used in this step) nextStepFile: './step-v-02-format-detection.md' -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' -prdPurpose: '../data/prd-purpose.md' +prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' --- # Step 1: Document Discovery & Confirmation diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md index e937c7526..1a135dcf0 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md @@ -6,7 +6,7 @@ description: 'SMART Requirements Validation - Validate Functional Requirements m nextStepFile: './step-v-11-holistic-quality-validation.md' prdFile: '{prd_file_path}' validationReportPath: '{validation_report_path}' -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' --- # Step 10: SMART Requirements Validation diff --git a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md index 698b6f654..581bf15f5 100644 --- a/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +++ b/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md @@ -6,7 +6,7 @@ description: 'Holistic Quality Assessment - Assess PRD as cohesive, compelling d nextStepFile: './step-v-12-completeness-validation.md' prdFile: '{prd_file_path}' validationReportPath: '{validation_report_path}' -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' --- # Step 11: Holistic Quality Assessment diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md index 7ab275a88..c45b1d461 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md index c64c84230..3ab99f9b1 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -161,7 +161,7 @@ Show the generated core experience content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current core experience content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current core experience content - Process the enhanced experience insights that come back - Ask user: "Accept these improvements to the core experience definition? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md index 247a61e21..6b74fc0fb 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -164,7 +164,7 @@ Show the generated emotional response content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current emotional response content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current emotional response content - Process the enhanced emotional insights that come back - Ask user: "Accept these improvements to the emotional response definition? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md index 87fe56031..f85d5f4b1 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -179,7 +179,7 @@ Show the generated inspiration analysis content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current inspiration analysis content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current inspiration analysis content - Process the enhanced pattern insights that come back - Ask user: "Accept these improvements to the inspiration analysis? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md index 70d566ada..0ff7156b6 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -197,7 +197,7 @@ Show the generated design system content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current design system content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current design system content - Process the enhanced design system insights that come back - Ask user: "Accept these improvements to the design system decision? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md index 7e904b948..53ad68f38 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -199,7 +199,7 @@ Show the generated defining experience content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current defining experience content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current defining experience content - Process the enhanced experience insights that come back - Ask user: "Accept these improvements to the defining experience? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md index bd764a60e..2f2491592 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -169,7 +169,7 @@ Show the generated visual foundation content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current visual foundation content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current visual foundation content - Process the enhanced visual insights that come back - Ask user: "Accept these improvements to the visual foundation? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md index a50ed503e..ac8f00439 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -169,7 +169,7 @@ Show the generated design direction content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current design direction content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current design direction content - Process the enhanced design insights that come back - Ask user: "Accept these improvements to the design direction? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md index 985577f00..4a52e235e 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -187,7 +187,7 @@ Show the generated user journey content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current user journey content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current user journey content - Process the enhanced journey insights that come back - Ask user: "Accept these improvements to the user journeys? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md index deef19b73..258f64d56 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -193,7 +193,7 @@ Show the generated component strategy content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current component strategy content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current component strategy content - Process the enhanced component insights that come back - Ask user: "Accept these improvements to the component strategy? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md index 4708b52aa..761244e63 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -182,7 +182,7 @@ Show the generated UX patterns content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current UX patterns content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current UX patterns content - Process the enhanced pattern insights that come back - Ask user: "Accept these improvements to the UX patterns? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md index 80b81d4c8..890a9506f 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md @@ -30,7 +30,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to this step's A/P/C menu - User accepts/rejects protocol changes before proceeding @@ -209,7 +209,7 @@ Show the generated responsive and accessibility content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current responsive/accessibility content +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current responsive/accessibility content - Process the enhanced insights that come back - Ask user: "Accept these improvements to the responsive/accessibility strategy? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md index 1e9c6b9a3..14fa1264d 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +++ b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md @@ -31,7 +31,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -170,7 +170,7 @@ Show the generated content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current context analysis +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current context analysis - Process the enhanced architectural insights that come back - Ask user: "Accept these enhancements to the project context analysis? (y/n)" - If yes: Update content with improvements, then return to A/P/C menu diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md index bccea19df..c97aa9b6f 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +++ b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md @@ -31,7 +31,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -277,7 +277,7 @@ Show the generated content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with current starter analysis +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current starter analysis - Process enhanced insights about starter options or custom approaches - Ask user: "Accept these changes to the starter template evaluation? (y/n)" - If yes: Update content, then return to A/P/C menu diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md index c9f5cdedd..43b4efd9c 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +++ b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md @@ -32,7 +32,7 @@ This step will generate content and present choices for each decision category: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -264,7 +264,7 @@ Show the generated decisions content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with specific decision categories +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with specific decision categories - Process enhanced insights about particular decisions - Ask user: "Accept these enhancements to the architectural decisions? (y/n)" - If yes: Update content, then return to A/P/C menu diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md index cbfd99d1d..a150f8909 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +++ b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md @@ -32,7 +32,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -305,7 +305,7 @@ Show the generated patterns content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with current patterns +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current patterns - Process enhanced consistency rules that come back - Ask user: "Accept these additional pattern refinements? (y/n)" - If yes: Update content, then return to A/P/C menu diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md index 3df89e6ce..39be9bbc7 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +++ b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md @@ -32,7 +32,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -325,7 +325,7 @@ Show the generated project structure content and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with current project structure +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current project structure - Process enhanced organizational insights that come back - Ask user: "Accept these changes to the project structure? (y/n)" - If yes: Update content, then return to A/P/C menu diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md index b2dc2c462..de43a25e6 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +++ b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md @@ -32,7 +32,7 @@ This step will generate content and present choices: ## PROTOCOL INTEGRATION: -- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml +- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md - When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md - PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed - User accepts/rejects protocol changes before proceeding @@ -305,7 +305,7 @@ Show the validation results and present choices: #### If 'A' (Advanced Elicitation): -- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with validation issues +- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with validation issues - Process enhanced solutions for complex concerns - Ask user: "Accept these architectural improvements? (y/n)" - If yes: Update content, then return to A/P/C menu diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md b/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md index c8d6b1330..5d2b0add9 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +++ b/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md @@ -13,7 +13,7 @@ outputFile: '{planning_artifacts}/epics.md' epicsTemplate: '{workflow_path}/templates/epics-template.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' # Template References diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md b/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md index 1b497c2ad..46ca5e47a 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +++ b/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md @@ -12,7 +12,7 @@ workflowFile: '{workflow_path}/workflow.md' outputFile: '{planning_artifacts}/epics.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' # Template References diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md b/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md index 2e13f9b2c..07e666e03 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +++ b/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md @@ -12,7 +12,7 @@ workflowFile: '{workflow_path}/workflow.md' outputFile: '{planning_artifacts}/epics.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' # Template References diff --git a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md b/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md index 05e8d5d4e..1cf5d5050 100644 --- a/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +++ b/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md @@ -11,7 +11,7 @@ workflowFile: '{workflow_path}/workflow.md' outputFile: '{planning_artifacts}/epics.md' # Task References -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' # Template References diff --git a/src/bmm/workflows/4-implementation/code-review/instructions.xml b/src/bmm/workflows/4-implementation/code-review/instructions.xml index e5649559d..ad17fa6ed 100644 --- a/src/bmm/workflows/4-implementation/code-review/instructions.xml +++ b/src/bmm/workflows/4-implementation/code-review/instructions.xml @@ -1,6 +1,6 @@ - The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml - You MUST have already loaded and processed: {installed_path}/workflow.yaml + The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.md + You MUST have already loaded and processed: {installed_path}/workflow.md Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level} Generate all documents in {document_output_language} diff --git a/src/bmm/workflows/4-implementation/code-review/workflow.md b/src/bmm/workflows/4-implementation/code-review/workflow.md new file mode 100644 index 000000000..d252b0957 --- /dev/null +++ b/src/bmm/workflows/4-implementation/code-review/workflow.md @@ -0,0 +1,33 @@ +--- +name: code-review +description: "Perform an adversarial senior developer code review with concrete findings across quality, tests, architecture, security, and performance" +main_config: '{project-root}/_bmad/bmm/config.yaml' +web_bundle: false +--- + +## Initialization +- Load config from `{project-root}/_bmad/bmm/config.yaml`. +- Resolve variables: + - `user_name` + - `communication_language` + - `document_output_language` + - `user_skill_level` + - `planning_artifacts` + - `implementation_artifacts` + - `story_dir` = `{implementation_artifacts}` + - `sprint_status` = `{implementation_artifacts}/sprint-status.yaml` + - `project_context` = `**/project-context.md` + - `date` (system-generated) + - `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/code-review` + + + Communicate all responses in {communication_language} and generate all documents in {document_output_language} + + + Read and follow instructions at: {installed_path}/instructions.xml + + + + Validate against checklist at {installed_path}/checklist.md using _bmad/core/tasks/validate-workflow.md + + diff --git a/src/bmm/workflows/4-implementation/code-review/workflow.yaml b/src/bmm/workflows/4-implementation/code-review/workflow.yaml deleted file mode 100644 index 5b5f6b2fc..000000000 --- a/src/bmm/workflows/4-implementation/code-review/workflow.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# Review Story Workflow -name: code-review -description: "Perform an ADVERSARIAL Senior Developer code review that finds 3-10 specific problems in every story. Challenges everything: code quality, test coverage, architecture compliance, security, performance. NEVER accepts `looks good` - must find minimum issues and can auto-fix with user approval." -author: "BMad" - -# Critical variables from config -config_source: "{project-root}/_bmad/bmm/config.yaml" -user_name: "{config_source}:user_name" -communication_language: "{config_source}:communication_language" -user_skill_level: "{config_source}:user_skill_level" -document_output_language: "{config_source}:document_output_language" -date: system-generated -planning_artifacts: "{config_source}:planning_artifacts" -implementation_artifacts: "{config_source}:implementation_artifacts" -output_folder: "{implementation_artifacts}" -sprint_status: "{implementation_artifacts}/sprint-status.yaml" - -# Workflow components -installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review" -instructions: "{installed_path}/instructions.xml" -validation: "{installed_path}/checklist.md" -template: false - -variables: - # Project context - project_context: "**/project-context.md" - story_dir: "{implementation_artifacts}" - -# Smart input file references - handles both whole docs and sharded docs -# Priority: Whole document first, then sharded version -# Strategy: SELECTIVE LOAD - only load the specific epic needed for this story review -input_file_patterns: - architecture: - description: "System architecture for review context" - whole: "{planning_artifacts}/*architecture*.md" - sharded: "{planning_artifacts}/*architecture*/*.md" - load_strategy: "FULL_LOAD" - ux_design: - description: "UX design specification (if UI review)" - whole: "{planning_artifacts}/*ux*.md" - sharded: "{planning_artifacts}/*ux*/*.md" - load_strategy: "FULL_LOAD" - epics: - description: "Epic containing story being reviewed" - whole: "{planning_artifacts}/*epic*.md" - sharded_index: "{planning_artifacts}/*epic*/index.md" - sharded_single: "{planning_artifacts}/*epic*/epic-{{epic_num}}.md" - load_strategy: "SELECTIVE_LOAD" diff --git a/src/bmm/workflows/4-implementation/correct-course/checklist.md b/src/bmm/workflows/4-implementation/correct-course/checklist.md index f13ab9be0..1e630ccbb 100644 --- a/src/bmm/workflows/4-implementation/correct-course/checklist.md +++ b/src/bmm/workflows/4-implementation/correct-course/checklist.md @@ -1,6 +1,6 @@ # Change Navigation Checklist -This checklist is executed as part of: {project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +This checklist is executed as part of: {project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.md Work through each section systematically with the user, recording findings and impacts diff --git a/src/bmm/workflows/4-implementation/correct-course/instructions.md b/src/bmm/workflows/4-implementation/correct-course/instructions.md index 430239a68..e37116f06 100644 --- a/src/bmm/workflows/4-implementation/correct-course/instructions.md +++ b/src/bmm/workflows/4-implementation/correct-course/instructions.md @@ -1,7 +1,7 @@ # Correct Course - Sprint Change Management Instructions -The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml -You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.md +You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/correct-course/workflow.md Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level} Generate all documents in {document_output_language} diff --git a/src/bmm/workflows/4-implementation/correct-course/workflow.md b/src/bmm/workflows/4-implementation/correct-course/workflow.md new file mode 100644 index 000000000..f6cfff26a --- /dev/null +++ b/src/bmm/workflows/4-implementation/correct-course/workflow.md @@ -0,0 +1,33 @@ +--- +name: correct-course +description: "Navigate significant changes during sprint execution by analyzing impact, proposing solutions, and routing for implementation" +main_config: '{project-root}/_bmad/bmm/config.yaml' +web_bundle: false +--- + +## Initialization +- Load config from `{project-root}/_bmad/bmm/config.yaml`. +- Resolve variables: + - `user_name` + - `communication_language` + - `document_output_language` + - `user_skill_level` + - `planning_artifacts` + - `implementation_artifacts` + - `project_knowledge` + - `sprint_status` = `{implementation_artifacts}/sprint-status.yaml` + - `date` (system-generated) + - `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/correct-course` + - `default_output_file` = `{planning_artifacts}/sprint-change-proposal-{date}.md` + + + Communicate all responses in {communication_language} and generate all documents in {document_output_language} + + + Read and follow instructions at: {installed_path}/instructions.md + + + + Validate against checklist at {installed_path}/checklist.md using _bmad/core/tasks/validate-workflow.md + + diff --git a/src/bmm/workflows/4-implementation/correct-course/workflow.yaml b/src/bmm/workflows/4-implementation/correct-course/workflow.yaml deleted file mode 100644 index 318b5a7dc..000000000 --- a/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# Correct Course - Sprint Change Management Workflow -name: "correct-course" -description: "Navigate significant changes during sprint execution by analyzing impact, proposing solutions, and routing for implementation" -author: "BMad Method" - -config_source: "{project-root}/_bmad/bmm/config.yaml" -user_name: "{config_source}:user_name" -communication_language: "{config_source}:communication_language" -user_skill_level: "{config_source}:user_skill_level" -document_output_language: "{config_source}:document_output_language" -date: system-generated -implementation_artifacts: "{config_source}:implementation_artifacts" -planning_artifacts: "{config_source}:planning_artifacts" -project_knowledge: "{config_source}:project_knowledge" -output_folder: "{implementation_artifacts}" -sprint_status: "{implementation_artifacts}/sprint-status.yaml" - -# Smart input file references - handles both whole docs and sharded docs -# Priority: Whole document first, then sharded version -# Strategy: Load project context for impact analysis -input_file_patterns: - prd: - description: "Product requirements for impact analysis" - whole: "{planning_artifacts}/*prd*.md" - sharded: "{planning_artifacts}/*prd*/*.md" - load_strategy: "FULL_LOAD" - epics: - description: "All epics to analyze change impact" - whole: "{planning_artifacts}/*epic*.md" - sharded: "{planning_artifacts}/*epic*/*.md" - load_strategy: "FULL_LOAD" - architecture: - description: "System architecture and decisions" - whole: "{planning_artifacts}/*architecture*.md" - sharded: "{planning_artifacts}/*architecture*/*.md" - load_strategy: "FULL_LOAD" - ux_design: - description: "UX design specification (if UI impacts)" - whole: "{planning_artifacts}/*ux*.md" - sharded: "{planning_artifacts}/*ux*/*.md" - load_strategy: "FULL_LOAD" - tech_spec: - description: "Technical specification" - whole: "{planning_artifacts}/*tech-spec*.md" - load_strategy: "FULL_LOAD" - document_project: - description: "Brownfield project documentation (optional)" - sharded: "{project_knowledge}/index.md" - load_strategy: "INDEX_GUIDED" - -installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/correct-course" -template: false -instructions: "{installed_path}/instructions.md" -validation: "{installed_path}/checklist.md" -checklist: "{installed_path}/checklist.md" -default_output_file: "{planning_artifacts}/sprint-change-proposal-{date}.md" diff --git a/src/bmm/workflows/4-implementation/create-story/checklist.md b/src/bmm/workflows/4-implementation/create-story/checklist.md index 55e6c397e..dea2f95b7 100644 --- a/src/bmm/workflows/4-implementation/create-story/checklist.md +++ b/src/bmm/workflows/4-implementation/create-story/checklist.md @@ -33,25 +33,25 @@ This is a COMPETITION to create the **ULTIMATE story context** that makes LLM de ### **When Running from Create-Story Workflow:** -- The `{project-root}/_bmad/core/tasks/validate-workflow.xml` framework will automatically: +- The `{project-root}/_bmad/core/tasks/validate-workflow.md` framework will automatically: - Load this checklist file - Load the newly created story file (`{story_file_path}`) - - Load workflow variables from `{installed_path}/workflow.yaml` + - Load workflow variables from `{installed_path}/workflow.md` - Execute the validation process ### **When Running in Fresh Context:** - User should provide the story file path being reviewed - Load the story file directly -- Load the corresponding workflow.yaml for variable context +- Load the corresponding workflow.md for variable context - Proceed with systematic analysis ### **Required Inputs:** - **Story file**: The story file to review and improve -- **Workflow variables**: From workflow.yaml (story_dir, output_folder, epics_file, etc.) +- **Workflow variables**: From workflow.md (story_dir, output_folder, epics_file, etc.) - **Source documents**: Epics, architecture, etc. (discovered or provided) -- **Validation framework**: `validate-workflow.xml` (handles checklist execution) +- **Validation framework**: `validate-workflow.md` (handles checklist execution) --- @@ -61,9 +61,9 @@ You will systematically re-do the entire story creation process, but with a crit ### **Step 1: Load and Understand the Target** -1. **Load the workflow configuration**: `{installed_path}/workflow.yaml` for variable inclusion +1. **Load the workflow configuration**: `{installed_path}/workflow.md` for variable inclusion 2. **Load the story file**: `{story_file_path}` (provided by user or discovered) -3. **Load validation framework**: `{project-root}/_bmad/core/tasks/validate-workflow.xml` +3. **Load validation framework**: `{project-root}/_bmad/core/tasks/validate-workflow.md` 4. **Extract metadata**: epic_num, story_num, story_key, story_title from story file 5. **Resolve all workflow variables**: story_dir, output_folder, epics_file, architecture_file, etc. 6. **Understand current status**: What story implementation guidance is currently provided? diff --git a/src/bmm/workflows/4-implementation/create-story/instructions.xml b/src/bmm/workflows/4-implementation/create-story/instructions.xml index 81eb82269..2a8d6ce5f 100644 --- a/src/bmm/workflows/4-implementation/create-story/instructions.xml +++ b/src/bmm/workflows/4-implementation/create-story/instructions.xml @@ -1,6 +1,6 @@ - The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml - You MUST have already loaded and processed: {installed_path}/workflow.yaml + The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.md + You MUST have already loaded and processed: {installed_path}/workflow.md Communicate all responses in {communication_language} and generate all documents in {document_output_language} 🔥 CRITICAL MISSION: You are creating the ULTIMATE story context engine that prevents LLM developer mistakes, omissions or @@ -310,7 +310,7 @@ - Validate against checklist at {installed_path}/checklist.md using _bmad/core/tasks/validate-workflow.xml + Validate against checklist at {installed_path}/checklist.md using _bmad/core/tasks/validate-workflow.md Save story document unconditionally diff --git a/src/bmm/workflows/4-implementation/create-story/workflow.md b/src/bmm/workflows/4-implementation/create-story/workflow.md index 702a60bfc..5a393e489 100644 --- a/src/bmm/workflows/4-implementation/create-story/workflow.md +++ b/src/bmm/workflows/4-implementation/create-story/workflow.md @@ -131,62 +131,6 @@ web_bundle: false GOTO step 2a - Load the FULL file: {{sprint_status}} - Read ALL lines from beginning to end - do not skip any content - Parse the development_status section completely - - Find the FIRST story (by reading in order from top to bottom) where: - - Key matches pattern: number-number-name (e.g., "1-2-user-auth") - - NOT an epic key (epic-X) or retrospective (epic-X-retrospective) - - Status value equals "backlog" - - - - 📋 No backlog stories found in sprint-status.yaml - - All stories are either already created, in progress, or done. - - **Options:** - 1. Run sprint-planning to refresh story tracking - 2. Load PM agent and run correct-course to add more stories - 3. Check if current sprint is complete and run retrospective - - HALT - - - Extract from found story key (e.g., "1-2-user-authentication"): - - epic_num: first number before dash (e.g., "1") - - story_num: second number after first dash (e.g., "2") - - story_title: remainder after second dash (e.g., "user-authentication") - - Set {{story_id}} = "{{epic_num}}.{{story_num}}" - Store story_key for later use (e.g., "1-2-user-authentication") - - - Check if this is the first story in epic {{epic_num}} by looking for {{epic_num}}-1-* pattern - - Load {{sprint_status}} and check epic-{{epic_num}} status - If epic status is "backlog" → update to "in-progress" - If epic status is "contexted" (legacy status) → update to "in-progress" (backward compatibility) - If epic status is "in-progress" → no change needed - - 🚫 ERROR: Cannot create story in completed epic - Epic {{epic_num}} is marked as 'done'. All stories are complete. - If you need to add more work, either: - 1. Manually change epic status back to 'in-progress' in sprint-status.yaml - 2. Create a new epic for additional work - HALT - Cannot proceed - - - 🚫 ERROR: Invalid epic status '{{epic_status}}' - Epic {{epic_num}} has invalid status. Expected: backlog, in-progress, or done - Please fix sprint-status.yaml manually or run sprint-planning to regenerate - HALT - Cannot proceed - - 📊 Epic {{epic_num}} status updated to in-progress - - - GOTO step 2a diff --git a/src/bmm/workflows/4-implementation/create-story/workflow.yaml b/src/bmm/workflows/4-implementation/create-story/workflow.yaml deleted file mode 100644 index 1f3ac9784..000000000 --- a/src/bmm/workflows/4-implementation/create-story/workflow.yaml +++ /dev/null @@ -1,57 +0,0 @@ -name: create-story -description: "Create the next user story from epics+stories with enhanced context analysis and direct ready-for-dev marking" -author: "BMad" - -# Critical variables from config -config_source: "{project-root}/_bmad/bmm/config.yaml" -user_name: "{config_source}:user_name" -communication_language: "{config_source}:communication_language" -date: system-generated -planning_artifacts: "{config_source}:planning_artifacts" -implementation_artifacts: "{config_source}:implementation_artifacts" -output_folder: "{implementation_artifacts}" -story_dir: "{implementation_artifacts}" - -# Workflow components -installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/create-story" -template: "{installed_path}/template.md" -instructions: "{installed_path}/instructions.xml" -validation: "{installed_path}/checklist.md" - -# Variables and inputs -variables: - sprint_status: "{implementation_artifacts}/sprint-status.yaml" # Primary source for story tracking - epics_file: "{planning_artifacts}/epics.md" # Enhanced epics+stories with BDD and source hints - prd_file: "{planning_artifacts}/prd.md" # Fallback for requirements (if not in epics file) - architecture_file: "{planning_artifacts}/architecture.md" # Fallback for constraints (if not in epics file) - ux_file: "{planning_artifacts}/*ux*.md" # Fallback for UX requirements (if not in epics file) - story_title: "" # Will be elicited if not derivable - -# Project context -project_context: "**/project-context.md" - -default_output_file: "{story_dir}/{{story_key}}.md" - -# Smart input file references - Simplified for enhanced approach -# The epics+stories file should contain everything needed with source hints -input_file_patterns: - prd: - description: "PRD (fallback - epics file should have most content)" - whole: "{planning_artifacts}/*prd*.md" - sharded: "{planning_artifacts}/*prd*/*.md" - load_strategy: "SELECTIVE_LOAD" # Only load if needed - architecture: - description: "Architecture (fallback - epics file should have relevant sections)" - whole: "{planning_artifacts}/*architecture*.md" - sharded: "{planning_artifacts}/*architecture*/*.md" - load_strategy: "SELECTIVE_LOAD" # Only load if needed - ux: - description: "UX design (fallback - epics file should have relevant sections)" - whole: "{planning_artifacts}/*ux*.md" - sharded: "{planning_artifacts}/*ux*/*.md" - load_strategy: "SELECTIVE_LOAD" # Only load if needed - epics: - description: "Enhanced epics+stories file with BDD and source hints" - whole: "{planning_artifacts}/*epic*.md" - sharded: "{planning_artifacts}/*epic*/*.md" - load_strategy: "SELECTIVE_LOAD" # Only load needed epic diff --git a/src/bmm/workflows/4-implementation/dev-story/instructions.xml b/src/bmm/workflows/4-implementation/dev-story/instructions.xml index 6150944f1..fda61b589 100644 --- a/src/bmm/workflows/4-implementation/dev-story/instructions.xml +++ b/src/bmm/workflows/4-implementation/dev-story/instructions.xml @@ -1,6 +1,6 @@ - The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml - You MUST have already loaded and processed: {installed_path}/workflow.yaml + The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.md + You MUST have already loaded and processed: {installed_path}/workflow.md Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level} Generate all documents in {document_output_language} Only modify the story file in these areas: Tasks/Subtasks checkboxes, Dev Agent Record (Debug Log, Completion Notes), File List, diff --git a/src/bmm/workflows/4-implementation/dev-story/workflow.md b/src/bmm/workflows/4-implementation/dev-story/workflow.md new file mode 100644 index 000000000..06443a43f --- /dev/null +++ b/src/bmm/workflows/4-implementation/dev-story/workflow.md @@ -0,0 +1,33 @@ +--- +name: dev-story +description: "Execute a story by implementing tasks/subtasks, writing tests, validating, and updating the story file per acceptance criteria" +main_config: '{project-root}/_bmad/bmm/config.yaml' +web_bundle: false +--- + +## Initialization +- Load config from `{project-root}/_bmad/bmm/config.yaml`. +- Resolve variables: + - `user_name` + - `communication_language` + - `document_output_language` + - `user_skill_level` + - `implementation_artifacts` + - `story_dir` = `{implementation_artifacts}` + - `sprint_status` = `{implementation_artifacts}/sprint-status.yaml` + - `story_file` (if provided) + - `project_context` = `**/project-context.md` + - `date` (system-generated) + - `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/dev-story` + + + Communicate all responses in {communication_language} and generate all documents in {document_output_language} + + + Read and follow instructions at: {installed_path}/instructions.xml + + + + Validate against checklist at {installed_path}/checklist.md using _bmad/core/tasks/validate-workflow.md + + diff --git a/src/bmm/workflows/4-implementation/dev-story/workflow.yaml b/src/bmm/workflows/4-implementation/dev-story/workflow.yaml deleted file mode 100644 index daf152b71..000000000 --- a/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: dev-story -description: "Execute a story by implementing tasks/subtasks, writing tests, validating, and updating the story file per acceptance criteria" -author: "BMad" - -# Critical variables from config -config_source: "{project-root}/_bmad/bmm/config.yaml" -output_folder: "{config_source}:output_folder" -user_name: "{config_source}:user_name" -communication_language: "{config_source}:communication_language" -user_skill_level: "{config_source}:user_skill_level" -document_output_language: "{config_source}:document_output_language" -story_dir: "{config_source}:implementation_artifacts" -date: system-generated - -# Workflow components -installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/dev-story" -instructions: "{installed_path}/instructions.xml" -validation: "{installed_path}/checklist.md" - -story_file: "" # Explicit story path; auto-discovered if empty -implementation_artifacts: "{config_source}:implementation_artifacts" -sprint_status: "{implementation_artifacts}/sprint-status.yaml" -project_context: "**/project-context.md" diff --git a/src/bmm/workflows/4-implementation/retrospective/instructions.md b/src/bmm/workflows/4-implementation/retrospective/instructions.md index 017503129..bb3407d42 100644 --- a/src/bmm/workflows/4-implementation/retrospective/instructions.md +++ b/src/bmm/workflows/4-implementation/retrospective/instructions.md @@ -1,7 +1,7 @@ # Retrospective - Epic Completion Review Instructions -The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml -You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.md +You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/retrospective/workflow.md Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level} Generate all documents in {document_output_language} ⚠️ 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. diff --git a/src/bmm/workflows/4-implementation/retrospective/workflow.md b/src/bmm/workflows/4-implementation/retrospective/workflow.md new file mode 100644 index 000000000..4c66c8c38 --- /dev/null +++ b/src/bmm/workflows/4-implementation/retrospective/workflow.md @@ -0,0 +1,29 @@ +--- +name: retrospective +description: "Run after epic completion to review overall success, extract lessons learned, and surface impact on upcoming work" +main_config: '{project-root}/_bmad/bmm/config.yaml' +web_bundle: false +--- + +## Initialization +- Load config from `{project-root}/_bmad/bmm/config.yaml`. +- Resolve variables: + - `user_name` + - `communication_language` + - `document_output_language` + - `user_skill_level` + - `planning_artifacts` + - `implementation_artifacts` + - `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml` + - `story_directory` = `{implementation_artifacts}` + - `retrospectives_folder` = `{implementation_artifacts}` + - `date` (system-generated) + - `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/retrospective` + + + Communicate all responses in {communication_language} and generate all documents in {document_output_language} + + + Read and follow instructions at: {installed_path}/instructions.md + + diff --git a/src/bmm/workflows/4-implementation/retrospective/workflow.yaml b/src/bmm/workflows/4-implementation/retrospective/workflow.yaml deleted file mode 100644 index b92ecaf1b..000000000 --- a/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +++ /dev/null @@ -1,55 +0,0 @@ -# Retrospective - Epic Completion Review Workflow -name: "retrospective" -description: "Run after epic completion to review overall success, extract lessons learned, and explore if new information emerged that might impact the next epic" -author: "BMad" - -config_source: "{project-root}/_bmad/bmm/config.yaml" -output_folder: "{config_source}:implementation_artifacts}" -user_name: "{config_source}:user_name" -communication_language: "{config_source}:communication_language" -user_skill_level: "{config_source}:user_skill_level" -document_output_language: "{config_source}:document_output_language" -date: system-generated -planning_artifacts: "{config_source}:planning_artifacts" -implementation_artifacts: "{config_source}:implementation_artifacts" - -installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/retrospective" -template: false -instructions: "{installed_path}/instructions.md" - -required_inputs: - - agent_manifest: "{project-root}/_bmad/_config/agent-manifest.csv" - -# Smart input file references - handles both whole docs and sharded docs -# Priority: Whole document first, then sharded version -# Strategy: SELECTIVE LOAD - only load the completed epic and relevant retrospectives -input_file_patterns: - epics: - description: "The completed epic for retrospective" - whole: "{planning_artifacts}/*epic*.md" - sharded_index: "{planning_artifacts}/*epic*/index.md" - sharded_single: "{planning_artifacts}/*epic*/epic-{{epic_num}}.md" - load_strategy: "SELECTIVE_LOAD" - previous_retrospective: - description: "Previous epic's retrospective (optional)" - pattern: "{implementation_artifacts}/**/epic-{{prev_epic_num}}-retro-*.md" - load_strategy: "SELECTIVE_LOAD" - architecture: - description: "System architecture for context" - whole: "{planning_artifacts}/*architecture*.md" - sharded: "{planning_artifacts}/*architecture*/*.md" - load_strategy: "FULL_LOAD" - prd: - description: "Product requirements for context" - whole: "{planning_artifacts}/*prd*.md" - sharded: "{planning_artifacts}/*prd*/*.md" - load_strategy: "FULL_LOAD" - document_project: - description: "Brownfield project documentation (optional)" - sharded: "{planning_artifacts}/*.md" - load_strategy: "INDEX_GUIDED" - -# Required files -sprint_status_file: "{implementation_artifacts}/sprint-status.yaml" -story_directory: "{implementation_artifacts}" -retrospectives_folder: "{implementation_artifacts}" diff --git a/src/bmm/workflows/4-implementation/sprint-planning/instructions.md b/src/bmm/workflows/4-implementation/sprint-planning/instructions.md index c4f4bd420..88f3eafe0 100644 --- a/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +++ b/src/bmm/workflows/4-implementation/sprint-planning/instructions.md @@ -1,7 +1,7 @@ # Sprint Planning - Sprint Status Generator -The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml -You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.md +You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.md ## 📚 Document Discovery - Full Epic Loading diff --git a/src/bmm/workflows/4-implementation/sprint-planning/workflow.md b/src/bmm/workflows/4-implementation/sprint-planning/workflow.md new file mode 100644 index 000000000..ee0b86b3e --- /dev/null +++ b/src/bmm/workflows/4-implementation/sprint-planning/workflow.md @@ -0,0 +1,31 @@ +--- +name: sprint-planning +description: "Generate and manage the sprint status tracking file for Phase 4 implementation, extracting all epics and stories from epic files and tracking their status through the development lifecycle" +main_config: '{project-root}/_bmad/bmm/config.yaml' +web_bundle: false +--- + +## Initialization +- Load config from `{project-root}/_bmad/bmm/config.yaml`. +- Resolve variables: + - `user_name` + - `communication_language` + - `implementation_artifacts` + - `planning_artifacts` + - `project_name` + - `date` (system-generated) + - `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/sprint-planning` + - `status_file` = `{implementation_artifacts}/sprint-status.yaml` + - `default_output_file` = `{status_file}` + + + Communicate all responses in {communication_language} + + + Read and follow instructions at: {installed_path}/instructions.md + + + + Validate against checklist at {installed_path}/checklist.md using _bmad/core/tasks/validate-workflow.md + + diff --git a/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml b/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml deleted file mode 100644 index 7b157633c..000000000 --- a/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +++ /dev/null @@ -1,51 +0,0 @@ -name: sprint-planning -description: "Generate and manage the sprint status tracking file for Phase 4 implementation, extracting all epics and stories from epic files and tracking their status through the development lifecycle" -author: "BMad" - -# Critical variables from config -config_source: "{project-root}/_bmad/bmm/config.yaml" -user_name: "{config_source}:user_name" -communication_language: "{config_source}:communication_language" -date: system-generated -implementation_artifacts: "{config_source}:implementation_artifacts" -planning_artifacts: "{config_source}:planning_artifacts" -output_folder: "{implementation_artifacts}" - -# Workflow components -installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/sprint-planning" -instructions: "{installed_path}/instructions.md" -template: "{installed_path}/sprint-status-template.yaml" -validation: "{installed_path}/checklist.md" - -# Variables and inputs -variables: - # Project context - project_context: "**/project-context.md" - # Project identification - project_name: "{config_source}:project_name" - - # Tracking system configuration - tracking_system: "file-system" # Options: file-system, Future will support other options from config of mcp such as jira, linear, trello - project_key: "NOKEY" # Placeholder for tracker integrations; file-system uses a no-op key - story_location: "{config_source}:implementation_artifacts" # Relative path for file-system, Future will support URL for Jira/Linear/Trello - story_location_absolute: "{config_source}:implementation_artifacts" # Absolute path for file operations - - # Source files (file-system only) - epics_location: "{planning_artifacts}" # Directory containing epic*.md files - epics_pattern: "epic*.md" # Pattern to find epic files - - # Output configuration - status_file: "{implementation_artifacts}/sprint-status.yaml" - -# Smart input file references - handles both whole docs and sharded docs -# Priority: Whole document first, then sharded version -# Strategy: FULL LOAD - sprint planning needs ALL epics to build complete status -input_file_patterns: - epics: - description: "All epics with user stories" - whole: "{output_folder}/*epic*.md" - sharded: "{output_folder}/*epic*/*.md" - load_strategy: "FULL_LOAD" - -# Output configuration -default_output_file: "{status_file}" diff --git a/src/bmm/workflows/4-implementation/sprint-status/instructions.md b/src/bmm/workflows/4-implementation/sprint-status/instructions.md index c058644a4..f1cee82bb 100644 --- a/src/bmm/workflows/4-implementation/sprint-status/instructions.md +++ b/src/bmm/workflows/4-implementation/sprint-status/instructions.md @@ -1,7 +1,7 @@ # Sprint Status - Multi-Mode Service -The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml -You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.md +You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.md Modes: interactive (default), validate, data ⚠️ ABSOLUTELY NO TIME ESTIMATES. Do NOT mention hours, days, weeks, or timelines. diff --git a/src/bmm/workflows/4-implementation/sprint-status/workflow.md b/src/bmm/workflows/4-implementation/sprint-status/workflow.md new file mode 100644 index 000000000..5baa8d646 --- /dev/null +++ b/src/bmm/workflows/4-implementation/sprint-status/workflow.md @@ -0,0 +1,26 @@ +--- +name: sprint-status +description: "Summarize sprint-status.yaml, surface risks, and route to the right implementation workflow" +main_config: '{project-root}/_bmad/bmm/config.yaml' +web_bundle: false +--- + +## Initialization +- Load config from `{project-root}/_bmad/bmm/config.yaml`. +- Resolve variables: + - `user_name` + - `communication_language` + - `document_output_language` + - `implementation_artifacts` + - `planning_artifacts` + - `date` (system-generated) + - `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml` + - `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/sprint-status` + + + Communicate all responses in {communication_language} and generate all documents in {document_output_language} + + + Read and follow instructions at: {installed_path}/instructions.md + + diff --git a/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml b/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml deleted file mode 100644 index 8946f0291..000000000 --- a/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Sprint Status - Implementation Tracker -name: sprint-status -description: "Summarize sprint-status.yaml, surface risks, and route to the right implementation workflow." -author: "BMad" - -# Critical variables from config -config_source: "{project-root}/_bmad/bmm/config.yaml" -output_folder: "{config_source}:output_folder" -user_name: "{config_source}:user_name" -communication_language: "{config_source}:communication_language" -document_output_language: "{config_source}:document_output_language" -date: system-generated -implementation_artifacts: "{config_source}:implementation_artifacts" -planning_artifacts: "{config_source}:planning_artifacts" - -# Workflow components -installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/sprint-status" -instructions: "{installed_path}/instructions.md" - -# Inputs -variables: - sprint_status_file: "{implementation_artifacts}/sprint-status.yaml" - tracking_system: "file-system" - -# Smart input file references -input_file_patterns: - sprint_status: - description: "Sprint status file generated by sprint-planning" - whole: "{implementation_artifacts}/sprint-status.yaml" - load_strategy: "FULL_LOAD" diff --git a/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md b/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md index 3fbeb13b1..151426e2b 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +++ b/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md @@ -41,7 +41,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: - `quick_spec_workflow` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/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.md` --- diff --git a/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md b/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md index 7c41b948d..3d92da893 100644 --- a/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +++ b/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md @@ -4,7 +4,7 @@ description: Conversational spec engineering - ask questions, investigate code, main_config: '{project-root}/_bmad/bmm/config.yaml' # Checkpoint handler paths -advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' party_mode_exec: '{project-root}/_bmad/core/workflows/party-mode/workflow.md' quick_dev_workflow: '{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md' --- diff --git a/src/bmm/workflows/document-project/instructions.md b/src/bmm/workflows/document-project/instructions.md index 2f567fa38..781fde439 100644 --- a/src/bmm/workflows/document-project/instructions.md +++ b/src/bmm/workflows/document-project/instructions.md @@ -1,7 +1,7 @@ # Document Project Workflow Router -The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml -You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/document-project/workflow.yaml +The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.md +You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/document-project/workflow.md Communicate all responses in {communication_language} diff --git a/src/bmm/workflows/document-project/workflow.md b/src/bmm/workflows/document-project/workflow.md new file mode 100644 index 000000000..b64275023 --- /dev/null +++ b/src/bmm/workflows/document-project/workflow.md @@ -0,0 +1,30 @@ +--- +name: document-project +description: "Analyzes and documents brownfield projects by scanning codebase, architecture, and patterns to create comprehensive reference documentation for AI-assisted development" +main_config: '{project-root}/_bmad/bmm/config.yaml' +web_bundle: false +--- + +## Initialization +- Load config from `{project-root}/_bmad/bmm/config.yaml`. +- Resolve variables: + - `user_name` + - `communication_language` + - `document_output_language` + - `user_skill_level` + - `project_knowledge` + - `date` (system-generated) + - `installed_path` = `{project-root}/_bmad/bmm/workflows/document-project` + - `documentation_requirements_csv` = `{installed_path}/documentation-requirements.csv` + + + Communicate all responses in {communication_language} and generate all documents in {document_output_language} + + + Read and follow instructions at: {installed_path}/instructions.md + + + + Validate against checklist at {installed_path}/checklist.md using _bmad/core/tasks/validate-workflow.md + + diff --git a/src/bmm/workflows/document-project/workflow.yaml b/src/bmm/workflows/document-project/workflow.yaml deleted file mode 100644 index 4667d7c0b..000000000 --- a/src/bmm/workflows/document-project/workflow.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Document Project Workflow Configuration -name: "document-project" -version: "1.2.0" -description: "Analyzes and documents brownfield projects by scanning codebase, architecture, and patterns to create comprehensive reference documentation for AI-assisted development" -author: "BMad" - -# Critical variables -config_source: "{project-root}/_bmad/bmm/config.yaml" -output_folder: "{config_source}:project_knowledge" -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 - -# Module path and component files -installed_path: "{project-root}/_bmad/bmm/workflows/document-project" -instructions: "{installed_path}/instructions.md" -validation: "{installed_path}/checklist.md" - -# Required data files - CRITICAL for project type detection and documentation requirements -documentation_requirements_csv: "{installed_path}/documentation-requirements.csv" diff --git a/src/bmm/workflows/document-project/workflows/deep-dive.yaml b/src/bmm/workflows/document-project/workflows/deep-dive.yaml index a333cc4bf..d91105112 100644 --- a/src/bmm/workflows/document-project/workflows/deep-dive.yaml +++ b/src/bmm/workflows/document-project/workflows/deep-dive.yaml @@ -3,8 +3,8 @@ name: "document-project-deep-dive" description: "Exhaustive deep-dive documentation of specific project areas" author: "BMad" -# This is a sub-workflow called by document-project/workflow.yaml -parent_workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.yaml" +# This is a sub-workflow called by document-project/workflow.md +parent_workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.md" # Critical variables inherited from parent config_source: "{project-root}/_bmad/bmb/config.yaml" diff --git a/src/bmm/workflows/document-project/workflows/full-scan.yaml b/src/bmm/workflows/document-project/workflows/full-scan.yaml index f62aba9b2..c131bb00d 100644 --- a/src/bmm/workflows/document-project/workflows/full-scan.yaml +++ b/src/bmm/workflows/document-project/workflows/full-scan.yaml @@ -3,8 +3,8 @@ name: "document-project-full-scan" description: "Complete project documentation workflow (initial scan or full rescan)" author: "BMad" -# This is a sub-workflow called by document-project/workflow.yaml -parent_workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.yaml" +# This is a sub-workflow called by document-project/workflow.md +parent_workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.md" # Critical variables inherited from parent config_source: "{project-root}/_bmad/bmb/config.yaml" diff --git a/src/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md b/src/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md deleted file mode 100644 index bf4d988c0..000000000 --- a/src/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +++ /dev/null @@ -1,128 +0,0 @@ -# Create Data Flow Diagram - Workflow Instructions - -```xml -This workflow creates data flow diagrams (DFD) in Excalidraw format. - - - - - Review user's request and extract: DFD level, processes, data stores, external entities - Skip to Step 4 - - - - Ask: "What level of DFD do you need?" - Present options: - 1. Context Diagram (Level 0) - Single process showing system boundaries - 2. Level 1 DFD - Major processes and data flows - 3. Level 2 DFD - Detailed sub-processes - 4. Custom - Specify your requirements - - WAIT for selection - - - - Ask: "Describe the processes, data stores, and external entities in your system" - WAIT for user description - Summarize what will be included and confirm with user - - - - Check for existing theme.json, ask to use if exists - - Ask: "Choose a DFD color scheme:" - Present numbered options: - 1. Standard DFD - - Process: #e3f2fd (light blue) - - Data Store: #e8f5e9 (light green) - - External Entity: #f3e5f5 (light purple) - - Border: #1976d2 (blue) - - 2. Colorful DFD - - Process: #fff9c4 (light yellow) - - Data Store: #c5e1a5 (light lime) - - External Entity: #ffccbc (light coral) - - Border: #f57c00 (orange) - - 3. Minimal DFD - - Process: #f5f5f5 (light gray) - - Data Store: #eeeeee (gray) - - External Entity: #e0e0e0 (medium gray) - - Border: #616161 (dark gray) - - 4. Custom - Define your own colors - - WAIT for selection - Create theme.json based on selection - - - - - List all processes with numbers (1.0, 2.0, etc.) - List all data stores (D1, D2, etc.) - List all external entities - Map all data flows with labels - Show planned structure, confirm with user - - - - Load {{templates}} and extract `dataflow` section - Load {{library}} - Load theme.json - Load {{helpers}} - - - - Follow standard DFD notation from {{helpers}} - - Build Order: - 1. External entities (rectangles, bold border) - 2. Processes (circles/ellipses with numbers) - 3. Data stores (parallel lines or rectangles) - 4. Data flows (labeled arrows) - - - DFD Rules: - - Processes: Numbered (1.0, 2.0), verb phrases - - Data stores: Named (D1, D2), noun phrases - - External entities: Named, noun phrases - - Data flows: Labeled with data names, arrows show direction - - No direct flow between external entities - - No direct flow between data stores - - - Layout: - - External entities at edges - - Processes in center - - Data stores between processes - - Minimize crossing flows - - Left-to-right or top-to-bottom flow - - - - - Verify DFD rules compliance - Strip unused elements and elements with isDeleted: true - Save to {{default_output_file}} - - - - NEVER delete the file if validation fails - always fix syntax errors - Run: node -e "JSON.parse(require('fs').readFileSync('{{default_output_file}}', 'utf8')); console.log('✓ Valid JSON')" - - Read the error message carefully - it shows the syntax error and position - Open the file and navigate to the error location - Fix the syntax error (add missing comma, bracket, or quote as indicated) - Save the file - Re-run validation with the same command - Repeat until validation passes - - Once validation passes, confirm with user - - - - Validate against {{validation}} - - - -``` diff --git a/src/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md b/src/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md deleted file mode 100644 index 1da0488f5..000000000 --- a/src/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +++ /dev/null @@ -1,139 +0,0 @@ -# Create Diagram - Workflow Instructions - -```xml -This workflow creates system architecture diagrams, ERDs, UML diagrams, or general technical diagrams in Excalidraw format. - - - - - Review user's request and extract: diagram type, components/entities, relationships, notation preferences - Skip to Step 5 - Only ask about missing info in Steps 1-2 - - - - Ask: "What type of technical diagram do you need?" - Present options: - 1. System Architecture - 2. Entity-Relationship Diagram (ERD) - 3. UML Class Diagram - 4. UML Sequence Diagram - 5. UML Use Case Diagram - 6. Network Diagram - 7. Other - - WAIT for selection - - - - Ask: "Describe the components/entities and their relationships" - Ask: "What notation standard? (Standard/Simplified/Strict UML-ERD)" - WAIT for user input - Summarize what will be included and confirm with user - - - - Check if theme.json exists at output location - Ask to use it, load if yes, else proceed to Step 4 - Proceed to Step 4 - - - - Ask: "Choose a color scheme for your diagram:" - Present numbered options: - 1. Professional - - Component: #e3f2fd (light blue) - - Database: #e8f5e9 (light green) - - Service: #fff3e0 (light orange) - - Border: #1976d2 (blue) - - 2. Colorful - - Component: #e1bee7 (light purple) - - Database: #c5e1a5 (light lime) - - Service: #ffccbc (light coral) - - Border: #7b1fa2 (purple) - - 3. Minimal - - Component: #f5f5f5 (light gray) - - Database: #eeeeee (gray) - - Service: #e0e0e0 (medium gray) - - Border: #616161 (dark gray) - - 4. Custom - Define your own colors - - WAIT for selection - Create theme.json based on selection - Show preview and confirm - - - - List all components/entities - Map all relationships - Show planned layout - Ask: "Structure looks correct? (yes/no)" - Adjust and repeat - - - - Load {{templates}} and extract `diagram` section - Load {{library}} - Load theme.json and merge with template - Load {{helpers}} for guidelines - - - - Follow {{helpers}} for proper element creation - - For Each Component: - - Generate unique IDs (component-id, text-id, group-id) - - Create shape with groupIds - - Calculate text width - - Create text with containerId and matching groupIds - - Add boundElements - - - For Each Connection: - - Determine arrow type (straight/elbow) - - Create with startBinding and endBinding - - Update boundElements on both components - - - Build Order by Type: - - Architecture: Services → Databases → Connections → Labels - - ERD: Entities → Attributes → Relationships → Cardinality - - UML Class: Classes → Attributes → Methods → Relationships - - UML Sequence: Actors → Lifelines → Messages → Returns - - UML Use Case: Actors → Use Cases → Relationships - - - Alignment: - - Snap to 20px grid - - Space: 40px between components, 60px between sections - - - - - Strip unused elements and elements with isDeleted: true - Save to {{default_output_file}} - - - - NEVER delete the file if validation fails - always fix syntax errors - Run: node -e "JSON.parse(require('fs').readFileSync('{{default_output_file}}', 'utf8')); console.log('✓ Valid JSON')" - - Read the error message carefully - it shows the syntax error and position - Open the file and navigate to the error location - Fix the syntax error (add missing comma, bracket, or quote as indicated) - Save the file - Re-run validation with the same command - Repeat until validation passes - - Once validation passes, confirm: "Diagram created at {{default_output_file}}. Open to view?" - - - - Validate against {{validation}} using {_bmad}/core/tasks/validate-workflow.md - - - -``` diff --git a/src/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md b/src/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md deleted file mode 100644 index 0a7b4ea1f..000000000 --- a/src/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +++ /dev/null @@ -1,239 +0,0 @@ -# Create Flowchart - Workflow Instructions - -```xml -This workflow creates a flowchart visualization in Excalidraw format for processes, pipelines, or logic flows. - - - - - Before asking any questions, analyze what the user has already told you - - Review the user's initial request and conversation history - Extract any mentioned: flowchart type, complexity, decision points, save location - - - Summarize your understanding - Skip directly to Step 4 (Plan Flowchart Layout) - - - - Note what you already know - Only ask about missing information in Step 1 - - - - Proceed with full elicitation in Step 1 - - - - - Ask Question 1: "What type of process flow do you need to visualize?" - Present numbered options: - 1. Business Process Flow - Document business workflows, approval processes, or operational procedures - 2. Algorithm/Logic Flow - Visualize code logic, decision trees, or computational processes - 3. User Journey Flow - Map user interactions, navigation paths, or experience flows - 4. Data Processing Pipeline - Show data transformation, ETL processes, or processing stages - 5. Other - Describe your specific flowchart needs - - WAIT for user selection (1-5) - - Ask Question 2: "How many main steps are in this flow?" - Present numbered options: - 1. Simple (3-5 steps) - Quick process with few decision points - 2. Medium (6-10 steps) - Standard workflow with some branching - 3. Complex (11-20 steps) - Detailed process with multiple decision points - 4. Very Complex (20+ steps) - Comprehensive workflow requiring careful layout - - WAIT for user selection (1-4) - Store selection in {{complexity}} - - Ask Question 3: "Does your flow include decision points (yes/no branches)?" - Present numbered options: - 1. No decisions - Linear flow from start to end - 2. Few decisions (1-2) - Simple branching with yes/no paths - 3. Multiple decisions (3-5) - Several conditional branches - 4. Complex decisions (6+) - Extensive branching logic - - WAIT for user selection (1-4) - Store selection in {{decision_points}} - - Ask Question 4: "Where should the flowchart be saved?" - Present numbered options: - 1. Default location - docs/flowcharts/[auto-generated-name].excalidraw - 2. Custom path - Specify your own file path - 3. Project root - Save in main project directory - 4. Specific folder - Choose from existing folders - - WAIT for user selection (1-4) - - Ask for specific path - WAIT for user input - - Store final path in {{default_output_file}} - - - - Check if theme.json exists at output location - - Ask: "Found existing theme. Use it? (yes/no)" - WAIT for user response - - Load and use existing theme - Skip to Step 4 - - - Proceed to Step 3 - - - - Proceed to Step 3 - - - - - Ask: "Let's create a theme for your flowchart. Choose a color scheme:" - Present numbered options: - 1. Professional Blue - - Primary Fill: #e3f2fd (light blue) - - Accent/Border: #1976d2 (blue) - - Decision: #fff3e0 (light orange) - - Text: #1e1e1e (dark gray) - - 2. Success Green - - Primary Fill: #e8f5e9 (light green) - - Accent/Border: #388e3c (green) - - Decision: #fff9c4 (light yellow) - - Text: #1e1e1e (dark gray) - - 3. Neutral Gray - - Primary Fill: #f5f5f5 (light gray) - - Accent/Border: #616161 (gray) - - Decision: #e0e0e0 (medium gray) - - Text: #1e1e1e (dark gray) - - 4. Warm Orange - - Primary Fill: #fff3e0 (light orange) - - Accent/Border: #f57c00 (orange) - - Decision: #ffe0b2 (peach) - - Text: #1e1e1e (dark gray) - - 5. Custom Colors - Define your own color palette - - WAIT for user selection (1-5) - Store selection in {{theme_choice}} - - - Ask: "Primary fill color (hex code)?" - WAIT for user input - Store in {{custom_colors.primary_fill}} - Ask: "Accent/border color (hex code)?" - WAIT for user input - Store in {{custom_colors.accent}} - Ask: "Decision color (hex code)?" - WAIT for user input - Store in {{custom_colors.decision}} - - - Create theme.json with selected colors - Show theme preview with all colors - Ask: "Theme looks good?" - Present numbered options: - 1. Yes, use this theme - Proceed with theme - 2. No, adjust colors - Modify color selections - 3. Start over - Choose different preset - - WAIT for selection (1-3) - - Repeat Step 3 - - - - - List all steps and decision points based on gathered requirements - Show user the planned structure - Ask: "Structure looks correct? (yes/no)" - WAIT for user response - - Adjust structure based on feedback - Repeat this step - - - - - Load {{templates}} file - Extract `flowchart` section from YAML - Load {{library}} file - Load theme.json and merge colors with template - Load {{helpers}} for element creation guidelines - - - - Follow guidelines from {{helpers}} for proper element creation - - Build ONE section at a time following these rules: - - For Each Shape with Label: - 1. Generate unique IDs (shape-id, text-id, group-id) - 2. Create shape with groupIds: [group-id] - 3. Calculate text width: (text.length × fontSize × 0.6) + 20, round to nearest 10 - 4. Create text element with: - - containerId: shape-id - - groupIds: [group-id] (SAME as shape) - - textAlign: "center" - - verticalAlign: "middle" - - width: calculated width - 5. Add boundElements to shape referencing text - - - For Each Arrow: - 1. Determine arrow type needed: - - Straight: For forward flow (left-to-right, top-to-bottom) - - Elbow: For upward flow, backward flow, or complex routing - 2. Create arrow with startBinding and endBinding - 3. Set startBinding.elementId to source shape ID - 4. Set endBinding.elementId to target shape ID - 5. Set gap: 10 for both bindings - 6. If elbow arrow, add intermediate points for direction changes - 7. Update boundElements on both connected shapes - - - Alignment: - - Snap all x, y to 20px grid - - Align shapes vertically (same x for vertical flow) - - Space elements: 60px between shapes - - - Build Order: - 1. Start point (circle) with label - 2. Each process step (rectangle) with label - 3. Each decision point (diamond) with label - 4. End point (circle) with label - 5. Connect all with bound arrows - - - - - Strip unused elements and elements with isDeleted: true - Save to {{default_output_file}} - - - - NEVER delete the file if validation fails - always fix syntax errors - Run: node -e "JSON.parse(require('fs').readFileSync('{{default_output_file}}', 'utf8')); console.log('✓ Valid JSON')" - - Read the error message carefully - it shows the syntax error and position - Open the file and navigate to the error location - Fix the syntax error (add missing comma, bracket, or quote as indicated) - Save the file - Re-run validation with the same command - Repeat until validation passes - - Once validation passes, confirm with user: "Flowchart created at {{default_output_file}}. Open to view?" - - - - Validate against checklist at {{validation}} using {_bmad}/core/tasks/validate-workflow.md - - - -``` diff --git a/src/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md b/src/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md deleted file mode 100644 index 566b85578..000000000 --- a/src/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +++ /dev/null @@ -1,131 +0,0 @@ -# Create Wireframe - Workflow Instructions - -```xml -This workflow creates website or app wireframes in Excalidraw format. - - - - - Review user's request and extract: wireframe type, fidelity level, screen count, device type, save location - Skip to Step 5 - - - - Ask: "What type of wireframe do you need?" - Present options: - 1. Website (Desktop) - 2. Mobile App (iOS/Android) - 3. Web App (Responsive) - 4. Tablet App - 5. Multi-platform - - WAIT for selection - - - - Ask fidelity level (Low/Medium/High) - Ask screen count (Single/Few 2-3/Multiple 4-6/Many 7+) - Ask device dimensions or use standard - Ask save location - - - - Check for existing theme.json, ask to use if exists - - - - Ask: "Choose a wireframe style:" - Present numbered options: - 1. Classic Wireframe - - Background: #ffffff (white) - - Container: #f5f5f5 (light gray) - - Border: #9e9e9e (gray) - - Text: #424242 (dark gray) - - 2. High Contrast - - Background: #ffffff (white) - - Container: #eeeeee (light gray) - - Border: #212121 (black) - - Text: #000000 (black) - - 3. Blueprint Style - - Background: #1a237e (dark blue) - - Container: #3949ab (blue) - - Border: #7986cb (light blue) - - Text: #ffffff (white) - - 4. Custom - Define your own colors - - WAIT for selection - Create theme.json based on selection - Confirm with user - - - - List all screens and their purposes - Map navigation flow between screens - Identify key UI elements for each screen - Show planned structure, confirm with user - - - - Load {{templates}} and extract `wireframe` section - Load {{library}} - Load theme.json - Load {{helpers}} - - - - Follow {{helpers}} for proper element creation - - For Each Screen: - - Create container/frame - - Add header section - - Add content areas - - Add navigation elements - - Add interactive elements (buttons, inputs) - - Add labels and annotations - - - Build Order: - 1. Screen containers - 2. Layout sections (header, content, footer) - 3. Navigation elements - 4. Content blocks - 5. Interactive elements - 6. Labels and annotations - 7. Flow indicators (if multi-screen) - - - Fidelity Guidelines: - - Low: Basic shapes, minimal detail, placeholder text - - Medium: More defined elements, some styling, representative content - - High: Detailed elements, realistic sizing, actual content examples - - - - - Strip unused elements and elements with isDeleted: true - Save to {{default_output_file}} - - - - NEVER delete the file if validation fails - always fix syntax errors - Run: node -e "JSON.parse(require('fs').readFileSync('{{default_output_file}}', 'utf8')); console.log('✓ Valid JSON')" - - Read the error message carefully - it shows the syntax error and position - Open the file and navigate to the error location - Fix the syntax error (add missing comma, bracket, or quote as indicated) - Save the file - Re-run validation with the same command - Repeat until validation passes - - Once validation passes, confirm with user - - - - Validate against {{validation}} - - - -``` diff --git a/src/bmm/workflows/qa/automate/workflow.md b/src/bmm/workflows/qa/automate/workflow.md index c62057523..cb52e0e49 100644 --- a/src/bmm/workflows/qa/automate/workflow.md +++ b/src/bmm/workflows/qa/automate/workflow.md @@ -26,7 +26,10 @@ web_bundle: false Read and follow instructions at: {installed_path}/instructions.md - Validate against checklist at: {installed_path}/checklist.md + + + + Validate against checklist at {installed_path}/checklist.md using _bmad/core/tasks/validate-workflow.md diff --git a/src/bmm/workflows/testarch/trace/checklist.md b/src/bmm/workflows/testarch/trace/checklist.md deleted file mode 100644 index 7b1267177..000000000 --- a/src/bmm/workflows/testarch/trace/checklist.md +++ /dev/null @@ -1,642 +0,0 @@ -# Requirements Traceability & Gate Decision - Validation Checklist - -**Workflow:** `testarch-trace` -**Purpose:** Ensure complete traceability matrix with actionable gap analysis AND make deployment readiness decision (PASS/CONCERNS/FAIL/WAIVED) - -This checklist covers **two sequential phases**: - -- **PHASE 1**: Requirements Traceability (always executed) -- **PHASE 2**: Quality Gate Decision (executed if `enable_gate_decision: true`) - ---- - -# PHASE 1: REQUIREMENTS TRACEABILITY - -## Prerequisites Validation - -- [ ] Acceptance criteria are available (from story file OR inline) -- [ ] Test suite exists (or gaps are acknowledged and documented) -- [ ] If tests are missing, recommend `*atdd` (trace does not run it automatically) -- [ ] Test directory path is correct (`test_dir` variable) -- [ ] Story file is accessible (if using BMad mode) -- [ ] Knowledge base is loaded (test-priorities, traceability, risk-governance) - ---- - -## Context Loading - -- [ ] Story file read successfully (if applicable) -- [ ] Acceptance criteria extracted correctly -- [ ] Story ID identified (e.g., 1.3) -- [ ] `test-design.md` loaded (if available) -- [ ] `tech-spec.md` loaded (if available) -- [ ] `PRD.md` loaded (if available) -- [ ] Relevant knowledge fragments loaded from `tea-index.csv` - ---- - -## Test Discovery and Cataloging - -- [ ] Tests auto-discovered using multiple strategies (test IDs, describe blocks, file paths) -- [ ] Tests categorized by level (E2E, API, Component, Unit) -- [ ] Test metadata extracted: - - [ ] Test IDs (e.g., 1.3-E2E-001) - - [ ] Describe/context blocks - - [ ] It blocks (individual test cases) - - [ ] Given-When-Then structure (if BDD) - - [ ] Priority markers (P0/P1/P2/P3) -- [ ] All relevant test files found (no tests missed due to naming conventions) - ---- - -## Criteria-to-Test Mapping - -- [ ] Each acceptance criterion mapped to tests (or marked as NONE) -- [ ] Explicit references found (test IDs, describe blocks mentioning criterion) -- [ ] Test level documented (E2E, API, Component, Unit) -- [ ] Given-When-Then narrative verified for alignment -- [ ] Traceability matrix table generated: - - [ ] Criterion ID - - [ ] Description - - [ ] Test ID - - [ ] Test File - - [ ] Test Level - - [ ] Coverage Status - ---- - -## Coverage Classification - -- [ ] Coverage status classified for each criterion: - - [ ] **FULL** - All scenarios validated at appropriate level(s) - - [ ] **PARTIAL** - Some coverage but missing edge cases or levels - - [ ] **NONE** - No test coverage at any level - - [ ] **UNIT-ONLY** - Only unit tests (missing integration/E2E validation) - - [ ] **INTEGRATION-ONLY** - Only API/Component tests (missing unit confidence) -- [ ] Classification justifications provided -- [ ] Edge cases considered in FULL vs PARTIAL determination - ---- - -## Duplicate Coverage Detection - -- [ ] Duplicate coverage checked across test levels -- [ ] Acceptable overlap identified (defense in depth for critical paths) -- [ ] Unacceptable duplication flagged (same validation at multiple levels) -- [ ] Recommendations provided for consolidation -- [ ] Selective testing principles applied - ---- - -## Gap Analysis - -- [ ] Coverage gaps identified: - - [ ] Criteria with NONE status - - [ ] Criteria with PARTIAL status - - [ ] Criteria with UNIT-ONLY status - - [ ] Criteria with INTEGRATION-ONLY status -- [ ] Gaps prioritized by risk level using test-priorities framework: - - [ ] **CRITICAL** - P0 criteria without FULL coverage (BLOCKER) - - [ ] **HIGH** - P1 criteria without FULL coverage (PR blocker) - - [ ] **MEDIUM** - P2 criteria without FULL coverage (nightly gap) - - [ ] **LOW** - P3 criteria without FULL coverage (acceptable) -- [ ] Specific test recommendations provided for each gap: - - [ ] Suggested test level (E2E, API, Component, Unit) - - [ ] Test description (Given-When-Then) - - [ ] Recommended test ID (e.g., 1.3-E2E-004) - - [ ] Explanation of why test is needed - ---- - -## Coverage Metrics - -- [ ] Overall coverage percentage calculated (FULL coverage / total criteria) -- [ ] P0 coverage percentage calculated -- [ ] P1 coverage percentage calculated -- [ ] P2 coverage percentage calculated (if applicable) -- [ ] Coverage by level calculated: - - [ ] E2E coverage % - - [ ] API coverage % - - [ ] Component coverage % - - [ ] Unit coverage % - ---- - -## Test Quality Verification - -For each mapped test, verify: - -- [ ] Explicit assertions are present (not hidden in helpers) -- [ ] Test follows Given-When-Then structure -- [ ] No hard waits or sleeps (deterministic waiting only) -- [ ] Self-cleaning (test cleans up its data) -- [ ] File size < 300 lines -- [ ] Test duration < 90 seconds - -Quality issues flagged: - -- [ ] **BLOCKER** issues identified (missing assertions, hard waits, flaky patterns) -- [ ] **WARNING** issues identified (large files, slow tests, unclear structure) -- [ ] **INFO** issues identified (style inconsistencies, missing documentation) - -Knowledge fragments referenced: - -- [ ] `test-quality.md` for Definition of Done -- [ ] `fixture-architecture.md` for self-cleaning patterns -- [ ] `network-first.md` for Playwright best practices -- [ ] `data-factories.md` for test data patterns - ---- - -## Phase 1 Deliverables Generated - -### Traceability Matrix Markdown - -- [ ] File created at `{output_folder}/traceability-matrix.md` -- [ ] Template from `trace-template.md` used -- [ ] Full mapping table included -- [ ] Coverage status section included -- [ ] Gap analysis section included -- [ ] Quality assessment section included -- [ ] Recommendations section included - -### Coverage Badge/Metric (if enabled) - -- [ ] Badge markdown generated -- [ ] Metrics exported to JSON for CI/CD integration - -### Updated Story File (if enabled) - -- [ ] "Traceability" section added to story markdown -- [ ] Link to traceability matrix included -- [ ] Coverage summary included - ---- - -## Phase 1 Quality Assurance - -### Accuracy Checks - -- [ ] All acceptance criteria accounted for (none skipped) -- [ ] Test IDs correctly formatted (e.g., 1.3-E2E-001) -- [ ] File paths are correct and accessible -- [ ] Coverage percentages calculated correctly -- [ ] No false positives (tests incorrectly mapped to criteria) -- [ ] No false negatives (existing tests missed in mapping) - -### Completeness Checks - -- [ ] All test levels considered (E2E, API, Component, Unit) -- [ ] All priorities considered (P0, P1, P2, P3) -- [ ] All coverage statuses used appropriately (FULL, PARTIAL, NONE, UNIT-ONLY, INTEGRATION-ONLY) -- [ ] All gaps have recommendations -- [ ] All quality issues have severity and remediation guidance - -### Actionability Checks - -- [ ] Recommendations are specific (not generic) -- [ ] Test IDs suggested for new tests -- [ ] Given-When-Then provided for recommended tests -- [ ] Impact explained for each gap -- [ ] Priorities clear (CRITICAL, HIGH, MEDIUM, LOW) - ---- - -## Phase 1 Documentation - -- [ ] Traceability matrix is readable and well-formatted -- [ ] Tables render correctly in markdown -- [ ] Code blocks have proper syntax highlighting -- [ ] Links are valid and accessible -- [ ] Recommendations are clear and prioritized - ---- - -# PHASE 2: QUALITY GATE DECISION - -**Note**: Phase 2 executes only if `enable_gate_decision: true` in workflow.md - ---- - -## Prerequisites - -### Evidence Gathering - -- [ ] Test execution results obtained (CI/CD pipeline, test framework reports) -- [ ] Story/epic/release file identified and read -- [ ] Test design document discovered or explicitly provided (if available) -- [ ] Traceability matrix discovered or explicitly provided (available from Phase 1) -- [ ] NFR assessment discovered or explicitly provided (if available) -- [ ] Code coverage report discovered or explicitly provided (if available) -- [ ] Burn-in results discovered or explicitly provided (if available) - -### Evidence Validation - -- [ ] Evidence freshness validated (warn if >7 days old, recommend re-running workflows) -- [ ] All required assessments available or user acknowledged gaps -- [ ] Test results are complete (not partial or interrupted runs) -- [ ] Test results match current codebase (not from outdated branch) - -### Knowledge Base Loading - -- [ ] `risk-governance.md` loaded successfully -- [ ] `probability-impact.md` loaded successfully -- [ ] `test-quality.md` loaded successfully -- [ ] `test-priorities.md` loaded successfully -- [ ] `ci-burn-in.md` loaded (if burn-in results available) - ---- - -## Process Steps - -### Step 1: Context Loading - -- [ ] Gate type identified (story/epic/release/hotfix) -- [ ] Target ID extracted (story_id, epic_num, or release_version) -- [ ] Decision thresholds loaded from workflow variables -- [ ] Risk tolerance configuration loaded -- [ ] Waiver policy loaded - -### Step 2: Evidence Parsing - -**Test Results:** - -- [ ] Total test count extracted -- [ ] Passed test count extracted -- [ ] Failed test count extracted -- [ ] Skipped test count extracted -- [ ] Test duration extracted -- [ ] P0 test pass rate calculated -- [ ] P1 test pass rate calculated -- [ ] Overall test pass rate calculated - -**Quality Assessments:** - -- [ ] P0/P1/P2/P3 scenarios extracted from test-design.md (if available) -- [ ] Risk scores extracted from test-design.md (if available) -- [ ] Coverage percentages extracted from traceability-matrix.md (available from Phase 1) -- [ ] Coverage gaps extracted from traceability-matrix.md (available from Phase 1) -- [ ] NFR status extracted from nfr-assessment.md (if available) -- [ ] Security issues count extracted from nfr-assessment.md (if available) - -**Code Coverage:** - -- [ ] Line coverage percentage extracted (if available) -- [ ] Branch coverage percentage extracted (if available) -- [ ] Function coverage percentage extracted (if available) -- [ ] Critical path coverage validated (if available) - -**Burn-in Results:** - -- [ ] Burn-in iterations count extracted (if available) -- [ ] Flaky tests count extracted (if available) -- [ ] Stability score calculated (if available) - -### Step 3: Decision Rules Application - -**P0 Criteria Evaluation:** - -- [ ] P0 test pass rate evaluated (must be 100%) -- [ ] P0 acceptance criteria coverage evaluated (must be 100%) -- [ ] Security issues count evaluated (must be 0) -- [ ] Critical NFR failures evaluated (must be 0) -- [ ] Flaky tests evaluated (must be 0 if burn-in enabled) -- [ ] P0 decision recorded: PASS or FAIL - -**P1 Criteria Evaluation:** - -- [ ] P1 test pass rate evaluated (threshold: min_p1_pass_rate) -- [ ] P1 acceptance criteria coverage evaluated (threshold: 95%) -- [ ] Overall test pass rate evaluated (threshold: min_overall_pass_rate) -- [ ] Code coverage evaluated (threshold: min_coverage) -- [ ] P1 decision recorded: PASS or CONCERNS - -**P2/P3 Criteria Evaluation:** - -- [ ] P2 failures tracked (informational, don't block if allow_p2_failures: true) -- [ ] P3 failures tracked (informational, don't block if allow_p3_failures: true) -- [ ] Residual risks documented - -**Final Decision:** - -- [ ] Decision determined: PASS / CONCERNS / FAIL / WAIVED -- [ ] Decision rationale documented -- [ ] Decision is deterministic (follows rules, not arbitrary) - -### Step 4: Documentation - -**Gate Decision Document Created:** - -- [ ] Story/epic/release info section complete (ID, title, description, links) -- [ ] Decision clearly stated (PASS / CONCERNS / FAIL / WAIVED) -- [ ] Decision date recorded -- [ ] Evaluator recorded (user or agent name) - -**Evidence Summary Documented:** - -- [ ] Test results summary complete (total, passed, failed, pass rates) -- [ ] Coverage summary complete (P0/P1 criteria, code coverage) -- [ ] NFR validation summary complete (security, performance, reliability, maintainability) -- [ ] Flakiness summary complete (burn-in iterations, flaky test count) - -**Rationale Documented:** - -- [ ] Decision rationale clearly explained -- [ ] Key evidence highlighted -- [ ] Assumptions and caveats noted (if any) - -**Residual Risks Documented (if CONCERNS or WAIVED):** - -- [ ] Unresolved P1/P2 issues listed -- [ ] Probability × impact estimated for each risk -- [ ] Mitigations or workarounds described - -**Waivers Documented (if WAIVED):** - -- [ ] Waiver reason documented (business justification) -- [ ] Waiver approver documented (name, role) -- [ ] Waiver expiry date documented -- [ ] Remediation plan documented (fix in next release, due date) -- [ ] Monitoring plan documented - -**Critical Issues Documented (if FAIL or CONCERNS):** - -- [ ] Top 5-10 critical issues listed -- [ ] Priority assigned to each issue (P0/P1/P2) -- [ ] Owner assigned to each issue -- [ ] Due date assigned to each issue - -**Recommendations Documented:** - -- [ ] Next steps clearly stated for decision type -- [ ] Deployment recommendation provided -- [ ] Monitoring recommendations provided (if applicable) -- [ ] Remediation recommendations provided (if applicable) - -### Step 5: Status Updates and Notifications - -**Gate YAML Created:** - -- [ ] Gate YAML snippet generated with decision and criteria -- [ ] Evidence references included in YAML -- [ ] Next steps included in YAML -- [ ] YAML file saved to output folder - -**Stakeholder Notification Generated:** - -- [ ] Notification subject line created -- [ ] Notification body created with summary -- [ ] Recipients identified (PM, SM, DEV lead, stakeholders) -- [ ] Notification ready for delivery (if notify_stakeholders: true) - -**Outputs Saved:** - -- [ ] Gate decision document saved to `{output_file}` -- [ ] Gate YAML saved to `{output_folder}/gate-decision-{target}.yaml` -- [ ] All outputs are valid and readable - ---- - -## Phase 2 Output Validation - -### Gate Decision Document - -**Completeness:** - -- [ ] All required sections present (info, decision, evidence, rationale, next steps) -- [ ] No placeholder text or TODOs left in document -- [ ] All evidence references are accurate and complete -- [ ] All links to artifacts are valid - -**Accuracy:** - -- [ ] Decision matches applied criteria rules -- [ ] Test results match CI/CD pipeline output -- [ ] Coverage percentages match reports -- [ ] NFR status matches assessment document -- [ ] No contradictions or inconsistencies - -**Clarity:** - -- [ ] Decision rationale is clear and unambiguous -- [ ] Technical jargon is explained or avoided -- [ ] Stakeholders can understand next steps -- [ ] Recommendations are actionable - -### Gate YAML - -**Format:** - -- [ ] YAML is valid (no syntax errors) -- [ ] All required fields present (target, decision, date, evaluator, criteria, evidence) -- [ ] Field values are correct data types (numbers, strings, dates) - -**Content:** - -- [ ] Criteria values match decision document -- [ ] Evidence references are accurate -- [ ] Next steps align with decision type - ---- - -## Phase 2 Quality Checks - -### Decision Integrity - -- [ ] Decision is deterministic (follows rules, not arbitrary) -- [ ] P0 failures result in FAIL decision (unless waived) -- [ ] Security issues result in FAIL decision (unless waived - but should never be waived) -- [ ] Waivers have business justification and approver (if WAIVED) -- [ ] Residual risks are documented (if CONCERNS or WAIVED) - -### Evidence-Based - -- [ ] Decision is based on actual test results (not guesses) -- [ ] All claims are supported by evidence -- [ ] No assumptions without documentation -- [ ] Evidence sources are cited (CI run IDs, report URLs) - -### Transparency - -- [ ] Decision rationale is transparent and auditable -- [ ] Criteria evaluation is documented step-by-step -- [ ] Any deviations from standard process are explained -- [ ] Waiver justifications are clear (if applicable) - -### Consistency - -- [ ] Decision aligns with risk-governance knowledge fragment -- [ ] Priority framework (P0/P1/P2/P3) applied consistently -- [ ] Terminology consistent with test-quality knowledge fragment -- [ ] Decision matrix followed correctly - ---- - -## Phase 2 Integration Points - -### CI/CD Pipeline - -- [ ] Gate YAML is CI/CD-compatible -- [ ] YAML can be parsed by pipeline automation -- [ ] Decision can be used to block/allow deployments -- [ ] Evidence references are accessible to pipeline - -### Stakeholders - -- [ ] Notification message is clear and actionable -- [ ] Decision is explained in non-technical terms -- [ ] Next steps are specific and time-bound -- [ ] Recipients are appropriate for decision type - ---- - -## Phase 2 Compliance and Audit - -### Audit Trail - -- [ ] Decision date and time recorded -- [ ] Evaluator identified (user or agent) -- [ ] All evidence sources cited -- [ ] Decision criteria documented -- [ ] Rationale clearly explained - -### Traceability - -- [ ] Gate decision traceable to story/epic/release -- [ ] Evidence traceable to specific test runs -- [ ] Assessments traceable to workflows that created them -- [ ] Waiver traceable to approver (if applicable) - -### Compliance - -- [ ] Security requirements validated (no unresolved vulnerabilities) -- [ ] Quality standards met or waived with justification -- [ ] Regulatory requirements addressed (if applicable) -- [ ] Documentation sufficient for external audit - ---- - -## Phase 2 Edge Cases and Exceptions - -### Missing Evidence - -- [ ] If test-design.md missing, decision still possible with test results + trace -- [ ] If traceability-matrix.md missing, decision still possible with test results (but Phase 1 should provide it) -- [ ] If nfr-assessment.md missing, NFR validation marked as NOT ASSESSED -- [ ] If code coverage missing, coverage criterion marked as NOT ASSESSED -- [ ] User acknowledged gaps in evidence or provided alternative proof - -### Stale Evidence - -- [ ] Evidence freshness checked (if validate_evidence_freshness: true) -- [ ] Warnings issued for assessments >7 days old -- [ ] User acknowledged stale evidence or re-ran workflows -- [ ] Decision document notes any stale evidence used - -### Conflicting Evidence - -- [ ] Conflicts between test results and assessments resolved -- [ ] Most recent/authoritative source identified -- [ ] Conflict resolution documented in decision rationale -- [ ] User consulted if conflict cannot be resolved - -### Waiver Scenarios - -- [ ] Waiver only used for FAIL decision (not PASS or CONCERNS) -- [ ] Waiver has business justification (not technical convenience) -- [ ] Waiver has named approver with authority (VP/CTO/PO) -- [ ] Waiver has expiry date (does NOT apply to future releases) -- [ ] Waiver has remediation plan with concrete due date -- [ ] Security vulnerabilities are NOT waived (enforced) - ---- - -# FINAL VALIDATION (Both Phases) - -## Non-Prescriptive Validation - -- [ ] Traceability format adapted to team needs (not rigid template) -- [ ] Examples are minimal and focused on patterns -- [ ] Teams can extend with custom classifications -- [ ] Integration with external systems supported (JIRA, Azure DevOps) -- [ ] Compliance requirements considered (if applicable) - ---- - -## Documentation and Communication - -- [ ] All documents are readable and well-formatted -- [ ] Tables render correctly in markdown -- [ ] Code blocks have proper syntax highlighting -- [ ] Links are valid and accessible -- [ ] Recommendations are clear and prioritized -- [ ] Gate decision is prominent and unambiguous (Phase 2) - ---- - -## Final Validation - -**Phase 1 (Traceability):** - -- [ ] All prerequisites met -- [ ] All acceptance criteria mapped or gaps documented -- [ ] P0 coverage is 100% OR documented as BLOCKER -- [ ] Gap analysis is complete and prioritized -- [ ] Test quality issues identified and flagged -- [ ] Deliverables generated and saved - -**Phase 2 (Gate Decision):** - -- [ ] All quality evidence gathered -- [ ] Decision criteria applied correctly -- [ ] Decision rationale documented -- [ ] Gate YAML ready for CI/CD integration -- [ ] Status file updated (if enabled) -- [ ] Stakeholders notified (if enabled) - -**Workflow Complete:** - -- [ ] Phase 1 completed successfully -- [ ] Phase 2 completed successfully (if enabled) -- [ ] All outputs validated and saved -- [ ] Ready to proceed based on gate decision - ---- - -## Sign-Off - -**Phase 1 - Traceability Status:** - -- [ ] ✅ PASS - All quality gates met, no critical gaps -- [ ] ⚠️ WARN - P1 gaps exist, address before PR merge -- [ ] ❌ FAIL - P0 gaps exist, BLOCKER for release - -**Phase 2 - Gate Decision Status (if enabled):** - -- [ ] ✅ PASS - Deploy to production -- [ ] ⚠️ CONCERNS - Deploy with monitoring -- [ ] ❌ FAIL - Block deployment, fix issues -- [ ] 🔓 WAIVED - Deploy with business approval and remediation plan - -**Next Actions:** - -- If PASS (both phases): Proceed to deployment -- If WARN/CONCERNS: Address gaps/issues, proceed with monitoring -- If FAIL (either phase): Run `*atdd` for missing tests, fix issues, re-run `*trace` -- If WAIVED: Deploy with approved waiver, schedule remediation - ---- - -## Notes - -Record any issues, deviations, or important observations during workflow execution: - -- **Phase 1 Issues**: [Note any traceability mapping challenges, missing tests, quality concerns] -- **Phase 2 Issues**: [Note any missing, stale, or conflicting evidence] -- **Decision Rationale**: [Document any nuanced reasoning or edge cases] -- **Waiver Details**: [Document waiver negotiations or approvals] -- **Follow-up Actions**: [List any actions required after gate decision] - ---- - - diff --git a/src/bmm/workflows/testarch/trace/instructions.md b/src/bmm/workflows/testarch/trace/instructions.md deleted file mode 100644 index 3cf4bd5be..000000000 --- a/src/bmm/workflows/testarch/trace/instructions.md +++ /dev/null @@ -1,1030 +0,0 @@ -# Test Architect Workflow: Requirements Traceability & Quality Gate Decision - -**Workflow:** `testarch-trace` -**Purpose:** Generate requirements-to-tests traceability matrix, analyze coverage gaps, and make quality gate decisions (PASS/CONCERNS/FAIL/WAIVED) -**Agent:** Test Architect (TEA) -**Format:** Pure Markdown v4.0 (no XML blocks) - ---- - -## Overview - -This workflow operates in two sequential phases to validate test coverage and deployment readiness: - -**PHASE 1 - REQUIREMENTS TRACEABILITY:** Create comprehensive traceability matrix mapping acceptance criteria to implemented tests, identify coverage gaps, and provide actionable recommendations. - -**PHASE 2 - QUALITY GATE DECISION:** Use traceability results combined with test execution evidence to make gate decisions (PASS/CONCERNS/FAIL/WAIVED) that determine deployment readiness. - -**Key Capabilities:** - -- Map acceptance criteria to specific test cases across all levels (E2E, API, Component, Unit) -- Classify coverage status (FULL, PARTIAL, NONE, UNIT-ONLY, INTEGRATION-ONLY) -- Prioritize gaps by risk level (P0/P1/P2/P3) using test-priorities framework -- Apply deterministic decision rules based on coverage and test execution results -- Generate gate decisions with evidence and rationale -- Support waivers for business-approved exceptions -- Update workflow status and notify stakeholders - ---- - -## Prerequisites - -**Required (Phase 1):** - -- Acceptance criteria (from story file OR provided inline) -- Implemented test suite (or acknowledge gaps to be addressed) - -**Required (Phase 2 - if `enable_gate_decision: true`):** - -- Test execution results (CI/CD test reports, pass/fail rates) -- Test design with risk priorities (P0/P1/P2/P3) - -**Recommended:** - -- `test-design.md` (for risk assessment and priority context) -- `nfr-assessment.md` (for release-level gates) -- `tech-spec.md` (for technical implementation context) -- Test framework configuration (playwright.config.ts, jest.config.js, etc.) - -**Halt Conditions:** - -- If story lacks any implemented tests AND no gaps are acknowledged, recommend running `*atdd` workflow first -- If acceptance criteria are completely missing, halt and request them -- If Phase 2 enabled but test execution results missing, warn and skip gate decision - -Note: `*trace` never runs `*atdd` automatically; it only recommends running it when tests are missing. - ---- - -## PHASE 1: REQUIREMENTS TRACEABILITY - -This phase focuses on mapping requirements to tests, analyzing coverage, and identifying gaps. - ---- - -### Step 1: Load Context and Knowledge Base - -**Actions:** - -1. Load relevant knowledge fragments from `{project-root}/_bmad/bmm/testarch/tea-index.csv`: - - `test-priorities-matrix.md` - P0/P1/P2/P3 risk framework with automated priority calculation, risk-based mapping, tagging strategy (389 lines, 2 examples) - - `risk-governance.md` - Risk-based testing approach: 6 categories (TECH, SEC, PERF, DATA, BUS, OPS), automated scoring, gate decision engine, coverage traceability (625 lines, 4 examples) - - `probability-impact.md` - Risk scoring methodology: probability × impact matrix, automated classification, dynamic re-assessment, gate integration (604 lines, 4 examples) - - `test-quality.md` - Definition of Done for tests: deterministic, isolated with cleanup, explicit assertions, length/time limits (658 lines, 5 examples) - - `selective-testing.md` - Duplicate coverage patterns: tag-based, spec filters, diff-based selection, promotion rules (727 lines, 4 examples) - -2. Read story file (if provided): - - Extract acceptance criteria - - Identify story ID (e.g., 1.3) - - Note any existing test design or priority information - -3. Read related BMad artifacts (if available): - - `test-design.md` - Risk assessment and test priorities - - `tech-spec.md` - Technical implementation details - - `PRD.md` - Product requirements context - -**Output:** Complete understanding of requirements, priorities, and existing context - ---- - -### Step 2: Discover and Catalog Tests - -**Actions:** - -1. Auto-discover test files related to the story: - - Search for test IDs (e.g., `1.3-E2E-001`, `1.3-UNIT-005`) - - Search for describe blocks mentioning feature name - - Search for file paths matching feature directory - - Use `glob` to find test files in `{test_dir}` - -2. Categorize tests by level: - - **E2E Tests**: Full user journeys through UI - - **API Tests**: HTTP contract and integration tests - - **Component Tests**: UI component behavior in isolation - - **Unit Tests**: Business logic and pure functions - -3. Extract test metadata: - - Test ID (if present) - - Describe/context blocks - - It blocks (individual test cases) - - Given-When-Then structure (if BDD) - - Assertions used - - Priority markers (P0/P1/P2/P3) - -**Output:** Complete catalog of all tests for this feature - ---- - -### Step 3: Map Criteria to Tests - -**Actions:** - -1. For each acceptance criterion: - - Search for explicit references (test IDs, describe blocks mentioning criterion) - - Map to specific test files and it blocks - - Use Given-When-Then narrative to verify alignment - - Document test level (E2E, API, Component, Unit) - -2. Build traceability matrix: - - ``` - | Criterion ID | Description | Test ID | Test File | Test Level | Coverage Status | - | ------------ | ----------- | ----------- | ---------------- | ---------- | --------------- | - | AC-1 | User can... | 1.3-E2E-001 | e2e/auth.spec.ts | E2E | FULL | - ``` - -3. Classify coverage status for each criterion: - - **FULL**: All scenarios validated at appropriate level(s) - - **PARTIAL**: Some coverage but missing edge cases or levels - - **NONE**: No test coverage at any level - - **UNIT-ONLY**: Only unit tests (missing integration/E2E validation) - - **INTEGRATION-ONLY**: Only API/Component tests (missing unit confidence) - -4. Check for duplicate coverage: - - Same behavior tested at multiple levels unnecessarily - - Flag violations of selective testing principles - - Recommend consolidation where appropriate - -**Output:** Complete traceability matrix with coverage classifications - ---- - -### Step 4: Analyze Gaps and Prioritize - -**Actions:** - -1. Identify coverage gaps: - - List criteria with NONE, PARTIAL, UNIT-ONLY, or INTEGRATION-ONLY status - - Assign severity based on test-priorities framework: - - **CRITICAL**: P0 criteria without FULL coverage (blocks release) - - **HIGH**: P1 criteria without FULL coverage (PR blocker) - - **MEDIUM**: P2 criteria without FULL coverage (nightly test gap) - - **LOW**: P3 criteria without FULL coverage (acceptable gap) - -2. Recommend specific tests to add: - - Suggest test level (E2E, API, Component, Unit) - - Provide test description (Given-When-Then) - - Recommend test ID (e.g., `1.3-E2E-004`) - - Explain why this test is needed - -3. Calculate coverage metrics: - - Overall coverage percentage (criteria with FULL coverage / total criteria) - - P0 coverage percentage (critical paths) - - P1 coverage percentage (high priority) - - Coverage by level (E2E%, API%, Component%, Unit%) - -4. Check against quality gates: - - P0 coverage >= 100% (required) - - P1 coverage >= 90% (recommended) - - Overall coverage >= 80% (recommended) - -**Output:** Prioritized gap analysis with actionable recommendations and coverage metrics - ---- - -### Step 5: Verify Test Quality - -**Actions:** - -1. For each mapped test, verify: - - Explicit assertions are present (not hidden in helpers) - - Test follows Given-When-Then structure - - No hard waits or sleeps - - Self-cleaning (test cleans up its data) - - File size < 300 lines - - Test duration < 90 seconds - -2. Flag quality issues: - - **BLOCKER**: Missing assertions, hard waits, flaky patterns - - **WARNING**: Large files, slow tests, unclear structure - - **INFO**: Style inconsistencies, missing documentation - -3. Reference knowledge fragments: - - `test-quality.md` for Definition of Done - - `fixture-architecture.md` for self-cleaning patterns - - `network-first.md` for Playwright best practices - - `data-factories.md` for test data patterns - -**Output:** Quality assessment for each test with improvement recommendations - ---- - -### Step 6: Generate Deliverables (Phase 1) - -**Actions:** - -1. Create traceability matrix markdown file: - - Use template from `trace-template.md` - - Include full mapping table - - Add coverage status section - - Add gap analysis section - - Add quality assessment section - - Add recommendations section - - Save to `{output_folder}/traceability-matrix.md` - -2. Generate gate YAML snippet (if enabled): - - ```yaml - traceability: - story_id: '1.3' - coverage: - overall: 85% - p0: 100% - p1: 90% - p2: 75% - gaps: - critical: 0 - high: 1 - medium: 2 - status: 'PASS' # or "FAIL" if P0 < 100% - ``` - -3. Create coverage badge/metric (if enabled): - - Generate badge markdown: `![Coverage](https://img.shields.io/badge/coverage-85%25-green)` - - Export metrics to JSON for CI/CD integration - -4. Update story file (if enabled): - - Add "Traceability" section to story markdown - - Link to traceability matrix - - Include coverage summary - - Add gate status - -**Output:** Complete Phase 1 traceability deliverables - -**Next:** If `enable_gate_decision: true`, proceed to Phase 2. Otherwise, workflow complete. - ---- - -## PHASE 2: QUALITY GATE DECISION - -This phase uses traceability results to make a quality gate decision (PASS/CONCERNS/FAIL/WAIVED) based on evidence and decision rules. - -**When Phase 2 Runs:** Automatically after Phase 1 if `enable_gate_decision: true` (default: true) - -**Skip Conditions:** If test execution results (`test_results`) not provided, warn and skip Phase 2. - ---- - -### Step 7: Gather Quality Evidence - -**Actions:** - -1. **Load Phase 1 traceability results** (inherited context): - - Coverage metrics (P0/P1/overall percentages) - - Gap analysis (missing/partial tests) - - Quality concerns (test quality flags) - - Traceability matrix - -2. **Load test execution results** (if `test_results` provided): - - Read CI/CD test reports (JUnit XML, TAP, JSON) - - Extract pass/fail counts by priority - - Calculate pass rates: - - **P0 pass rate**: `(P0 passed / P0 total) * 100` - - **P1 pass rate**: `(P1 passed / P1 total) * 100` - - **Overall pass rate**: `(All passed / All total) * 100` - - Identify failing tests and map to criteria - -3. **Load NFR assessment** (if `nfr_file` provided): - - Read `nfr-assessment.md` or similar - - Check critical NFR status (performance, security, scalability) - - Flag any critical NFR failures - -4. **Load supporting artifacts**: - - `test-design.md` → Risk priorities, DoD checklist - - `story-*.md` or `Epics.md` → Requirements context - -5. **Validate evidence freshness** (if `validate_evidence_freshness: true`): - - Check timestamps of test-design, traceability, NFR assessments - - Warn if artifacts are >7 days old - -6. **Check prerequisite workflows** (if `check_all_workflows_complete: true`): - - Verify test-design workflow complete - - Verify trace workflow complete (Phase 1) - - Verify nfr-assess workflow complete (if release-level gate) - -**Output:** Consolidated evidence bundle with all quality signals - ---- - -### Step 8: Apply Decision Rules - -**If `decision_mode: "deterministic"`** (rule-based - default): - -**Decision rules** (based on `workflow.md` thresholds): - -1. **PASS** if ALL of the following are true: - - P0 coverage ≥ `min_p0_coverage` (default: 100%) - - P1 coverage ≥ `min_p1_coverage` (default: 90%) - - Overall coverage ≥ `min_overall_coverage` (default: 80%) - - P0 test pass rate = `min_p0_pass_rate` (default: 100%) - - P1 test pass rate ≥ `min_p1_pass_rate` (default: 95%) - - Overall test pass rate ≥ `min_overall_pass_rate` (default: 90%) - - Critical NFRs passed (if `nfr_file` provided) - - No unresolved security issues ≤ `max_security_issues` (default: 0) - - No test quality red flags (hard waits, no assertions) - -2. **CONCERNS** if ANY of the following are true: - - P1 coverage 80-89% (below threshold but not critical) - - P1 test pass rate 90-94% (below threshold but not critical) - - Overall pass rate 85-89% - - P2 coverage <50% (informational) - - Some non-critical NFRs failing - - Minor test quality concerns (large test files, inferred mappings) - - **Note**: CONCERNS does NOT block deployment but requires acknowledgment - -3. **FAIL** if ANY of the following are true: - - P0 coverage <100% (missing critical tests) - - P0 test pass rate <100% (failing critical tests) - - P1 coverage <80% (significant gap) - - P1 test pass rate <90% (significant failures) - - Overall coverage <80% - - Overall pass rate <85% - - Critical NFRs failing (`max_critical_nfrs_fail` exceeded) - - Unresolved security issues (`max_security_issues` exceeded) - - Major test quality issues (tests with no assertions, pervasive hard waits) - -4. **WAIVED** (only if `allow_waivers: true`): - - Decision would be FAIL based on rules above - - Business stakeholder has approved waiver - - Waiver documented with: - - Justification (time constraint, known limitation, acceptable risk) - - Approver name and date - - Mitigation plan (follow-up stories, manual testing) - - Waiver evidence linked (email, Slack thread, ticket) - -**Risk tolerance adjustments:** - -- If `allow_p2_failures: true` → P2 test failures do NOT affect gate decision -- If `allow_p3_failures: true` → P3 test failures do NOT affect gate decision -- If `escalate_p1_failures: true` → P1 failures require explicit manager/lead approval - -**If `decision_mode: "manual"`:** - -- Present evidence summary to team -- Recommend decision based on rules above -- Team makes final call in meeting/chat -- Document decision with approver names - -**Output:** Gate decision (PASS/CONCERNS/FAIL/WAIVED) with rule-based rationale - ---- - -### Step 9: Document Decision and Evidence - -**Actions:** - -1. **Create gate decision document**: - - Save to `gate_output_file` (default: `{output_folder}/gate-decision-{gate_type}-{story_id}.md`) - - Use structure below - -2. **Document structure**: - -```markdown -# Quality Gate Decision: {gate_type} {story_id/epic_num/release_version} - -**Decision**: [PASS / CONCERNS / FAIL / WAIVED] -**Date**: {date} -**Decider**: {decision_mode} (deterministic | manual) -**Evidence Date**: {test_results_date} - ---- - -## Summary - -[1-2 sentence summary of decision and key factors] - ---- - -## Decision Criteria - -| Criterion | Threshold | Actual | Status | -| ----------------- | --------- | -------- | ------ | -| P0 Coverage | ≥100% | 100% | ✅ PASS | -| P1 Coverage | ≥90% | 88% | ⚠️ FAIL | -| Overall Coverage | ≥80% | 92% | ✅ PASS | -| P0 Pass Rate | 100% | 100% | ✅ PASS | -| P1 Pass Rate | ≥95% | 98% | ✅ PASS | -| Overall Pass Rate | ≥90% | 96% | ✅ PASS | -| Critical NFRs | All Pass | All Pass | ✅ PASS | -| Security Issues | 0 | 0 | ✅ PASS | - -**Overall Status**: 7/8 criteria met → Decision: **CONCERNS** - ---- - -## Evidence Summary - -### Test Coverage (from Phase 1 Traceability) - -- **P0 Coverage**: 100% (5/5 criteria fully covered) -- **P1 Coverage**: 88% (7/8 criteria fully covered) -- **Overall Coverage**: 92% (12/13 criteria covered) -- **Gap**: AC-5 (P1) missing E2E test - -### Test Execution Results - -- **P0 Pass Rate**: 100% (12/12 tests passed) -- **P1 Pass Rate**: 98% (45/46 tests passed) -- **Overall Pass Rate**: 96% (67/70 tests passed) -- **Failures**: 3 P2 tests (non-blocking) - -### Non-Functional Requirements - -- Performance: ✅ PASS (response time <500ms) -- Security: ✅ PASS (no vulnerabilities) -- Scalability: ✅ PASS (handles 10K users) - -### Test Quality - -- All tests have explicit assertions ✅ -- No hard waits detected ✅ -- Test files <300 lines ✅ -- Test IDs follow convention ✅ - ---- - -## Decision Rationale - -**Why CONCERNS (not PASS)**: - -- P1 coverage at 88% is below 90% threshold -- AC-5 (P1 priority) missing E2E test for error handling scenario -- This is a known gap from test-design phase - -**Why CONCERNS (not FAIL)**: - -- P0 coverage is 100% (critical paths validated) -- Overall coverage is 92% (above 80% threshold) -- Test pass rate is excellent (96% overall) -- Gap is isolated to one P1 criterion (not systemic) - -**Recommendation**: - -- Acknowledge gap and proceed with deployment -- Add missing AC-5 E2E test in next sprint -- Create follow-up story: "Add E2E test for AC-5 error handling" - ---- - -## Next Steps - -- [ ] Create follow-up story for AC-5 E2E test -- [ ] Deploy to staging environment -- [ ] Monitor production for edge cases related to AC-5 -- [ ] Update traceability matrix after follow-up test added - ---- - -## References - -- Traceability Matrix: `_bmad/output/traceability-matrix.md` -- Test Design: `_bmad/output/test-design-epic-2.md` -- Test Results: `ci-artifacts/test-report-2025-01-15.xml` -- NFR Assessment: `_bmad/output/nfr-assessment-release-1.2.md` -``` - -3. **Include evidence links** (if `require_evidence: true`): - - Link to traceability matrix - - Link to test execution reports (CI artifacts) - - Link to NFR assessment - - Link to test-design document - - Link to relevant PRs, commits, deployments - -4. **Waiver documentation** (if decision is WAIVED): - - Approver name and role (e.g., "Jane Doe, Engineering Manager") - - Approval date and method (e.g., "2025-01-15, Slack thread") - - Justification (e.g., "Time-boxed MVP, missing tests will be added in v1.1") - - Mitigation plan (e.g., "Manual testing by QA, follow-up stories created") - - Evidence link (e.g., "Slack: #engineering 2025-01-15 3:42pm") - -**Output:** Complete gate decision document with evidence and rationale - ---- - -### Step 10: Update Status Tracking and Notify - -**Actions:** - -1. **Generate stakeholder notification** (if `notify_stakeholders: true`): - - Create concise summary message for team communication - - Include: Decision, key metrics, action items - - Format for Slack/email/chat: - - ``` - 🚦 Quality Gate Decision: Story 1.3 - User Login - - Decision: ⚠️ CONCERNS - - P0 Coverage: ✅ 100% - - P1 Coverage: ⚠️ 88% (below 90%) - - Test Pass Rate: ✅ 96% - - Action Required: - - Create follow-up story for AC-5 E2E test - - Deploy to staging for validation - - Full Report: _bmad/output/gate-decision-story-1.3.md - ``` - -2. **Request sign-off** (if `require_sign_off: true`): - - Prompt for named approver (tech lead, QA lead, PM) - - Document approver name and timestamp in gate decision - - Block until sign-off received (interactive prompt) - -**Output:** Status tracking updated, stakeholders notified, sign-off obtained (if required) - -**Workflow Complete**: Both Phase 1 (traceability) and Phase 2 (gate decision) deliverables generated. - ---- - -## Decision Matrix (Quick Reference) - -| Scenario | P0 Cov | P1 Cov | Overall Cov | P0 Pass | P1 Pass | Overall Pass | NFRs | Decision | -| --------------- | ----------------- | ------ | ----------- | ------- | ------- | ------------ | ---- | ------------ | -| All green | 100% | ≥90% | ≥80% | 100% | ≥95% | ≥90% | Pass | **PASS** | -| Minor gap | 100% | 80-89% | ≥80% | 100% | 90-94% | 85-89% | Pass | **CONCERNS** | -| Missing P0 | <100% | - | - | - | - | - | - | **FAIL** | -| P0 test fail | 100% | - | - | <100% | - | - | - | **FAIL** | -| P1 gap | 100% | <80% | - | 100% | - | - | - | **FAIL** | -| NFR fail | 100% | ≥90% | ≥80% | 100% | ≥95% | ≥90% | Fail | **FAIL** | -| Security issue | - | - | - | - | - | - | Yes | **FAIL** | -| Business waiver | [FAIL conditions] | - | - | - | - | - | - | **WAIVED** | - ---- - -## Waiver Management - -**When to use waivers:** - -- Time-boxed MVP releases (known gaps, follow-up planned) -- Low-risk P1 gaps with mitigation (manual testing, monitoring) -- Technical debt acknowledged by product/engineering leadership -- External dependencies blocking test automation - -**Waiver approval process:** - -1. Document gap and risk in gate decision -2. Propose mitigation plan (manual testing, follow-up stories, monitoring) -3. Request approval from stakeholder (EM, PM, QA lead) -4. Link approval evidence (email, chat thread, meeting notes) -5. Add waiver to gate decision document -6. Create follow-up stories to close gaps - -**Waiver does NOT apply to:** - -- P0 gaps (always blocking) -- Critical security issues (always blocking) -- Critical NFR failures (performance, data integrity) - ---- - -## Example Gate Decisions - -### Example 1: PASS (All Criteria Met) - -``` -Decision: ✅ PASS - -Summary: All quality criteria met. Story 1.3 is ready for production deployment. - -Evidence: -- P0 Coverage: 100% (5/5 criteria) -- P1 Coverage: 95% (19/20 criteria) -- Overall Coverage: 92% (24/26 criteria) -- P0 Pass Rate: 100% (12/12 tests) -- P1 Pass Rate: 98% (45/46 tests) -- Overall Pass Rate: 96% (67/70 tests) -- NFRs: All pass (performance, security, scalability) - -Action: Deploy to production ✅ -``` - -### Example 2: CONCERNS (Minor Gap, Non-Blocking) - -``` -Decision: ⚠️ CONCERNS - -Summary: P1 coverage slightly below threshold (88% vs 90%). Recommend deploying with follow-up story. - -Evidence: -- P0 Coverage: 100% ✅ -- P1 Coverage: 88% ⚠️ (below 90%) -- Overall Coverage: 92% ✅ -- Test Pass Rate: 96% ✅ -- Gap: AC-5 (P1) missing E2E test - -Action: -- Deploy to staging for validation -- Create follow-up story for AC-5 E2E test -- Monitor production for edge cases related to AC-5 -``` - -### Example 3: FAIL (P0 Gap, Blocking) - -``` -Decision: ❌ FAIL - -Summary: P0 coverage incomplete. Missing critical validation test. BLOCKING deployment. - -Evidence: -- P0 Coverage: 80% ❌ (4/5 criteria, AC-2 missing) -- AC-2: "User cannot login with invalid credentials" (P0 priority) -- No tests validate login security for invalid credentials -- This is a critical security gap - -Action: -- Add P0 test for AC-2: 1.3-E2E-004 (invalid credentials) -- Re-run traceability after test added -- Re-evaluate gate decision after P0 coverage = 100% - -Deployment BLOCKED until P0 gap resolved ❌ -``` - -### Example 4: WAIVED (Business Decision) - -``` -Decision: ⚠️ WAIVED - -Summary: P1 coverage below threshold (75% vs 90%), but waived for MVP launch. - -Evidence: -- P0 Coverage: 100% ✅ -- P1 Coverage: 75% ❌ (below 90%) -- Gap: 5 P1 criteria missing E2E tests (error handling, edge cases) - -Waiver: -- Approver: Jane Doe, Engineering Manager -- Date: 2025-01-15 -- Justification: Time-boxed MVP for investor demo. Core functionality (P0) fully validated. P1 gaps are low-risk edge cases. -- Mitigation: Manual QA testing for P1 scenarios, follow-up stories created for automated tests in v1.1 -- Evidence: Slack #engineering 2025-01-15 3:42pm - -Action: -- Deploy to production with manual QA validation ✅ -- Add 5 E2E tests for P1 gaps in v1.1 sprint -- Monitor production logs for edge case occurrences -``` - ---- - -## Non-Prescriptive Approach - -**Minimal Examples:** This workflow provides principles and patterns, not rigid templates. Teams should adapt the traceability and gate decision formats to their needs. - -**Key Patterns to Follow:** - -- Map criteria to tests explicitly (don't rely on inference alone) -- Prioritize by risk (P0 gaps are critical, P3 gaps are acceptable) -- Check coverage at appropriate levels (E2E for journeys, Unit for logic) -- Verify test quality (explicit assertions, no flakiness) -- Apply deterministic gate rules for consistency -- Document gate decisions with clear evidence -- Use waivers judiciously (business approved, mitigation planned) - -**Extend as Needed:** - -- Add custom coverage classifications -- Integrate with code coverage tools (Istanbul, NYC) -- Link to external traceability systems (JIRA, Azure DevOps) -- Add compliance or regulatory requirements -- Customize gate decision thresholds per project -- Add manual approval workflows for gate decisions - ---- - -## Coverage Classification Details - -### FULL Coverage - -- All scenarios validated at appropriate test level(s) -- Edge cases considered -- Both happy path and error paths tested -- Assertions are explicit and complete - -### PARTIAL Coverage - -- Some scenarios validated but missing edge cases -- Only happy path tested (missing error paths) -- Assertions present but incomplete -- Coverage exists but needs enhancement - -### NONE Coverage - -- No tests found for this criterion -- Complete gap requiring new tests -- Critical if P0/P1, acceptable if P3 - -### UNIT-ONLY Coverage - -- Only unit tests exist (business logic validated) -- Missing integration or E2E validation -- Risk: Implementation may not work end-to-end -- Recommendation: Add integration or E2E tests for critical paths - -### INTEGRATION-ONLY Coverage - -- Only API or Component tests exist -- Missing unit test confidence for business logic -- Risk: Logic errors may not be caught quickly -- Recommendation: Add unit tests for complex algorithms or state machines - ---- - -## Duplicate Coverage Detection - -Use selective testing principles from `selective-testing.md`: - -**Acceptable Overlap:** - -- Unit tests for business logic + E2E tests for user journey (different aspects) -- API tests for contract + E2E tests for full workflow (defense in depth for critical paths) - -**Unacceptable Duplication:** - -- Same validation at multiple levels (e.g., E2E testing math logic better suited for unit tests) -- Multiple E2E tests covering identical user path -- Component tests duplicating unit test logic - -**Recommendation Pattern:** - -- Test logic at unit level -- Test integration at API/Component level -- Test user experience at E2E level -- Avoid testing framework behavior at any level - ---- - -## Integration with BMad Artifacts - -### With test-design.md - -- Use risk assessment to prioritize gap remediation -- Reference test priorities (P0/P1/P2/P3) for severity classification and gate decision -- Align traceability with originally planned test coverage - -### With tech-spec.md - -- Understand technical implementation details -- Map criteria to specific code modules -- Verify tests cover technical edge cases - -### With PRD.md - -- Understand full product context -- Verify acceptance criteria align with product goals -- Check for unstated requirements that need coverage - -### With nfr-assessment.md - -- Load non-functional validation results for gate decision -- Check critical NFR status (performance, security, scalability) -- Include NFR pass/fail in gate decision criteria - ---- - -## Quality Gates (Phase 1 Recommendations) - -### P0 Coverage (Critical Paths) - -- **Requirement:** 100% FULL coverage -- **Severity:** BLOCKER if not met -- **Action:** Do not release until P0 coverage is complete - -### P1 Coverage (High Priority) - -- **Requirement:** 90% FULL coverage -- **Severity:** HIGH if not met -- **Action:** Block PR merge until addressed - -### P2 Coverage (Medium Priority) - -- **Requirement:** No strict requirement (recommended 80%) -- **Severity:** MEDIUM if gaps exist -- **Action:** Address in nightly test improvements - -### P3 Coverage (Low Priority) - -- **Requirement:** No requirement -- **Severity:** LOW if gaps exist -- **Action:** Optional - add if time permits - ---- - -## Example Traceability Matrix - -````markdown -# Traceability Matrix - Story 1.3 - -**Story:** User Authentication -**Date:** 2025-10-14 -**Status:** 85% Coverage (1 HIGH gap) - -## Coverage Summary - -| Priority | Total Criteria | FULL Coverage | Coverage % | Status | -| --------- | -------------- | ------------- | ---------- | ------ | -| P0 | 3 | 3 | 100% | ✅ PASS | -| P1 | 5 | 4 | 80% | ⚠️ WARN | -| P2 | 4 | 3 | 75% | ✅ PASS | -| P3 | 2 | 1 | 50% | ✅ PASS | -| **Total** | **14** | **11** | **79%** | ⚠️ WARN | - -## Detailed Mapping - -### AC-1: User can login with email and password (P0) - -- **Coverage:** FULL ✅ -- **Tests:** - - `1.3-E2E-001` - tests/e2e/auth.spec.ts:12 - - Given: User has valid credentials - - When: User submits login form - - Then: User is redirected to dashboard - - `1.3-UNIT-001` - tests/unit/auth-service.spec.ts:8 - - Given: Valid email and password hash - - When: validateCredentials is called - - Then: Returns user object - -### AC-2: User sees error for invalid credentials (P0) - -- **Coverage:** FULL ✅ -- **Tests:** - - `1.3-E2E-002` - tests/e2e/auth.spec.ts:28 - - Given: User has invalid password - - When: User submits login form - - Then: Error message is displayed - - `1.3-UNIT-002` - tests/unit/auth-service.spec.ts:18 - - Given: Invalid password hash - - When: validateCredentials is called - - Then: Throws AuthenticationError - -### AC-3: User can reset password via email (P1) - -- **Coverage:** PARTIAL ⚠️ -- **Tests:** - - `1.3-E2E-003` - tests/e2e/auth.spec.ts:44 - - Given: User requests password reset - - When: User clicks reset link - - Then: User can set new password -- **Gaps:** - - Missing: Email delivery validation - - Missing: Expired token handling - - Missing: Unit test for token generation -- **Recommendation:** Add `1.3-API-001` for email service integration and `1.3-UNIT-003` for token logic - -## Gap Analysis - -### Critical Gaps (BLOCKER) - -- None ✅ - -### High Priority Gaps (PR BLOCKER) - -1. **AC-3: Password reset email edge cases** - - Missing tests for expired tokens, invalid tokens, email failures - - Recommend: `1.3-API-001` (email service integration) and `1.3-E2E-004` (error paths) - - Impact: Users may not be able to recover accounts in error scenarios - -### Medium Priority Gaps (Nightly) - -1. **AC-7: Session timeout handling** - UNIT-ONLY coverage (missing E2E validation) - -## Quality Assessment - -### Tests with Issues - -- `1.3-E2E-001` ⚠️ - 145 seconds (exceeds 90s target) - Optimize fixture setup -- `1.3-UNIT-005` ⚠️ - 320 lines (exceeds 300 line limit) - Split into multiple test files - -### Tests Passing Quality Gates - -- 11/13 tests (85%) meet all quality criteria ✅ - -## Gate YAML Snippet - -```yaml -traceability: - story_id: '1.3' - coverage: - overall: 79% - p0: 100% - p1: 80% - p2: 75% - p3: 50% - gaps: - critical: 0 - high: 1 - medium: 1 - low: 1 - status: 'WARN' # P1 coverage below 90% threshold - recommendations: - - 'Add 1.3-API-001 for email service integration' - - 'Add 1.3-E2E-004 for password reset error paths' - - 'Optimize 1.3-E2E-001 performance (145s → <90s)' -``` -```` - -## Recommendations - -1. **Address High Priority Gap:** Add password reset edge case tests before PR merge -2. **Optimize Slow Test:** Refactor `1.3-E2E-001` to use faster fixture setup -3. **Split Large Test:** Break `1.3-UNIT-005` into focused test files -4. **Enhance P2 Coverage:** Add E2E validation for session timeout (currently UNIT-ONLY) - -``` - ---- - -## Validation Checklist - -Before completing this workflow, verify: - -**Phase 1 (Traceability):** -- ✅ All acceptance criteria are mapped to tests (or gaps are documented) -- ✅ Coverage status is classified (FULL, PARTIAL, NONE, UNIT-ONLY, INTEGRATION-ONLY) -- ✅ Gaps are prioritized by risk level (P0/P1/P2/P3) -- ✅ P0 coverage is 100% or blockers are documented -- ✅ Duplicate coverage is identified and flagged -- ✅ Test quality is assessed (assertions, structure, performance) -- ✅ Traceability matrix is generated and saved - -**Phase 2 (Gate Decision - if enabled):** -- ✅ Test execution results loaded and pass rates calculated -- ✅ NFR assessment results loaded (if applicable) -- ✅ Decision rules applied consistently (PASS/CONCERNS/FAIL/WAIVED) -- ✅ Gate decision document created with evidence -- ✅ Waiver documented if decision is WAIVED (approver, justification, mitigation) -- ✅ Stakeholders notified (if enabled) - ---- - -## Notes - -**Phase 1 (Traceability):** -- **Explicit Mapping:** Require tests to reference criteria explicitly (test IDs, describe blocks) for maintainability -- **Risk-Based Prioritization:** Use test-priorities framework (P0/P1/P2/P3) to determine gap severity -- **Quality Over Quantity:** Better to have fewer high-quality tests with FULL coverage than many low-quality tests with PARTIAL coverage -- **Selective Testing:** Avoid duplicate coverage - test each behavior at the appropriate level only - -**Phase 2 (Gate Decision):** -- **Deterministic Rules:** Use consistent thresholds (P0=100%, P1≥90%, overall≥80%) for objectivity -- **Evidence-Based:** Every decision must cite specific metrics (coverage %, pass rates, NFRs) -- **Waiver Discipline:** Waivers require approver name, justification, mitigation plan, and evidence link -- **Non-Blocking CONCERNS:** Use CONCERNS for minor gaps that don't justify blocking deployment (e.g., P1 at 88% vs 90%) -- **Automate in CI/CD:** Generate YAML snippets that can be consumed by CI/CD pipelines for automated quality gates - ---- - -## Troubleshooting - -### "No tests found for this story" -- Run `*atdd` workflow first to generate failing acceptance tests -- Check test file naming conventions (may not match story ID pattern) -- Verify test directory path is correct - -### "Cannot determine coverage status" -- Tests may lack explicit mapping to criteria (no test IDs, unclear describe blocks) -- Review test structure and add Given-When-Then narrative -- Add test IDs in format: `{STORY_ID}-{LEVEL}-{SEQ}` (e.g., 1.3-E2E-001) - -### "P0 coverage below 100%" -- This is a **BLOCKER** - do not release -- Identify missing P0 tests in gap analysis -- Run `*atdd` workflow to generate missing tests -- Verify with stakeholders that P0 classification is correct - -### "Duplicate coverage detected" -- Review selective testing principles in `selective-testing.md` -- Determine if overlap is acceptable (defense in depth) or wasteful (same validation at multiple levels) -- Consolidate tests at appropriate level (logic → unit, integration → API, journey → E2E) - -### "Test execution results missing" (Phase 2) -- Phase 2 gate decision requires `test_results` (CI/CD test reports) -- If missing, Phase 2 will be skipped with warning -- Provide JUnit XML, TAP, or JSON test report path via `test_results` variable - -### "Gate decision is FAIL but deployment needed urgently" -- Request business waiver (if `allow_waivers: true`) -- Document approver, justification, mitigation plan -- Create follow-up stories to address gaps -- Use WAIVED decision only for non-P0 gaps - ---- - -## Related Workflows - -**Prerequisites:** -- `testarch-test-design` - Define test priorities (P0/P1/P2/P3) before tracing (required for Phase 2) -- `testarch-atdd` or `testarch-automate` - Generate tests before tracing coverage - -**Complements:** -- `testarch-nfr-assess` - Non-functional requirements validation (recommended for release gates) -- `testarch-test-review` - Review test quality issues flagged in traceability - -**Next Steps:** -- If gate decision is PASS/CONCERNS → Deploy and monitor -- If gate decision is FAIL → Add missing tests, re-run trace workflow -- If gate decision is WAIVED → Deploy with mitigation, create follow-up stories - ---- - - -``` diff --git a/src/core/workflows/advanced-elicitation/workflow.md b/src/core/workflows/advanced-elicitation/workflow.md new file mode 100644 index 000000000..aaf5aa018 --- /dev/null +++ b/src/core/workflows/advanced-elicitation/workflow.md @@ -0,0 +1,124 @@ +--- +name: advanced-elicitation +description: "Interactive elicitation methods to refine content via selectable techniques" +web_bundle: false +--- + +## Initialization +- Load config from `{project-root}/_bmad/core/config.yaml`. +- Resolve variables: + - `communication_language` + - `methods` (`{project-root}/_bmad/core/workflows/advanced-elicitation/methods.csv`) + - `agent_manifest` (`{project-root}/_bmad/_config/agent-manifest.csv`) + - `date` (system-generated, if needed) + +MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER +DO NOT skip steps or change the sequence +HALT immediately when halt-conditions are met +Each action xml tag within step xml tag is a REQUIRED action to complete that step +Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution +YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the `communication_language` + +## Integration +When called during template workflow processing: +- Receive or review the current section content that was just generated +- Apply elicitation methods iteratively to enhance that specific content +- Return the enhanced version when the user selects "x" to proceed +- The enhanced content replaces the original section content in the output document + + + + Load and read {{methods}} and {{agent-party}} + + + category: Method grouping (core, structural, risk, etc.) + method_name: Display name for the method + description: Rich explanation of what the method does, when to use it, and why it's valuable + output_pattern: Flexible flow guide using → arrows (e.g., "analysis → insights → action") + + + + Use conversation history + Analyze: content type, complexity, stakeholder needs, risk level, and creative potential + + + + 1. Analyze context: Content type, complexity, stakeholder needs, risk level, creative potential + 2. Parse descriptions: Understand each method's purpose from the rich descriptions in CSV + 3. Select 5 methods: Choose methods that best match the context based on their descriptions + 4. Balance approach: Include mix of foundational and specialized techniques as appropriate + + + + + + + **Advanced Elicitation Options (If you launched Party Mode, they will participate randomly)** + Choose a number (1-5), [r] to Reshuffle, [a] List All, or [x] to Proceed: + + 1. [Method Name] + 2. [Method Name] + 3. [Method Name] + 4. [Method Name] + 5. [Method Name] + r. Reshuffle the list with 5 new options + a. List all methods with descriptions + x. Proceed / No Further Actions + + + + + Execute the selected method using its description from the CSV + Adapt the method's complexity and output format based on the current context + Apply the method creatively to the current section content being enhanced + Display the enhanced version showing what the method revealed or improved + CRITICAL: Ask the user if they would like to apply the changes to the doc (y/n/other) and HALT to await response. + CRITICAL: ONLY if Yes, apply the changes. IF No, discard your memory of the proposed changes. If any other reply, try best to + follow the instructions given by the user. + CRITICAL: Re-present the same 1-5,r,x prompt to allow additional elicitations + + + Select 5 random methods from advanced-elicitation-methods.csv, present new list with same prompt format + When selecting, try to think and pick a diverse set of methods covering different categories and approaches, with 1 and 2 being + potentially the most useful for the document or section being discovered + + + Complete elicitation and proceed + Return the fully enhanced content back to create-doc.md + The enhanced content becomes the final version for that section + Signal completion back to create-doc.md to continue with next section + + + List all methods with their descriptions from the CSV in a compact table + Allow user to select any method by name or number from the full list + After selection, execute the method as described in the n="1-5" case above + + + Apply changes to current section content and re-present choices + + + Execute methods in sequence on the content, then re-offer choices + + + + + + Method execution: Use the description from CSV to understand and apply each method + Output pattern: Use the pattern as a flexible guide (e.g., "paths → evaluation → selection") + Dynamic adaptation: Adjust complexity based on content needs (simple to sophisticated) + Creative application: Interpret methods flexibly based on context while maintaining pattern consistency + Focus on actionable insights + Stay relevant: Tie elicitation to specific content being analyzed (the current section from the document being created unless user + indicates otherwise) + Identify personas: For single or multi-persona methods, clearly identify viewpoints, and use party members if available in memory + already + Critical loop behavior: Always re-offer the 1-5,r,a,x choices after each method execution + Continue until user selects 'x' to proceed with enhanced content, confirm or ask the user what should be accepted from the session + Each method application builds upon previous enhancements + Content preservation: Track all enhancements made during elicitation + Iterative enhancement: Each selected method (1-5) should: + 1. Apply to the current enhanced version of the content + 2. Show the improvements made + 3. Return to the prompt for additional elicitations or completion + + diff --git a/src/core/workflows/advanced-elicitation/workflow.xml b/src/core/workflows/advanced-elicitation/workflow.xml deleted file mode 100644 index ea7395e41..000000000 --- a/src/core/workflows/advanced-elicitation/workflow.xml +++ /dev/null @@ -1,117 +0,0 @@ - - - MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER - DO NOT skip steps or change the sequence - HALT immediately when halt-conditions are met - Each action xml tag within step xml tag is a REQUIRED action to complete that step - Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution - YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the `communication_language` - - - - When called during template workflow processing: - 1. Receive or review the current section content that was just generated or - 2. Apply elicitation methods iteratively to enhance that specific content - 3. Return the enhanced version back when user selects 'x' to proceed and return back - 4. The enhanced content replaces the original section content in the output document - - - - - Load and read {{methods}} and {{agent-party}} - - - category: Method grouping (core, structural, risk, etc.) - method_name: Display name for the method - description: Rich explanation of what the method does, when to use it, and why it's valuable - output_pattern: Flexible flow guide using → arrows (e.g., "analysis → insights → action") - - - - Use conversation history - Analyze: content type, complexity, stakeholder needs, risk level, and creative potential - - - - 1. Analyze context: Content type, complexity, stakeholder needs, risk level, creative potential - 2. Parse descriptions: Understand each method's purpose from the rich descriptions in CSV - 3. Select 5 methods: Choose methods that best match the context based on their descriptions - 4. Balance approach: Include mix of foundational and specialized techniques as appropriate - - - - - - - **Advanced Elicitation Options (If you launched Party Mode, they will participate randomly)** - Choose a number (1-5), [r] to Reshuffle, [a] List All, or [x] to Proceed: - - 1. [Method Name] - 2. [Method Name] - 3. [Method Name] - 4. [Method Name] - 5. [Method Name] - r. Reshuffle the list with 5 new options - a. List all methods with descriptions - x. Proceed / No Further Actions - - - - - Execute the selected method using its description from the CSV - Adapt the method's complexity and output format based on the current context - Apply the method creatively to the current section content being enhanced - Display the enhanced version showing what the method revealed or improved - CRITICAL: Ask the user if they would like to apply the changes to the doc (y/n/other) and HALT to await response. - CRITICAL: ONLY if Yes, apply the changes. IF No, discard your memory of the proposed changes. If any other reply, try best to - follow the instructions given by the user. - CRITICAL: Re-present the same 1-5,r,x prompt to allow additional elicitations - - - Select 5 random methods from advanced-elicitation-methods.csv, present new list with same prompt format - When selecting, try to think and pick a diverse set of methods covering different categories and approaches, with 1 and 2 being - potentially the most useful for the document or section being discovered - - - Complete elicitation and proceed - Return the fully enhanced content back to create-doc.md - The enhanced content becomes the final version for that section - Signal completion back to create-doc.md to continue with next section - - - List all methods with their descriptions from the CSV in a compact table - Allow user to select any method by name or number from the full list - After selection, execute the method as described in the n="1-5" case above - - - Apply changes to current section content and re-present choices - - - Execute methods in sequence on the content, then re-offer choices - - - - - - Method execution: Use the description from CSV to understand and apply each method - Output pattern: Use the pattern as a flexible guide (e.g., "paths → evaluation → selection") - Dynamic adaptation: Adjust complexity based on content needs (simple to sophisticated) - Creative application: Interpret methods flexibly based on context while maintaining pattern consistency - Focus on actionable insights - Stay relevant: Tie elicitation to specific content being analyzed (the current section from the document being created unless user - indicates otherwise) - Identify personas: For single or multi-persona methods, clearly identify viewpoints, and use party members if available in memory - already - Critical loop behavior: Always re-offer the 1-5,r,a,x choices after each method execution - Continue until user selects 'x' to proceed with enhanced content, confirm or ask the user what should be accepted from the session - Each method application builds upon previous enhancements - Content preservation: Track all enhancements made during elicitation - Iterative enhancement: Each selected method (1-5) should: - 1. Apply to the current enhanced version of the content - 2. Show the improvements made - 3. Return to the prompt for additional elicitations or completion - - - \ No newline at end of file diff --git a/src/core/workflows/brainstorming/steps/step-03-technique-execution.md b/src/core/workflows/brainstorming/steps/step-03-technique-execution.md index 362bead3b..25b4cd929 100644 --- a/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +++ b/src/core/workflows/brainstorming/steps/step-03-technique-execution.md @@ -1,7 +1,7 @@ # Step 3: Interactive Technique Execution and Facilitation --- -advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml' +advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md' --- ## MANDATORY EXECUTION RULES (READ FIRST): diff --git a/src/core/workflows/brainstorming/workflow.md b/src/core/workflows/brainstorming/workflow.md index 3190c983c..ef3349d10 100644 --- a/src/core/workflows/brainstorming/workflow.md +++ b/src/core/workflows/brainstorming/workflow.md @@ -47,7 +47,7 @@ Load config from `{project-root}/_bmad/core/config.yaml` and resolve: - `brain_techniques_path` = `{installed_path}/brain-methods.csv` - `default_output_file` = `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` - `context_file` = Optional context file path from workflow invocation for project-specific guidance -- `advancedElicitationTask` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml` +- `advancedElicitationTask` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md` --- diff --git a/src/utility/agent-components/handler-multi.txt b/src/utility/agent-components/handler-multi.txt index f33a73fe5..20169315a 100644 --- a/src/utility/agent-components/handler-multi.txt +++ b/src/utility/agent-components/handler-multi.txt @@ -7,7 +7,7 @@ - Process based on handler attributes (exec, workflow, action) 4. When user input matches a handler's 'match' pattern: - For exec="path/to/file.md": follow the `handler type="exec"` instructions - - For workflow="path/to/workflow.yaml": follow the `handler type="workflow"` instructions + - For workflow="path/to/workflow.md": follow the `handler type="workflow"` instructions - For action="...": Perform the specified action directly 5. Support both exact matches and fuzzy matching based on the match attribute 6. If no handler matches, prompt user to choose from available options diff --git a/src/utility/agent-components/handler-validate-workflow.txt b/src/utility/agent-components/handler-validate-workflow.txt index aca040550..024dd9c19 100644 --- a/src/utility/agent-components/handler-validate-workflow.txt +++ b/src/utility/agent-components/handler-validate-workflow.txt @@ -1,7 +1,7 @@ - When command has: validate-workflow="path/to/workflow.yaml" - 1. You MUST LOAD the file at: {project-root}/_bmad/core/tasks/validate-workflow.xml + When command has: validate-workflow="path/to/workflow.md" + 1. You MUST LOAD the file at: {project-root}/_bmad/core/tasks/validate-workflow.md 2. READ its entire contents and EXECUTE all instructions in that file - 3. Pass the workflow, and also check the workflow yaml validation property to find and load the validation schema to pass as the checklist + 3. Pass the workflow, and also check the workflow validation property to find and load the validation schema to pass as the checklist 4. The workflow should try to identify the file to validate based on checklist context or else you will ask the user to specify - \ No newline at end of file + diff --git a/src/utility/agent-components/handler-workflow.txt b/src/utility/agent-components/handler-workflow.txt index 1be1dcbe5..09b7d0825 100644 --- a/src/utility/agent-components/handler-workflow.txt +++ b/src/utility/agent-components/handler-workflow.txt @@ -1,10 +1,10 @@ - When menu item has: workflow="path/to/workflow.yaml": + When menu item has: workflow="path/to/workflow.md": - 1. CRITICAL: Always LOAD {project-root}/_bmad/core/tasks/workflow.xml + 1. CRITICAL: Always LOAD {project-root}/_bmad/core/tasks/workflow.md 2. Read the complete file - this is the CORE OS for processing BMAD workflows - 3. Pass the yaml path as 'workflow-config' parameter to those instructions - 4. Follow workflow.xml instructions precisely following all steps + 3. Pass the workflow definition path as 'workflow-config' parameter to those instructions + 4. Follow workflow.md instructions precisely following all steps 5. Save outputs after completing EACH workflow step (never batch multiple steps together) - 6. If workflow.yaml path is "todo", inform user the workflow hasn't been implemented yet - \ No newline at end of file + 6. If workflow.md path is "todo", inform user the workflow hasn't been implemented yet + diff --git a/test/test-installation-components.js b/test/test-installation-components.js index 2ce332df4..b3736c0a7 100644 --- a/test/test-installation-components.js +++ b/test/test-installation-components.js @@ -29,6 +29,48 @@ const colors = { let passed = 0; let failed = 0; +/** + * Recursively collect files from a mix of files/directories. + */ +async function collectFiles(targets, allowedExtensions) { + const files = []; + + const walk = async (targetPath) => { + if (!(await fs.pathExists(targetPath))) { + return; + } + + const stat = await fs.stat(targetPath); + if (stat.isFile()) { + if (allowedExtensions.has(path.extname(targetPath))) { + files.push(targetPath); + } + return; + } + + const entries = await fs.readdir(targetPath, { withFileTypes: true }); + for (const entry of entries) { + const fullPath = path.join(targetPath, entry.name); + if (entry.isSymbolicLink()) { + continue; + } + if (entry.isDirectory()) { + await walk(fullPath); + continue; + } + if (allowedExtensions.has(path.extname(entry.name))) { + files.push(fullPath); + } + } + }; + + for (const target of targets) { + await walk(target); + } + + return files; +} + /** * Test helper: Assert condition */ @@ -192,31 +234,20 @@ async function runTests() { console.log(`${colors.yellow}Test Suite 6: Advanced Elicitation Reference Guard${colors.reset}\n`); try { - const searchRoots = [path.join(projectRoot, 'src'), path.join(projectRoot, 'docs')]; + const searchTargets = [ + path.join(projectRoot, 'src', 'bmm', 'workflows', '2-plan-workflows', 'create-prd', 'steps-e'), + path.join(projectRoot, 'src', 'bmm', 'workflows', '2-plan-workflows', 'create-prd', 'steps-v', 'step-v-01-discovery.md'), + ]; const allowedExtensions = new Set(['.md', '.yaml', '.yml', '.xml']); const forbiddenRef = 'advanced-elicitation/workflow.xml'; const offenders = []; - const walk = async (dir) => { - const entries = await fs.readdir(dir, { withFileTypes: true }); - for (const entry of entries) { - const fullPath = path.join(dir, entry.name); - if (entry.isDirectory()) { - await walk(fullPath); - continue; - } - if (!allowedExtensions.has(path.extname(entry.name))) { - continue; - } - const content = await fs.readFile(fullPath, 'utf8'); - if (content.includes(forbiddenRef)) { - offenders.push(path.relative(projectRoot, fullPath)); - } + const files = await collectFiles(searchTargets, allowedExtensions); + for (const fullPath of files) { + const content = await fs.readFile(fullPath, 'utf8'); + if (content.includes(forbiddenRef)) { + offenders.push(path.relative(projectRoot, fullPath)); } - }; - - for (const root of searchRoots) { - await walk(root); } assert( @@ -236,32 +267,20 @@ async function runTests() { console.log(`${colors.yellow}Test Suite 7: Validate Workflow Reference Guard${colors.reset}\n`); try { - const searchRoots = [path.join(projectRoot, 'src'), path.join(projectRoot, 'docs')]; + const searchTargets = [ + path.join(projectRoot, 'src', 'bmm', 'workflows', '4-implementation'), + path.join(projectRoot, 'src', 'bmm', 'workflows', 'document-project'), + ]; const allowedExtensions = new Set(['.md', '.yaml', '.yml', '.xml']); const forbiddenRef = 'validate-workflow.xml'; - const excludedFile = path.join(projectRoot, 'src', 'core', 'tasks', 'validate-workflow.xml'); const offenders = []; - const walk = async (dir) => { - const entries = await fs.readdir(dir, { withFileTypes: true }); - for (const entry of entries) { - const fullPath = path.join(dir, entry.name); - if (entry.isDirectory()) { - await walk(fullPath); - continue; - } - if (!allowedExtensions.has(path.extname(entry.name))) { - continue; - } - const content = await fs.readFile(fullPath, 'utf8'); - if (content.includes(forbiddenRef)) { - offenders.push(path.relative(projectRoot, fullPath)); - } + const files = await collectFiles(searchTargets, allowedExtensions); + for (const fullPath of files) { + const content = await fs.readFile(fullPath, 'utf8'); + if (content.includes(forbiddenRef)) { + offenders.push(path.relative(projectRoot, fullPath)); } - }; - - for (const root of searchRoots) { - await walk(root); } assert( @@ -281,31 +300,21 @@ async function runTests() { console.log(`${colors.yellow}Test Suite 8: Workflow Reference Guard${colors.reset}\n`); try { - const searchRoots = [path.join(projectRoot, 'src'), path.join(projectRoot, 'docs'), path.join(projectRoot, 'tools')]; + const searchTargets = [ + path.join(projectRoot, 'src', 'bmm', 'workflows', '4-implementation'), + path.join(projectRoot, 'src', 'bmm', 'workflows', 'document-project'), + path.join(projectRoot, 'tools', 'cli', 'installers', 'lib'), + ]; const allowedExtensions = new Set(['.md', '.yaml', '.yml', '.xml']); - const forbiddenRef = 'workflow.xml'; + const forbiddenRefPattern = /(^|[^a-zA-Z0-9_-])workflow\.xml\b/; const offenders = []; - const walk = async (dir) => { - const entries = await fs.readdir(dir, { withFileTypes: true }); - for (const entry of entries) { - const fullPath = path.join(dir, entry.name); - if (entry.isDirectory()) { - await walk(fullPath); - continue; - } - if (!allowedExtensions.has(path.extname(entry.name))) { - continue; - } - const content = await fs.readFile(fullPath, 'utf8'); - if (content.includes(forbiddenRef)) { - offenders.push(path.relative(projectRoot, fullPath)); - } + const files = await collectFiles(searchTargets, allowedExtensions); + for (const fullPath of files) { + const content = await fs.readFile(fullPath, 'utf8'); + if (forbiddenRefPattern.test(content)) { + offenders.push(path.relative(projectRoot, fullPath)); } - }; - - for (const root of searchRoots) { - await walk(root); } assert(offenders.length === 0, 'No workflow.xml references outside XML source', offenders.length > 0 ? offenders.join(', ') : ''); diff --git a/tools/cli/installers/lib/core/manifest-generator.js b/tools/cli/installers/lib/core/manifest-generator.js index 9883eac4c..c5482985c 100644 --- a/tools/cli/installers/lib/core/manifest-generator.js +++ b/tools/cli/installers/lib/core/manifest-generator.js @@ -780,7 +780,7 @@ class ManifestGenerator { if (line) { // Parse CSV (simple parsing assuming no commas in quoted fields) const parts = line.split('","'); - if (parts.length >= 11) { + if (parts.length >= 10) { const name = parts[0].replace(/^"/, ''); const module = parts[8]; existingEntries.set(`${module}:${name}`, line); diff --git a/tools/cli/installers/lib/ide/_base-ide.js b/tools/cli/installers/lib/ide/_base-ide.js index 45729e3e5..9cfefd46c 100644 --- a/tools/cli/installers/lib/ide/_base-ide.js +++ b/tools/cli/installers/lib/ide/_base-ide.js @@ -289,7 +289,7 @@ class BaseIdeSetup { // Get core workflows const coreWorkflowsPath = path.join(bmadDir, 'core', 'workflows'); if (await fs.pathExists(coreWorkflowsPath)) { - const coreWorkflows = await this.findWorkflowYamlFiles(coreWorkflowsPath); + const coreWorkflows = await this.findWorkflowFiles(coreWorkflowsPath); workflows.push( ...coreWorkflows.map((w) => ({ ...w, @@ -351,7 +351,7 @@ class BaseIdeSetup { const content = await fs.readFile(fullPath, 'utf8'); let workflowData = null; - const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/); + const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); if (!frontmatterMatch) { continue; } @@ -546,10 +546,6 @@ class BaseIdeSetup { content = content.replaceAll('_bmad', this.bmadFolderName); } - // Replace escape sequence _bmad with literal _bmad - if (typeof content === 'string' && content.includes('_bmad')) { - content = content.replaceAll('_bmad', '_bmad'); - } await this.ensureDir(path.dirname(filePath)); await fs.writeFile(filePath, content, 'utf8'); } @@ -577,11 +573,6 @@ class BaseIdeSetup { content = content.replaceAll('_bmad', this.bmadFolderName); } - // Replace escape sequence _bmad with literal _bmad - if (content.includes('_bmad')) { - content = content.replaceAll('_bmad', '_bmad'); - } - // Write to dest with replaced content await fs.writeFile(dest, content, 'utf8'); } catch { diff --git a/tools/cli/installers/lib/ide/templates/combined/claude-workflow-yaml.md b/tools/cli/installers/lib/ide/templates/combined/claude-workflow-yaml.md deleted file mode 120000 index 11f78e1d4..000000000 --- a/tools/cli/installers/lib/ide/templates/combined/claude-workflow-yaml.md +++ /dev/null @@ -1 +0,0 @@ -default-workflow-yaml.md \ No newline at end of file diff --git a/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md b/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md deleted file mode 100644 index 2a5e49b83..000000000 --- a/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: '{{name}}' -description: '{{description}}' -disable-model-invocation: true ---- - -IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded: - - -1. Always LOAD the FULL @{project-root}/{{bmadFolderName}}/core/tasks/workflow.xml -2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config @{project-root}/{{bmadFolderName}}/{{path}} -3. Pass the yaml path @{project-root}/{{bmadFolderName}}/{{path}} as 'workflow-config' parameter to the workflow.xml instructions -4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions -5. Save outputs after EACH section when generating any documents from templates - diff --git a/tools/cli/installers/lib/ide/templates/workflow-command-template.md b/tools/cli/installers/lib/ide/templates/workflow-command-template.md deleted file mode 100644 index 472c1553a..000000000 --- a/tools/cli/installers/lib/ide/templates/workflow-command-template.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -description: '{{description}}' -disable-model-invocation: true ---- - -IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded: - - -1. Always LOAD the FULL @_bmad/core/tasks/workflow.xml -2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config @{{workflow_path}} -3. Pass the yaml path {{workflow_path}} as 'workflow-config' parameter to the workflow.xml instructions -4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions -5. Save outputs after EACH section when generating any documents from templates - diff --git a/tools/cli/installers/lib/modules/manager.js b/tools/cli/installers/lib/modules/manager.js index 5bdec615c..0d0b3addc 100644 --- a/tools/cli/installers/lib/modules/manager.js +++ b/tools/cli/installers/lib/modules/manager.js @@ -798,14 +798,13 @@ class ModuleManager { async copyWorkflowFileStripped(sourceFile, targetFile) { let mdContent = await fs.readFile(sourceFile, 'utf8'); - mdContent = mdContent.replaceAll('_bmad', '_bmad'); mdContent = mdContent.replaceAll('_bmad', this.bmadFolderName); mdContent = this.stripWebBundleFromFrontmatter(mdContent); await fs.writeFile(targetFile, mdContent, 'utf8'); } stripWebBundleFromFrontmatter(content) { - const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/); + const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); if (!frontmatterMatch) { return content; }