From c9c3d31d3afcd8256ba342badbf310eb5975d3e2 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Wed, 21 Jan 2026 20:47:43 -0600 Subject: [PATCH] add the phase four items to the workflow csv for bmm. compile all csv to a install file. improve the bmad-help to know how to work with the csv that contains the workflows from all installed modules --- src/bmm/module-help.csv | 29 +++ src/bmm/tasks/bmad-help.md | 54 ---- src/bmm/tasks/workflows.csv | 26 -- .../steps/step-06-complete.md | 2 +- .../steps/step-14-complete.md | 2 +- .../prd/steps-c/step-12-complete.md | 2 +- .../prd/steps-v/step-v-13-report-complete.md | 2 +- .../steps/step-06-final-assessment.md | 2 +- .../steps/step-08-complete.md | 2 +- .../steps/step-04-final-validation.md | 2 +- src/core/module-help.csv | 11 + src/core/tasks/bmad-help.md | 62 +++++ tools/cli/installers/lib/core/installer.js | 239 ++++++++++++++++++ 13 files changed, 348 insertions(+), 87 deletions(-) create mode 100644 src/bmm/module-help.csv delete mode 100644 src/bmm/tasks/bmad-help.md delete mode 100644 src/bmm/tasks/workflows.csv create mode 100644 src/core/module-help.csv create mode 100644 src/core/tasks/bmad-help.md diff --git a/src/bmm/module-help.csv b/src/bmm/module-help.csv new file mode 100644 index 00000000..2f38bcda --- /dev/null +++ b/src/bmm/module-help.csv @@ -0,0 +1,29 @@ +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.yaml,bmad:bmm:document-project,false,analyst,Create Mode,"Analyze an existing project to produce useful documentation",project-knowledge,*, +bmm,anytime,Tech Spec,TS,20,_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md,bmad:bmm:tech-spec,false,quick-flow-solo-dev,Create Mode,"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",,, +bmm,anytime,Correct Course,CC,40,_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml,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,1-analysis,Brainstorm Project,BP,10,_bmad/core/workflows/brainstorming/workflow.md,bmad:bmm: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/prd/workflow.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/prd/workflow.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,Create UX,CU,30,_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md,bmad:bmm:create-ux,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:validate-ux,false,ux-designer,Validate Mode,"Validates UX design deliverables",planning_artifacts,"ux validation report", +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:validate-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:validate-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.yaml,bmad:bmm: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,Validate Test Design,VT,60,_bmad/bmm/workflows/testarch/test-design/workflow.yaml,bmad:bmm:validate-test-design,false,tea,Validate Mode,"Validates test design coverage",planning_artifacts,"test design validation report", +bmm,3-solutioning,Implementation Readiness,IR,70,_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md,bmad:bmm: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.yaml,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.yaml,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.yaml,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.yaml,bmad:bmm:validate-story,false,sm,Validate Mode,"Validates story readiness and completeness before development work begins",implementation_artifacts,"story validation report", +bmm,4-implementation,Dev Story,DS,40,_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml,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.yaml,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,Retrospective,ER,60,_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml,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/tasks/bmad-help.md b/src/bmm/tasks/bmad-help.md deleted file mode 100644 index a2fce675..00000000 --- a/src/bmm/tasks/bmad-help.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -name: bmad-help -description: Get unstuck by showing what workflow steps come next or answering questions about what to do in the BMad Method -standalone: true ---- - -# Task: BMAD Help - -## EXECUTION - -1 Load `./workflows.csv` and `{project-root}/_bmad/_config/agent-manifest.csv`. - -### INPUT Arg handling - -Task input argument may provide: -- A workflow **name** just completed (e.g., "validating the UX", "Create PRD", "done with architecture") -- A workflow **code** (e.g., "VU", "CP", "CA") -- conversational phrase -- Nothing - in which case you should infer from #CONTEXT-INFERENCE - -## CONTEXT INFERENCE - -If no explicit workflow row is provided as just completed, check the conversation context: -- Did someone recently state they completed something? (e.g., "I'm done with my PRD") - - Proceed as if that was the presented arg input -- Was a workflow just completed in this conversation? - - Proceed as if that was the presented arg input -- Do not actually load or read and of these yet to avoid context bloat, but just use file search to see what can be found in {`config:output_folder`}, {`config:planning_artifacts`}, {`config:implementation_artifacts`} or {`config:project_knowledge`} and try to infer from the file names. If a location has an index.md you can read that if needed. Remember: Artifacts could be nested deep under these locations also. - - Based on fuzzy matching or inference of what a row indicates as output vs what has been found, infer what steps might be complete but need user confirmation -- If unclear, ask: "What workflow did you most recently complete?" - -Find all workflow items after the completed row. Present these in a clear, conversational format. - -**Phases number to name reference:** Phase 0 (Any Time), Phase 1 (Analysis), Phase 2 (Planning), Phase 3 (Solutioning), Phase 4 (Implementation) - -**If the request is for next steps, present the next steps as follows:** - -1. **Optional items first** - List any optional workflows until a required step is reached -2. **Required items next** - List the next required workflow -3. For each item, show: - - The workflow **name** - - The **command** (prefixed with `/`, e.g., `/bmad:bmm:create-architecture`) - - The **agent** displayName and title from the loaded agent-manifest that corresponds with the agent value in each row who can help, e.g., `Winston the Architect` - - A brief **description** so the user can decide easily - -**Recommendation format:** -- Suggest running each workflow in a **fresh context window** for best results -- Option: Load the agent and type the **code** for the menu item, or run the **slash command** with or without loading the agent first - - Note: Running without the agent will not include all specifics of the agent personality or any customizations, but will still have aspects of an expert at what will be done. -- For **validation workflows**: recommend using a different high-quality LLM if available - -**If the request is more conversational, then give a more conversational response, still following the convention of how to portray specific agents and commands. - -Upon presentation of whats next recommendation - return back to the calling process or conversation thread. diff --git a/src/bmm/tasks/workflows.csv b/src/bmm/tasks/workflows.csv deleted file mode 100644 index 84ba7e78..00000000 --- a/src/bmm/tasks/workflows.csv +++ /dev/null @@ -1,26 +0,0 @@ -phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs -0,Document Project,DP,10,_bmad/bmm/workflows/document-project/workflow.yaml,bmad:bmm:document-project,false,analyst,Create Mode,Analyze an existing project to produce useful documentation,project-knowledge,* -0,Tech Spec,TS,20,_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md,bmad:bmm:tech-spec,false,quick-flow-solo-dev,Create Mode,Quick one-off tasks small changes simple apps utilities without extensive planning,planning_artifacts,tech spec -0,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,, -0,Correct Course,CC,40,_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml,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 -1,Brainstorm Project,BP,10,_bmad/core/workflows/brainstorming/workflow.md,bmad:bmm:brainstorming,false,analyst,data=_bmad/bmm/data/project-context-template.md,Expert Guided Facilitation through a single or multiple techniques,planning_artifacts,brainstorming session -1,Research,RS,20,_bmad/bmm/workflows/1-analysis/research/workflow.md,bmad:bmm:research,false,analyst,Create Mode,Choose from or specify market domain competitive analysis or technical research,planning_artifacts|project-knowledge,research documents -1,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 -1,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 -2,Create PRD,CP,10,_bmad/bmm/workflows/2-plan-workflows/prd/workflow.md,bmad:bmm:create-prd,true,pm,Create Mode,Expert led facilitation to produce your Product Requirements Document,planning_artifacts,prd -2,Validate PRD,VP,20,_bmad/bmm/workflows/2-plan-workflows/prd/workflow.md,bmad:bmm:validate-prd,false,pm,Validate Mode,Validate PRD is comprehensive lean well organized and cohesive,planning_artifacts,prd validation report -2,Create UX,CU,30,_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md,bmad:bmm:create-ux,false,ux-designer,Create Mode,Guidance through realizing the plan for your UX,planning_artifacts,ux design -2,Validate UX,VU,40,_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md,bmad:bmm:validate-ux,false,ux-designer,Validate Mode,Validates UX design deliverables,planning_artifacts,ux validation report -3,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 -3,Validate Architecture,VA,20,_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md,bmad:bmm:validate-architecture,false,architect,Validate Mode,Validates architecture completeness,planning_artifacts,architecture validation report -3,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 -3,Validate Epics and Stories,VE,40,_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md,bmad:bmm:validate-epics-and-stories,false,pm,Validate Mode,Validates epics and stories completeness,planning_artifacts,epics validation report -3,Test Design,TD,50,_bmad/bmm/workflows/testarch/test-design/workflow.yaml,bmad:bmm:test-design,false,tea,Create Mode,Create comprehensive test scenarios ahead of development,planning_artifacts,test design -3,Validate Test Design,VT,60,_bmad/bmm/workflows/testarch/test-design/workflow.yaml,bmad:bmm:validate-test-design,false,tea,Validate Mode,Validates test design coverage,planning_artifacts,test design validation report -3,Implementation Readiness,IR,70,_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md,bmad:bmm:implementation-readiness,true,architect,Validate Mode,Ensure PRD UX Architecture and Epics Stories are aligned,planning_artifacts,readiness report -4,Sprint Planning,SP,10,_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml,bmad:bmm:sprint-planning,true,sm,Create Mode,Generate sprint plan for development tasks,implementation_artifacts,sprint status -4,Sprint Status,SS,20,_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml,bmad:bmm:sprint-status,false,sm,Create Mode,Anytime: Summarize sprint status and route to next workflow,, -4,Create Story,CS,30,_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml,bmad:bmm:create-story,true,sm,Create Mode,Story cycle start: Prepare story with context then DS then CR then back to DS if needed or next CS or ER,implementation_artifacts,story -4,Dev Story,DS,40,_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml,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,, -4,Code Review,CR,50,_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml,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,, -4,Retrospective,ER,60,_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml,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-06-complete.md b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md index 0635e771..3540177b 100644 --- a/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +++ b/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md @@ -128,7 +128,7 @@ Recap that the brief captures everything needed to guide subsequent product deve ### 5. Suggest next steps -Execute task `_bmad/bmm/tasks/bmad-help.md` with argument `Validate PRD`. +Execute task `_bmad/core/tasks/bmad-help.md` with argument `Validate PRD`. --- diff --git a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md index 799b6de6..b44f1164 100644 --- a/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +++ b/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md @@ -82,7 +82,7 @@ Update the main workflow status file: ### 3. Suggest Next Steps -Execute task `_bmad/bmm/tasks/bmad-help.md` with argument `Create UX`. +Execute task `_bmad/core/tasks/bmad-help.md` with argument `Create UX`. ### 5. Final Completion Confirmation diff --git a/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-12-complete.md b/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-12-complete.md index 9588a99c..eb50c89a 100644 --- a/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-12-complete.md +++ b/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-12-complete.md @@ -87,7 +87,7 @@ Offer validation workflows to ensure PRD is ready for implementation: ### 4. Suggest Next Workflows -Execute task `_bmad/bmm/tasks/bmad-help.md` with argument `Create PRD`. +Execute task `_bmad/core/tasks/bmad-help.md` with argument `Create PRD`. ### 5. Final Completion Confirmation diff --git a/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-13-report-complete.md b/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-13-report-complete.md index 5b0c4b57..e67112f9 100644 --- a/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-13-report-complete.md +++ b/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-13-report-complete.md @@ -197,7 +197,7 @@ Display: - **IF X (Exit):** - Display: "**Validation Report Saved:** {validationReportPath}" - Display: "**Summary:** {overall status} - {recommendation}" - - Exit and Execute task `_bmad/bmm/tasks/bmad-help.md` with argument `Validate PRD`. + - Exit and Execute task `_bmad/core/tasks/bmad-help.md` with argument `Validate PRD`. - **IF Any other:** Help user, then redisplay menu diff --git a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md b/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md index 2feca5ad..b763d5b3 100644 --- a/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +++ b/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md @@ -115,7 +115,7 @@ The assessment found [number] issues requiring attention. Review the detailed re The implementation readiness workflow is now complete. The report contains all findings and recommendations for the user to consider. -Execute task `_bmad/bmm/tasks/bmad-help.md` with argument `implementation readiness`. +Execute task `_bmad/core/tasks/bmad-help.md` with argument `implementation readiness`. --- diff --git a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md index 22a20d3a..66160ca3 100644 --- a/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +++ b/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md @@ -41,7 +41,7 @@ completedAt: '{{current_date}}' ### 3. Next Steps Guidance -Execute task `_bmad/bmm/tasks/bmad-help.md` with argument `Create Architecture`. +Execute task `_bmad/core/tasks/bmad-help.md` with argument `Create Architecture`. Upon Completion of task output: offer to answer any questions about the Architecture Document. 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 715821ea..fcdf1573 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 @@ -144,6 +144,6 @@ If all validations pass: When C is selected, the workflow is complete and the epics.md is ready for development. -Execute task `_bmad/bmm/tasks/bmad-help.md` with argument `Create Epics and Stories`. +Execute task `_bmad/core/tasks/bmad-help.md` with argument `Create Epics and Stories`. Upon Completion of task output: offer to answer any questions about the Epics and Stories. diff --git a/src/core/module-help.csv b/src/core/module-help.csv new file mode 100644 index 00000000..11555c39 --- /dev/null +++ b/src/core/module-help.csv @@ -0,0 +1,11 @@ +module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs +core,,Advanced Elicitation,AE,10,_bmad/core/workflows/advanced-elicitation/workflow.xml,bmad:advanced-elicitation,false,,,"Apply elicitation methods iteratively to enhance content being generated, presenting options and allowing reshuffle or full method listing for comprehensive content improvement",, +core,,Brainstorming,BS,20,_bmad/core/workflows/brainstorming/workflow.md,bmad:brainstorming,false,analyst,,Facilitate interactive brainstorming sessions using diverse creative techniques and ideation methods,{output_folder}/analysis/brainstorming-session-{{date}}.md,, +core,,Party Mode,PM,30,_bmad/core/workflows/party-mode/workflow.md,bmad:party-mode,false,party-mode facilitator,,Orchestrates group discussions between all installed BMAD agents enabling natural multi-agent conversations,, +core,,bmad-help,BH,40,_bmad/core/tasks/bmad-help.md,bmad:help,false,system,,Get unstuck by showing what workflow steps come next or answering questions about what to do in the BMad Method,, +core,,Index Docs,ID,50,_bmad/core/tasks/index-docs.xml,bmad:index-docs,false,llm,,Generates or updates an index.md of all documents in the specified directory,, +core,,Execute Workflow,WF,60,_bmad/core/tasks/workflow.xml,bmad:workflow,false,llm,,Execute given workflow by loading its configuration following instructions and producing output,, +core,,Shard Document,SD,70,_bmad/core/tasks/shard-doc.xml,bmad:shard-doc,false,llm,,Splits large markdown documents into smaller organized files based on level 2 sections,, +core,,Editorial Review - Prose,EP,80,_bmad/core/tasks/editorial-review-prose.xml,bmad:editorial-review-prose,false,llm,reader_type,Clinical copy-editor that reviews text for communication issues,,"three-column markdown table with suggested fixes", +core,,Editorial Review - Structure,ES,90,_bmad/core/tasks/editorial-review-structure.xml,bmad:editorial-review-structure,false,llm,,Structural editor that proposes cuts reorganization and simplification while preserving comprehension,, +core,,Adversarial Review (General),AR,100,_bmad/core/tasks/review-adversarial-general.xml,bmad:review-adversarial-general,false,llm,,Cynically review content and produce findings,, diff --git a/src/core/tasks/bmad-help.md b/src/core/tasks/bmad-help.md new file mode 100644 index 00000000..9d7f947c --- /dev/null +++ b/src/core/tasks/bmad-help.md @@ -0,0 +1,62 @@ +--- +name: bmad-help +description: Get unstuck by showing what workflow steps come next or answering questions about what to do +standalone: true +--- + +# Task: BMAD Help + +## KEY RULES + +- **Empty `phase` = anytime** — Universal tools work regardless of workflow state +- **Numbered phases indicate sequence** — Phases like `1-discover` → `2-define` → `3-build` → `4-ship` flow in order (naming varies by module) +- **Stay in module** — Guide through the active module's workflow based on phase+sequence ordering +- **Descriptions contain routing** — Read for alternate paths (e.g., "back to previous if fixes needed") +- **`required=true` blocks progress** — Required workflows must complete before proceeding to later phases +- **Artifacts reveal completion** — Search resolved output paths for `outputs` patterns, fuzzy-match found files to workflow rows + +## MODULE DETECTION + +- **Empty `module` column** → universal tools (work across all modules) +- **Named `module`** → module-specific workflows + +Detect the active module from conversation context, recent workflows, or user query keywords. If ambiguous, ask the user. + +## INPUT ANALYSIS + +Determine what was just completed: +- Did someone state they completed something? Proceed as if that was the input. +- Was a workflow just completed in this conversation? Proceed as if that was the input. +- Search resolved artifact locations for files; fuzzy-match to workflow `outputs` patterns. +- If an `index.md` exists, read it for additional context. +- If still unclear, ask: "What workflow did you most recently complete?" + +## EXECUTION + +1. **Load catalog** — Load `{project-root}/_bmad/_config/bmad-help.csv` + +2. **Resolve output locations** — Scan each folder under `_bmad/` (except `_config`) for `config.yaml`. For each workflow row, resolve its `output-location` variables against that module's config so artifact paths can be searched. + +3. **Analyze input** — Task may provide a workflow name/code, conversational phrase, or nothing. Infer what was just completed using INPUT ANALYSIS above. + +4. **Detect active module** — Use MODULE DETECTION above to determine which module the user is working in. + +5. **Present recommendations** — Show next steps based on completed workflows, phase/sequence ordering (KEY RULES), and artifact detection. Format per the following + +## RECOMMENDED OUTPUT FORMAT + + **Optional items first** — List optional workflows until a required step is reached + **Required items next** — List the next required workflow + For each item show: + - Workflow **name** + - **Command** (prefixed with `/`, e.g., `/bmad:example:build-prototype`) + - **Agent** title and display name from the CSV (e.g., "🎨 Alex (Designer)") + - Brief **description** + + ### Additional response output guidance to convey: + - Run each workflow in a **fresh context window** + - Load the agent using (`/` + `agent-command`), or run the workflow command directly + - For **validation workflows**: recommend using a different high-quality LLM if available + - For conversational requests: match the user's tone while presenting clearly + +6. Return to the calling process after presenting recommendations. diff --git a/tools/cli/installers/lib/core/installer.js b/tools/cli/installers/lib/core/installer.js index 02ab01f7..7505fbec 100644 --- a/tools/cli/installers/lib/core/installer.js +++ b/tools/cli/installers/lib/core/installer.js @@ -958,6 +958,11 @@ class Installer { // All content is now installed as modules - no separate custom content handling needed + // Merge all module-help.csv files into bmad-help.csv + spinner.start('Generating workflow help catalog...'); + await this.mergeModuleHelpCatalogs(bmadDir); + spinner.succeed('Workflow help catalog generated'); + // Generate clean config.yaml files for each installed module spinner.start('Generating module configurations...'); await this.generateModuleConfigs(bmadDir, moduleConfigs); @@ -1367,6 +1372,240 @@ class Installer { /** * Private: Create directory structure */ + /** + * Merge all module-help.csv files into a single bmad-help.csv + * Scans all installed modules for module-help.csv and merges them + * Enriches agent info from agent-manifest.csv + * Output is written to _bmad/_config/bmad-help.csv + * @param {string} bmadDir - BMAD installation directory + */ + async mergeModuleHelpCatalogs(bmadDir) { + const allRows = []; + const headerRow = + 'module,phase,name,code,sequence,workflow-file,command,required,agent-name,agent-command,agent-display-name,agent-title,options,description,output-location,outputs'; + + // Load agent manifest for agent info lookup + const agentManifestPath = path.join(bmadDir, '_config', 'agent-manifest.csv'); + const agentInfo = new Map(); // agent-name -> {command, displayName, title+icon} + + if (await fs.pathExists(agentManifestPath)) { + const manifestContent = await fs.readFile(agentManifestPath, 'utf8'); + const lines = manifestContent.split('\n').filter((line) => line.trim()); + + for (const line of lines) { + if (line.startsWith('name,')) continue; // Skip header + + const cols = line.split(','); + if (cols.length >= 4) { + const agentName = cols[0].replaceAll('"', '').trim(); + const displayName = cols[1].replaceAll('"', '').trim(); + const title = cols[2].replaceAll('"', '').trim(); + const icon = cols[3].replaceAll('"', '').trim(); + const module = cols[10] ? cols[10].replaceAll('"', '').trim() : ''; + + // Build agent command: bmad:module:agent:name + const agentCommand = module ? `bmad:${module}:agent:${agentName}` : `bmad:agent:${agentName}`; + + agentInfo.set(agentName, { + command: agentCommand, + displayName: displayName || agentName, + title: icon && title ? `${icon} ${title}` : title || agentName, + }); + } + } + } + + // Get all installed module directories + const entries = await fs.readdir(bmadDir, { withFileTypes: true }); + const installedModules = entries + .filter((entry) => entry.isDirectory() && entry.name !== '_config' && entry.name !== 'docs' && entry.name !== '_memory') + .map((entry) => entry.name); + + // Add core module to scan (it's installed at root level as _config, but we check src/core) + const coreModulePath = getSourcePath('core'); + const modulePaths = new Map(); + + // Map all module source paths + if (await fs.pathExists(coreModulePath)) { + modulePaths.set('core', coreModulePath); + } + + // Map installed module paths + for (const moduleName of installedModules) { + const modulePath = path.join(bmadDir, moduleName); + modulePaths.set(moduleName, modulePath); + } + + // Scan each module for module-help.csv + for (const [moduleName, modulePath] of modulePaths) { + const helpFilePath = path.join(modulePath, 'module-help.csv'); + + if (await fs.pathExists(helpFilePath)) { + try { + const content = await fs.readFile(helpFilePath, 'utf8'); + const lines = content.split('\n').filter((line) => line.trim() && !line.startsWith('#')); + + for (const line of lines) { + // Skip header row + if (line.startsWith('module,')) { + continue; + } + + // Parse the line - handle quoted fields with commas + const columns = this.parseCSVLine(line); + if (columns.length >= 12) { + // Map old schema to new schema + // Old: module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs + // New: module,phase,name,code,sequence,workflow-file,command,required,agent-name,agent-command,agent-display-name,agent-title,options,description,output-location,outputs + + const [ + module, + phase, + name, + code, + sequence, + workflowFile, + command, + required, + agentName, + options, + description, + outputLocation, + outputs, + ] = columns; + + // If module column is empty, set it to this module's name (except for core which stays empty for universal tools) + const finalModule = (!module || module.trim() === '') && moduleName !== 'core' ? moduleName : module || ''; + + // Lookup agent info + const cleanAgentName = agentName ? agentName.trim() : ''; + const agentData = agentInfo.get(cleanAgentName) || { command: '', displayName: '', title: '' }; + + // Build new row with agent info + const newRow = [ + finalModule, + phase || '', + name || '', + code || '', + sequence || '', + workflowFile || '', + command || '', + required || 'false', + cleanAgentName, + agentData.command, + agentData.displayName, + agentData.title, + options || '', + description || '', + outputLocation || '', + outputs || '', + ]; + + allRows.push(newRow.map((c) => this.escapeCSVField(c)).join(',')); + } + } + + if (process.env.BMAD_VERBOSE_INSTALL === 'true') { + console.log(chalk.dim(` Merged module-help from: ${moduleName}`)); + } + } catch (error) { + console.warn(chalk.yellow(` Warning: Failed to read module-help.csv from ${moduleName}:`, error.message)); + } + } + } + + // Sort by module, then phase, then sequence + allRows.sort((a, b) => { + const colsA = this.parseCSVLine(a); + const colsB = this.parseCSVLine(b); + + // Module comparison (empty module/universal tools come first) + const moduleA = (colsA[0] || '').toLowerCase(); + const moduleB = (colsB[0] || '').toLowerCase(); + if (moduleA !== moduleB) { + return moduleA.localeCompare(moduleB); + } + + // Phase comparison + const phaseA = colsA[1] || ''; + const phaseB = colsB[1] || ''; + if (phaseA !== phaseB) { + return phaseA.localeCompare(phaseB); + } + + // Sequence comparison + const seqA = parseInt(colsA[4] || '0', 10); + const seqB = parseInt(colsB[4] || '0', 10); + return seqA - seqB; + }); + + // Write merged catalog + const outputDir = path.join(bmadDir, '_config'); + await fs.ensureDir(outputDir); + const outputPath = path.join(outputDir, 'bmad-help.csv'); + + const mergedContent = [headerRow, ...allRows].join('\n'); + await fs.writeFile(outputPath, mergedContent, 'utf8'); + + // Track the installed file + this.installedFiles.add(outputPath); + + if (process.env.BMAD_VERBOSE_INSTALL === 'true') { + console.log(chalk.dim(` Generated bmad-help.csv: ${allRows.length} workflows`)); + } + } + + /** + * Parse a CSV line, handling quoted fields + * @param {string} line - CSV line to parse + * @returns {Array} Array of field values + */ + parseCSVLine(line) { + const result = []; + let current = ''; + let inQuotes = false; + + for (let i = 0; i < line.length; i++) { + const char = line[i]; + const nextChar = line[i + 1]; + + if (char === '"') { + if (inQuotes && nextChar === '"') { + // Escaped quote + current += '"'; + i++; // Skip next quote + } else { + // Toggle quote mode + inQuotes = !inQuotes; + } + } else if (char === ',' && !inQuotes) { + result.push(current); + current = ''; + } else { + current += char; + } + } + result.push(current); + return result; + } + + /** + * Escape a CSV field if it contains special characters + * @param {string} field - Field value to escape + * @returns {string} Escaped field + */ + escapeCSVField(field) { + if (field === null || field === undefined) { + return ''; + } + const str = String(field); + // If field contains comma, quote, or newline, wrap in quotes and escape inner quotes + if (str.includes(',') || str.includes('"') || str.includes('\n')) { + return `"${str.replaceAll('"', '""')}"`; + } + return str; + } + async createDirectoryStructure(bmadDir) { await fs.ensureDir(bmadDir); await fs.ensureDir(path.join(bmadDir, '_config'));