bmad-method 6.0.0-alpha.12 → 6.0.0-alpha.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/idea_submission.md +1 -1
- package/.github/scripts/discord-helpers.sh +15 -0
- package/.github/workflows/bundle-latest.yaml +79 -27
- package/.github/workflows/discord.yaml +278 -8
- package/.github/workflows/quality.yaml +19 -0
- package/.markdownlint-cli2.yaml +42 -0
- package/.prettierignore +3 -0
- package/CHANGELOG.md +254 -1
- package/CODE_OF_CONDUCT.md +128 -0
- package/README.md +3 -1
- package/bmad-method-6.0.0-alpha.14.tgz +0 -0
- package/docs/agent-customization-guide.md +2 -2
- package/docs/custom-agent-installation.md +58 -90
- package/docs/document-sharding-guide.md +1 -1
- package/docs/ide-info/rovo-dev.md +388 -0
- package/docs/index.md +6 -81
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +1 -1
- package/eslint.config.mjs +14 -0
- package/example-custom-content/README.md +4 -0
- package/example-custom-content/agents/commit-poet/commit-poet.agent.yaml +129 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
- package/example-custom-content/agents/toolsmith/toolsmith.agent.yaml +109 -0
- package/example-custom-content/custom.yaml +3 -0
- package/example-custom-content/workflows/quiz-master/steps/step-01-init.md +168 -0
- package/example-custom-content/workflows/quiz-master/steps/step-02-q1.md +155 -0
- package/example-custom-content/workflows/quiz-master/steps/step-03-q2.md +89 -0
- package/example-custom-content/workflows/quiz-master/steps/step-04-q3.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-05-q4.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-06-q5.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-07-q6.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-08-q7.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-09-q8.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-10-q9.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-11-q10.md +36 -0
- package/example-custom-content/workflows/quiz-master/steps/step-12-results.md +150 -0
- package/example-custom-content/workflows/quiz-master/templates/csv-headers.template +1 -0
- package/example-custom-content/workflows/quiz-master/workflow-plan-quiz-master.md +269 -0
- package/example-custom-content/workflows/quiz-master/workflow.md +54 -0
- package/example-custom-content/workflows/wassup/workflow.md +26 -0
- package/example-custom-module/mwm/README.md +4 -0
- package/example-custom-module/mwm/_module-installer/install-config.yaml +27 -0
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/cognitive-distortions.md +47 -0
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/thought-records.md +17 -0
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml +150 -0
- package/example-custom-module/mwm/agents/crisis-navigator.agent.yaml +137 -0
- package/example-custom-module/mwm/agents/meditation-guide.agent.yaml +137 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/insights.md +13 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/instructions.md +30 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/memories.md +13 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/patterns.md +17 -0
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml +124 -0
- package/example-custom-module/mwm/workflows/cbt-thought-record/README.md +31 -0
- package/example-custom-module/mwm/workflows/cbt-thought-record/workflow.md +45 -0
- package/example-custom-module/mwm/workflows/crisis-support/README.md +31 -0
- package/example-custom-module/mwm/workflows/crisis-support/workflow.md +45 -0
- package/example-custom-module/mwm/workflows/daily-checkin/README.md +32 -0
- package/example-custom-module/mwm/workflows/daily-checkin/workflow.md +45 -0
- package/example-custom-module/mwm/workflows/guided-meditation/README.md +31 -0
- package/example-custom-module/mwm/workflows/guided-meditation/workflow.md +45 -0
- package/example-custom-module/mwm/workflows/wellness-journal/README.md +31 -0
- package/example-custom-module/mwm/workflows/wellness-journal/workflow.md +45 -0
- package/package.json +9 -4
- package/src/core/_module-installer/install-config.yaml +5 -1
- package/src/core/agents/bmad-master.agent.yaml +1 -1
- package/src/core/agents/bmad-web-orchestrator.agent.xml +1 -1
- package/src/core/resources/excalidraw/library-loader.md +2 -2
- package/src/core/tasks/advanced-elicitation-methods.csv +51 -21
- package/src/core/tasks/advanced-elicitation.xml +18 -8
- package/src/core/tasks/workflow.xml +36 -71
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +196 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +121 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +224 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +236 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +208 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +263 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +339 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +302 -0
- package/src/core/workflows/brainstorming/template.md +13 -104
- package/src/core/workflows/brainstorming/workflow.md +51 -0
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +203 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +158 -0
- package/src/core/workflows/party-mode/workflow.md +206 -0
- package/src/modules/bmb/README.md +153 -86
- package/src/modules/bmb/_module-installer/install-config.yaml +4 -9
- package/src/modules/bmb/_module-installer/installer.js +76 -0
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +75 -38
- package/src/modules/bmb/docs/{agent-menu-patterns.md → agents/agent-menu-patterns.md} +6 -6
- package/src/modules/bmb/docs/{expert-agent-architecture.md → agents/expert-agent-architecture.md} +20 -20
- package/src/modules/bmb/docs/agents/kb.csv +0 -0
- package/src/modules/bmb/docs/{module-agent-architecture.md → agents/module-agent-architecture.md} +46 -46
- package/src/modules/bmb/docs/{simple-agent-architecture.md → agents/simple-agent-architecture.md} +7 -3
- package/src/modules/bmb/docs/workflows/architecture.md +220 -0
- package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
- package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
- package/src/modules/bmb/docs/workflows/index.md +45 -0
- package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
- package/src/modules/bmb/docs/workflows/kb.csv +0 -0
- package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +241 -0
- package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +223 -0
- package/src/modules/bmb/docs/workflows/templates/step-file.md +139 -0
- package/src/modules/bmb/docs/workflows/templates/step-template.md +290 -0
- package/src/modules/bmb/docs/workflows/templates/workflow-template.md +104 -0
- package/src/modules/bmb/docs/workflows/templates/workflow.md +58 -0
- package/src/modules/bmb/docs/workflows/terms.md +97 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/README.md +4 -4
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +8 -8
- package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +7 -7
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +176 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +120 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +153 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +29 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +50 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +210 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +231 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +224 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +179 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +197 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +180 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-11-celebrate.md +222 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_commands.md +21 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_persona.md +25 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_purpose_and_type.md +23 -0
- package/src/modules/bmb/workflows/create-agent/workflow.md +91 -0
- package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +155 -0
- package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +169 -0
- package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +217 -0
- package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +267 -0
- package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +228 -0
- package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +233 -0
- package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +296 -0
- package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +228 -0
- package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +186 -0
- package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +308 -0
- package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +336 -0
- package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +335 -0
- package/src/modules/bmb/workflows/create-module/templates/agent.template.md +317 -0
- package/src/modules/bmb/workflows/create-module/templates/install-config.template.yaml +53 -0
- package/src/modules/bmb/workflows/create-module/templates/installer.template.js +47 -0
- package/src/modules/bmb/workflows/create-module/templates/module-plan.template.md +5 -0
- package/src/modules/bmb/workflows/create-module/templates/workflow-plan-template.md +23 -0
- package/src/modules/bmb/workflows/create-module/validation.md +126 -0
- package/src/modules/bmb/workflows/create-module/workflow.md +55 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +157 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +211 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +250 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +216 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +289 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +271 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +308 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +284 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +187 -0
- package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
- package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +217 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
- package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
- package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/checklist.md +0 -1
- package/src/modules/bmgd/agents/game-architect.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-designer.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-dev.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +1 -1
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +8 -8
- package/src/modules/bmm/_module-installer/install-config.yaml +10 -16
- package/src/modules/bmm/agents/analyst.agent.yaml +25 -22
- package/src/modules/bmm/agents/architect.agent.yaml +12 -14
- package/src/modules/bmm/agents/dev.agent.yaml +20 -16
- package/src/modules/bmm/agents/pm.agent.yaml +14 -32
- package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +36 -0
- package/src/modules/bmm/agents/sm.agent.yaml +13 -31
- package/src/modules/bmm/agents/tea.agent.yaml +10 -7
- package/src/modules/bmm/agents/tech-writer.agent.yaml +7 -20
- package/src/modules/bmm/agents/ux-designer.agent.yaml +12 -10
- package/src/modules/bmm/data/README.md +29 -0
- package/src/modules/bmm/data/project-context-template.md +40 -0
- package/src/modules/bmm/docs/README.md +44 -10
- package/src/modules/bmm/docs/agents-guide.md +80 -53
- package/src/modules/bmm/docs/bmad-quick-flow.md +528 -0
- package/src/modules/bmm/docs/brownfield-guide.md +25 -39
- package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
- package/src/modules/bmm/docs/faq.md +6 -39
- package/src/modules/bmm/docs/glossary.md +12 -25
- package/src/modules/bmm/docs/images/README.md +37 -0
- package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +960 -1845
- package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +4 -2
- package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
- package/src/modules/bmm/docs/quick-spec-flow.md +5 -5
- package/src/modules/bmm/docs/quick-start.md +9 -25
- package/src/modules/bmm/docs/scale-adaptive-system.md +5 -5
- package/src/modules/bmm/docs/test-architecture.md +90 -24
- package/src/modules/bmm/docs/troubleshooting.md +680 -0
- package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
- package/src/modules/bmm/docs/workflows-analysis.md +36 -140
- package/src/modules/bmm/docs/workflows-implementation.md +175 -160
- package/src/modules/bmm/docs/workflows-planning.md +51 -212
- package/src/modules/bmm/docs/workflows-solutioning.md +26 -71
- package/src/modules/bmm/tasks/daily-standup.xml +85 -0
- package/src/modules/bmm/teams/default-party.csv +15 -14
- package/src/modules/bmm/teams/team-fullstack.yaml +0 -1
- package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
- package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
- package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
- package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +1 -1
- package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
- package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
- package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
- package/src/modules/bmm/testarch/knowledge/log.md +294 -0
- package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
- package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
- package/src/modules/bmm/testarch/knowledge/overview.md +284 -0
- package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
- package/src/modules/bmm/testarch/tea-index.csv +11 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/product-brief.template.md +8 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01-init.md +192 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01b-continue.md +167 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-02-vision.md +203 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-03-users.md +206 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-04-metrics.md +209 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-05-scope.md +223 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-06-complete.md +199 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.md +58 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +442 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +181 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +236 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +199 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +248 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +258 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +176 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +474 -0
- package/src/modules/bmm/workflows/1-analysis/research/research.template.md +15 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +238 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +247 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +201 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +238 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +485 -0
- package/src/modules/bmm/workflows/1-analysis/research/workflow.md +204 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +159 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +209 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +226 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +59 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +12 -200
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +243 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +165 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +420 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +289 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +290 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +270 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +261 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +257 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +298 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +269 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +293 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-decision-template.md +13 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/data/domain-complexity.csv +11 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/data/project-types.csv +7 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01-init.md +194 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01b-continue.md +163 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-02-context.md +223 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-03-starter.md +330 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-04-decisions.md +317 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-05-patterns.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-06-structure.md +378 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-07-validation.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-08-complete.md +351 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.md +49 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +258 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +232 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +271 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +144 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-01-document-discovery.md +189 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-02-prd-analysis.md +177 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-03-epic-coverage-validation.md +178 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-04-ux-alignment.md +138 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-05-epic-quality-review.md +251 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-06-final-assessment.md +132 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.md +54 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +2 -1
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +224 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +4 -11
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +354 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +21 -34
- package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +406 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +6 -37
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +3 -3
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +19 -21
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +11 -10
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +174 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +26 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/checklist.md +25 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/instructions.md +202 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +33 -0
- package/src/modules/bmm/workflows/document-project/instructions.md +1 -1
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +2 -2
- package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +20 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +193 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
- package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
- package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +1 -1
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +23 -3
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +23 -2
- package/src/modules/bmm/workflows/testarch/ci/checklist.md +1 -1
- package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +36 -3
- package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +25 -4
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +20 -3
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +27 -1
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +8 -2
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +29 -9
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +66 -54
- package/src/modules/bmm/workflows/workflow-status/instructions.md +11 -4
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +4 -8
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +4 -8
- package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +4 -8
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +4 -9
- package/src/modules/cis/agents/README.md +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +3 -2
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +2 -1
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +2 -1
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +2 -1
- package/src/modules/cis/agents/presentation-master.agent.yaml +3 -2
- package/src/modules/cis/agents/storyteller.agent.yaml +2 -1
- package/src/modules/cis/teams/default-party.csv +6 -5
- package/src/utility/models/agent-activation-ide.xml +4 -4
- package/src/utility/models/agent-activation-web.xml +1 -11
- package/src/utility/models/fragments/activation-rules.xml +5 -6
- package/src/utility/models/fragments/handler-exec.xml +6 -5
- package/src/utility/models/fragments/handler-multi.xml +14 -0
- package/test/README.md +1 -1
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
- package/tools/cli/README.md +4 -3
- package/tools/cli/bundlers/web-bundler.js +3 -14
- package/tools/cli/commands/build.js +9 -184
- package/tools/cli/commands/install.js +42 -2
- package/tools/cli/installers/lib/core/config-collector.js +94 -10
- package/tools/cli/installers/lib/core/installer.js +389 -55
- package/tools/cli/installers/lib/core/manifest-generator.js +91 -30
- package/tools/cli/installers/lib/core/post-install-sidecar-replacement.js +79 -0
- package/tools/cli/installers/lib/custom/handler.js +266 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +10 -0
- package/tools/cli/installers/lib/ide/antigravity.js +51 -7
- package/tools/cli/installers/lib/ide/auggie.js +72 -7
- package/tools/cli/installers/lib/ide/claude-code.js +1 -6
- package/tools/cli/installers/lib/ide/cline.js +49 -0
- package/tools/cli/installers/lib/ide/codex.js +2 -2
- package/tools/cli/installers/lib/ide/crush.js +66 -6
- package/tools/cli/installers/lib/ide/cursor.js +29 -13
- package/tools/cli/installers/lib/ide/gemini.js +96 -1
- package/tools/cli/installers/lib/ide/github-copilot.js +59 -48
- package/tools/cli/installers/lib/ide/iflow.js +67 -1
- package/tools/cli/installers/lib/ide/kilo.js +74 -0
- package/tools/cli/installers/lib/ide/kiro-cli.js +327 -0
- package/tools/cli/installers/lib/ide/opencode.js +3 -3
- package/tools/cli/installers/lib/ide/qwen.js +54 -0
- package/tools/cli/installers/lib/ide/roo.js +145 -138
- package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +8 -2
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +34 -19
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +18 -14
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +1 -1
- package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
- package/tools/cli/installers/lib/ide/trae.js +47 -0
- package/tools/cli/installers/lib/modules/manager.js +486 -53
- package/tools/cli/lib/agent/compiler.js +210 -27
- package/tools/cli/lib/agent/installer.js +140 -30
- package/tools/cli/lib/agent-analyzer.js +46 -18
- package/tools/cli/lib/config.js +2 -1
- package/tools/cli/lib/ui.js +269 -13
- package/tools/cli/lib/yaml-xml-builder.js +123 -39
- package/tools/platform-codes.yaml +12 -0
- package/tools/schema/agent.js +229 -20
- package/tools/validate-svg-changes.sh +356 -0
- package/src/core/tasks/adv-elicit-methods.csv +0 -39
- package/src/core/workflows/brainstorming/README.md +0 -261
- package/src/core/workflows/brainstorming/instructions.md +0 -315
- package/src/core/workflows/brainstorming/workflow.yaml +0 -38
- package/src/core/workflows/party-mode/instructions.md +0 -183
- package/src/core/workflows/party-mode/workflow.yaml +0 -28
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -142
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
- package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
- package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
- package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -30
- package/src/modules/bmb/workflows/create-agent/instructions.md +0 -519
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -55
- package/src/modules/bmb/workflows/create-module/README.md +0 -229
- package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
- package/src/modules/bmb/workflows/create-module/checklist.md +0 -235
- package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
- package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
- package/src/modules/bmb/workflows/create-module/instructions.md +0 -577
- package/src/modules/bmb/workflows/create-module/module-structure.md +0 -400
- package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -52
- package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
- package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
- package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
- package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -725
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1327
- package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -15
- package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -61
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -41
- package/src/modules/bmb/workflows/edit-agent/README.md +0 -239
- package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -654
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -49
- package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
- package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -27
- package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +0 -22
- package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
- package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
- package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
- package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +0 -180
- package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -56
- package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -181
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -61
- package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
- package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -299
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
- package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -347
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -245
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -62
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -93
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -78
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -60
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
- package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
- package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -100
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md +0 -80
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +0 -616
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +0 -63
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/checklist.md +0 -169
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +0 -332
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/template.md +0 -146
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +0 -64
- package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -58
- package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
- package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -63
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -28
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -25
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
- package/tools/cli/commands/agent-install.js +0 -409
- /package/src/modules/bmb/docs/{agent-compilation.md → agents/agent-compilation.md} +0 -0
- /package/src/modules/bmb/docs/{index.md → agents/index.md} +0 -0
- /package/src/modules/bmb/docs/{understanding-agent-types.md → agents/understanding-agent-types.md} +0 -0
- /package/src/modules/bmb/reference/{readme.md → README.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{agent-validation-checklist.md → data/agent-validation-checklist.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{brainstorm-context.md → data/brainstorm-context.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{communication-presets.csv → data/communication-presets.csv} +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/workflow.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/checklist.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/template.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/workflow.yaml +0 -0
- /package/src/modules/bmm/{workflows/techdoc → data}/documentation-standards.md +0 -0
|
@@ -49,9 +49,10 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
49
49
|
* Build simple activation block for custom agents
|
|
50
50
|
* @param {Array} criticalActions - Agent-specific critical actions
|
|
51
51
|
* @param {Array} menuItems - Menu items to determine which handlers to include
|
|
52
|
+
* @param {string} deploymentType - 'ide' or 'web' - filters commands based on ide-only/web-only flags
|
|
52
53
|
* @returns {string} Activation XML
|
|
53
54
|
*/
|
|
54
|
-
function buildSimpleActivation(criticalActions = [], menuItems = []) {
|
|
55
|
+
function buildSimpleActivation(criticalActions = [], menuItems = [], deploymentType = 'ide') {
|
|
55
56
|
let activation = '<activation critical="MANDATORY">\n';
|
|
56
57
|
|
|
57
58
|
let stepNum = 1;
|
|
@@ -75,13 +76,28 @@ function buildSimpleActivation(criticalActions = [], menuItems = []) {
|
|
|
75
76
|
activation += ` <step n="${stepNum++}">On user input: Number → execute menu item[n] | Text → case-insensitive substring match | Multiple matches → ask user
|
|
76
77
|
to clarify | No match → show "Not recognized"</step>\n`;
|
|
77
78
|
|
|
78
|
-
//
|
|
79
|
+
// Filter menu items based on deployment type
|
|
80
|
+
const filteredMenuItems = menuItems.filter((item) => {
|
|
81
|
+
// Skip web-only commands for IDE deployment
|
|
82
|
+
if (deploymentType === 'ide' && item['web-only'] === true) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
// Skip ide-only commands for web deployment
|
|
86
|
+
if (deploymentType === 'web' && item['ide-only'] === true) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Detect which handlers are actually used in the filtered menu
|
|
79
93
|
const usedHandlers = new Set();
|
|
80
|
-
for (const item of
|
|
94
|
+
for (const item of filteredMenuItems) {
|
|
81
95
|
if (item.action) usedHandlers.add('action');
|
|
82
96
|
if (item.workflow) usedHandlers.add('workflow');
|
|
83
97
|
if (item.exec) usedHandlers.add('exec');
|
|
84
98
|
if (item.tmpl) usedHandlers.add('tmpl');
|
|
99
|
+
if (item.data) usedHandlers.add('data');
|
|
100
|
+
if (item['validate-workflow']) usedHandlers.add('validate-workflow');
|
|
85
101
|
}
|
|
86
102
|
|
|
87
103
|
// Only include menu-handlers section if handlers are used
|
|
@@ -124,6 +140,25 @@ function buildSimpleActivation(criticalActions = [], menuItems = []) {
|
|
|
124
140
|
</handler>\n`;
|
|
125
141
|
}
|
|
126
142
|
|
|
143
|
+
if (usedHandlers.has('data')) {
|
|
144
|
+
activation += ` <handler type="data">
|
|
145
|
+
When menu item has: data="path/to/x.json|yaml|yml"
|
|
146
|
+
Load the file, parse as JSON/YAML, make available as {data} to subsequent operations
|
|
147
|
+
</handler>\n`;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (usedHandlers.has('validate-workflow')) {
|
|
151
|
+
activation += ` <handler type="validate-workflow">
|
|
152
|
+
When menu item has: validate-workflow="path/to/workflow.yaml"
|
|
153
|
+
1. CRITICAL: Always LOAD {project-root}/{bmad_folder}/core/tasks/validate-workflow.xml
|
|
154
|
+
2. Read the complete file - this is the CORE OS for validating BMAD workflows
|
|
155
|
+
3. Pass the workflow.yaml path as 'workflow' parameter to those instructions
|
|
156
|
+
4. Pass any checklist.md from the workflow location as 'checklist' parameter if available
|
|
157
|
+
5. Execute validate-workflow.xml instructions precisely following all steps
|
|
158
|
+
6. Generate validation report with thorough analysis
|
|
159
|
+
</handler>\n`;
|
|
160
|
+
}
|
|
161
|
+
|
|
127
162
|
activation += ` </handlers>
|
|
128
163
|
</menu-handlers>\n`;
|
|
129
164
|
}
|
|
@@ -208,42 +243,141 @@ function buildPromptsXml(prompts) {
|
|
|
208
243
|
|
|
209
244
|
/**
|
|
210
245
|
* Build menu XML section
|
|
246
|
+
* Supports both legacy and multi format menu items
|
|
247
|
+
* Multi items display as a single menu item with nested handlers
|
|
211
248
|
* @param {Array} menuItems - Menu items
|
|
212
249
|
* @returns {string} Menu XML
|
|
213
250
|
*/
|
|
214
251
|
function buildMenuXml(menuItems) {
|
|
215
252
|
let xml = ' <menu>\n';
|
|
216
253
|
|
|
217
|
-
// Always inject
|
|
218
|
-
xml += ` <item cmd="*
|
|
254
|
+
// Always inject menu display option first
|
|
255
|
+
xml += ` <item cmd="*menu">[M] Redisplay Menu Options</item>\n`;
|
|
219
256
|
|
|
220
257
|
// Add user-defined menu items
|
|
221
258
|
if (menuItems && menuItems.length > 0) {
|
|
222
259
|
for (const item of menuItems) {
|
|
223
|
-
|
|
224
|
-
if (
|
|
225
|
-
|
|
260
|
+
// Handle multi format menu items with nested handlers
|
|
261
|
+
if (item.multi && item.triggers && Array.isArray(item.triggers)) {
|
|
262
|
+
xml += ` <item type="multi">${escapeXml(item.multi)}\n`;
|
|
263
|
+
xml += buildNestedHandlers(item.triggers);
|
|
264
|
+
xml += ` </item>\n`;
|
|
265
|
+
}
|
|
266
|
+
// Handle legacy format menu items
|
|
267
|
+
else if (item.trigger) {
|
|
268
|
+
// For legacy items, keep using cmd with *<trigger> format
|
|
269
|
+
let trigger = item.trigger || '';
|
|
270
|
+
if (!trigger.startsWith('*')) {
|
|
271
|
+
trigger = '*' + trigger;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const attrs = [`cmd="${trigger}"`];
|
|
275
|
+
|
|
276
|
+
// Add handler attributes
|
|
277
|
+
if (item.workflow) attrs.push(`workflow="${item.workflow}"`);
|
|
278
|
+
if (item.exec) attrs.push(`exec="${item.exec}"`);
|
|
279
|
+
if (item.tmpl) attrs.push(`tmpl="${item.tmpl}"`);
|
|
280
|
+
if (item.data) attrs.push(`data="${item.data}"`);
|
|
281
|
+
if (item.action) attrs.push(`action="${item.action}"`);
|
|
282
|
+
|
|
283
|
+
xml += ` <item ${attrs.join(' ')}>${escapeXml(item.description || '')}</item>\n`;
|
|
226
284
|
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
227
287
|
|
|
228
|
-
|
|
288
|
+
// Always inject dismiss last
|
|
289
|
+
xml += ` <item cmd="*dismiss">[D] Dismiss Agent</item>\n`;
|
|
229
290
|
|
|
230
|
-
|
|
231
|
-
if (item.workflow) attrs.push(`workflow="${item.workflow}"`);
|
|
232
|
-
if (item.exec) attrs.push(`exec="${item.exec}"`);
|
|
233
|
-
if (item.tmpl) attrs.push(`tmpl="${item.tmpl}"`);
|
|
234
|
-
if (item.data) attrs.push(`data="${item.data}"`);
|
|
235
|
-
if (item.action) attrs.push(`action="${item.action}"`);
|
|
291
|
+
xml += ' </menu>\n';
|
|
236
292
|
|
|
237
|
-
|
|
293
|
+
return xml;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Build nested handlers for multi format menu items
|
|
298
|
+
* @param {Array} triggers - Triggers array from multi format
|
|
299
|
+
* @returns {string} Handler XML
|
|
300
|
+
*/
|
|
301
|
+
function buildNestedHandlers(triggers) {
|
|
302
|
+
let xml = '';
|
|
303
|
+
|
|
304
|
+
for (const triggerGroup of triggers) {
|
|
305
|
+
for (const [triggerName, execArray] of Object.entries(triggerGroup)) {
|
|
306
|
+
// Build trigger with * prefix
|
|
307
|
+
let trigger = triggerName.startsWith('*') ? triggerName : '*' + triggerName;
|
|
308
|
+
|
|
309
|
+
// Extract the relevant execution data
|
|
310
|
+
const execData = processExecArray(execArray);
|
|
311
|
+
|
|
312
|
+
// For nested handlers in multi items, we use match attribute for fuzzy matching
|
|
313
|
+
const attrs = [`match="${escapeXml(execData.description || '')}"`];
|
|
314
|
+
|
|
315
|
+
// Add handler attributes based on exec data
|
|
316
|
+
if (execData.route) attrs.push(`exec="${execData.route}"`);
|
|
317
|
+
if (execData.workflow) attrs.push(`workflow="${execData.workflow}"`);
|
|
318
|
+
if (execData['validate-workflow']) attrs.push(`validate-workflow="${execData['validate-workflow']}"`);
|
|
319
|
+
if (execData.action) attrs.push(`action="${execData.action}"`);
|
|
320
|
+
if (execData.data) attrs.push(`data="${execData.data}"`);
|
|
321
|
+
if (execData.tmpl) attrs.push(`tmpl="${execData.tmpl}"`);
|
|
322
|
+
// Only add type if it's not 'exec' (exec is already implied by the exec attribute)
|
|
323
|
+
if (execData.type && execData.type !== 'exec') attrs.push(`type="${execData.type}"`);
|
|
324
|
+
|
|
325
|
+
xml += ` <handler ${attrs.join(' ')}></handler>\n`;
|
|
238
326
|
}
|
|
239
327
|
}
|
|
240
328
|
|
|
241
|
-
|
|
242
|
-
|
|
329
|
+
return xml;
|
|
330
|
+
}
|
|
243
331
|
|
|
244
|
-
|
|
332
|
+
/**
|
|
333
|
+
* Process the execution array from multi format triggers
|
|
334
|
+
* Extracts relevant data for XML attributes
|
|
335
|
+
* @param {Array} execArray - Array of execution objects
|
|
336
|
+
* @returns {Object} Processed execution data
|
|
337
|
+
*/
|
|
338
|
+
function processExecArray(execArray) {
|
|
339
|
+
const result = {
|
|
340
|
+
description: '',
|
|
341
|
+
route: null,
|
|
342
|
+
workflow: null,
|
|
343
|
+
data: null,
|
|
344
|
+
action: null,
|
|
345
|
+
type: null,
|
|
346
|
+
};
|
|
245
347
|
|
|
246
|
-
|
|
348
|
+
if (!Array.isArray(execArray)) {
|
|
349
|
+
return result;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
for (const exec of execArray) {
|
|
353
|
+
if (exec.input) {
|
|
354
|
+
// Use input as description if no explicit description is provided
|
|
355
|
+
result.description = exec.input;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
if (exec.route) {
|
|
359
|
+
// Determine if it's a workflow or exec based on file extension or context
|
|
360
|
+
if (exec.route.endsWith('.yaml') || exec.route.endsWith('.yml')) {
|
|
361
|
+
result.workflow = exec.route;
|
|
362
|
+
} else {
|
|
363
|
+
result.route = exec.route;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
if (exec.data !== null && exec.data !== undefined) {
|
|
368
|
+
result.data = exec.data;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
if (exec.action) {
|
|
372
|
+
result.action = exec.action;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
if (exec.type) {
|
|
376
|
+
result.type = exec.type;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
return result;
|
|
247
381
|
}
|
|
248
382
|
|
|
249
383
|
/**
|
|
@@ -275,8 +409,8 @@ function compileToXml(agentYaml, agentName = '', targetPath = '') {
|
|
|
275
409
|
|
|
276
410
|
xml += `<agent ${agentAttrs.join(' ')}>\n`;
|
|
277
411
|
|
|
278
|
-
// Activation block - pass menu items to determine which handlers to include
|
|
279
|
-
xml += buildSimpleActivation(agent.critical_actions || [], agent.menu || []);
|
|
412
|
+
// Activation block - pass menu items and deployment type to determine which handlers to include
|
|
413
|
+
xml += buildSimpleActivation(agent.critical_actions || [], agent.menu || [], 'ide');
|
|
280
414
|
|
|
281
415
|
// Persona section
|
|
282
416
|
xml += buildPersonaXml(agent.persona);
|
|
@@ -304,9 +438,10 @@ function compileToXml(agentYaml, agentName = '', targetPath = '') {
|
|
|
304
438
|
* @param {Object} answers - Answers from install_config questions (or defaults)
|
|
305
439
|
* @param {string} agentName - Optional final agent name (user's custom persona name)
|
|
306
440
|
* @param {string} targetPath - Optional target path for agent ID
|
|
441
|
+
* @param {Object} options - Additional options including config
|
|
307
442
|
* @returns {Object} { xml: string, metadata: Object }
|
|
308
443
|
*/
|
|
309
|
-
function compileAgent(yamlContent, answers = {}, agentName = '', targetPath = '') {
|
|
444
|
+
function compileAgent(yamlContent, answers = {}, agentName = '', targetPath = '', options = {}) {
|
|
310
445
|
// Parse YAML
|
|
311
446
|
const agentYaml = yaml.parse(yamlContent);
|
|
312
447
|
|
|
@@ -332,14 +467,22 @@ function compileAgent(yamlContent, answers = {}, agentName = '', targetPath = ''
|
|
|
332
467
|
finalAnswers = { ...defaults, ...answers };
|
|
333
468
|
}
|
|
334
469
|
|
|
470
|
+
// Add agent_sidecar_folder to answers if provided in config
|
|
471
|
+
if (options.config && options.config.agent_sidecar_folder) {
|
|
472
|
+
finalAnswers.agent_sidecar_folder = options.config.agent_sidecar_folder;
|
|
473
|
+
}
|
|
474
|
+
|
|
335
475
|
// Process templates with answers
|
|
336
476
|
const processedYaml = processAgentYaml(agentYaml, finalAnswers);
|
|
337
477
|
|
|
338
478
|
// Strip install_config from output
|
|
339
479
|
const cleanYaml = stripInstallConfig(processedYaml);
|
|
340
480
|
|
|
341
|
-
//
|
|
342
|
-
|
|
481
|
+
// Replace {agent_sidecar_folder} in XML content
|
|
482
|
+
let xml = compileToXml(cleanYaml, agentName, targetPath);
|
|
483
|
+
if (finalAnswers.agent_sidecar_folder) {
|
|
484
|
+
xml = xml.replaceAll('{agent_sidecar_folder}', finalAnswers.agent_sidecar_folder);
|
|
485
|
+
}
|
|
343
486
|
|
|
344
487
|
return {
|
|
345
488
|
xml,
|
|
@@ -348,10 +491,39 @@ function compileAgent(yamlContent, answers = {}, agentName = '', targetPath = ''
|
|
|
348
491
|
};
|
|
349
492
|
}
|
|
350
493
|
|
|
494
|
+
/**
|
|
495
|
+
* Process TTS injection markers in content
|
|
496
|
+
* @param {string} content - Content to process
|
|
497
|
+
* @param {boolean} enableAgentVibes - Whether AgentVibes is enabled
|
|
498
|
+
* @returns {Object} { content: string, hadInjection: boolean }
|
|
499
|
+
*/
|
|
500
|
+
function processTTSInjectionPoints(content, enableAgentVibes) {
|
|
501
|
+
const hasAgentTTS = content.includes('<!-- TTS_INJECTION:agent-tts -->');
|
|
502
|
+
|
|
503
|
+
if (enableAgentVibes && hasAgentTTS) {
|
|
504
|
+
// Replace agent-tts injection marker with TTS rule
|
|
505
|
+
content = content.replaceAll(
|
|
506
|
+
'<!-- TTS_INJECTION:agent-tts -->',
|
|
507
|
+
`- When responding to user messages, speak your responses using TTS:
|
|
508
|
+
Call: \`.claude/hooks/bmad-speak.sh '{agent-id}' '{response-text}'\` after each response
|
|
509
|
+
Replace {agent-id} with YOUR agent ID from <agent id="..."> tag at top of this file
|
|
510
|
+
Replace {response-text} with the text you just output to the user
|
|
511
|
+
IMPORTANT: Use single quotes as shown - do NOT escape special characters like ! or $ inside single quotes
|
|
512
|
+
Run in background (&) to avoid blocking`,
|
|
513
|
+
);
|
|
514
|
+
return { content, hadInjection: true };
|
|
515
|
+
} else if (!enableAgentVibes && hasAgentTTS) {
|
|
516
|
+
// Strip injection markers when disabled
|
|
517
|
+
content = content.replaceAll(/<!-- TTS_INJECTION:agent-tts -->\n?/g, '');
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
return { content, hadInjection: false };
|
|
521
|
+
}
|
|
522
|
+
|
|
351
523
|
/**
|
|
352
524
|
* Compile agent file to .md
|
|
353
525
|
* @param {string} yamlPath - Path to agent YAML file
|
|
354
|
-
* @param {Object} options - { answers: {}, outputPath: string }
|
|
526
|
+
* @param {Object} options - { answers: {}, outputPath: string, enableAgentVibes: boolean }
|
|
355
527
|
* @returns {Object} Compilation result
|
|
356
528
|
*/
|
|
357
529
|
function compileAgentFile(yamlPath, options = {}) {
|
|
@@ -367,13 +539,24 @@ function compileAgentFile(yamlPath, options = {}) {
|
|
|
367
539
|
outputPath = path.join(dir, `${basename}.md`);
|
|
368
540
|
}
|
|
369
541
|
|
|
542
|
+
// Process TTS injection points if enableAgentVibes option is provided
|
|
543
|
+
let xml = result.xml;
|
|
544
|
+
let ttsInjected = false;
|
|
545
|
+
if (options.enableAgentVibes !== undefined) {
|
|
546
|
+
const ttsResult = processTTSInjectionPoints(xml, options.enableAgentVibes);
|
|
547
|
+
xml = ttsResult.content;
|
|
548
|
+
ttsInjected = ttsResult.hadInjection;
|
|
549
|
+
}
|
|
550
|
+
|
|
370
551
|
// Write compiled XML
|
|
371
|
-
fs.writeFileSync(outputPath,
|
|
552
|
+
fs.writeFileSync(outputPath, xml, 'utf8');
|
|
372
553
|
|
|
373
554
|
return {
|
|
374
555
|
...result,
|
|
556
|
+
xml,
|
|
375
557
|
outputPath,
|
|
376
558
|
sourcePath: yamlPath,
|
|
559
|
+
ttsInjected,
|
|
377
560
|
};
|
|
378
561
|
}
|
|
379
562
|
|
|
@@ -46,7 +46,7 @@ function resolvePath(pathStr, context) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
|
-
* Discover available agents in the custom agent location
|
|
49
|
+
* Discover available agents in the custom agent location recursively
|
|
50
50
|
* @param {string} searchPath - Path to search for agents
|
|
51
51
|
* @returns {Array} List of agent info objects
|
|
52
52
|
*/
|
|
@@ -56,35 +56,58 @@ function discoverAgents(searchPath) {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
const agents = [];
|
|
59
|
-
const entries = fs.readdirSync(searchPath, { withFileTypes: true });
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
// Check for agent with sidecar (folder containing .agent.yaml)
|
|
74
|
-
const yamlFiles = fs.readdirSync(fullPath).filter((f) => f.endsWith('.agent.yaml'));
|
|
75
|
-
if (yamlFiles.length === 1) {
|
|
76
|
-
const agentYamlPath = path.join(fullPath, yamlFiles[0]);
|
|
60
|
+
// Helper function to recursively search
|
|
61
|
+
function searchDirectory(dir, relativePath = '') {
|
|
62
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
63
|
+
|
|
64
|
+
for (const entry of entries) {
|
|
65
|
+
const fullPath = path.join(dir, entry.name);
|
|
66
|
+
const agentRelativePath = relativePath ? path.join(relativePath, entry.name) : entry.name;
|
|
67
|
+
|
|
68
|
+
if (entry.isFile() && entry.name.endsWith('.agent.yaml')) {
|
|
69
|
+
// Simple agent (single file)
|
|
70
|
+
// The agent name is based on the filename
|
|
71
|
+
const agentName = entry.name.replace('.agent.yaml', '');
|
|
77
72
|
agents.push({
|
|
78
|
-
type: '
|
|
79
|
-
name:
|
|
73
|
+
type: 'simple',
|
|
74
|
+
name: agentName,
|
|
80
75
|
path: fullPath,
|
|
81
|
-
yamlFile:
|
|
82
|
-
|
|
76
|
+
yamlFile: fullPath,
|
|
77
|
+
relativePath: agentRelativePath.replace('.agent.yaml', ''),
|
|
83
78
|
});
|
|
79
|
+
} else if (entry.isDirectory()) {
|
|
80
|
+
// Check if this directory contains an .agent.yaml file
|
|
81
|
+
try {
|
|
82
|
+
const dirContents = fs.readdirSync(fullPath);
|
|
83
|
+
const yamlFiles = dirContents.filter((f) => f.endsWith('.agent.yaml'));
|
|
84
|
+
|
|
85
|
+
if (yamlFiles.length > 0) {
|
|
86
|
+
// Found .agent.yaml files in this directory
|
|
87
|
+
for (const yamlFile of yamlFiles) {
|
|
88
|
+
const agentYamlPath = path.join(fullPath, yamlFile);
|
|
89
|
+
const agentName = path.basename(yamlFile, '.agent.yaml');
|
|
90
|
+
|
|
91
|
+
agents.push({
|
|
92
|
+
type: 'expert',
|
|
93
|
+
name: agentName,
|
|
94
|
+
path: fullPath,
|
|
95
|
+
yamlFile: agentYamlPath,
|
|
96
|
+
relativePath: agentRelativePath,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
} else {
|
|
100
|
+
// No .agent.yaml in this directory, recurse deeper
|
|
101
|
+
searchDirectory(fullPath, agentRelativePath);
|
|
102
|
+
}
|
|
103
|
+
} catch {
|
|
104
|
+
// Skip directories we can't read
|
|
105
|
+
}
|
|
84
106
|
}
|
|
85
107
|
}
|
|
86
108
|
}
|
|
87
109
|
|
|
110
|
+
searchDirectory(searchPath);
|
|
88
111
|
return agents;
|
|
89
112
|
}
|
|
90
113
|
|
|
@@ -103,12 +126,15 @@ function loadAgentConfig(yamlPath) {
|
|
|
103
126
|
// These take precedence over defaults
|
|
104
127
|
const savedAnswers = agentYaml?.saved_answers || {};
|
|
105
128
|
|
|
129
|
+
const metadata = agentYaml?.agent?.metadata || {};
|
|
130
|
+
|
|
106
131
|
return {
|
|
107
132
|
yamlContent: content,
|
|
108
133
|
agentYaml,
|
|
109
134
|
installConfig,
|
|
110
135
|
defaults: { ...defaults, ...savedAnswers }, // saved_answers override defaults
|
|
111
|
-
metadata
|
|
136
|
+
metadata,
|
|
137
|
+
hasSidecar: metadata.hasSidecar === true,
|
|
112
138
|
};
|
|
113
139
|
}
|
|
114
140
|
|
|
@@ -208,9 +234,10 @@ async function promptInstallQuestions(installConfig, defaults, presetAnswers = {
|
|
|
208
234
|
* @param {Object} agentInfo - Agent discovery info
|
|
209
235
|
* @param {Object} answers - User answers for install_config
|
|
210
236
|
* @param {string} targetPath - Target installation directory
|
|
237
|
+
* @param {Object} options - Additional options including config
|
|
211
238
|
* @returns {Object} Installation result
|
|
212
239
|
*/
|
|
213
|
-
function installAgent(agentInfo, answers, targetPath) {
|
|
240
|
+
function installAgent(agentInfo, answers, targetPath, options = {}) {
|
|
214
241
|
// Compile the agent
|
|
215
242
|
const { xml, metadata, processedYaml } = compileAgent(fs.readFileSync(agentInfo.yamlFile, 'utf8'), answers);
|
|
216
243
|
|
|
@@ -237,11 +264,27 @@ function installAgent(agentInfo, answers, targetPath) {
|
|
|
237
264
|
sidecarCopied: false,
|
|
238
265
|
};
|
|
239
266
|
|
|
240
|
-
//
|
|
241
|
-
if (agentInfo.hasSidecar && agentInfo.type === 'expert') {
|
|
242
|
-
|
|
267
|
+
// Handle sidecar files for agents with hasSidecar flag
|
|
268
|
+
if (agentInfo.hasSidecar === true && agentInfo.type === 'expert') {
|
|
269
|
+
// Get agent sidecar folder from config or use default
|
|
270
|
+
const agentSidecarFolder = options.config?.agent_sidecar_folder || '{project-root}/.myagent-data';
|
|
271
|
+
|
|
272
|
+
// Resolve path variables
|
|
273
|
+
const resolvedSidecarFolder = agentSidecarFolder
|
|
274
|
+
.replaceAll('{project-root}', options.projectRoot || process.cwd())
|
|
275
|
+
.replaceAll('{bmad_folder}', options.bmadFolder || '.bmad');
|
|
276
|
+
|
|
277
|
+
// Create sidecar directory for this agent
|
|
278
|
+
const agentSidecarDir = path.join(resolvedSidecarFolder, agentFolderName);
|
|
279
|
+
if (!fs.existsSync(agentSidecarDir)) {
|
|
280
|
+
fs.mkdirSync(agentSidecarDir, { recursive: true });
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Find and copy sidecar folder
|
|
284
|
+
const sidecarFiles = copyAgentSidecarFiles(agentInfo.path, agentSidecarDir, agentInfo.yamlFile);
|
|
243
285
|
result.sidecarCopied = true;
|
|
244
286
|
result.sidecarFiles = sidecarFiles;
|
|
287
|
+
result.sidecarDir = agentSidecarDir;
|
|
245
288
|
}
|
|
246
289
|
|
|
247
290
|
return result;
|
|
@@ -285,6 +328,62 @@ function copySidecarFiles(sourceDir, targetDir, excludeYaml) {
|
|
|
285
328
|
return copied;
|
|
286
329
|
}
|
|
287
330
|
|
|
331
|
+
/**
|
|
332
|
+
* Find and copy agent sidecar folders
|
|
333
|
+
* @param {string} sourceDir - Source agent directory
|
|
334
|
+
* @param {string} targetSidecarDir - Target sidecar directory for the agent
|
|
335
|
+
* @param {string} excludeYaml - The .agent.yaml file to exclude
|
|
336
|
+
* @returns {Array} List of copied files
|
|
337
|
+
*/
|
|
338
|
+
function copyAgentSidecarFiles(sourceDir, targetSidecarDir, excludeYaml) {
|
|
339
|
+
const copied = [];
|
|
340
|
+
const preserved = [];
|
|
341
|
+
|
|
342
|
+
// Find folders with "sidecar" in the name
|
|
343
|
+
const entries = fs.readdirSync(sourceDir, { withFileTypes: true });
|
|
344
|
+
|
|
345
|
+
for (const entry of entries) {
|
|
346
|
+
if (entry.isDirectory() && entry.name.toLowerCase().includes('sidecar')) {
|
|
347
|
+
const sidecarSourcePath = path.join(sourceDir, entry.name);
|
|
348
|
+
|
|
349
|
+
// Recursively sync the sidecar folder contents (preserve existing, add new)
|
|
350
|
+
function syncSidecarDir(src, dest) {
|
|
351
|
+
if (!fs.existsSync(dest)) {
|
|
352
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// Get all files in source
|
|
356
|
+
const sourceEntries = fs.readdirSync(src, { withFileTypes: true });
|
|
357
|
+
|
|
358
|
+
for (const sourceEntry of sourceEntries) {
|
|
359
|
+
const srcPath = path.join(src, sourceEntry.name);
|
|
360
|
+
const destPath = path.join(dest, sourceEntry.name);
|
|
361
|
+
|
|
362
|
+
if (sourceEntry.isDirectory()) {
|
|
363
|
+
// Recursively sync subdirectories
|
|
364
|
+
syncSidecarDir(srcPath, destPath);
|
|
365
|
+
} else {
|
|
366
|
+
// Check if file already exists in destination
|
|
367
|
+
if (fs.existsSync(destPath)) {
|
|
368
|
+
// File exists - preserve it
|
|
369
|
+
preserved.push(destPath);
|
|
370
|
+
} else {
|
|
371
|
+
// File doesn't exist - copy it
|
|
372
|
+
fs.copyFileSync(srcPath, destPath);
|
|
373
|
+
copied.push(destPath);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
syncSidecarDir(sidecarSourcePath, targetSidecarDir);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// Return info about what was preserved and what was copied
|
|
384
|
+
return { copied, preserved };
|
|
385
|
+
}
|
|
386
|
+
|
|
288
387
|
/**
|
|
289
388
|
* Update agent metadata ID to reflect installed location
|
|
290
389
|
* @param {string} compiledContent - Compiled XML content
|
|
@@ -677,6 +776,12 @@ function extractManifestData(xmlContent, metadata, agentPath, moduleName = 'cust
|
|
|
677
776
|
return match[1].trim().replaceAll(/\n+/g, ' ').replaceAll(/\s+/g, ' ').trim();
|
|
678
777
|
};
|
|
679
778
|
|
|
779
|
+
// Extract attributes from agent tag
|
|
780
|
+
const extractAgentAttribute = (attr) => {
|
|
781
|
+
const match = xmlContent.match(new RegExp(`<agent[^>]*\\s${attr}=["']([^"']+)["']`));
|
|
782
|
+
return match ? match[1] : '';
|
|
783
|
+
};
|
|
784
|
+
|
|
680
785
|
const extractPrinciples = () => {
|
|
681
786
|
const match = xmlContent.match(/<principles>([\s\S]*?)<\/principles>/);
|
|
682
787
|
if (!match) return '';
|
|
@@ -689,11 +794,15 @@ function extractManifestData(xmlContent, metadata, agentPath, moduleName = 'cust
|
|
|
689
794
|
return principles;
|
|
690
795
|
};
|
|
691
796
|
|
|
797
|
+
// Prioritize XML extraction over metadata for agent persona info
|
|
798
|
+
const xmlTitle = extractAgentAttribute('title') || extractTag('name');
|
|
799
|
+
const xmlIcon = extractAgentAttribute('icon');
|
|
800
|
+
|
|
692
801
|
return {
|
|
693
802
|
name: metadata.id ? path.basename(metadata.id, '.md') : metadata.name.toLowerCase().replaceAll(/\s+/g, '-'),
|
|
694
|
-
displayName: metadata.name || '',
|
|
695
|
-
title: metadata.title || '',
|
|
696
|
-
icon: metadata.icon || '',
|
|
803
|
+
displayName: xmlTitle || metadata.name || '',
|
|
804
|
+
title: xmlTitle || metadata.title || '',
|
|
805
|
+
icon: xmlIcon || metadata.icon || '',
|
|
697
806
|
role: extractTag('role'),
|
|
698
807
|
identity: extractTag('identity'),
|
|
699
808
|
communicationStyle: extractTag('communication_style'),
|
|
@@ -711,6 +820,7 @@ module.exports = {
|
|
|
711
820
|
promptInstallQuestions,
|
|
712
821
|
installAgent,
|
|
713
822
|
copySidecarFiles,
|
|
823
|
+
copyAgentSidecarFiles,
|
|
714
824
|
updateAgentId,
|
|
715
825
|
detectBmadProject,
|
|
716
826
|
addToManifest,
|
|
@@ -29,24 +29,52 @@ class AgentAnalyzer {
|
|
|
29
29
|
// Track the menu item
|
|
30
30
|
profile.menuItems.push(item);
|
|
31
31
|
|
|
32
|
-
// Check for
|
|
33
|
-
if (item.
|
|
34
|
-
profile.usedAttributes.add('
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
32
|
+
// Check for multi format items
|
|
33
|
+
if (item.multi && item.triggers) {
|
|
34
|
+
profile.usedAttributes.add('multi');
|
|
35
|
+
|
|
36
|
+
// Also check attributes in nested handlers
|
|
37
|
+
for (const triggerGroup of item.triggers) {
|
|
38
|
+
for (const [triggerName, execArray] of Object.entries(triggerGroup)) {
|
|
39
|
+
if (Array.isArray(execArray)) {
|
|
40
|
+
for (const exec of execArray) {
|
|
41
|
+
if (exec.route) {
|
|
42
|
+
// Check if route is a workflow or exec
|
|
43
|
+
if (exec.route.endsWith('.yaml') || exec.route.endsWith('.yml')) {
|
|
44
|
+
profile.usedAttributes.add('workflow');
|
|
45
|
+
} else {
|
|
46
|
+
profile.usedAttributes.add('exec');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (exec.workflow) profile.usedAttributes.add('workflow');
|
|
50
|
+
if (exec.action) profile.usedAttributes.add('action');
|
|
51
|
+
if (exec.type && ['exec', 'action', 'workflow'].includes(exec.type)) {
|
|
52
|
+
profile.usedAttributes.add(exec.type);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
// Check for each possible attribute in legacy items
|
|
60
|
+
if (item.workflow) {
|
|
61
|
+
profile.usedAttributes.add('workflow');
|
|
62
|
+
}
|
|
63
|
+
if (item['validate-workflow']) {
|
|
64
|
+
profile.usedAttributes.add('validate-workflow');
|
|
65
|
+
}
|
|
66
|
+
if (item.exec) {
|
|
67
|
+
profile.usedAttributes.add('exec');
|
|
68
|
+
}
|
|
69
|
+
if (item.tmpl) {
|
|
70
|
+
profile.usedAttributes.add('tmpl');
|
|
71
|
+
}
|
|
72
|
+
if (item.data) {
|
|
73
|
+
profile.usedAttributes.add('data');
|
|
74
|
+
}
|
|
75
|
+
if (item.action) {
|
|
76
|
+
profile.usedAttributes.add('action');
|
|
77
|
+
}
|
|
50
78
|
}
|
|
51
79
|
}
|
|
52
80
|
|
package/tools/cli/lib/config.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const fs = require('fs-extra');
|
|
2
2
|
const yaml = require('js-yaml');
|
|
3
3
|
const path = require('node:path');
|
|
4
|
+
const packageJson = require('../../../package.json');
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Configuration utility class
|
|
@@ -50,7 +51,7 @@ class Config {
|
|
|
50
51
|
const standardReplacements = {
|
|
51
52
|
'{project-root}': replacements.root || '',
|
|
52
53
|
'{module}': replacements.module || '',
|
|
53
|
-
'{version}': replacements.version ||
|
|
54
|
+
'{version}': replacements.version || packageJson.version,
|
|
54
55
|
'{date}': new Date().toISOString().split('T')[0],
|
|
55
56
|
};
|
|
56
57
|
|