bmad-method 6.0.0-alpha.2 → 6.0.0-alpha.20
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/.coderabbit.yaml +40 -0
- package/.github/CODE_OF_CONDUCT.md +128 -0
- package/.github/ISSUE_TEMPLATE/idea_submission.md +2 -2
- package/.github/scripts/discord-helpers.sh +34 -0
- package/.github/workflows/bundle-latest.yaml +329 -0
- package/.github/workflows/discord.yaml +302 -8
- package/.github/workflows/docs.yaml +72 -0
- package/.github/workflows/manual-release.yaml +35 -18
- package/.github/workflows/quality.yaml +94 -0
- package/.husky/pre-commit +4 -0
- package/.markdownlint-cli2.yaml +42 -0
- package/.prettierignore +7 -0
- package/.vscode/settings.json +4 -2
- package/CHANGELOG.md +678 -13
- package/CONTRIBUTING.md +2 -16
- package/LICENSE +1 -1
- package/README.md +159 -177
- package/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
- package/docs/agent-customization-guide.md +208 -0
- package/docs/custom-content-installation.md +149 -0
- package/docs/custom-content.md +122 -0
- package/docs/document-sharding-guide.md +449 -0
- package/docs/getting-started/installation.md +76 -0
- package/docs/ide-info/crush.md +1 -1
- package/docs/ide-info/cursor.md +7 -7
- package/docs/ide-info/iflow.md +3 -3
- package/docs/ide-info/index.md +24 -0
- package/docs/ide-info/opencode.md +1 -1
- package/docs/ide-info/rovo-dev.md +22 -0
- package/docs/index.md +143 -0
- package/docs/v4-to-v6-upgrade.md +38 -36
- package/docs/web-bundles-gemini-gpt-guide.md +21 -0
- package/eslint.config.mjs +23 -2
- package/package.json +24 -9
- package/samples/sample-custom-modules/README.md +11 -0
- package/samples/sample-custom-modules/sample-unitary-module/README.md +8 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/commit-poet/commit-poet.agent.yaml +129 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
- package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith.agent.yaml +109 -0
- package/samples/sample-custom-modules/sample-unitary-module/module.yaml +8 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-01-init.md +168 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-02-q1.md +155 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-03-q2.md +89 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-04-q3.md +36 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-05-q4.md +36 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-06-q5.md +36 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-07-q6.md +36 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-08-q7.md +36 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-09-q8.md +36 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-10-q9.md +36 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-11-q10.md +36 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-12-results.md +150 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/templates/csv-headers.template +1 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/workflow.md +54 -0
- package/samples/sample-custom-modules/sample-unitary-module/workflows/wassup/workflow.md +26 -0
- package/samples/sample-custom-modules/sample-wellness-module/README.md +6 -0
- package/samples/sample-custom-modules/sample-wellness-module/agents/meditation-guide.agent.yaml +136 -0
- package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/foo.md +3 -0
- package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/addition1.md +1 -0
- package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/insights.md +13 -0
- package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/instructions.md +30 -0
- package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/memories.md +13 -0
- package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/patterns.md +17 -0
- package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion.agent.yaml +120 -0
- package/samples/sample-custom-modules/sample-wellness-module/module.yaml +17 -0
- package/samples/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/README.md +32 -0
- package/samples/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/workflow.md +45 -0
- package/samples/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/README.md +31 -0
- package/samples/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/workflow.md +45 -0
- package/samples/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/README.md +31 -0
- package/samples/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/workflow.md +45 -0
- package/src/core/_module-installer/installer.js +1 -9
- package/src/core/agents/bmad-master.agent.yaml +6 -11
- package/src/core/module.yaml +25 -0
- package/src/core/resources/excalidraw/README.md +160 -0
- package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
- package/src/core/resources/excalidraw/library-loader.md +50 -0
- package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
- package/src/core/tasks/advanced-elicitation-methods.csv +51 -0
- package/src/core/tasks/advanced-elicitation.xml +116 -0
- package/src/core/tasks/index-docs.xml +1 -1
- package/src/core/tasks/review-adversarial-general.xml +41 -0
- package/src/core/tasks/validate-workflow.xml +1 -1
- package/src/core/tasks/workflow.xml +126 -57
- package/src/core/tools/shard-doc.xml +53 -44
- 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 -100
- 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 +12 -119
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +77 -41
- package/src/modules/bmb/docs/agents/agent-compilation.md +340 -0
- package/src/modules/bmb/docs/agents/agent-menu-patterns.md +523 -0
- package/src/modules/bmb/docs/agents/expert-agent-architecture.md +363 -0
- package/src/modules/bmb/docs/agents/index.md +55 -0
- package/src/modules/bmb/docs/agents/kb.csv +0 -0
- package/src/modules/bmb/docs/agents/simple-agent-architecture.md +257 -0
- package/src/modules/bmb/docs/agents/understanding-agent-types.md +184 -0
- package/src/modules/bmb/docs/index.md +247 -0
- 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/module.yaml +16 -0
- package/src/modules/bmb/reference/README.md +3 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/README.md +242 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
- package/src/modules/bmb/reference/agents/module-examples/README.md +49 -0
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
- package/src/modules/bmb/reference/agents/simple-examples/README.md +223 -0
- package/src/modules/bmb/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
- 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/agent-validation-checklist.md +174 -0
- package/src/modules/bmb/workflows/create-agent/data/brainstorm-context.md +153 -0
- package/src/modules/bmb/workflows/create-agent/data/communication-presets.csv +61 -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 +48 -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 +206 -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 +232 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +186 -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-celebrate.md +218 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent-plan.template.md +3 -0
- package/src/modules/bmb/workflows/create-agent/templates/expert-agent.template.md +364 -0
- package/src/modules/bmb/workflows/create-agent/templates/simple-agent.template.md +257 -0
- package/src/modules/bmb/workflows/create-agent/workflow.md +58 -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 +309 -0
- package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +337 -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 +313 -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/module.template.yaml +53 -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-legacy/edit-module/README.md +171 -0
- package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +163 -0
- package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +340 -0
- package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +34 -0
- package/src/modules/bmb/workflows-legacy/module-brief/README.md +264 -0
- package/src/modules/bmb/workflows-legacy/module-brief/checklist.md +116 -0
- package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +268 -0
- package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +36 -0
- package/src/modules/bmgd/_module-installer/installer.js +160 -0
- package/src/modules/bmgd/_module-installer/platform-specifics/claude-code.js +23 -0
- package/src/modules/bmgd/_module-installer/platform-specifics/windsurf.js +18 -0
- package/src/modules/bmgd/agents/game-architect.agent.yaml +52 -0
- package/src/modules/bmgd/agents/game-designer.agent.yaml +60 -0
- package/src/modules/bmgd/agents/game-dev.agent.yaml +56 -0
- package/src/modules/bmgd/agents/game-qa.agent.yaml +64 -0
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +63 -0
- package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +56 -0
- package/src/modules/bmgd/docs/agents-guide.md +407 -0
- package/src/modules/bmgd/docs/game-types-guide.md +503 -0
- package/src/modules/bmgd/docs/glossary.md +294 -0
- package/src/modules/bmgd/docs/index.md +180 -0
- package/src/modules/bmgd/docs/quick-flow-guide.md +288 -0
- package/src/modules/bmgd/docs/quick-start.md +250 -0
- package/src/modules/bmgd/docs/troubleshooting.md +259 -0
- package/src/modules/bmgd/docs/workflow-overview.jpg +0 -0
- package/src/modules/bmgd/docs/workflows-guide.md +463 -0
- package/src/modules/bmgd/gametest/knowledge/balance-testing.md +220 -0
- package/src/modules/bmgd/gametest/knowledge/certification-testing.md +319 -0
- package/src/modules/bmgd/gametest/knowledge/compatibility-testing.md +228 -0
- package/src/modules/bmgd/gametest/knowledge/godot-testing.md +376 -0
- package/src/modules/bmgd/gametest/knowledge/input-testing.md +315 -0
- package/src/modules/bmgd/gametest/knowledge/localization-testing.md +304 -0
- package/src/modules/bmgd/gametest/knowledge/multiplayer-testing.md +322 -0
- package/src/modules/bmgd/gametest/knowledge/performance-testing.md +204 -0
- package/src/modules/bmgd/gametest/knowledge/playtesting.md +384 -0
- package/src/modules/bmgd/gametest/knowledge/qa-automation.md +190 -0
- package/src/modules/bmgd/gametest/knowledge/regression-testing.md +280 -0
- package/src/modules/bmgd/gametest/knowledge/save-testing.md +280 -0
- package/src/modules/bmgd/gametest/knowledge/smoke-testing.md +404 -0
- package/src/modules/bmgd/gametest/knowledge/test-priorities.md +271 -0
- package/src/modules/bmgd/gametest/knowledge/unity-testing.md +383 -0
- package/src/modules/bmgd/gametest/knowledge/unreal-testing.md +388 -0
- package/src/modules/bmgd/gametest/qa-index.csv +17 -0
- package/src/modules/bmgd/module.yaml +64 -0
- package/src/modules/bmgd/teams/default-party.csv +12 -0
- package/src/modules/bmgd/teams/team-gamedev.yaml +29 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +130 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +164 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-02-context.md +210 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-03-ideation.md +289 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +275 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.md +49 -0
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +62 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +373 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01-init.md +223 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01b-continue.md +151 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-02-vision.md +218 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-03-market.md +218 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-04-fundamentals.md +231 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-05-scope.md +242 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-06-references.md +224 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-07-content.md +282 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-08-complete.md +296 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.md +62 -0
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +67 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01-init.md +248 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01b-continue.md +173 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-02-context.md +332 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-03-platforms.md +245 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-04-vision.md +229 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-05-core-gameplay.md +258 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-06-mechanics.md +249 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-07-game-type.md +266 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-08-progression.md +272 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-09-levels.md +264 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-10-art-audio.md +255 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-11-technical.md +275 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-12-epics.md +284 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-13-metrics.md +250 -0
- package/src/modules/bmgd/workflows/2-design/gdd/steps/step-14-complete.md +335 -0
- package/src/modules/bmgd/workflows/2-design/gdd/workflow.md +61 -0
- package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +101 -0
- package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +604 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01-init.md +228 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01b-continue.md +163 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-02-foundation.md +262 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-03-story.md +238 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-04-characters.md +297 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-05-world.md +262 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-06-dialogue.md +250 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-07-environmental.md +244 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-08-delivery.md +264 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-09-integration.md +254 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-10-production.md +262 -0
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +331 -0
- package/src/modules/bmgd/workflows/2-design/narrative/workflow.md +57 -0
- package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +77 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +321 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +240 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +701 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01-init.md +223 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01b-continue.md +153 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-02-context.md +262 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-03-starter.md +290 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-04-decisions.md +300 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-05-crosscutting.md +319 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-06-structure.md +304 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-07-patterns.md +349 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-08-validation.md +293 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +356 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/templates/architecture-template.md +103 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.md +55 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +98 -0
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/project-context-template.md +20 -0
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-01-discover.md +201 -0
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-02-generate.md +373 -0
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-03-complete.md +279 -0
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/workflow.md +48 -0
- package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +23 -0
- package/src/modules/bmgd/workflows/4-production/code-review/instructions.xml +225 -0
- package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +64 -0
- package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +279 -0
- package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +206 -0
- package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +63 -0
- package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +358 -0
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.xml +298 -0
- package/src/modules/bmgd/workflows/4-production/create-story/template.md +49 -0
- package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +79 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +80 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.xml +409 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +68 -0
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1443 -0
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +62 -0
- package/src/modules/bmgd/workflows/4-production/sprint-planning/checklist.md +33 -0
- package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +234 -0
- package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +56 -0
- package/src/modules/bmgd/workflows/4-production/sprint-status/instructions.md +229 -0
- package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +35 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/instructions.md +140 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml +27 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/checklist.md +37 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/instructions.md +220 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +45 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/checklist.md +26 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/instructions.md +156 -0
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +36 -0
- package/src/modules/bmgd/workflows/gametest/automate/checklist.md +93 -0
- package/src/modules/bmgd/workflows/gametest/automate/instructions.md +317 -0
- package/src/modules/bmgd/workflows/gametest/automate/workflow.yaml +50 -0
- package/src/modules/bmgd/workflows/gametest/performance/checklist.md +96 -0
- package/src/modules/bmgd/workflows/gametest/performance/instructions.md +323 -0
- package/src/modules/bmgd/workflows/gametest/performance/performance-template.md +256 -0
- package/src/modules/bmgd/workflows/gametest/performance/workflow.yaml +48 -0
- package/src/modules/bmgd/workflows/gametest/playtest-plan/checklist.md +93 -0
- package/src/modules/bmgd/workflows/gametest/playtest-plan/instructions.md +297 -0
- package/src/modules/bmgd/workflows/gametest/playtest-plan/playtest-template.md +208 -0
- package/src/modules/bmgd/workflows/gametest/playtest-plan/workflow.yaml +59 -0
- package/src/modules/bmgd/workflows/gametest/test-design/checklist.md +98 -0
- package/src/modules/bmgd/workflows/gametest/test-design/instructions.md +280 -0
- package/src/modules/bmgd/workflows/gametest/test-design/test-design-template.md +205 -0
- package/src/modules/bmgd/workflows/gametest/test-design/workflow.yaml +47 -0
- package/src/modules/bmgd/workflows/gametest/test-framework/checklist.md +103 -0
- package/src/modules/bmgd/workflows/gametest/test-framework/instructions.md +348 -0
- package/src/modules/bmgd/workflows/gametest/test-framework/workflow.yaml +48 -0
- package/src/modules/bmgd/workflows/gametest/test-review/checklist.md +87 -0
- package/src/modules/bmgd/workflows/gametest/test-review/instructions.md +272 -0
- package/src/modules/bmgd/workflows/gametest/test-review/test-review-template.md +203 -0
- package/src/modules/bmgd/workflows/gametest/test-review/workflow.yaml +48 -0
- package/src/modules/bmgd/workflows/workflow-status/init/instructions.md +299 -0
- package/src/modules/bmgd/workflows/workflow-status/init/workflow.yaml +29 -0
- package/src/modules/bmgd/workflows/workflow-status/instructions.md +395 -0
- package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-brownfield.yaml +65 -0
- package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-greenfield.yaml +71 -0
- package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-brownfield.yaml +29 -0
- package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-greenfield.yaml +39 -0
- package/src/modules/bmgd/workflows/workflow-status/project-levels.yaml +63 -0
- package/src/modules/bmgd/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/src/modules/bmgd/workflows/workflow-status/workflow.yaml +30 -0
- package/src/modules/bmm/README.md +78 -92
- package/src/modules/bmm/_module-installer/installer.js +3 -3
- package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +1 -1
- package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +1 -1
- package/src/modules/bmm/agents/analyst.agent.yaml +32 -23
- package/src/modules/bmm/agents/architect.agent.yaml +32 -25
- package/src/modules/bmm/agents/dev.agent.yaml +32 -27
- package/src/modules/bmm/agents/pm.agent.yaml +30 -30
- package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +27 -0
- package/src/modules/bmm/agents/sm.agent.yaml +35 -44
- package/src/modules/bmm/agents/tea.agent.yaml +31 -20
- package/src/modules/bmm/agents/tech-writer.agent.yaml +67 -0
- package/src/modules/bmm/agents/ux-designer.agent.yaml +35 -20
- package/src/modules/bmm/data/README.md +29 -0
- package/src/modules/bmm/data/documentation-standards.md +262 -0
- package/src/modules/bmm/data/project-context-template.md +40 -0
- package/src/modules/bmm/docs/agents-guide.md +144 -0
- package/src/modules/bmm/docs/bmad-quick-flow.md +506 -0
- package/src/modules/bmm/docs/brownfield-guide.md +748 -0
- package/src/modules/bmm/docs/enterprise-agentic-development.md +686 -0
- package/src/modules/bmm/docs/faq.md +542 -0
- package/src/modules/bmm/docs/glossary.md +306 -0
- package/src/modules/bmm/docs/images/README.md +37 -0
- package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +5034 -0
- package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +4 -0
- package/src/modules/bmm/docs/index.md +168 -0
- package/src/modules/bmm/docs/party-mode.md +224 -0
- package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
- package/src/modules/bmm/docs/quick-spec-flow.md +638 -0
- package/src/modules/bmm/docs/quick-start.md +366 -0
- package/src/modules/bmm/docs/scale-adaptive-system.md +618 -0
- package/src/modules/bmm/docs/test-architecture.md +455 -0
- package/src/modules/bmm/docs/troubleshooting.md +661 -0
- package/src/modules/bmm/docs/workflow-architecture-reference.md +366 -0
- package/src/modules/bmm/docs/workflow-document-project-reference.md +489 -0
- package/src/modules/bmm/docs/workflows-analysis.md +266 -0
- package/src/modules/bmm/docs/workflows-implementation.md +210 -0
- package/src/modules/bmm/docs/workflows-planning.md +451 -0
- package/src/modules/bmm/docs/workflows-solutioning.md +509 -0
- package/src/modules/bmm/module.yaml +56 -0
- package/src/modules/bmm/teams/default-party.csv +21 -0
- package/src/modules/bmm/teams/team-fullstack.yaml +1 -0
- 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 +283 -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/create-product-brief/product-brief.template.md +10 -0
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +192 -0
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +165 -0
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +203 -0
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +206 -0
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +209 -0
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +223 -0
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +198 -0
- package/src/modules/bmm/workflows/1-analysis/create-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 +29 -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 +173 -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 +189 -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 +57 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +12 -58
- package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- 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/check-implementation-readiness/steps/step-01-document-discovery.md +189 -0
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +177 -0
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +178 -0
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +138 -0
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +251 -0
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +132 -0
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +182 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +163 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +223 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +330 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +317 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +378 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +351 -0
- package/src/modules/bmm/workflows/3-solutioning/create-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/4-implementation/code-review/checklist.md +2 -1
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +225 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +34 -36
- package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +7 -2
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +42 -27
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +344 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/template.md +3 -5
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +38 -27
- package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +409 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +9 -10
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +1208 -244
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +38 -26
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +59 -55
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +14 -14
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +21 -8
- package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -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 +28 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +51 -0
- package/src/modules/bmm/workflows/document-project/checklist.md +1 -1
- package/src/modules/bmm/workflows/document-project/instructions.md +31 -32
- package/src/modules/bmm/workflows/document-project/workflow.yaml +4 -10
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +6 -6
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
- package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +13 -13
- package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
- package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
- package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +21 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +183 -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 +10 -9
- package/src/modules/bmm/workflows/testarch/atdd/checklist.md +1 -0
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +26 -5
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -9
- package/src/modules/bmm/workflows/testarch/automate/checklist.md +2 -0
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +25 -4
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -11
- package/src/modules/bmm/workflows/testarch/ci/checklist.md +7 -5
- 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 +23 -4
- package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -10
- package/src/modules/bmm/workflows/testarch/framework/checklist.md +4 -4
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +28 -2
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -8
- package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +2 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +2 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -11
- package/src/modules/bmm/workflows/testarch/test-design/checklist.md +7 -6
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +182 -15
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +13 -4
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +13 -11
- package/src/modules/bmm/workflows/testarch/test-review/checklist.md +2 -0
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +29 -9
- package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +2 -0
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -9
- package/src/modules/bmm/workflows/testarch/trace/checklist.md +1 -0
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +11 -9
- package/src/modules/bmm/workflows/testarch/trace/trace-template.md +2 -0
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -13
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +259 -210
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +6 -5
- package/src/modules/bmm/workflows/workflow-status/instructions.md +188 -117
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +122 -0
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +110 -0
- package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +106 -0
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +96 -0
- package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
- package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +7 -5
- package/src/modules/cis/_module-installer/installer.js +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +15 -9
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +14 -8
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +14 -8
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +14 -8
- package/src/modules/cis/agents/presentation-master.agent.yaml +61 -0
- package/src/modules/cis/agents/storyteller/storyteller-sidecar/stories-told.md +7 -0
- package/src/modules/cis/agents/storyteller/storyteller-sidecar/story-preferences.md +7 -0
- package/src/modules/cis/agents/storyteller/storyteller.agent.yaml +34 -0
- package/src/modules/cis/docs/index.md +149 -0
- package/src/modules/cis/module.yaml +11 -0
- package/src/modules/cis/teams/creative-squad.yaml +1 -0
- package/src/modules/cis/teams/default-party.csv +12 -0
- package/src/modules/cis/workflows/README.md +102 -30
- package/src/modules/cis/workflows/design-thinking/instructions.md +4 -2
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -12
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +7 -5
- package/src/modules/cis/workflows/innovation-strategy/template.md +3 -3
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -12
- package/src/modules/cis/workflows/problem-solving/instructions.md +4 -2
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -12
- package/src/modules/cis/workflows/storytelling/instructions.md +14 -4
- package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -12
- package/src/utility/agent-components/activation-rules.txt +7 -0
- package/src/utility/agent-components/activation-steps.txt +13 -0
- package/src/utility/agent-components/agent-command-header.md +1 -0
- package/src/utility/agent-components/agent.customize.template.yaml +41 -0
- package/src/utility/agent-components/handler-action.txt +4 -0
- package/src/utility/agent-components/handler-exec.txt +6 -0
- package/src/utility/agent-components/handler-multi.txt +14 -0
- package/src/utility/agent-components/handler-tmpl.txt +5 -0
- package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
- package/src/utility/agent-components/handler-workflow.txt +10 -0
- package/src/utility/agent-components/menu-handlers.txt +6 -0
- package/test/README.md +2 -2
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-wrong-shortcut.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
- package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +30 -0
- package/test/test-agent-schema.js +2 -2
- package/test/test-installation-components.js +214 -0
- package/tools/build-docs.js +630 -0
- package/tools/cli/README.md +1 -588
- package/tools/cli/commands/install.js +61 -20
- package/tools/cli/installers/install-messages.yaml +52 -0
- package/tools/cli/installers/lib/core/config-collector.js +595 -98
- package/tools/cli/installers/lib/core/custom-module-cache.js +259 -0
- package/tools/cli/installers/lib/core/dependency-resolver.js +2 -2
- package/tools/cli/installers/lib/core/detector.js +75 -16
- package/tools/cli/installers/lib/core/ide-config-manager.js +12 -8
- package/tools/cli/installers/lib/core/installer.js +1277 -722
- package/tools/cli/installers/lib/core/manifest-generator.js +285 -142
- package/tools/cli/installers/lib/core/manifest.js +74 -20
- package/tools/cli/installers/lib/custom/handler.js +363 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +94 -12
- package/tools/cli/installers/lib/ide/antigravity.js +507 -0
- package/tools/cli/installers/lib/ide/auggie.js +148 -240
- package/tools/cli/installers/lib/ide/claude-code.js +92 -32
- package/tools/cli/installers/lib/ide/cline.js +64 -18
- package/tools/cli/installers/lib/ide/codex.js +226 -72
- package/tools/cli/installers/lib/ide/crush.js +79 -55
- package/tools/cli/installers/lib/ide/cursor.js +144 -20
- package/tools/cli/installers/lib/ide/gemini.js +180 -35
- package/tools/cli/installers/lib/ide/github-copilot.js +154 -57
- package/tools/cli/installers/lib/ide/iflow.js +79 -30
- package/tools/cli/installers/lib/ide/kilo.js +94 -16
- package/tools/cli/installers/lib/ide/kiro-cli.js +327 -0
- package/tools/cli/installers/lib/ide/manager.js +50 -0
- package/tools/cli/installers/lib/ide/opencode.js +66 -22
- package/tools/cli/installers/lib/ide/qwen.js +93 -11
- package/tools/cli/installers/lib/ide/roo.js +158 -176
- package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +96 -0
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +34 -19
- package/tools/cli/installers/lib/ide/shared/module-injections.js +2 -2
- package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +119 -0
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +241 -0
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
- package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
- package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
- package/tools/cli/installers/lib/ide/trae.js +67 -32
- package/tools/cli/installers/lib/ide/windsurf.js +65 -8
- package/tools/cli/installers/lib/message-loader.js +85 -0
- package/tools/cli/installers/lib/modules/manager.js +785 -97
- package/tools/cli/lib/activation-builder.js +8 -13
- package/tools/cli/lib/agent/compiler.js +564 -0
- package/tools/cli/lib/agent/installer.js +716 -0
- package/tools/cli/lib/agent/template-engine.js +152 -0
- package/tools/cli/lib/agent-analyzer.js +48 -20
- package/tools/cli/lib/agent-party-generator.js +5 -17
- package/tools/cli/lib/cli-utils.js +65 -46
- package/tools/cli/lib/config.js +7 -4
- package/tools/cli/lib/platform-codes.js +2 -2
- package/tools/cli/lib/ui.js +1132 -81
- package/tools/cli/lib/xml-handler.js +4 -55
- package/tools/cli/lib/yaml-format.js +6 -7
- package/tools/cli/lib/yaml-xml-builder.js +196 -56
- package/tools/flattener/ignoreRules.js +1 -1
- package/tools/flattener/xml.js +1 -7
- package/tools/lib/xml-utils.js +13 -0
- package/tools/maintainer/review-pr-README.md +55 -0
- package/tools/maintainer/review-pr.md +242 -0
- package/tools/migrate-custom-module-paths.js +124 -0
- package/tools/platform-codes.yaml +12 -0
- package/tools/schema/agent.js +304 -23
- package/tools/validate-agent-schema.js +2 -2
- package/tools/validate-svg-changes.sh +356 -0
- package/website/css/custom.css +52 -0
- package/website/docusaurus.config.js +179 -0
- package/website/sidebars.js +157 -0
- package/website/src/pages/downloads.md +81 -0
- package/website/src/pages/index.js +50 -0
- package/website/static/favicon.ico +0 -0
- package/website/static/img/logo.svg +4 -0
- package/website/static/robots.txt +37 -0
- package/.claude/commands/bmad/bmb/agents/bmad-builder.md +0 -70
- package/.claude/commands/bmad/bmb/workflows/README.md +0 -67
- package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/create-agent.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/create-module.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/create-workflow.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/edit-agent.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/edit-module.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/module-brief.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/redoc.md +0 -15
- package/.claude/commands/bmad/bmd/agents/cli-chief.md +0 -108
- package/.claude/commands/bmad/bmd/agents/doc-keeper.md +0 -115
- package/.claude/commands/bmad/bmd/agents/release-chief.md +0 -109
- package/.claude/commands/bmad/core/agents/bmad-master.md +0 -71
- package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
- package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
- package/.claude/commands/bmad/core/workflows/README.md +0 -27
- package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -15
- package/.claude/commands/bmad/core/workflows/party-mode.md +0 -15
- package/.claude/hooks/bmad-tts-injector.sh +0 -415
- package/.claude/hooks/bmad-voice-manager.sh +0 -511
- package/.claude/hooks/check-output-style.sh +0 -112
- package/.claude/hooks/download-extra-voices.sh +0 -244
- package/.claude/hooks/github-star-reminder.sh +0 -154
- package/.claude/hooks/language-manager.sh +0 -392
- package/.claude/hooks/learn-manager.sh +0 -475
- package/.claude/hooks/personality-manager.sh +0 -438
- package/.claude/hooks/piper-download-voices.sh +0 -165
- package/.claude/hooks/piper-installer.sh +0 -178
- package/.claude/hooks/piper-multispeaker-registry.sh +0 -165
- package/.claude/hooks/piper-voice-manager.sh +0 -293
- package/.claude/hooks/play-tts-elevenlabs.sh +0 -404
- package/.claude/hooks/play-tts-piper.sh +0 -338
- package/.claude/hooks/play-tts.sh +0 -100
- package/.claude/hooks/provider-commands.sh +0 -540
- package/.claude/hooks/provider-manager.sh +0 -298
- package/.claude/hooks/replay-target-audio.sh +0 -95
- package/.claude/hooks/sentiment-manager.sh +0 -201
- package/.claude/hooks/speed-manager.sh +0 -291
- package/.claude/hooks/voice-manager.sh +0 -594
- package/.claude/hooks/voices-config.sh +0 -70
- package/.claude/settings.local.json +0 -41
- package/.github/workflows/lint.yaml +0 -61
- package/bmad/_cfg/agent-manifest.csv +0 -7
- package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -42
- package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +0 -32
- package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +0 -42
- package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +0 -42
- package/bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
- package/bmad/_cfg/files-manifest.csv +0 -83
- package/bmad/_cfg/manifest.yaml +0 -12
- package/bmad/_cfg/task-manifest.csv +0 -5
- package/bmad/_cfg/tool-manifest.csv +0 -2
- package/bmad/_cfg/workflow-manifest.csv +0 -15
- package/bmad/bmb/README.md +0 -132
- package/bmad/bmb/agents/bmad-builder.md +0 -70
- package/bmad/bmb/config.yaml +0 -14
- package/bmad/bmb/workflows/audit-workflow/checklist.md +0 -143
- package/bmad/bmb/workflows/audit-workflow/instructions.md +0 -341
- package/bmad/bmb/workflows/audit-workflow/template.md +0 -118
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml +0 -23
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +0 -21
- package/bmad/bmb/workflows/convert-legacy/README.md +0 -262
- package/bmad/bmb/workflows/convert-legacy/checklist.md +0 -205
- package/bmad/bmb/workflows/convert-legacy/instructions.md +0 -377
- package/bmad/bmb/workflows/convert-legacy/workflow.yaml +0 -32
- package/bmad/bmb/workflows/create-agent/README.md +0 -320
- package/bmad/bmb/workflows/create-agent/agent-architecture.md +0 -419
- package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +0 -412
- package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
- package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +0 -759
- package/bmad/bmb/workflows/create-agent/agent-types.md +0 -292
- package/bmad/bmb/workflows/create-agent/brainstorm-context.md +0 -174
- package/bmad/bmb/workflows/create-agent/checklist.md +0 -62
- package/bmad/bmb/workflows/create-agent/communication-styles.md +0 -202
- package/bmad/bmb/workflows/create-agent/instructions.md +0 -430
- package/bmad/bmb/workflows/create-agent/workflow.yaml +0 -37
- package/bmad/bmb/workflows/create-module/README.md +0 -220
- package/bmad/bmb/workflows/create-module/README.md.bak +0 -218
- package/bmad/bmb/workflows/create-module/brainstorm-context.md +0 -137
- package/bmad/bmb/workflows/create-module/checklist.md +0 -244
- package/bmad/bmb/workflows/create-module/checklist.md.bak +0 -245
- package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
- package/bmad/bmb/workflows/create-module/installer-templates/installer.js +0 -231
- package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +0 -231
- package/bmad/bmb/workflows/create-module/instructions.md +0 -581
- package/bmad/bmb/workflows/create-module/instructions.md.bak +0 -521
- package/bmad/bmb/workflows/create-module/module-structure.md +0 -366
- package/bmad/bmb/workflows/create-module/module-structure.md.bak +0 -310
- package/bmad/bmb/workflows/create-module/workflow.yaml +0 -42
- package/bmad/bmb/workflows/create-module/workflow.yaml.bak +0 -40
- package/bmad/bmb/workflows/create-workflow/README.md +0 -277
- package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
- package/bmad/bmb/workflows/create-workflow/checklist.md +0 -94
- package/bmad/bmb/workflows/create-workflow/instructions.md +0 -716
- package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
- package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
- package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
- package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
- package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -39
- package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +0 -39
- package/bmad/bmb/workflows/create-workflow/workflow.yaml +0 -40
- package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +0 -38
- package/bmad/bmb/workflows/edit-agent/README.md +0 -112
- package/bmad/bmb/workflows/edit-agent/checklist.md +0 -112
- package/bmad/bmb/workflows/edit-agent/instructions.md +0 -290
- package/bmad/bmb/workflows/edit-agent/workflow.yaml +0 -33
- package/bmad/bmb/workflows/edit-module/README.md +0 -187
- package/bmad/bmb/workflows/edit-module/checklist.md +0 -165
- package/bmad/bmb/workflows/edit-module/instructions.md +0 -339
- package/bmad/bmb/workflows/edit-module/workflow.yaml +0 -34
- package/bmad/bmb/workflows/edit-workflow/README.md +0 -119
- package/bmad/bmb/workflows/edit-workflow/checklist.md +0 -70
- package/bmad/bmb/workflows/edit-workflow/instructions.md +0 -342
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml +0 -27
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +0 -25
- package/bmad/bmb/workflows/module-brief/README.md +0 -264
- package/bmad/bmb/workflows/module-brief/checklist.md +0 -116
- package/bmad/bmb/workflows/module-brief/instructions.md +0 -267
- package/bmad/bmb/workflows/module-brief/workflow.yaml +0 -29
- package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +0 -27
- package/bmad/bmb/workflows/redoc/README.md +0 -87
- package/bmad/bmb/workflows/redoc/checklist.md +0 -99
- package/bmad/bmb/workflows/redoc/instructions.md +0 -265
- package/bmad/bmb/workflows/redoc/workflow.yaml +0 -32
- package/bmad/bmb/workflows/redoc/workflow.yaml.bak +0 -31
- package/bmad/bmd/README.md +0 -193
- package/bmad/bmd/README.md.bak +0 -193
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +0 -102
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +0 -68
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +0 -123
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md +0 -53
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +0 -53
- package/bmad/bmd/agents/cli-chief.md +0 -108
- package/bmad/bmd/agents/cli-chief.md.bak +0 -108
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +0 -177
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +0 -81
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +0 -88
- package/bmad/bmd/agents/doc-keeper.md +0 -115
- package/bmad/bmd/agents/doc-keeper.md.bak +0 -115
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md +0 -164
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +0 -164
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +0 -82
- package/bmad/bmd/agents/release-chief-sidecar/memories.md +0 -73
- package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +0 -73
- package/bmad/bmd/agents/release-chief.md +0 -109
- package/bmad/bmd/agents/release-chief.md.bak +0 -109
- package/bmad/bmd/config.yaml +0 -10
- package/bmad/core/agents/bmad-master.md +0 -71
- package/bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -122
- package/bmad/core/config.yaml +0 -9
- package/bmad/core/tasks/adv-elicit-methods.csv +0 -39
- package/bmad/core/tasks/adv-elicit.xml +0 -104
- package/bmad/core/tasks/index-docs.xml +0 -65
- package/bmad/core/tasks/validate-workflow.xml +0 -89
- package/bmad/core/tasks/workflow.xml +0 -174
- package/bmad/core/tools/shard-doc.xml +0 -100
- package/bmad/core/workflows/brainstorming/README.md +0 -271
- package/bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
- package/bmad/core/workflows/brainstorming/instructions.md +0 -314
- package/bmad/core/workflows/brainstorming/template.md +0 -102
- package/bmad/core/workflows/brainstorming/workflow.yaml +0 -43
- package/bmad/core/workflows/party-mode/instructions.md +0 -188
- package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
- package/bmad/docs/claude-code-instructions.md +0 -25
- package/bmad/docs/codex-instructions.md +0 -21
- package/bmd/README.md +0 -193
- package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
- package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
- package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
- package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
- package/bmd/agents/cli-chief.agent.yaml +0 -126
- package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
- package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
- package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
- package/bmd/agents/doc-keeper.agent.yaml +0 -137
- package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
- package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
- package/bmd/agents/release-chief-sidecar/memories.md +0 -73
- package/bmd/agents/release-chief.agent.yaml +0 -127
- package/bmd/bmad-custom-module-installer-plan.md +0 -1176
- package/bmd/config.yaml +0 -12
- package/docs/bmad-brownfield-guide.md +0 -1260
- package/docs/conversion-report-shard-doc-2025-10-26.md +0 -188
- package/docs/installers-bundlers/ide-injections.md +0 -186
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +0 -327
- package/docs/installers-bundlers/web-bundler-usage.md +0 -54
- package/src/core/_module-installer/install-config.yaml +0 -28
- package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -122
- package/src/core/tasks/adv-elicit-methods.csv +0 -39
- package/src/core/tasks/adv-elicit.xml +0 -104
- package/src/core/workflows/brainstorming/README.md +0 -271
- package/src/core/workflows/brainstorming/instructions.md +0 -314
- package/src/core/workflows/brainstorming/workflow.yaml +0 -43
- package/src/core/workflows/party-mode/instructions.md +0 -188
- package/src/core/workflows/party-mode/workflow.yaml +0 -23
- package/src/modules/bmb/_module-installer/install-config.yaml +0 -26
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -143
- 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 -34
- package/src/modules/bmb/workflows/create-agent/README.md +0 -320
- package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -419
- package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
- package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
- package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +0 -174
- package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
- package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
- package/src/modules/bmb/workflows/create-agent/instructions.md +0 -430
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -49
- package/src/modules/bmb/workflows/create-module/README.md +0 -220
- package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
- package/src/modules/bmb/workflows/create-module/checklist.md +0 -244
- 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 -581
- package/src/modules/bmb/workflows/create-module/module-structure.md +0 -366
- package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -44
- 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 -716
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
- 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 -13
- 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 -65
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -42
- package/src/modules/bmb/workflows/edit-agent/README.md +0 -112
- package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
- package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -290
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -35
- package/src/modules/bmb/workflows/edit-module/README.md +0 -187
- package/src/modules/bmb/workflows/edit-module/checklist.md +0 -165
- package/src/modules/bmb/workflows/edit-module/instructions.md +0 -339
- package/src/modules/bmb/workflows/edit-module/workflow.yaml +0 -36
- 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 -29
- package/src/modules/bmb/workflows/module-brief/README.md +0 -264
- package/src/modules/bmb/workflows/module-brief/checklist.md +0 -116
- package/src/modules/bmb/workflows/module-brief/instructions.md +0 -267
- package/src/modules/bmb/workflows/module-brief/template.md +0 -275
- package/src/modules/bmb/workflows/module-brief/workflow.yaml +0 -31
- package/src/modules/bmb/workflows/redoc/README.md +0 -87
- package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
- package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
- package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
- 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/_module-installer/install-config.yaml +0 -74
- package/src/modules/bmm/agents/game-architect.agent.yaml +0 -35
- package/src/modules/bmm/agents/game-designer.agent.yaml +0 -47
- package/src/modules/bmm/agents/game-dev.agent.yaml +0 -39
- package/src/modules/bmm/sub-modules/claude-code/config.yaml +0 -5
- package/src/modules/bmm/sub-modules/claude-code/injections.yaml +0 -242
- package/src/modules/bmm/sub-modules/claude-code/readme.md +0 -87
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +0 -102
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +0 -82
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +0 -101
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +0 -84
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +0 -83
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +0 -81
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +0 -61
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +0 -168
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +0 -115
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +0 -123
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +0 -72
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +0 -51
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +0 -106
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +0 -102
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +0 -68
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +0 -108
- package/src/modules/bmm/tasks/daily-standup.xml +0 -85
- package/src/modules/bmm/tasks/retrospective.xml +0 -104
- package/src/modules/bmm/teams/team-gamedev.yaml +0 -14
- package/src/modules/bmm/testarch/README.md +0 -311
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +0 -38
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +0 -109
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +0 -41
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +0 -29
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -91
- 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/game-brief/README.md +0 -221
- package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +0 -357
- package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +0 -44
- package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +0 -180
- 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 -321
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -165
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -43
- package/src/modules/bmm/workflows/1-analysis/research/README.md +0 -454
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -202
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +0 -259
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +0 -190
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +0 -337
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +0 -107
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +0 -329
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -433
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -613
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -125
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -501
- 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 -311
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -210
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -49
- package/src/modules/bmm/workflows/2-plan-workflows/README.md +0 -258
- 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 -1283
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -42
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +0 -222
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md +0 -475
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -67
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md +0 -557
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +0 -38
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -117
- package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +0 -63
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -449
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -46
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -107
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -11
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -167
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -278
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -269
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -55
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -56
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -52
- package/src/modules/bmm/workflows/3-solutioning/README.md +0 -1
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -347
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -244
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -703
- package/src/modules/bmm/workflows/3-solutioning/architecture/readme.md +0 -318
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -54
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +0 -177
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -175
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -273
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -146
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -40
- package/src/modules/bmm/workflows/4-implementation/README.md +0 -221
- package/src/modules/bmm/workflows/4-implementation/code-review/README.md +0 -69
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -391
- package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +0 -73
- package/src/modules/bmm/workflows/4-implementation/create-story/README.md +0 -129
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -252
- package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
- package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +0 -206
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -262
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/README.md +0 -195
- 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 -160
- 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 -34
- package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +0 -77
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +0 -156
- package/src/modules/bmm/workflows/4-implementation/story-context/README.md +0 -234
- 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 -201
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -32
- 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 -27
- 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 -27
- package/src/modules/bmm/workflows/README.md +0 -577
- package/src/modules/bmm/workflows/document-project/README.md +0 -444
- package/src/modules/bmm/workflows/document-project/templates/README.md +0 -38
- package/src/modules/bmm/workflows/testarch/README.md +0 -26
- package/src/modules/bmm/workflows/testarch/atdd/README.md +0 -672
- package/src/modules/bmm/workflows/testarch/automate/README.md +0 -869
- package/src/modules/bmm/workflows/testarch/ci/README.md +0 -493
- package/src/modules/bmm/workflows/testarch/framework/README.md +0 -340
- package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +0 -469
- package/src/modules/bmm/workflows/testarch/test-design/README.md +0 -493
- package/src/modules/bmm/workflows/testarch/test-review/README.md +0 -775
- package/src/modules/bmm/workflows/testarch/trace/README.md +0 -802
- package/src/modules/bmm/workflows/workflow-status/README.md +0 -241
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +0 -54
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-1.yaml +0 -58
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +0 -76
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-3.yaml +0 -95
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +0 -88
- package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -75
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +0 -45
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-1.yaml +0 -49
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +0 -78
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +0 -73
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +0 -75
- package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +0 -30
- package/src/modules/cis/_module-installer/install-config.yaml +0 -14
- package/src/modules/cis/agents/README.md +0 -104
- package/src/modules/cis/agents/storyteller.agent.yaml +0 -23
- package/src/modules/cis/readme.md +0 -86
- package/src/utility/models/agent-activation-ide.xml +0 -51
- package/src/utility/models/agent-activation-web.xml +0 -60
- package/src/utility/models/agent-config-template.md +0 -23
- package/src/utility/models/agent-in-team-activation.xml +0 -3
- package/src/utility/models/fragments/activation-rules.xml +0 -8
- package/src/utility/models/fragments/activation-steps.xml +0 -15
- package/src/utility/models/fragments/handler-action.xml +0 -4
- package/src/utility/models/fragments/handler-exec.xml +0 -5
- package/src/utility/models/fragments/handler-tmpl.xml +0 -5
- package/src/utility/models/fragments/handler-validate-workflow.xml +0 -7
- package/src/utility/models/fragments/handler-workflow.xml +0 -9
- package/src/utility/models/fragments/menu-handlers.xml +0 -6
- package/src/utility/models/fragments/web-bundle-activation-steps.xml +0 -32
- package/src/utility/templates/agent.customize.template.yaml +0 -42
- package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
- package/tools/cli/bundlers/bundle-web.js +0 -179
- package/tools/cli/bundlers/test-analyst.js +0 -28
- package/tools/cli/bundlers/test-bundler.js +0 -118
- package/tools/cli/bundlers/web-bundler.js +0 -1479
- package/tools/cli/commands/build.js +0 -458
- package/tools/cli/commands/list.js +0 -28
- package/tools/cli/commands/status.js +0 -47
- package/tools/cli/commands/uninstall.js +0 -44
- package/tools/cli/commands/update.js +0 -28
- package/tools/cli/installers/lib/ide/task-tool-command-generator.js +0 -119
- package/tools/cli/installers/lib/ide/workflow-command-generator.js +0 -235
- package/tools/cli/installers/lib/ide/workflow-command-template.md +0 -15
- package/tools/cli/lib/replace-project-root.js +0 -239
- package/tools/cli/regenerate-manifests.js +0 -28
- package/tools/cli/test-yaml-builder.js +0 -43
- package/tools/validate-bundles.js +0 -87
- package/v6-open-items.md +0 -23
- /package/{bmad/bmb/workflows → src/modules/bmb/workflows-legacy}/module-brief/template.md +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-brain-methods.csv +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-context.md +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/checklist.md +0 -0
- /package/src/modules/{bmm/workflows/1-analysis/game-brief/template.md → bmgd/workflows/1-preproduction/game-brief/templates/game-brief-template.md} +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/checklist.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/action-platformer.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/adventure.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/card-game.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/fighting.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/horror.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/idle-incremental.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/metroidvania.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/moba.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/party-game.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/puzzle.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/racing.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rhythm.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/roguelike.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rpg.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sandbox.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/shooter.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/simulation.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sports.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/strategy.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/survival.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/text-based.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/tower-defense.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/turn-based-tactics.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/visual-novel.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types.csv +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows/gdd → bmgd/workflows/2-design/gdd/templates}/gdd-template.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/checklist.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows/narrative → bmgd/workflows/2-design/narrative/templates}/narrative-template.md +0 -0
- /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/decision-catalog.yaml +0 -0
- /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/pattern-categories.csv +0 -0
- /package/src/modules/{bmm/workflows/4-implementation/code-review/backlog_template.md → bmgd/workflows/4-production/code-review/backlog-template.md} +0 -0
- /package/src/utility/{models/fragments/handler-data.xml → agent-components/handler-data.txt} +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
const path = require('node:path');
|
|
2
2
|
const fs = require('fs-extra');
|
|
3
|
-
const yaml = require('
|
|
3
|
+
const yaml = require('yaml');
|
|
4
4
|
const chalk = require('chalk');
|
|
5
5
|
const { XmlHandler } = require('../../../lib/xml-handler');
|
|
6
6
|
const { getProjectRoot, getSourcePath, getModulePath } = require('../../../lib/project-root');
|
|
7
|
+
const { filterCustomizationData } = require('../../../lib/agent/compiler');
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Manages the installation, updating, and removal of BMAD modules.
|
|
@@ -12,7 +13,7 @@ const { getProjectRoot, getSourcePath, getModulePath } = require('../../../lib/p
|
|
|
12
13
|
*
|
|
13
14
|
* @class ModuleManager
|
|
14
15
|
* @requires fs-extra
|
|
15
|
-
* @requires
|
|
16
|
+
* @requires yaml
|
|
16
17
|
* @requires chalk
|
|
17
18
|
* @requires XmlHandler
|
|
18
19
|
*
|
|
@@ -22,74 +23,354 @@ const { getProjectRoot, getSourcePath, getModulePath } = require('../../../lib/p
|
|
|
22
23
|
* await manager.install('core-module', '/path/to/bmad');
|
|
23
24
|
*/
|
|
24
25
|
class ModuleManager {
|
|
25
|
-
constructor() {
|
|
26
|
+
constructor(options = {}) {
|
|
26
27
|
// Path to source modules directory
|
|
27
28
|
this.modulesSourcePath = getSourcePath('modules');
|
|
28
29
|
this.xmlHandler = new XmlHandler();
|
|
30
|
+
this.bmadFolderName = 'bmad'; // Default, can be overridden
|
|
31
|
+
this.customModulePaths = new Map(); // Initialize custom module paths
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
/**
|
|
32
|
-
*
|
|
33
|
-
* @
|
|
35
|
+
* Set the bmad folder name for placeholder replacement
|
|
36
|
+
* @param {string} bmadFolderName - The bmad folder name
|
|
34
37
|
*/
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
setBmadFolderName(bmadFolderName) {
|
|
39
|
+
this.bmadFolderName = bmadFolderName;
|
|
40
|
+
}
|
|
37
41
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Set the core configuration for access during module installation
|
|
44
|
+
* @param {Object} coreConfig - Core configuration object
|
|
45
|
+
*/
|
|
46
|
+
setCoreConfig(coreConfig) {
|
|
47
|
+
this.coreConfig = coreConfig;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Set custom module paths for priority lookup
|
|
52
|
+
* @param {Map<string, string>} customModulePaths - Map of module ID to source path
|
|
53
|
+
*/
|
|
54
|
+
setCustomModulePaths(customModulePaths) {
|
|
55
|
+
this.customModulePaths = customModulePaths;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Copy a file to the target location
|
|
60
|
+
* @param {string} sourcePath - Source file path
|
|
61
|
+
* @param {string} targetPath - Target file path
|
|
62
|
+
* @param {boolean} overwrite - Whether to overwrite existing files (default: true)
|
|
63
|
+
*/
|
|
64
|
+
async copyFileWithPlaceholderReplacement(sourcePath, targetPath, overwrite = true) {
|
|
65
|
+
await fs.copy(sourcePath, targetPath, { overwrite });
|
|
66
|
+
}
|
|
42
67
|
|
|
43
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Copy a directory recursively
|
|
70
|
+
* @param {string} sourceDir - Source directory path
|
|
71
|
+
* @param {string} targetDir - Target directory path
|
|
72
|
+
* @param {boolean} overwrite - Whether to overwrite existing files (default: true)
|
|
73
|
+
*/
|
|
74
|
+
async copyDirectoryWithPlaceholderReplacement(sourceDir, targetDir, overwrite = true) {
|
|
75
|
+
await fs.ensureDir(targetDir);
|
|
76
|
+
const entries = await fs.readdir(sourceDir, { withFileTypes: true });
|
|
44
77
|
|
|
45
78
|
for (const entry of entries) {
|
|
79
|
+
const sourcePath = path.join(sourceDir, entry.name);
|
|
80
|
+
const targetPath = path.join(targetDir, entry.name);
|
|
81
|
+
|
|
46
82
|
if (entry.isDirectory()) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
83
|
+
await this.copyDirectoryWithPlaceholderReplacement(sourcePath, targetPath, overwrite);
|
|
84
|
+
} else {
|
|
85
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, overwrite);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Copy sidecar directory to _bmad/_memory location with update-safe handling
|
|
92
|
+
* @param {string} sourceSidecarPath - Source sidecar directory path
|
|
93
|
+
* @param {string} agentName - Name of the agent (for naming)
|
|
94
|
+
* @param {string} bmadMemoryPath - This should ALWAYS be _bmad/_memory
|
|
95
|
+
* @param {boolean} isUpdate - Whether this is an update (default: false)
|
|
96
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
97
|
+
* @param {Object} installer - Installer instance for file tracking
|
|
98
|
+
*/
|
|
99
|
+
async copySidecarToMemory(sourceSidecarPath, agentName, bmadMemoryPath, isUpdate = false, bmadDir = null, installer = null) {
|
|
100
|
+
const crypto = require('node:crypto');
|
|
101
|
+
const sidecarTargetDir = path.join(bmadMemoryPath, `${agentName}-sidecar`);
|
|
102
|
+
|
|
103
|
+
// Ensure target directory exists
|
|
104
|
+
await fs.ensureDir(bmadMemoryPath);
|
|
105
|
+
await fs.ensureDir(sidecarTargetDir);
|
|
106
|
+
|
|
107
|
+
// Get existing files manifest for update checking
|
|
108
|
+
let existingFilesManifest = [];
|
|
109
|
+
if (isUpdate && installer) {
|
|
110
|
+
existingFilesManifest = await installer.readFilesManifest(bmadDir);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Build map of existing sidecar files with their hashes
|
|
114
|
+
const existingSidecarFiles = new Map();
|
|
115
|
+
for (const fileEntry of existingFilesManifest) {
|
|
116
|
+
if (fileEntry.path && fileEntry.path.includes(`${agentName}-sidecar/`)) {
|
|
117
|
+
existingSidecarFiles.set(fileEntry.path, fileEntry.hash);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
60
120
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (await fs.pathExists(configToRead)) {
|
|
64
|
-
try {
|
|
65
|
-
const configContent = await fs.readFile(configToRead, 'utf8');
|
|
66
|
-
const config = yaml.load(configContent);
|
|
121
|
+
// Get all files in source sidecar
|
|
122
|
+
const sourceFiles = await this.getFileList(sourceSidecarPath);
|
|
67
123
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
124
|
+
for (const file of sourceFiles) {
|
|
125
|
+
const sourceFilePath = path.join(sourceSidecarPath, file);
|
|
126
|
+
const targetFilePath = path.join(sidecarTargetDir, file);
|
|
127
|
+
|
|
128
|
+
// Calculate current source file hash
|
|
129
|
+
const sourceHash = crypto
|
|
130
|
+
.createHash('sha256')
|
|
131
|
+
.update(await fs.readFile(sourceFilePath))
|
|
132
|
+
.digest('hex');
|
|
133
|
+
|
|
134
|
+
// Path relative to bmad directory
|
|
135
|
+
const relativeToBmad = path.join('_memory', `${agentName}-sidecar`, file);
|
|
136
|
+
|
|
137
|
+
if (isUpdate && (await fs.pathExists(targetFilePath))) {
|
|
138
|
+
// Calculate current target file hash
|
|
139
|
+
const currentTargetHash = crypto
|
|
140
|
+
.createHash('sha256')
|
|
141
|
+
.update(await fs.readFile(targetFilePath))
|
|
142
|
+
.digest('hex');
|
|
143
|
+
|
|
144
|
+
// Get the last known hash from files-manifest
|
|
145
|
+
const lastKnownHash = existingSidecarFiles.get(relativeToBmad);
|
|
146
|
+
|
|
147
|
+
if (lastKnownHash) {
|
|
148
|
+
// We have a record of this file
|
|
149
|
+
if (currentTargetHash === lastKnownHash) {
|
|
150
|
+
// File hasn't been modified by user, safe to update
|
|
151
|
+
await this.copyFileWithPlaceholderReplacement(sourceFilePath, targetFilePath, true);
|
|
152
|
+
if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
|
|
153
|
+
console.log(chalk.dim(` Updated sidecar file: ${relativeToBmad}`));
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
// User has modified the file, preserve it
|
|
157
|
+
if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
|
|
158
|
+
console.log(chalk.dim(` Preserving user-modified file: ${relativeToBmad}`));
|
|
71
159
|
}
|
|
160
|
+
}
|
|
161
|
+
} else {
|
|
162
|
+
// First time seeing this file in manifest, copy it
|
|
163
|
+
await this.copyFileWithPlaceholderReplacement(sourceFilePath, targetFilePath, true);
|
|
164
|
+
if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
|
|
165
|
+
console.log(chalk.dim(` Added new sidecar file: ${relativeToBmad}`));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
} else {
|
|
169
|
+
// New installation
|
|
170
|
+
await this.copyFileWithPlaceholderReplacement(sourceFilePath, targetFilePath, true);
|
|
171
|
+
if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
|
|
172
|
+
console.log(chalk.dim(` Copied sidecar file: ${relativeToBmad}`));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
72
175
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
176
|
+
// Track the file in the installer's file tracking system
|
|
177
|
+
if (installer && installer.installedFiles) {
|
|
178
|
+
installer.installedFiles.add(targetFilePath);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Return list of files that were processed
|
|
183
|
+
const processedFiles = sourceFiles.map((file) => path.join('_memory', `${agentName}-sidecar`, file));
|
|
184
|
+
return processedFiles;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* List all available modules (excluding core which is always installed)
|
|
189
|
+
* @returns {Object} Object with modules array and customModules array
|
|
190
|
+
*/
|
|
191
|
+
async listAvailable() {
|
|
192
|
+
const modules = [];
|
|
193
|
+
const customModules = [];
|
|
194
|
+
|
|
195
|
+
// First, scan src/modules (the standard location)
|
|
196
|
+
if (await fs.pathExists(this.modulesSourcePath)) {
|
|
197
|
+
const entries = await fs.readdir(this.modulesSourcePath, { withFileTypes: true });
|
|
198
|
+
|
|
199
|
+
for (const entry of entries) {
|
|
200
|
+
if (entry.isDirectory()) {
|
|
201
|
+
const modulePath = path.join(this.modulesSourcePath, entry.name);
|
|
202
|
+
// Check for module structure (module.yaml OR custom.yaml)
|
|
203
|
+
const moduleConfigPath = path.join(modulePath, 'module.yaml');
|
|
204
|
+
const installerConfigPath = path.join(modulePath, '_module-installer', 'module.yaml');
|
|
205
|
+
const customConfigPath = path.join(modulePath, '_module-installer', 'custom.yaml');
|
|
206
|
+
|
|
207
|
+
// Skip if this doesn't look like a module
|
|
208
|
+
if (
|
|
209
|
+
!(await fs.pathExists(moduleConfigPath)) &&
|
|
210
|
+
!(await fs.pathExists(installerConfigPath)) &&
|
|
211
|
+
!(await fs.pathExists(customConfigPath))
|
|
212
|
+
) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Skip core module - it's always installed first and not selectable
|
|
217
|
+
if (entry.name === 'core') {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const moduleInfo = await this.getModuleInfo(modulePath, entry.name, 'src/modules');
|
|
222
|
+
if (moduleInfo) {
|
|
223
|
+
modules.push(moduleInfo);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Check for cached custom modules in _config/custom/
|
|
230
|
+
if (this.bmadDir) {
|
|
231
|
+
const customCacheDir = path.join(this.bmadDir, '_config', 'custom');
|
|
232
|
+
if (await fs.pathExists(customCacheDir)) {
|
|
233
|
+
const cacheEntries = await fs.readdir(customCacheDir, { withFileTypes: true });
|
|
234
|
+
for (const entry of cacheEntries) {
|
|
235
|
+
if (entry.isDirectory()) {
|
|
236
|
+
const cachePath = path.join(customCacheDir, entry.name);
|
|
237
|
+
const moduleInfo = await this.getModuleInfo(cachePath, entry.name, '_config/custom');
|
|
238
|
+
if (moduleInfo && !modules.some((m) => m.id === moduleInfo.id) && !customModules.some((m) => m.id === moduleInfo.id)) {
|
|
239
|
+
moduleInfo.isCustom = true;
|
|
240
|
+
moduleInfo.fromCache = true;
|
|
241
|
+
customModules.push(moduleInfo);
|
|
242
|
+
}
|
|
80
243
|
}
|
|
81
244
|
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
82
247
|
|
|
83
|
-
|
|
248
|
+
return { modules, customModules };
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Get module information from a module path
|
|
253
|
+
* @param {string} modulePath - Path to the module directory
|
|
254
|
+
* @param {string} defaultName - Default name for the module
|
|
255
|
+
* @param {string} sourceDescription - Description of where the module was found
|
|
256
|
+
* @returns {Object|null} Module info or null if not a valid module
|
|
257
|
+
*/
|
|
258
|
+
async getModuleInfo(modulePath, defaultName, sourceDescription) {
|
|
259
|
+
// Check for module structure (module.yaml OR custom.yaml)
|
|
260
|
+
const moduleConfigPath = path.join(modulePath, 'module.yaml');
|
|
261
|
+
const installerConfigPath = path.join(modulePath, '_module-installer', 'module.yaml');
|
|
262
|
+
const customConfigPath = path.join(modulePath, '_module-installer', 'custom.yaml');
|
|
263
|
+
const rootCustomConfigPath = path.join(modulePath, 'custom.yaml');
|
|
264
|
+
let configPath = null;
|
|
265
|
+
|
|
266
|
+
if (await fs.pathExists(moduleConfigPath)) {
|
|
267
|
+
configPath = moduleConfigPath;
|
|
268
|
+
} else if (await fs.pathExists(installerConfigPath)) {
|
|
269
|
+
configPath = installerConfigPath;
|
|
270
|
+
} else if (await fs.pathExists(customConfigPath)) {
|
|
271
|
+
configPath = customConfigPath;
|
|
272
|
+
} else if (await fs.pathExists(rootCustomConfigPath)) {
|
|
273
|
+
configPath = rootCustomConfigPath;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// Skip if this doesn't look like a module
|
|
277
|
+
if (!configPath) {
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Mark as custom if it's using custom.yaml OR if it's outside src/modules
|
|
282
|
+
const isCustomSource = sourceDescription !== 'src/modules';
|
|
283
|
+
const moduleInfo = {
|
|
284
|
+
id: defaultName,
|
|
285
|
+
path: modulePath,
|
|
286
|
+
name: defaultName
|
|
287
|
+
.split('-')
|
|
288
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
289
|
+
.join(' '),
|
|
290
|
+
description: 'BMAD Module',
|
|
291
|
+
version: '5.0.0',
|
|
292
|
+
source: sourceDescription,
|
|
293
|
+
isCustom: configPath === customConfigPath || configPath === rootCustomConfigPath || isCustomSource,
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
// Read module config for metadata
|
|
297
|
+
try {
|
|
298
|
+
const configContent = await fs.readFile(configPath, 'utf8');
|
|
299
|
+
const config = yaml.parse(configContent);
|
|
300
|
+
|
|
301
|
+
// Use the code property as the id if available
|
|
302
|
+
if (config.code) {
|
|
303
|
+
moduleInfo.id = config.code;
|
|
84
304
|
}
|
|
305
|
+
|
|
306
|
+
moduleInfo.name = config.name || moduleInfo.name;
|
|
307
|
+
moduleInfo.description = config.description || moduleInfo.description;
|
|
308
|
+
moduleInfo.version = config.version || moduleInfo.version;
|
|
309
|
+
moduleInfo.dependencies = config.dependencies || [];
|
|
310
|
+
moduleInfo.defaultSelected = config.default_selected === undefined ? false : config.default_selected;
|
|
311
|
+
} catch (error) {
|
|
312
|
+
console.warn(`Failed to read config for ${defaultName}:`, error.message);
|
|
85
313
|
}
|
|
86
314
|
|
|
87
|
-
return
|
|
315
|
+
return moduleInfo;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Find the source path for a module by searching all possible locations
|
|
320
|
+
* @param {string} moduleCode - Code of the module to find (from module.yaml)
|
|
321
|
+
* @returns {string|null} Path to the module source or null if not found
|
|
322
|
+
*/
|
|
323
|
+
async findModuleSource(moduleCode) {
|
|
324
|
+
const projectRoot = getProjectRoot();
|
|
325
|
+
|
|
326
|
+
// First check custom module paths if they exist
|
|
327
|
+
if (this.customModulePaths && this.customModulePaths.has(moduleCode)) {
|
|
328
|
+
return this.customModulePaths.get(moduleCode);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// Search in src/modules by READING module.yaml files to match by code
|
|
332
|
+
if (await fs.pathExists(this.modulesSourcePath)) {
|
|
333
|
+
const entries = await fs.readdir(this.modulesSourcePath, { withFileTypes: true });
|
|
334
|
+
for (const entry of entries) {
|
|
335
|
+
if (entry.isDirectory()) {
|
|
336
|
+
const modulePath = path.join(this.modulesSourcePath, entry.name);
|
|
337
|
+
|
|
338
|
+
// Read module.yaml to get the code
|
|
339
|
+
const moduleConfigPath = path.join(modulePath, 'module.yaml');
|
|
340
|
+
const installerConfigPath = path.join(modulePath, '_module-installer', 'module.yaml');
|
|
341
|
+
const customConfigPath = path.join(modulePath, '_module-installer', 'custom.yaml');
|
|
342
|
+
|
|
343
|
+
let configPath = null;
|
|
344
|
+
if (await fs.pathExists(moduleConfigPath)) {
|
|
345
|
+
configPath = moduleConfigPath;
|
|
346
|
+
} else if (await fs.pathExists(installerConfigPath)) {
|
|
347
|
+
configPath = installerConfigPath;
|
|
348
|
+
} else if (await fs.pathExists(customConfigPath)) {
|
|
349
|
+
configPath = customConfigPath;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
if (configPath) {
|
|
353
|
+
try {
|
|
354
|
+
const configContent = await fs.readFile(configPath, 'utf8');
|
|
355
|
+
const config = yaml.parse(configContent);
|
|
356
|
+
if (config.code === moduleCode) {
|
|
357
|
+
return modulePath;
|
|
358
|
+
}
|
|
359
|
+
} catch (error) {
|
|
360
|
+
// Continue to next module if parse fails
|
|
361
|
+
console.warn(`Warning: Failed to parse module config at ${configPath}: ${error.message}`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
return null;
|
|
88
369
|
}
|
|
89
370
|
|
|
90
371
|
/**
|
|
91
372
|
* Install a module
|
|
92
|
-
* @param {string} moduleName -
|
|
373
|
+
* @param {string} moduleName - Code of the module to install (from module.yaml)
|
|
93
374
|
* @param {string} bmadDir - Target bmad directory
|
|
94
375
|
* @param {Function} fileTrackingCallback - Optional callback to track installed files
|
|
95
376
|
* @param {Object} options - Additional installation options
|
|
@@ -98,23 +379,61 @@ class ModuleManager {
|
|
|
98
379
|
* @param {Object} options.logger - Logger instance for output
|
|
99
380
|
*/
|
|
100
381
|
async install(moduleName, bmadDir, fileTrackingCallback = null, options = {}) {
|
|
101
|
-
const sourcePath =
|
|
382
|
+
const sourcePath = await this.findModuleSource(moduleName);
|
|
102
383
|
const targetPath = path.join(bmadDir, moduleName);
|
|
103
384
|
|
|
104
385
|
// Check if source module exists
|
|
105
|
-
if (!
|
|
106
|
-
|
|
386
|
+
if (!sourcePath) {
|
|
387
|
+
// Provide a more user-friendly error message
|
|
388
|
+
throw new Error(
|
|
389
|
+
`Source for module '${moduleName}' is not available. It will be retained but cannot be updated without its source files.`,
|
|
390
|
+
);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// Check if this is a custom module and read its custom.yaml values
|
|
394
|
+
let customConfig = null;
|
|
395
|
+
const rootCustomConfigPath = path.join(sourcePath, 'custom.yaml');
|
|
396
|
+
const moduleInstallerCustomPath = path.join(sourcePath, '_module-installer', 'custom.yaml');
|
|
397
|
+
|
|
398
|
+
if (await fs.pathExists(rootCustomConfigPath)) {
|
|
399
|
+
try {
|
|
400
|
+
const customContent = await fs.readFile(rootCustomConfigPath, 'utf8');
|
|
401
|
+
customConfig = yaml.parse(customContent);
|
|
402
|
+
} catch (error) {
|
|
403
|
+
console.warn(chalk.yellow(`Warning: Failed to read custom.yaml for ${moduleName}:`, error.message));
|
|
404
|
+
}
|
|
405
|
+
} else if (await fs.pathExists(moduleInstallerCustomPath)) {
|
|
406
|
+
try {
|
|
407
|
+
const customContent = await fs.readFile(moduleInstallerCustomPath, 'utf8');
|
|
408
|
+
customConfig = yaml.parse(customContent);
|
|
409
|
+
} catch (error) {
|
|
410
|
+
console.warn(chalk.yellow(`Warning: Failed to read custom.yaml for ${moduleName}:`, error.message));
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
// If this is a custom module, merge its values into the module config
|
|
415
|
+
if (customConfig) {
|
|
416
|
+
options.moduleConfig = { ...options.moduleConfig, ...customConfig };
|
|
417
|
+
if (options.logger) {
|
|
418
|
+
options.logger.log(chalk.cyan(` Merged custom configuration for ${moduleName}`));
|
|
419
|
+
}
|
|
107
420
|
}
|
|
108
421
|
|
|
109
422
|
// Check if already installed
|
|
110
423
|
if (await fs.pathExists(targetPath)) {
|
|
111
|
-
console.log(chalk.yellow(`Module '${moduleName}' already installed, updating...`));
|
|
112
424
|
await fs.remove(targetPath);
|
|
113
425
|
}
|
|
114
426
|
|
|
427
|
+
// Vendor cross-module workflows BEFORE copying
|
|
428
|
+
// This reads source agent.yaml files and copies referenced workflows
|
|
429
|
+
await this.vendorCrossModuleWorkflows(sourcePath, targetPath, moduleName);
|
|
430
|
+
|
|
115
431
|
// Copy module files with filtering
|
|
116
432
|
await this.copyModuleWithFiltering(sourcePath, targetPath, fileTrackingCallback, options.moduleConfig);
|
|
117
433
|
|
|
434
|
+
// Compile any .agent.yaml files to .md format
|
|
435
|
+
await this.compileModuleAgents(sourcePath, targetPath, moduleName, bmadDir, options.installer);
|
|
436
|
+
|
|
118
437
|
// Process agent files to inject activation block
|
|
119
438
|
await this.processAgentFiles(targetPath, moduleName);
|
|
120
439
|
|
|
@@ -137,12 +456,12 @@ class ModuleManager {
|
|
|
137
456
|
* @param {boolean} force - Force update (overwrite modifications)
|
|
138
457
|
*/
|
|
139
458
|
async update(moduleName, bmadDir, force = false) {
|
|
140
|
-
const sourcePath =
|
|
459
|
+
const sourcePath = await this.findModuleSource(moduleName);
|
|
141
460
|
const targetPath = path.join(bmadDir, moduleName);
|
|
142
461
|
|
|
143
462
|
// Check if source module exists
|
|
144
|
-
if (!
|
|
145
|
-
throw new Error(`Module '${moduleName}' not found in source`);
|
|
463
|
+
if (!sourcePath) {
|
|
464
|
+
throw new Error(`Module '${moduleName}' not found in any source location`);
|
|
146
465
|
}
|
|
147
466
|
|
|
148
467
|
// Check if module is installed
|
|
@@ -157,6 +476,10 @@ class ModuleManager {
|
|
|
157
476
|
} else {
|
|
158
477
|
// Selective update - preserve user modifications
|
|
159
478
|
await this.syncModule(sourcePath, targetPath);
|
|
479
|
+
|
|
480
|
+
// Recompile agents (#1133)
|
|
481
|
+
await this.compileModuleAgents(sourcePath, targetPath, moduleName, bmadDir, options.installer);
|
|
482
|
+
await this.processAgentFiles(targetPath, moduleName);
|
|
160
483
|
}
|
|
161
484
|
|
|
162
485
|
return {
|
|
@@ -220,7 +543,7 @@ class ModuleManager {
|
|
|
220
543
|
if (await fs.pathExists(configPath)) {
|
|
221
544
|
try {
|
|
222
545
|
const configContent = await fs.readFile(configPath, 'utf8');
|
|
223
|
-
const config = yaml.
|
|
546
|
+
const config = yaml.parse(configContent);
|
|
224
547
|
Object.assign(moduleInfo, config);
|
|
225
548
|
} catch (error) {
|
|
226
549
|
console.warn(`Failed to read installed module config:`, error.message);
|
|
@@ -241,24 +564,26 @@ class ModuleManager {
|
|
|
241
564
|
// Get all files in source
|
|
242
565
|
const sourceFiles = await this.getFileList(sourcePath);
|
|
243
566
|
|
|
244
|
-
// Game development files to conditionally exclude
|
|
245
|
-
const gameDevFiles = [
|
|
246
|
-
'agents/game-architect.agent.yaml',
|
|
247
|
-
'agents/game-designer.agent.yaml',
|
|
248
|
-
'agents/game-dev.agent.yaml',
|
|
249
|
-
'workflows/1-analysis/brainstorm-game',
|
|
250
|
-
'workflows/1-analysis/game-brief',
|
|
251
|
-
'workflows/2-plan-workflows/gdd',
|
|
252
|
-
];
|
|
253
|
-
|
|
254
567
|
for (const file of sourceFiles) {
|
|
255
568
|
// Skip sub-modules directory - these are IDE-specific and handled separately
|
|
256
569
|
if (file.startsWith('sub-modules/')) {
|
|
257
570
|
continue;
|
|
258
571
|
}
|
|
259
572
|
|
|
573
|
+
// Only skip sidecar directories - they are handled separately during agent compilation
|
|
574
|
+
// But still allow other files in agent directories
|
|
575
|
+
const isInAgentDirectory = file.startsWith('agents/');
|
|
576
|
+
const isInSidecarDirectory = path
|
|
577
|
+
.dirname(file)
|
|
578
|
+
.split('/')
|
|
579
|
+
.some((dir) => dir.toLowerCase().endsWith('-sidecar'));
|
|
580
|
+
|
|
581
|
+
if (isInSidecarDirectory) {
|
|
582
|
+
continue;
|
|
583
|
+
}
|
|
584
|
+
|
|
260
585
|
// Skip _module-installer directory - it's only needed at install time
|
|
261
|
-
if (file.startsWith('_module-installer/')) {
|
|
586
|
+
if (file.startsWith('_module-installer/') || file === 'module.yaml') {
|
|
262
587
|
continue;
|
|
263
588
|
}
|
|
264
589
|
|
|
@@ -267,17 +592,9 @@ class ModuleManager {
|
|
|
267
592
|
continue;
|
|
268
593
|
}
|
|
269
594
|
|
|
270
|
-
// Skip
|
|
271
|
-
if (
|
|
272
|
-
|
|
273
|
-
// Check if file path starts with or is within any game dev directory
|
|
274
|
-
return file === gamePath || file.startsWith(gamePath + '/') || file.startsWith(gamePath + '\\');
|
|
275
|
-
});
|
|
276
|
-
|
|
277
|
-
if (shouldSkipGameDev) {
|
|
278
|
-
console.log(chalk.dim(` Skipping game dev content: ${file}`));
|
|
279
|
-
continue;
|
|
280
|
-
}
|
|
595
|
+
// Skip .agent.yaml files - they will be compiled separately
|
|
596
|
+
if (file.endsWith('.agent.yaml')) {
|
|
597
|
+
continue;
|
|
281
598
|
}
|
|
282
599
|
|
|
283
600
|
const sourceFile = path.join(sourcePath, file);
|
|
@@ -301,9 +618,8 @@ class ModuleManager {
|
|
|
301
618
|
await fs.ensureDir(path.dirname(targetFile));
|
|
302
619
|
await this.copyWorkflowYamlStripped(sourceFile, targetFile);
|
|
303
620
|
} else {
|
|
304
|
-
// Copy the file
|
|
305
|
-
await
|
|
306
|
-
await fs.copy(sourceFile, targetFile, { overwrite: true });
|
|
621
|
+
// Copy the file with placeholder replacement
|
|
622
|
+
await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile);
|
|
307
623
|
}
|
|
308
624
|
|
|
309
625
|
// Track the file if callback provided
|
|
@@ -323,12 +639,17 @@ class ModuleManager {
|
|
|
323
639
|
// Read the source YAML file
|
|
324
640
|
let yamlContent = await fs.readFile(sourceFile, 'utf8');
|
|
325
641
|
|
|
642
|
+
// IMPORTANT: Replace escape sequence and placeholder BEFORE parsing YAML
|
|
643
|
+
// Otherwise parsing will fail on the placeholder
|
|
644
|
+
yamlContent = yamlContent.replaceAll('_bmad', '_bmad');
|
|
645
|
+
yamlContent = yamlContent.replaceAll('_bmad', this.bmadFolderName);
|
|
646
|
+
|
|
326
647
|
try {
|
|
327
648
|
// First check if web_bundle exists by parsing
|
|
328
|
-
const workflowConfig = yaml.
|
|
649
|
+
const workflowConfig = yaml.parse(yamlContent);
|
|
329
650
|
|
|
330
651
|
if (workflowConfig.web_bundle === undefined) {
|
|
331
|
-
// No web_bundle section, just
|
|
652
|
+
// No web_bundle section, just write (placeholders already replaced above)
|
|
332
653
|
await fs.writeFile(targetFile, yamlContent, 'utf8');
|
|
333
654
|
return;
|
|
334
655
|
}
|
|
@@ -390,6 +711,7 @@ class ModuleManager {
|
|
|
390
711
|
// Clean up any double blank lines that might result
|
|
391
712
|
const strippedYaml = newLines.join('\n').replaceAll(/\n\n\n+/g, '\n\n');
|
|
392
713
|
|
|
714
|
+
// Placeholders already replaced at the beginning of this function
|
|
393
715
|
await fs.writeFile(targetFile, strippedYaml, 'utf8');
|
|
394
716
|
} catch {
|
|
395
717
|
// If anything fails, just copy the file as-is
|
|
@@ -398,34 +720,396 @@ class ModuleManager {
|
|
|
398
720
|
}
|
|
399
721
|
}
|
|
400
722
|
|
|
723
|
+
/**
|
|
724
|
+
* Compile .agent.yaml files to .md format in modules
|
|
725
|
+
* @param {string} sourcePath - Source module path
|
|
726
|
+
* @param {string} targetPath - Target module path
|
|
727
|
+
* @param {string} moduleName - Module name
|
|
728
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
729
|
+
* @param {Object} installer - Installer instance for file tracking
|
|
730
|
+
*/
|
|
731
|
+
async compileModuleAgents(sourcePath, targetPath, moduleName, bmadDir, installer = null) {
|
|
732
|
+
const sourceAgentsPath = path.join(sourcePath, 'agents');
|
|
733
|
+
const targetAgentsPath = path.join(targetPath, 'agents');
|
|
734
|
+
const cfgAgentsDir = path.join(bmadDir, '_config', 'agents');
|
|
735
|
+
|
|
736
|
+
// Check if agents directory exists in source
|
|
737
|
+
if (!(await fs.pathExists(sourceAgentsPath))) {
|
|
738
|
+
return; // No agents to compile
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
// Get all agent YAML files recursively
|
|
742
|
+
const agentFiles = await this.findAgentFiles(sourceAgentsPath);
|
|
743
|
+
|
|
744
|
+
for (const agentFile of agentFiles) {
|
|
745
|
+
if (!agentFile.endsWith('.agent.yaml')) continue;
|
|
746
|
+
|
|
747
|
+
const relativePath = path.relative(sourceAgentsPath, agentFile);
|
|
748
|
+
const targetDir = path.join(targetAgentsPath, path.dirname(relativePath));
|
|
749
|
+
|
|
750
|
+
await fs.ensureDir(targetDir);
|
|
751
|
+
|
|
752
|
+
const agentName = path.basename(agentFile, '.agent.yaml');
|
|
753
|
+
const sourceYamlPath = agentFile;
|
|
754
|
+
const targetMdPath = path.join(targetDir, `${agentName}.md`);
|
|
755
|
+
const customizePath = path.join(cfgAgentsDir, `${moduleName}-${agentName}.customize.yaml`);
|
|
756
|
+
|
|
757
|
+
// Read and compile the YAML
|
|
758
|
+
try {
|
|
759
|
+
const yamlContent = await fs.readFile(sourceYamlPath, 'utf8');
|
|
760
|
+
const { compileAgent } = require('../../../lib/agent/compiler');
|
|
761
|
+
|
|
762
|
+
// Create customize template if it doesn't exist
|
|
763
|
+
if (!(await fs.pathExists(customizePath))) {
|
|
764
|
+
const { getSourcePath } = require('../../../lib/project-root');
|
|
765
|
+
const genericTemplatePath = getSourcePath('utility', 'agent-components', 'agent.customize.template.yaml');
|
|
766
|
+
if (await fs.pathExists(genericTemplatePath)) {
|
|
767
|
+
await this.copyFileWithPlaceholderReplacement(genericTemplatePath, customizePath);
|
|
768
|
+
// Only show customize creation in verbose mode
|
|
769
|
+
if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
|
|
770
|
+
console.log(chalk.dim(` Created customize: ${moduleName}-${agentName}.customize.yaml`));
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
// Store original hash for modification detection
|
|
774
|
+
const crypto = require('node:crypto');
|
|
775
|
+
const customizeContent = await fs.readFile(customizePath, 'utf8');
|
|
776
|
+
const originalHash = crypto.createHash('sha256').update(customizeContent).digest('hex');
|
|
777
|
+
|
|
778
|
+
// Store in main manifest
|
|
779
|
+
const manifestPath = path.join(bmadDir, '_config', 'manifest.yaml');
|
|
780
|
+
let manifestData = {};
|
|
781
|
+
if (await fs.pathExists(manifestPath)) {
|
|
782
|
+
const manifestContent = await fs.readFile(manifestPath, 'utf8');
|
|
783
|
+
const yaml = require('yaml');
|
|
784
|
+
manifestData = yaml.parse(manifestContent);
|
|
785
|
+
}
|
|
786
|
+
if (!manifestData.agentCustomizations) {
|
|
787
|
+
manifestData.agentCustomizations = {};
|
|
788
|
+
}
|
|
789
|
+
manifestData.agentCustomizations[path.relative(bmadDir, customizePath)] = originalHash;
|
|
790
|
+
|
|
791
|
+
// Write back to manifest
|
|
792
|
+
const yaml = require('yaml');
|
|
793
|
+
// Clean the manifest data to remove any non-serializable values
|
|
794
|
+
const cleanManifestData = structuredClone(manifestData);
|
|
795
|
+
|
|
796
|
+
const updatedContent = yaml.stringify(cleanManifestData, {
|
|
797
|
+
indent: 2,
|
|
798
|
+
lineWidth: 0,
|
|
799
|
+
});
|
|
800
|
+
await fs.writeFile(manifestPath, updatedContent, 'utf8');
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
// Check for customizations and build answers object
|
|
805
|
+
let customizedFields = [];
|
|
806
|
+
let answers = {};
|
|
807
|
+
if (await fs.pathExists(customizePath)) {
|
|
808
|
+
const customizeContent = await fs.readFile(customizePath, 'utf8');
|
|
809
|
+
const customizeData = yaml.parse(customizeContent);
|
|
810
|
+
customizedFields = customizeData.customized_fields || [];
|
|
811
|
+
|
|
812
|
+
// Build answers object from customizations
|
|
813
|
+
if (customizeData.persona) {
|
|
814
|
+
answers.persona = customizeData.persona;
|
|
815
|
+
}
|
|
816
|
+
if (customizeData.agent?.metadata) {
|
|
817
|
+
const filteredMetadata = filterCustomizationData(customizeData.agent.metadata);
|
|
818
|
+
if (Object.keys(filteredMetadata).length > 0) {
|
|
819
|
+
Object.assign(answers, { metadata: filteredMetadata });
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
if (customizeData.critical_actions && customizeData.critical_actions.length > 0) {
|
|
823
|
+
answers.critical_actions = customizeData.critical_actions;
|
|
824
|
+
}
|
|
825
|
+
if (customizeData.memories && customizeData.memories.length > 0) {
|
|
826
|
+
answers.memories = customizeData.memories;
|
|
827
|
+
}
|
|
828
|
+
if (customizeData.menu && customizeData.menu.length > 0) {
|
|
829
|
+
answers.menu = customizeData.menu;
|
|
830
|
+
}
|
|
831
|
+
if (customizeData.prompts && customizeData.prompts.length > 0) {
|
|
832
|
+
answers.prompts = customizeData.prompts;
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
// Check if agent has sidecar
|
|
837
|
+
let hasSidecar = false;
|
|
838
|
+
try {
|
|
839
|
+
const agentYaml = yaml.parse(yamlContent);
|
|
840
|
+
hasSidecar = agentYaml?.agent?.metadata?.hasSidecar === true;
|
|
841
|
+
} catch {
|
|
842
|
+
// Continue without sidecar processing
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
// Compile with customizations if any
|
|
846
|
+
const { xml } = await compileAgent(yamlContent, answers, agentName, relativePath, { config: this.coreConfig || {} });
|
|
847
|
+
|
|
848
|
+
// Process TTS injection points if installer is available
|
|
849
|
+
let finalXml = xml;
|
|
850
|
+
if (installer && installer.processTTSInjectionPoints) {
|
|
851
|
+
finalXml = installer.processTTSInjectionPoints(xml, targetMdPath);
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
// Write the compiled agent
|
|
855
|
+
await fs.writeFile(targetMdPath, finalXml, 'utf8');
|
|
856
|
+
|
|
857
|
+
// Handle sidecar copying if present
|
|
858
|
+
if (hasSidecar) {
|
|
859
|
+
// Get the agent's directory to look for sidecar
|
|
860
|
+
const agentDir = path.dirname(agentFile);
|
|
861
|
+
const sidecarDirName = `${agentName}-sidecar`;
|
|
862
|
+
const sourceSidecarPath = path.join(agentDir, sidecarDirName);
|
|
863
|
+
|
|
864
|
+
// Check if sidecar directory exists
|
|
865
|
+
if (await fs.pathExists(sourceSidecarPath)) {
|
|
866
|
+
// Memory is always in _bmad/_memory
|
|
867
|
+
const bmadMemoryPath = path.join(bmadDir, '_memory');
|
|
868
|
+
|
|
869
|
+
// Determine if this is an update (by checking if agent already exists)
|
|
870
|
+
const isUpdate = await fs.pathExists(targetMdPath);
|
|
871
|
+
|
|
872
|
+
// Copy sidecar to memory location with update-safe handling
|
|
873
|
+
const copiedFiles = await this.copySidecarToMemory(sourceSidecarPath, agentName, bmadMemoryPath, isUpdate, bmadDir, installer);
|
|
874
|
+
|
|
875
|
+
if (process.env.BMAD_VERBOSE_INSTALL === 'true' && copiedFiles.length > 0) {
|
|
876
|
+
console.log(chalk.dim(` Sidecar files processed: ${copiedFiles.length} files`));
|
|
877
|
+
}
|
|
878
|
+
} else if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
|
|
879
|
+
console.log(chalk.yellow(` Warning: Agent marked as having sidecar but ${sidecarDirName} directory not found`));
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
// Copy any non-sidecar files from agent directory (e.g., foo.md)
|
|
884
|
+
const agentDir = path.dirname(agentFile);
|
|
885
|
+
const agentEntries = await fs.readdir(agentDir, { withFileTypes: true });
|
|
886
|
+
|
|
887
|
+
for (const entry of agentEntries) {
|
|
888
|
+
if (entry.isFile() && !entry.name.endsWith('.agent.yaml') && !entry.name.endsWith('.md')) {
|
|
889
|
+
// Copy additional files (like foo.md) to the agent target directory
|
|
890
|
+
const sourceFile = path.join(agentDir, entry.name);
|
|
891
|
+
const targetFile = path.join(targetDir, entry.name);
|
|
892
|
+
await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile);
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
// Only show compilation details in verbose mode
|
|
897
|
+
if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
|
|
898
|
+
console.log(
|
|
899
|
+
chalk.dim(
|
|
900
|
+
` Compiled agent: ${agentName} -> ${path.relative(targetPath, targetMdPath)}${hasSidecar ? ' (with sidecar)' : ''}`,
|
|
901
|
+
),
|
|
902
|
+
);
|
|
903
|
+
}
|
|
904
|
+
} catch (error) {
|
|
905
|
+
console.warn(chalk.yellow(` Failed to compile agent ${agentName}:`, error.message));
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
/**
|
|
911
|
+
* Find all .agent.yaml files recursively in a directory
|
|
912
|
+
* @param {string} dir - Directory to search
|
|
913
|
+
* @returns {Array} List of .agent.yaml file paths
|
|
914
|
+
*/
|
|
915
|
+
async findAgentFiles(dir) {
|
|
916
|
+
const agentFiles = [];
|
|
917
|
+
|
|
918
|
+
async function searchDirectory(searchDir) {
|
|
919
|
+
const entries = await fs.readdir(searchDir, { withFileTypes: true });
|
|
920
|
+
|
|
921
|
+
for (const entry of entries) {
|
|
922
|
+
const fullPath = path.join(searchDir, entry.name);
|
|
923
|
+
|
|
924
|
+
if (entry.isFile() && entry.name.endsWith('.agent.yaml')) {
|
|
925
|
+
agentFiles.push(fullPath);
|
|
926
|
+
} else if (entry.isDirectory()) {
|
|
927
|
+
await searchDirectory(fullPath);
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
await searchDirectory(dir);
|
|
933
|
+
return agentFiles;
|
|
934
|
+
}
|
|
935
|
+
|
|
401
936
|
/**
|
|
402
937
|
* Process agent files to inject activation block
|
|
403
938
|
* @param {string} modulePath - Path to installed module
|
|
404
939
|
* @param {string} moduleName - Module name
|
|
405
940
|
*/
|
|
406
941
|
async processAgentFiles(modulePath, moduleName) {
|
|
407
|
-
const agentsPath = path.join(modulePath, 'agents');
|
|
942
|
+
// const agentsPath = path.join(modulePath, 'agents');
|
|
943
|
+
// // Check if agents directory exists
|
|
944
|
+
// if (!(await fs.pathExists(agentsPath))) {
|
|
945
|
+
// return; // No agents to process
|
|
946
|
+
// }
|
|
947
|
+
// // Get all agent MD files recursively
|
|
948
|
+
// const agentFiles = await this.findAgentMdFiles(agentsPath);
|
|
949
|
+
// for (const agentFile of agentFiles) {
|
|
950
|
+
// if (!agentFile.endsWith('.md')) continue;
|
|
951
|
+
// let content = await fs.readFile(agentFile, 'utf8');
|
|
952
|
+
// // Check if content has agent XML and no activation block
|
|
953
|
+
// if (content.includes('<agent') && !content.includes('<activation')) {
|
|
954
|
+
// // Inject the activation block using XML handler
|
|
955
|
+
// content = this.xmlHandler.injectActivationSimple(content);
|
|
956
|
+
// await fs.writeFile(agentFile, content, 'utf8');
|
|
957
|
+
// }
|
|
958
|
+
// }
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
/**
|
|
962
|
+
* Find all .md agent files recursively in a directory
|
|
963
|
+
* @param {string} dir - Directory to search
|
|
964
|
+
* @returns {Array} List of .md agent file paths
|
|
965
|
+
*/
|
|
966
|
+
async findAgentMdFiles(dir) {
|
|
967
|
+
const agentFiles = [];
|
|
968
|
+
|
|
969
|
+
async function searchDirectory(searchDir) {
|
|
970
|
+
const entries = await fs.readdir(searchDir, { withFileTypes: true });
|
|
971
|
+
|
|
972
|
+
for (const entry of entries) {
|
|
973
|
+
const fullPath = path.join(searchDir, entry.name);
|
|
974
|
+
|
|
975
|
+
if (entry.isFile() && entry.name.endsWith('.md')) {
|
|
976
|
+
agentFiles.push(fullPath);
|
|
977
|
+
} else if (entry.isDirectory()) {
|
|
978
|
+
await searchDirectory(fullPath);
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
await searchDirectory(dir);
|
|
984
|
+
return agentFiles;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
/**
|
|
988
|
+
* Vendor cross-module workflows referenced in agent files
|
|
989
|
+
* Scans SOURCE agent.yaml files for workflow-install and copies workflows to destination
|
|
990
|
+
* @param {string} sourcePath - Source module path
|
|
991
|
+
* @param {string} targetPath - Target module path (destination)
|
|
992
|
+
* @param {string} moduleName - Module name being installed
|
|
993
|
+
*/
|
|
994
|
+
async vendorCrossModuleWorkflows(sourcePath, targetPath, moduleName) {
|
|
995
|
+
const sourceAgentsPath = path.join(sourcePath, 'agents');
|
|
408
996
|
|
|
409
|
-
// Check if agents directory exists
|
|
410
|
-
if (!(await fs.pathExists(
|
|
997
|
+
// Check if source agents directory exists
|
|
998
|
+
if (!(await fs.pathExists(sourceAgentsPath))) {
|
|
411
999
|
return; // No agents to process
|
|
412
1000
|
}
|
|
413
1001
|
|
|
414
|
-
// Get all agent files
|
|
415
|
-
const agentFiles = await fs.readdir(
|
|
1002
|
+
// Get all agent YAML files from source
|
|
1003
|
+
const agentFiles = await fs.readdir(sourceAgentsPath);
|
|
1004
|
+
const yamlFiles = agentFiles.filter((f) => f.endsWith('.agent.yaml') || f.endsWith('.yaml'));
|
|
416
1005
|
|
|
417
|
-
|
|
418
|
-
|
|
1006
|
+
if (yamlFiles.length === 0) {
|
|
1007
|
+
return; // No YAML agent files
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
let workflowsVendored = false;
|
|
419
1011
|
|
|
420
|
-
|
|
421
|
-
|
|
1012
|
+
for (const agentFile of yamlFiles) {
|
|
1013
|
+
const agentPath = path.join(sourceAgentsPath, agentFile);
|
|
1014
|
+
const agentYaml = yaml.parse(await fs.readFile(agentPath, 'utf8'));
|
|
422
1015
|
|
|
423
|
-
// Check if
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
1016
|
+
// Check if agent has menu items with workflow-install
|
|
1017
|
+
const menuItems = agentYaml?.agent?.menu || [];
|
|
1018
|
+
const workflowInstallItems = menuItems.filter((item) => item['workflow-install']);
|
|
1019
|
+
|
|
1020
|
+
if (workflowInstallItems.length === 0) {
|
|
1021
|
+
continue; // No workflow-install in this agent
|
|
428
1022
|
}
|
|
1023
|
+
|
|
1024
|
+
if (!workflowsVendored) {
|
|
1025
|
+
console.log(chalk.cyan(`\n Vendoring cross-module workflows for ${moduleName}...`));
|
|
1026
|
+
workflowsVendored = true;
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
console.log(chalk.dim(` Processing: ${agentFile}`));
|
|
1030
|
+
|
|
1031
|
+
for (const item of workflowInstallItems) {
|
|
1032
|
+
const sourceWorkflowPath = item.workflow; // Where to copy FROM
|
|
1033
|
+
const installWorkflowPath = item['workflow-install']; // Where to copy TO
|
|
1034
|
+
|
|
1035
|
+
// Parse SOURCE workflow path
|
|
1036
|
+
// Handle both _bmad placeholder and hardcoded 'bmad'
|
|
1037
|
+
// Example: {project-root}/_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml
|
|
1038
|
+
// Or: {project-root}/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml
|
|
1039
|
+
const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(?:_bmad)\/([^/]+)\/workflows\/(.+)/);
|
|
1040
|
+
if (!sourceMatch) {
|
|
1041
|
+
console.warn(chalk.yellow(` Could not parse workflow path: ${sourceWorkflowPath}`));
|
|
1042
|
+
continue;
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
const [, sourceModule, sourceWorkflowSubPath] = sourceMatch;
|
|
1046
|
+
|
|
1047
|
+
// Parse INSTALL workflow path
|
|
1048
|
+
// Handle_bmad
|
|
1049
|
+
// Example: {project-root}/_bmad/bmgd/workflows/4-production/create-story/workflow.yaml
|
|
1050
|
+
const installMatch = installWorkflowPath.match(/\{project-root\}\/(_bmad)\/([^/]+)\/workflows\/(.+)/);
|
|
1051
|
+
if (!installMatch) {
|
|
1052
|
+
console.warn(chalk.yellow(` Could not parse workflow-install path: ${installWorkflowPath}`));
|
|
1053
|
+
continue;
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
const installWorkflowSubPath = installMatch[2];
|
|
1057
|
+
|
|
1058
|
+
// Determine actual filesystem paths
|
|
1059
|
+
const sourceModulePath = path.join(this.modulesSourcePath, sourceModule);
|
|
1060
|
+
const actualSourceWorkflowPath = path.join(sourceModulePath, 'workflows', sourceWorkflowSubPath.replace(/\/workflow\.yaml$/, ''));
|
|
1061
|
+
|
|
1062
|
+
const actualDestWorkflowPath = path.join(targetPath, 'workflows', installWorkflowSubPath.replace(/\/workflow\.yaml$/, ''));
|
|
1063
|
+
|
|
1064
|
+
// Check if source workflow exists
|
|
1065
|
+
if (!(await fs.pathExists(actualSourceWorkflowPath))) {
|
|
1066
|
+
console.warn(chalk.yellow(` Source workflow not found: ${actualSourceWorkflowPath}`));
|
|
1067
|
+
continue;
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
// Copy the entire workflow folder
|
|
1071
|
+
console.log(
|
|
1072
|
+
chalk.dim(
|
|
1073
|
+
` Vendoring: ${sourceModule}/workflows/${sourceWorkflowSubPath.replace(/\/workflow\.yaml$/, '')} → ${moduleName}/workflows/${installWorkflowSubPath.replace(/\/workflow\.yaml$/, '')}`,
|
|
1074
|
+
),
|
|
1075
|
+
);
|
|
1076
|
+
|
|
1077
|
+
await fs.ensureDir(path.dirname(actualDestWorkflowPath));
|
|
1078
|
+
// Copy the workflow directory recursively with placeholder replacement
|
|
1079
|
+
await this.copyDirectoryWithPlaceholderReplacement(actualSourceWorkflowPath, actualDestWorkflowPath);
|
|
1080
|
+
|
|
1081
|
+
// Update the workflow.yaml config_source reference
|
|
1082
|
+
const workflowYamlPath = path.join(actualDestWorkflowPath, 'workflow.yaml');
|
|
1083
|
+
if (await fs.pathExists(workflowYamlPath)) {
|
|
1084
|
+
await this.updateWorkflowConfigSource(workflowYamlPath, moduleName);
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
if (workflowsVendored) {
|
|
1090
|
+
console.log(chalk.green(` ✓ Workflow vendoring complete\n`));
|
|
1091
|
+
}
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
/**
|
|
1095
|
+
* Update workflow.yaml config_source to point to new module
|
|
1096
|
+
* @param {string} workflowYamlPath - Path to workflow.yaml file
|
|
1097
|
+
* @param {string} newModuleName - New module name to reference
|
|
1098
|
+
*/
|
|
1099
|
+
async updateWorkflowConfigSource(workflowYamlPath, newModuleName) {
|
|
1100
|
+
let yamlContent = await fs.readFile(workflowYamlPath, 'utf8');
|
|
1101
|
+
|
|
1102
|
+
// Replace config_source: "{project-root}/_bmad/OLD_MODULE/config.yaml"
|
|
1103
|
+
// with config_source: "{project-root}/_bmad/NEW_MODULE/config.yaml"
|
|
1104
|
+
// Note: At this point _bmad has already been replaced with actual folder name
|
|
1105
|
+
const configSourcePattern = /config_source:\s*["']?\{project-root\}\/[^/]+\/[^/]+\/config\.yaml["']?/g;
|
|
1106
|
+
const newConfigSource = `config_source: "{project-root}/${this.bmadFolderName}/${newModuleName}/config.yaml"`;
|
|
1107
|
+
|
|
1108
|
+
const updatedYaml = yamlContent.replaceAll(configSourcePattern, newConfigSource);
|
|
1109
|
+
|
|
1110
|
+
if (updatedYaml !== yamlContent) {
|
|
1111
|
+
await fs.writeFile(workflowYamlPath, updatedYaml, 'utf8');
|
|
1112
|
+
console.log(chalk.dim(` Updated config_source to: ${this.bmadFolderName}/${newModuleName}/config.yaml`));
|
|
429
1113
|
}
|
|
430
1114
|
}
|
|
431
1115
|
|
|
@@ -441,7 +1125,11 @@ class ModuleManager {
|
|
|
441
1125
|
if (moduleName === 'core') {
|
|
442
1126
|
sourcePath = getSourcePath('core');
|
|
443
1127
|
} else {
|
|
444
|
-
sourcePath =
|
|
1128
|
+
sourcePath = await this.findModuleSource(moduleName);
|
|
1129
|
+
if (!sourcePath) {
|
|
1130
|
+
// No source found, skip module installer
|
|
1131
|
+
return;
|
|
1132
|
+
}
|
|
445
1133
|
}
|
|
446
1134
|
|
|
447
1135
|
const installerPath = path.join(sourcePath, '_module-installer', 'installer.js');
|
|
@@ -470,6 +1158,7 @@ class ModuleManager {
|
|
|
470
1158
|
const result = await moduleInstaller.install({
|
|
471
1159
|
projectRoot,
|
|
472
1160
|
config: options.moduleConfig || {},
|
|
1161
|
+
coreConfig: options.coreConfig || {},
|
|
473
1162
|
installedIDEs: options.installedIDEs || [],
|
|
474
1163
|
logger,
|
|
475
1164
|
});
|
|
@@ -530,9 +1219,8 @@ class ModuleManager {
|
|
|
530
1219
|
}
|
|
531
1220
|
}
|
|
532
1221
|
|
|
533
|
-
// Copy file
|
|
534
|
-
await
|
|
535
|
-
await fs.copy(sourceFile, targetFile, { overwrite: true });
|
|
1222
|
+
// Copy file with placeholder replacement
|
|
1223
|
+
await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile);
|
|
536
1224
|
}
|
|
537
1225
|
}
|
|
538
1226
|
|