bmad-method 6.0.0-alpha.16 → 6.0.0-alpha.18
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 +7 -3
- package/.github/scripts/discord-helpers.sh +21 -2
- package/.github/workflows/discord.yaml +31 -7
- package/.github/workflows/manual-release.yaml +12 -42
- package/.markdownlint-cli2.yaml +2 -2
- package/.prettierignore +2 -2
- package/.vscode/settings.json +1 -1
- package/CHANGELOG.md +193 -2
- package/LICENSE +1 -1
- package/README.md +29 -2
- package/docs/agent-customization-guide.md +10 -10
- package/docs/custom-content-installation.md +100 -196
- package/docs/custom-content.md +122 -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/opencode.md +1 -1
- package/docs/ide-info/rovo-dev.md +1 -1
- package/docs/index.md +2 -2
- package/docs/installers-bundlers/ide-injections.md +2 -2
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +13 -13
- package/docs/sample-custom-modules/README.md +11 -0
- package/docs/sample-custom-modules/sample-unitary-module/README.md +8 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/commit-poet/commit-poet.agent.yaml +129 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
- package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith.agent.yaml +109 -0
- package/docs/sample-custom-modules/sample-unitary-module/module.yaml +8 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-01-init.md +168 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-02-q1.md +155 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-03-q2.md +89 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-04-q3.md +36 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-05-q4.md +36 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-06-q5.md +36 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-07-q6.md +36 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-08-q7.md +36 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-09-q8.md +36 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-10-q9.md +36 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-11-q10.md +36 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-12-results.md +150 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/templates/csv-headers.template +1 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/workflow.md +54 -0
- package/docs/sample-custom-modules/sample-unitary-module/workflows/wassup/workflow.md +26 -0
- package/docs/sample-custom-modules/sample-wellness-module/README.md +6 -0
- package/docs/sample-custom-modules/sample-wellness-module/agents/meditation-guide.agent.yaml +136 -0
- package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/foo.md +3 -0
- package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/addition1.md +1 -0
- package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/insights.md +13 -0
- package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/instructions.md +30 -0
- package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/memories.md +13 -0
- package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/patterns.md +17 -0
- package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion.agent.yaml +120 -0
- package/docs/sample-custom-modules/sample-wellness-module/module.yaml +17 -0
- package/docs/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/README.md +32 -0
- package/docs/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/workflow.md +45 -0
- package/docs/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/README.md +31 -0
- package/docs/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/workflow.md +45 -0
- package/docs/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/README.md +31 -0
- package/docs/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/workflow.md +45 -0
- package/docs/v4-to-v6-upgrade.md +27 -27
- package/docs/web-bundles-gemini-gpt-guide.md +6 -458
- package/eslint.config.mjs +2 -2
- package/package.json +1 -1
- package/src/core/agents/bmad-master.agent.yaml +6 -11
- package/src/core/module.yaml +11 -18
- package/src/core/resources/excalidraw/README.md +6 -6
- package/src/core/tasks/advanced-elicitation.xml +3 -3
- package/src/core/tasks/index-docs.xml +1 -1
- package/src/core/tasks/validate-workflow.xml +1 -1
- package/src/core/tasks/workflow.xml +4 -4
- package/src/core/tools/shard-doc.xml +12 -12
- package/src/core/workflows/brainstorming/workflow.md +3 -3
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +2 -2
- package/src/core/workflows/party-mode/workflow.md +4 -4
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +15 -15
- package/src/modules/bmb/{README.md → docs/README.md} +15 -27
- package/src/modules/bmb/docs/agents/agent-compilation.md +3 -3
- package/src/modules/bmb/docs/agents/agent-menu-patterns.md +23 -24
- package/src/modules/bmb/docs/agents/expert-agent-architecture.md +20 -21
- package/src/modules/bmb/docs/agents/simple-agent-architecture.md +17 -52
- package/src/modules/bmb/docs/agents/understanding-agent-types.md +6 -6
- package/src/modules/bmb/docs/workflows/architecture.md +1 -1
- package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +3 -3
- package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +1 -1
- package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +1 -1
- package/src/modules/bmb/docs/workflows/templates/step-file.md +3 -3
- package/src/modules/bmb/docs/workflows/templates/step-template.md +3 -3
- package/src/modules/bmb/docs/workflows/templates/workflow-template.md +2 -2
- package/src/modules/bmb/docs/workflows/templates/workflow.md +1 -1
- package/src/modules/bmb/module.yaml +6 -15
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +7 -7
- package/src/modules/bmb/reference/agents/module-examples/README.md +3 -4
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +5 -5
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
- package/src/modules/bmb/reference/agents/simple-examples/README.md +1 -1
- package/src/modules/bmb/reference/agents/simple-examples/commit-poet.agent.yaml +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +1 -3
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +6 -6
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
- package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +3 -3
- package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +6 -10
- package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +6 -6
- package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +9 -9
- package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +6 -5
- package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +19 -57
- package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +5 -5
- package/src/modules/bmb/workflows/create-agent/steps/{step-11-celebrate.md → step-08-celebrate.md} +2 -6
- 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 +2 -35
- package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +2 -2
- package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +6 -6
- package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +5 -5
- package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +8 -8
- package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +5 -5
- package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +8 -8
- package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +7 -7
- package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +7 -7
- package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +6 -6
- package/src/modules/bmb/workflows/create-module/templates/agent.template.md +15 -19
- package/src/modules/bmb/workflows/create-module/templates/module.template.yaml +1 -1
- package/src/modules/bmb/workflows/create-module/workflow.md +3 -3
- package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +4 -4
- package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +6 -6
- package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +5 -5
- package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +4 -4
- package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +4 -4
- package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +11 -11
- package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +14 -14
- package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +4 -4
- package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +2 -2
- package/src/modules/bmb/workflows/create-workflow/workflow.md +2 -2
- package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +2 -2
- package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +12 -12
- package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +4 -4
- package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +2 -2
- package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +4 -4
- package/src/modules/bmb/workflows/edit-agent/workflow.md +1 -1
- package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +4 -4
- package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +3 -3
- package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +6 -6
- package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +3 -3
- package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +3 -3
- package/src/modules/bmb/workflows/edit-workflow/workflow.md +1 -1
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +3 -3
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +5 -5
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +6 -6
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +3 -3
- package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +1 -1
- package/src/modules/bmb/workflows-legacy/edit-module/README.md +1 -17
- package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +3 -4
- package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +4 -5
- package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +10 -10
- package/src/modules/bmb/workflows-legacy/module-brief/README.md +2 -2
- package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +2 -2
- package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +4 -4
- package/src/modules/bmgd/README.md +1 -1
- 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 +26 -11
- package/src/modules/bmgd/agents/game-designer.agent.yaml +41 -21
- package/src/modules/bmgd/agents/game-dev.agent.yaml +34 -18
- package/src/modules/bmgd/agents/game-qa.agent.yaml +64 -0
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +32 -44
- package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +56 -0
- package/src/modules/bmgd/docs/README.md +180 -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/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 +27 -16
- package/src/modules/bmgd/teams/default-party.csv +2 -0
- package/src/modules/bmgd/teams/team-gamedev.yaml +12 -1
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +1 -1
- 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 +35 -14
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +1 -1
- 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 +43 -12
- 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 +54 -34
- package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +1 -1
- 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 +55 -10
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +1 -1
- 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 +302 -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 +51 -22
- 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 +19 -16
- package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
- package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +12 -7
- package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +332 -214
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.xml +298 -0
- package/src/modules/bmgd/workflows/4-production/create-story/template.md +3 -5
- package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +13 -8
- package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +65 -23
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.xml +409 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +14 -4
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +5 -5
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +14 -9
- package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +33 -42
- package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +13 -13
- package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +7 -2
- 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 +1 -1
- package/src/modules/bmm/agents/analyst.agent.yaml +9 -9
- package/src/modules/bmm/agents/architect.agent.yaml +8 -8
- package/src/modules/bmm/agents/dev.agent.yaml +5 -5
- package/src/modules/bmm/agents/pm.agent.yaml +8 -8
- package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +5 -5
- package/src/modules/bmm/agents/sm.agent.yaml +11 -11
- package/src/modules/bmm/agents/tea.agent.yaml +13 -13
- package/src/modules/bmm/agents/tech-writer.agent.yaml +9 -9
- package/src/modules/bmm/agents/ux-designer.agent.yaml +6 -6
- package/src/modules/bmm/docs/agents-guide.md +16 -14
- package/src/modules/bmm/docs/brownfield-guide.md +6 -6
- package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
- package/src/modules/bmm/docs/faq.md +5 -18
- package/src/modules/bmm/docs/glossary.md +3 -4
- package/src/modules/bmm/docs/images/README.md +1 -1
- package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +8 -8
- package/src/modules/bmm/docs/party-mode.md +3 -3
- package/src/modules/bmm/docs/quick-flow-solo-dev.md +5 -5
- package/src/modules/bmm/docs/quick-spec-flow.md +2 -16
- package/src/modules/bmm/docs/quick-start.md +3 -3
- package/src/modules/bmm/docs/test-architecture.md +15 -23
- package/src/modules/bmm/docs/troubleshooting.md +6 -25
- package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
- package/src/modules/bmm/docs/workflows-implementation.md +3 -4
- package/src/modules/bmm/module.yaml +25 -23
- package/src/modules/bmm/testarch/knowledge/overview.md +0 -1
- package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-01-init.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-01b-continue.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-02-vision.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-03-users.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-04-metrics.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-05-scope.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-06-complete.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/workflow.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/research/workflow.md +2 -2
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +2 -2
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +3 -3
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +7 -7
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +8 -8
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +12 -12
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +12 -12
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +10 -10
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +7 -7
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +9 -9
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +9 -9
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-01-document-discovery.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-02-prd-analysis.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-03-epic-coverage-validation.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-04-ux-alignment.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-05-epic-quality-review.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-06-final-assessment.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/workflow.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-01-init.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-02-context.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-03-starter.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-04-decisions.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-05-patterns.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-06-structure.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-07-validation.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-08-complete.md +3 -3
- package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/workflow.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +3 -3
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +3 -3
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +3 -3
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +3 -3
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +3 -3
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +4 -3
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +5 -5
- package/src/modules/bmm/workflows/4-implementation/create-story/template.md +3 -5
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +11 -8
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +3 -3
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +3 -3
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +15 -22
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +4 -5
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +90 -35
- package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +7 -7
- package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
- package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
- package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
- package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-dataflow/instructions.md +1 -1
- package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-dataflow/workflow.yaml +6 -6
- package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-diagram/instructions.md +2 -2
- package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-diagram/workflow.yaml +6 -6
- package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-flowchart/instructions.md +2 -2
- package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-flowchart/workflow.yaml +6 -6
- package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-wireframe/instructions.md +1 -1
- package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-wireframe/workflow.yaml +6 -6
- package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +2 -2
- package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +3 -3
- package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +2 -2
- package/src/modules/bmm/workflows/generate-project-context/workflow.md +5 -5
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +3 -3
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +3 -3
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +10 -4
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +6 -6
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +1 -1
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +4 -4
- package/src/modules/bmm/workflows/workflow-status/instructions.md +3 -3
- package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +2 -2
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +4 -4
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +4 -4
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +4 -4
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +4 -4
- package/src/modules/cis/agents/presentation-master.agent.yaml +3 -3
- 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.agent.yaml → storyteller/storyteller.agent.yaml} +9 -4
- package/src/modules/cis/module.yaml +3 -7
- package/src/modules/cis/{README.md → readme.md} +1 -1
- package/src/modules/cis/workflows/README.md +1 -1
- package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -7
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -7
- package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -7
- package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
- package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -7
- 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/{templates → agent-components}/agent.customize.template.yaml +0 -1
- 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 +1 -1
- package/test/test-agent-schema.js +2 -2
- package/tools/cli/README.md +1 -607
- package/tools/cli/commands/build.js +7 -7
- package/tools/cli/commands/install.js +16 -18
- package/tools/cli/commands/list.js +13 -1
- package/tools/cli/installers/lib/core/config-collector.js +224 -59
- package/tools/cli/installers/lib/core/custom-module-cache.js +18 -10
- package/tools/cli/installers/lib/core/dependency-resolver.js +2 -2
- package/tools/cli/installers/lib/core/detector.js +16 -16
- package/tools/cli/installers/lib/core/ide-config-manager.js +9 -7
- package/tools/cli/installers/lib/core/installer.js +634 -1040
- package/tools/cli/installers/lib/core/installer.js.bak +3204 -0
- package/tools/cli/installers/lib/core/manifest-generator.js +43 -40
- package/tools/cli/installers/lib/core/manifest.js +23 -20
- package/tools/cli/installers/lib/custom/handler.js +16 -46
- package/tools/cli/installers/lib/ide/_base-ide.js +26 -33
- package/tools/cli/installers/lib/ide/antigravity.js +3 -3
- package/tools/cli/installers/lib/ide/claude-code.js +3 -3
- package/tools/cli/installers/lib/ide/codex.js +2 -2
- package/tools/cli/installers/lib/ide/gemini.js +6 -6
- package/tools/cli/installers/lib/ide/kiro-cli.js +2 -2
- package/tools/cli/installers/lib/ide/opencode.js +2 -2
- package/tools/cli/installers/lib/ide/roo.js +15 -5
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +2 -2
- package/tools/cli/installers/lib/ide/shared/module-injections.js +2 -2
- package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +2 -2
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +4 -4
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +1 -1
- package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +3 -3
- package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +3 -3
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +1 -1
- package/tools/cli/installers/lib/modules/manager.js +315 -312
- package/tools/cli/lib/activation-builder.js +8 -13
- package/tools/cli/lib/agent/compiler.js +166 -167
- package/tools/cli/lib/agent/installer.js +8 -128
- package/tools/cli/lib/agent-analyzer.js +2 -2
- package/tools/cli/lib/agent-party-generator.js +5 -17
- package/tools/cli/lib/config.js +2 -2
- package/tools/cli/lib/platform-codes.js +2 -2
- package/tools/cli/lib/ui.js +678 -564
- package/tools/cli/lib/xml-handler.js +3 -55
- package/tools/cli/lib/yaml-format.js +4 -6
- package/tools/cli/lib/yaml-xml-builder.js +14 -26
- package/tools/flattener/ignoreRules.js +1 -1
- package/tools/flattener/xml.js +1 -7
- package/tools/lib/xml-utils.js +13 -0
- package/tools/migrate-custom-module-paths.js +2 -2
- package/tools/validate-agent-schema.js +2 -2
- package/docs/v6-open-items.md +0 -17
- package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -113
- package/src/modules/bmb/_module-installer/installer.js +0 -76
- package/src/modules/bmb/docs/agents/module-agent-architecture.md +0 -366
- package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +0 -179
- package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +0 -197
- package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +0 -180
- package/src/modules/bmb/workflows/create-agent/templates/agent_commands.md +0 -21
- package/src/modules/bmb/workflows/create-agent/templates/agent_persona.md +0 -25
- package/src/modules/bmb/workflows/create-agent/templates/agent_purpose_and_type.md +0 -23
- package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +0 -502
- package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +0 -398
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +0 -256
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +0 -267
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +0 -17
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +0 -164
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +0 -76
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +0 -58
- package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +0 -16
- package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +0 -34
- package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +0 -209
- package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +0 -63
- package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +0 -111
- package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +0 -28
- package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +0 -117
- package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +0 -25
- package/src/modules/bmm/tasks/daily-standup.xml +0 -85
- package/src/modules/cis/agents/README.md +0 -104
- package/src/utility/models/action-command-header.md +0 -0
- package/src/utility/models/agent-activation-ide.xml +0 -51
- package/src/utility/models/agent-activation-web.xml +0 -50
- package/src/utility/models/agent-command-header.md +0 -1
- 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 -7
- package/src/utility/models/fragments/activation-steps.xml +0 -16
- package/src/utility/models/fragments/handler-action.xml +0 -4
- package/src/utility/models/fragments/handler-exec.xml +0 -6
- package/src/utility/models/fragments/handler-multi.xml +0 -14
- 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/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 -1754
- package/tools/cli/installers/lib/core/post-install-sidecar-replacement.js +0 -79
- package/tools/cli/lib/replace-project-root.js +0 -239
- package/tools/cli/regenerate-manifests.js +0 -27
- package/tools/cli/test-yaml-builder.js +0 -43
- /package/src/modules/bmgd/workflows/1-preproduction/game-brief/{template.md → templates/game-brief-template.md} +0 -0
- /package/src/modules/bmgd/workflows/2-design/gdd/{gdd-template.md → templates/gdd-template.md} +0 -0
- /package/src/modules/bmgd/workflows/2-design/narrative/{narrative-template.md → templates/narrative-template.md} +0 -0
- /package/src/modules/bmgd/workflows/3-technical/game-architecture/{architecture-template.md → templates/architecture-template.md} +0 -0
- /package/src/modules/bmgd/workflows/4-production/code-review/{backlog_template.md → backlog-template.md} +0 -0
- /package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/product-brief.template.md +0 -0
- /package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/templates/readiness-report-template.md +0 -0
- /package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/architecture-decision-template.md +0 -0
- /package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/data/domain-complexity.csv +0 -0
- /package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/data/project-types.csv +0 -0
- /package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-01b-continue.md +0 -0
- /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/_shared/excalidraw-library.json +0 -0
- /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/_shared/excalidraw-templates.yaml +0 -0
- /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-dataflow/checklist.md +0 -0
- /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-diagram/checklist.md +0 -0
- /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-flowchart/checklist.md +0 -0
- /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-wireframe/checklist.md +0 -0
- /package/src/utility/{models/fragments/handler-data.xml → agent-components/handler-data.txt} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
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 crypto = require('node:crypto');
|
|
5
5
|
const { getSourcePath, getModulePath } = require('../../../lib/project-root');
|
|
6
6
|
|
|
@@ -23,13 +23,13 @@ class ManifestGenerator {
|
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Generate all manifests for the installation
|
|
26
|
-
* @param {string} bmadDir -
|
|
26
|
+
* @param {string} bmadDir - _bmad
|
|
27
27
|
* @param {Array} selectedModules - Selected modules for installation
|
|
28
28
|
* @param {Array} installedFiles - All installed files (optional, for hash tracking)
|
|
29
29
|
*/
|
|
30
30
|
async generateManifests(bmadDir, selectedModules, installedFiles = [], options = {}) {
|
|
31
|
-
// Create
|
|
32
|
-
const cfgDir = path.join(bmadDir, '
|
|
31
|
+
// Create _config directory if it doesn't exist
|
|
32
|
+
const cfgDir = path.join(bmadDir, '_config');
|
|
33
33
|
await fs.ensureDir(cfgDir);
|
|
34
34
|
|
|
35
35
|
// Store modules list (all modules including preserved ones)
|
|
@@ -38,16 +38,19 @@ class ManifestGenerator {
|
|
|
38
38
|
// Scan the bmad directory to find all actually installed modules
|
|
39
39
|
const installedModules = await this.scanInstalledModules(bmadDir);
|
|
40
40
|
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
// Since custom modules are now installed the same way as regular modules,
|
|
42
|
+
// we don't need to exclude them from manifest generation
|
|
43
|
+
const allModules = [...new Set(['core', ...selectedModules, ...preservedModules, ...installedModules])];
|
|
44
|
+
|
|
45
|
+
this.modules = allModules;
|
|
46
|
+
this.updatedModules = allModules; // Include ALL modules (including custom) for scanning
|
|
44
47
|
|
|
45
48
|
// For CSV manifests, we need to include ALL modules that are installed
|
|
46
49
|
// preservedModules controls which modules stay as-is in the CSV (don't get rescanned)
|
|
47
50
|
// But all modules should be included in the final manifest
|
|
48
|
-
this.preservedModules =
|
|
51
|
+
this.preservedModules = allModules; // Include ALL modules (including custom)
|
|
49
52
|
this.bmadDir = bmadDir;
|
|
50
|
-
this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '
|
|
53
|
+
this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '_bmad' or 'bmad')
|
|
51
54
|
this.allInstalledFiles = installedFiles;
|
|
52
55
|
|
|
53
56
|
if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
|
|
@@ -142,14 +145,14 @@ class ManifestGenerator {
|
|
|
142
145
|
let workflow;
|
|
143
146
|
if (entry.name === 'workflow.yaml') {
|
|
144
147
|
// Parse YAML workflow
|
|
145
|
-
workflow = yaml.
|
|
148
|
+
workflow = yaml.parse(content);
|
|
146
149
|
} else {
|
|
147
150
|
// Parse MD workflow with YAML frontmatter
|
|
148
151
|
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
149
152
|
if (!frontmatterMatch) {
|
|
150
153
|
continue; // Skip MD files without frontmatter
|
|
151
154
|
}
|
|
152
|
-
workflow = yaml.
|
|
155
|
+
workflow = yaml.parse(frontmatterMatch[1]);
|
|
153
156
|
}
|
|
154
157
|
|
|
155
158
|
// Skip template workflows (those with placeholder values)
|
|
@@ -454,36 +457,22 @@ class ManifestGenerator {
|
|
|
454
457
|
async writeMainManifest(cfgDir) {
|
|
455
458
|
const manifestPath = path.join(cfgDir, 'manifest.yaml');
|
|
456
459
|
|
|
457
|
-
// Read existing manifest to preserve custom modules
|
|
458
|
-
let existingCustomModules = [];
|
|
459
|
-
if (await fs.pathExists(manifestPath)) {
|
|
460
|
-
try {
|
|
461
|
-
const existingContent = await fs.readFile(manifestPath, 'utf8');
|
|
462
|
-
const existingManifest = yaml.load(existingContent);
|
|
463
|
-
if (existingManifest && existingManifest.customModules) {
|
|
464
|
-
existingCustomModules = existingManifest.customModules;
|
|
465
|
-
}
|
|
466
|
-
} catch {
|
|
467
|
-
// If we can't read the existing manifest, continue without preserving custom modules
|
|
468
|
-
console.warn('Warning: Could not read existing manifest to preserve custom modules');
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
|
|
472
460
|
const manifest = {
|
|
473
461
|
installation: {
|
|
474
462
|
version: packageJson.version,
|
|
475
463
|
installDate: new Date().toISOString(),
|
|
476
464
|
lastUpdated: new Date().toISOString(),
|
|
477
465
|
},
|
|
478
|
-
modules: this.modules,
|
|
479
|
-
customModules: existingCustomModules, // Preserve custom modules
|
|
466
|
+
modules: this.modules, // Include ALL modules (standard and custom)
|
|
480
467
|
ides: this.selectedIdes,
|
|
481
468
|
};
|
|
482
469
|
|
|
483
|
-
|
|
470
|
+
// Clean the manifest to remove any non-serializable values
|
|
471
|
+
const cleanManifest = structuredClone(manifest);
|
|
472
|
+
|
|
473
|
+
const yamlStr = yaml.stringify(cleanManifest, {
|
|
484
474
|
indent: 2,
|
|
485
|
-
lineWidth:
|
|
486
|
-
noRefs: true,
|
|
475
|
+
lineWidth: 0,
|
|
487
476
|
sortKeys: false,
|
|
488
477
|
});
|
|
489
478
|
|
|
@@ -581,6 +570,11 @@ class ManifestGenerator {
|
|
|
581
570
|
*/
|
|
582
571
|
async writeWorkflowManifest(cfgDir) {
|
|
583
572
|
const csvPath = path.join(cfgDir, 'workflow-manifest.csv');
|
|
573
|
+
const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
|
|
574
|
+
const parseCsvLine = (line) => {
|
|
575
|
+
const columns = line.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g) || [];
|
|
576
|
+
return columns.map((c) => c.replaceAll(/^"|"$/g, ''));
|
|
577
|
+
};
|
|
584
578
|
|
|
585
579
|
// Read existing manifest to preserve entries
|
|
586
580
|
const existingEntries = new Map();
|
|
@@ -592,18 +586,21 @@ class ManifestGenerator {
|
|
|
592
586
|
for (let i = 1; i < lines.length; i++) {
|
|
593
587
|
const line = lines[i];
|
|
594
588
|
if (line) {
|
|
595
|
-
|
|
596
|
-
const parts = line.split('","');
|
|
589
|
+
const parts = parseCsvLine(line);
|
|
597
590
|
if (parts.length >= 4) {
|
|
598
|
-
const name = parts
|
|
599
|
-
|
|
600
|
-
|
|
591
|
+
const [name, description, module, workflowPath] = parts;
|
|
592
|
+
existingEntries.set(`${module}:${name}`, {
|
|
593
|
+
name,
|
|
594
|
+
description,
|
|
595
|
+
module,
|
|
596
|
+
path: workflowPath,
|
|
597
|
+
});
|
|
601
598
|
}
|
|
602
599
|
}
|
|
603
600
|
}
|
|
604
601
|
}
|
|
605
602
|
|
|
606
|
-
// Create CSV header -
|
|
603
|
+
// Create CSV header - standalone column removed, everything is canonicalized to 4 columns
|
|
607
604
|
let csv = 'name,description,module,path\n';
|
|
608
605
|
|
|
609
606
|
// Combine existing and new workflows
|
|
@@ -617,12 +614,18 @@ class ManifestGenerator {
|
|
|
617
614
|
// Add/update new workflows
|
|
618
615
|
for (const workflow of this.workflows) {
|
|
619
616
|
const key = `${workflow.module}:${workflow.name}`;
|
|
620
|
-
allWorkflows.set(key,
|
|
617
|
+
allWorkflows.set(key, {
|
|
618
|
+
name: workflow.name,
|
|
619
|
+
description: workflow.description,
|
|
620
|
+
module: workflow.module,
|
|
621
|
+
path: workflow.path,
|
|
622
|
+
});
|
|
621
623
|
}
|
|
622
624
|
|
|
623
625
|
// Write all workflows
|
|
624
626
|
for (const [, value] of allWorkflows) {
|
|
625
|
-
|
|
627
|
+
const row = [escapeCsv(value.name), escapeCsv(value.description), escapeCsv(value.module), escapeCsv(value.path)].join(',');
|
|
628
|
+
csv += row + '\n';
|
|
626
629
|
}
|
|
627
630
|
|
|
628
631
|
await fs.writeFile(csvPath, csv);
|
|
@@ -889,7 +892,7 @@ class ManifestGenerator {
|
|
|
889
892
|
|
|
890
893
|
for (const entry of entries) {
|
|
891
894
|
// Skip if not a directory or is a special directory
|
|
892
|
-
if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === '
|
|
895
|
+
if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === '_config') {
|
|
893
896
|
continue;
|
|
894
897
|
}
|
|
895
898
|
|
|
@@ -10,10 +10,10 @@ class Manifest {
|
|
|
10
10
|
* @param {Array} installedFiles - List of installed files (no longer used, files tracked in files-manifest.csv)
|
|
11
11
|
*/
|
|
12
12
|
async create(bmadDir, data, installedFiles = []) {
|
|
13
|
-
const manifestPath = path.join(bmadDir, '
|
|
14
|
-
const yaml = require('
|
|
13
|
+
const manifestPath = path.join(bmadDir, '_config', 'manifest.yaml');
|
|
14
|
+
const yaml = require('yaml');
|
|
15
15
|
|
|
16
|
-
// Ensure
|
|
16
|
+
// Ensure _config directory exists
|
|
17
17
|
await fs.ensureDir(path.dirname(manifestPath));
|
|
18
18
|
|
|
19
19
|
// Structure the manifest data
|
|
@@ -28,10 +28,12 @@ class Manifest {
|
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
// Write YAML manifest
|
|
31
|
-
|
|
31
|
+
// Clean the manifest data to remove any non-serializable values
|
|
32
|
+
const cleanManifestData = structuredClone(manifestData);
|
|
33
|
+
|
|
34
|
+
const yamlContent = yaml.stringify(cleanManifestData, {
|
|
32
35
|
indent: 2,
|
|
33
|
-
lineWidth:
|
|
34
|
-
noRefs: true,
|
|
36
|
+
lineWidth: 0,
|
|
35
37
|
sortKeys: false,
|
|
36
38
|
});
|
|
37
39
|
|
|
@@ -47,21 +49,21 @@ class Manifest {
|
|
|
47
49
|
* @returns {Object|null} Manifest data or null if not found
|
|
48
50
|
*/
|
|
49
51
|
async read(bmadDir) {
|
|
50
|
-
const yamlPath = path.join(bmadDir, '
|
|
51
|
-
const yaml = require('
|
|
52
|
+
const yamlPath = path.join(bmadDir, '_config', 'manifest.yaml');
|
|
53
|
+
const yaml = require('yaml');
|
|
52
54
|
|
|
53
55
|
if (await fs.pathExists(yamlPath)) {
|
|
54
56
|
try {
|
|
55
57
|
const content = await fs.readFile(yamlPath, 'utf8');
|
|
56
|
-
const manifestData = yaml.
|
|
58
|
+
const manifestData = yaml.parse(content);
|
|
57
59
|
|
|
58
60
|
// Flatten the structure for compatibility with existing code
|
|
59
61
|
return {
|
|
60
62
|
version: manifestData.installation?.version,
|
|
61
63
|
installDate: manifestData.installation?.installDate,
|
|
62
64
|
lastUpdated: manifestData.installation?.lastUpdated,
|
|
63
|
-
modules: manifestData.modules || [],
|
|
64
|
-
customModules: manifestData.customModules || [],
|
|
65
|
+
modules: manifestData.modules || [], // All modules (standard and custom)
|
|
66
|
+
customModules: manifestData.customModules || [], // Keep for backward compatibility
|
|
65
67
|
ides: manifestData.ides || [],
|
|
66
68
|
};
|
|
67
69
|
} catch (error) {
|
|
@@ -79,7 +81,7 @@ class Manifest {
|
|
|
79
81
|
* @param {Array} installedFiles - Updated list of installed files
|
|
80
82
|
*/
|
|
81
83
|
async update(bmadDir, updates, installedFiles = null) {
|
|
82
|
-
const yaml = require('
|
|
84
|
+
const yaml = require('yaml');
|
|
83
85
|
const manifest = (await this.read(bmadDir)) || {};
|
|
84
86
|
|
|
85
87
|
// Merge updates
|
|
@@ -93,18 +95,19 @@ class Manifest {
|
|
|
93
95
|
installDate: manifest.installDate,
|
|
94
96
|
lastUpdated: manifest.lastUpdated,
|
|
95
97
|
},
|
|
96
|
-
modules: manifest.modules || [],
|
|
97
|
-
customModules: manifest.customModules || [],
|
|
98
|
+
modules: manifest.modules || [], // All modules (standard and custom)
|
|
98
99
|
ides: manifest.ides || [],
|
|
99
100
|
};
|
|
100
101
|
|
|
101
|
-
const manifestPath = path.join(bmadDir, '
|
|
102
|
+
const manifestPath = path.join(bmadDir, '_config', 'manifest.yaml');
|
|
102
103
|
await fs.ensureDir(path.dirname(manifestPath));
|
|
103
104
|
|
|
104
|
-
|
|
105
|
+
// Clean the manifest data to remove any non-serializable values
|
|
106
|
+
const cleanManifestData = structuredClone(manifestData);
|
|
107
|
+
|
|
108
|
+
const yamlContent = yaml.stringify(cleanManifestData, {
|
|
105
109
|
indent: 2,
|
|
106
|
-
lineWidth:
|
|
107
|
-
noRefs: true,
|
|
110
|
+
lineWidth: 0,
|
|
108
111
|
sortKeys: false,
|
|
109
112
|
});
|
|
110
113
|
|
|
@@ -526,9 +529,9 @@ class Manifest {
|
|
|
526
529
|
|
|
527
530
|
try {
|
|
528
531
|
if (await fs.pathExists(configPath)) {
|
|
529
|
-
const yaml = require('
|
|
532
|
+
const yaml = require('yaml');
|
|
530
533
|
const content = await fs.readFile(configPath, 'utf8');
|
|
531
|
-
configs[moduleName] = yaml.
|
|
534
|
+
configs[moduleName] = yaml.parse(content);
|
|
532
535
|
}
|
|
533
536
|
} catch (error) {
|
|
534
537
|
console.warn(`Could not load config for module ${moduleName}:`, error.message);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const path = require('node:path');
|
|
2
2
|
const fs = require('fs-extra');
|
|
3
3
|
const chalk = require('chalk');
|
|
4
|
-
const yaml = require('
|
|
4
|
+
const yaml = require('yaml');
|
|
5
5
|
const { FileOps } = require('../../../lib/file-ops');
|
|
6
6
|
const { XmlHandler } = require('../../../lib/xml-handler');
|
|
7
7
|
|
|
@@ -86,7 +86,7 @@ class CustomHandler {
|
|
|
86
86
|
// Try to parse YAML with error handling
|
|
87
87
|
let config;
|
|
88
88
|
try {
|
|
89
|
-
config = yaml.
|
|
89
|
+
config = yaml.parse(configContent);
|
|
90
90
|
} catch (parseError) {
|
|
91
91
|
console.warn(chalk.yellow(`Warning: YAML parse error in ${configPath}:`, parseError.message));
|
|
92
92
|
return null;
|
|
@@ -306,7 +306,7 @@ class CustomHandler {
|
|
|
306
306
|
const targetMdPath = path.join(targetDir, `${agentName}.md`);
|
|
307
307
|
// Use the actual bmadDir if available (for when installing to temp dir)
|
|
308
308
|
const actualBmadDir = config._bmadDir || bmadDir;
|
|
309
|
-
const customizePath = path.join(actualBmadDir, '
|
|
309
|
+
const customizePath = path.join(actualBmadDir, '_config', 'agents', `custom-${agentName}.customize.yaml`);
|
|
310
310
|
|
|
311
311
|
// Read and compile the YAML
|
|
312
312
|
try {
|
|
@@ -316,12 +316,14 @@ class CustomHandler {
|
|
|
316
316
|
// Create customize template if it doesn't exist
|
|
317
317
|
if (!(await fs.pathExists(customizePath))) {
|
|
318
318
|
const { getSourcePath } = require('../../../lib/project-root');
|
|
319
|
-
const genericTemplatePath = getSourcePath('utility', '
|
|
319
|
+
const genericTemplatePath = getSourcePath('utility', 'agent-components', 'agent.customize.template.yaml');
|
|
320
320
|
if (await fs.pathExists(genericTemplatePath)) {
|
|
321
|
-
// Copy with placeholder replacement
|
|
322
321
|
let templateContent = await fs.readFile(genericTemplatePath, 'utf8');
|
|
323
322
|
await fs.writeFile(customizePath, templateContent, 'utf8');
|
|
324
|
-
|
|
323
|
+
// Only show customize creation in verbose mode
|
|
324
|
+
if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
|
|
325
|
+
console.log(chalk.dim(` Created customize: custom-${agentName}.customize.yaml`));
|
|
326
|
+
}
|
|
325
327
|
}
|
|
326
328
|
}
|
|
327
329
|
|
|
@@ -337,51 +339,19 @@ class CustomHandler {
|
|
|
337
339
|
// Write the compiled MD file
|
|
338
340
|
await fs.writeFile(targetMdPath, processedXml, 'utf8');
|
|
339
341
|
|
|
340
|
-
// Check if agent has sidecar
|
|
341
|
-
let hasSidecar = false;
|
|
342
|
-
try {
|
|
343
|
-
const yamlLib = require('yaml');
|
|
344
|
-
const agentYaml = yamlLib.parse(yamlContent);
|
|
345
|
-
hasSidecar = agentYaml?.agent?.metadata?.hasSidecar === true;
|
|
346
|
-
} catch {
|
|
347
|
-
// Continue without sidecar processing
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
// Copy sidecar files if agent has hasSidecar flag
|
|
351
|
-
if (hasSidecar && config.agent_sidecar_folder) {
|
|
352
|
-
const { copyAgentSidecarFiles } = require('../../../lib/agent/installer');
|
|
353
|
-
|
|
354
|
-
// Resolve agent sidecar folder path
|
|
355
|
-
const projectDir = path.dirname(bmadDir);
|
|
356
|
-
const resolvedSidecarFolder = config.agent_sidecar_folder
|
|
357
|
-
.replaceAll('{project-root}', projectDir)
|
|
358
|
-
.replaceAll('.bmad', path.basename(bmadDir));
|
|
359
|
-
|
|
360
|
-
// Create sidecar directory for this agent
|
|
361
|
-
const agentSidecarDir = path.join(resolvedSidecarFolder, agentName);
|
|
362
|
-
await fs.ensureDir(agentSidecarDir);
|
|
363
|
-
|
|
364
|
-
// Copy sidecar files
|
|
365
|
-
const sidecarResult = copyAgentSidecarFiles(path.dirname(agentFile), agentSidecarDir, agentFile);
|
|
366
|
-
|
|
367
|
-
if (sidecarResult.copied.length > 0) {
|
|
368
|
-
console.log(chalk.dim(` Copied ${sidecarResult.copied.length} sidecar file(s) to: ${agentSidecarDir}`));
|
|
369
|
-
}
|
|
370
|
-
if (sidecarResult.preserved.length > 0) {
|
|
371
|
-
console.log(chalk.dim(` Preserved ${sidecarResult.preserved.length} existing sidecar file(s)`));
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
|
|
375
342
|
// Track the file
|
|
376
343
|
if (fileTrackingCallback) {
|
|
377
344
|
fileTrackingCallback(targetMdPath);
|
|
378
345
|
}
|
|
379
346
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
347
|
+
// Only show compilation details in verbose mode
|
|
348
|
+
if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
|
|
349
|
+
console.log(
|
|
350
|
+
chalk.dim(
|
|
351
|
+
` Compiled agent: ${agentName} -> ${path.relative(targetAgentsPath, targetMdPath)}${hasSidecar ? ' (with sidecar)' : ''}`,
|
|
352
|
+
),
|
|
353
|
+
);
|
|
354
|
+
}
|
|
385
355
|
} catch (error) {
|
|
386
356
|
console.warn(chalk.yellow(` Failed to compile agent ${agentName}:`, error.message));
|
|
387
357
|
results.errors.push(`Failed to compile agent ${agentName}: ${error.message}`);
|
|
@@ -31,18 +31,11 @@ class BaseIdeSetup {
|
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Get the agent command activation header from the central template
|
|
34
|
-
* @returns {string} The activation header text
|
|
34
|
+
* @returns {string} The activation header text
|
|
35
35
|
*/
|
|
36
36
|
async getAgentCommandHeader() {
|
|
37
|
-
const headerPath =
|
|
38
|
-
|
|
39
|
-
const content = await fs.readFile(headerPath, 'utf8');
|
|
40
|
-
// Strip the <critical> tags to get plain text
|
|
41
|
-
return content.replaceAll(/<critical>|<\/critical>/g, '').trim();
|
|
42
|
-
} catch {
|
|
43
|
-
// Fallback if file doesn't exist
|
|
44
|
-
return "You must fully embody this agent's persona and follow all activation instructions, steps and rules exactly as specified. NEVER break character until given an exit command.";
|
|
45
|
-
}
|
|
37
|
+
const headerPath = getSourcePath('utility', 'agent-components', 'agent-command-header.md');
|
|
38
|
+
return await fs.readFile(headerPath, 'utf8');
|
|
46
39
|
}
|
|
47
40
|
|
|
48
41
|
/**
|
|
@@ -143,7 +136,7 @@ class BaseIdeSetup {
|
|
|
143
136
|
// Get module agents
|
|
144
137
|
const entries = await fs.readdir(bmadDir, { withFileTypes: true });
|
|
145
138
|
for (const entry of entries) {
|
|
146
|
-
if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '
|
|
139
|
+
if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_config' && entry.name !== 'agents') {
|
|
147
140
|
const moduleAgentsPath = path.join(bmadDir, entry.name, 'agents');
|
|
148
141
|
if (await fs.pathExists(moduleAgentsPath)) {
|
|
149
142
|
const moduleAgents = await this.scanDirectory(moduleAgentsPath, '.md');
|
|
@@ -215,7 +208,7 @@ class BaseIdeSetup {
|
|
|
215
208
|
// Get module tasks
|
|
216
209
|
const entries = await fs.readdir(bmadDir, { withFileTypes: true });
|
|
217
210
|
for (const entry of entries) {
|
|
218
|
-
if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '
|
|
211
|
+
if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_config' && entry.name !== 'agents') {
|
|
219
212
|
const moduleTasksPath = path.join(bmadDir, entry.name, 'tasks');
|
|
220
213
|
if (await fs.pathExists(moduleTasksPath)) {
|
|
221
214
|
const moduleTasks = await this.scanDirectoryWithStandalone(moduleTasksPath, ['.md', '.xml']);
|
|
@@ -261,7 +254,7 @@ class BaseIdeSetup {
|
|
|
261
254
|
// Get module tools
|
|
262
255
|
const entries = await fs.readdir(bmadDir, { withFileTypes: true });
|
|
263
256
|
for (const entry of entries) {
|
|
264
|
-
if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '
|
|
257
|
+
if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_config' && entry.name !== 'agents') {
|
|
265
258
|
const moduleToolsPath = path.join(bmadDir, entry.name, 'tools');
|
|
266
259
|
if (await fs.pathExists(moduleToolsPath)) {
|
|
267
260
|
const moduleTools = await this.scanDirectoryWithStandalone(moduleToolsPath, ['.md', '.xml']);
|
|
@@ -307,7 +300,7 @@ class BaseIdeSetup {
|
|
|
307
300
|
// Get module workflows
|
|
308
301
|
const entries = await fs.readdir(bmadDir, { withFileTypes: true });
|
|
309
302
|
for (const entry of entries) {
|
|
310
|
-
if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '
|
|
303
|
+
if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_config' && entry.name !== 'agents') {
|
|
311
304
|
const moduleWorkflowsPath = path.join(bmadDir, entry.name, 'workflows');
|
|
312
305
|
if (await fs.pathExists(moduleWorkflowsPath)) {
|
|
313
306
|
const moduleWorkflows = await this.findWorkflowYamlFiles(moduleWorkflowsPath);
|
|
@@ -353,9 +346,9 @@ class BaseIdeSetup {
|
|
|
353
346
|
} else if (entry.isFile() && entry.name === 'workflow.yaml') {
|
|
354
347
|
// Read workflow.yaml to get name and standalone property
|
|
355
348
|
try {
|
|
356
|
-
const yaml = require('
|
|
349
|
+
const yaml = require('yaml');
|
|
357
350
|
const content = await fs.readFile(fullPath, 'utf8');
|
|
358
|
-
const workflowData = yaml.
|
|
351
|
+
const workflowData = yaml.parse(content);
|
|
359
352
|
|
|
360
353
|
if (workflowData && workflowData.name) {
|
|
361
354
|
workflows.push({
|
|
@@ -461,9 +454,9 @@ class BaseIdeSetup {
|
|
|
461
454
|
// Check for standalone: true in YAML frontmatter
|
|
462
455
|
const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
|
|
463
456
|
if (frontmatterMatch) {
|
|
464
|
-
const yaml = require('
|
|
457
|
+
const yaml = require('yaml');
|
|
465
458
|
try {
|
|
466
|
-
const frontmatter = yaml.
|
|
459
|
+
const frontmatter = yaml.parse(frontmatterMatch[1]);
|
|
467
460
|
standalone = frontmatter.standalone === true;
|
|
468
461
|
} catch {
|
|
469
462
|
// Ignore YAML parse errors
|
|
@@ -527,26 +520,26 @@ class BaseIdeSetup {
|
|
|
527
520
|
}
|
|
528
521
|
|
|
529
522
|
/**
|
|
530
|
-
* Write file with content (replaces
|
|
523
|
+
* Write file with content (replaces _bmad placeholder)
|
|
531
524
|
* @param {string} filePath - File path
|
|
532
525
|
* @param {string} content - File content
|
|
533
526
|
*/
|
|
534
527
|
async writeFile(filePath, content) {
|
|
535
|
-
// Replace
|
|
536
|
-
if (typeof content === 'string' && content.includes('
|
|
537
|
-
content = content.replaceAll('
|
|
528
|
+
// Replace _bmad placeholder if present
|
|
529
|
+
if (typeof content === 'string' && content.includes('_bmad')) {
|
|
530
|
+
content = content.replaceAll('_bmad', this.bmadFolderName);
|
|
538
531
|
}
|
|
539
532
|
|
|
540
|
-
// Replace escape sequence
|
|
541
|
-
if (typeof content === 'string' && content.includes('
|
|
542
|
-
content = content.replaceAll('
|
|
533
|
+
// Replace escape sequence _bmad with literal _bmad
|
|
534
|
+
if (typeof content === 'string' && content.includes('_bmad')) {
|
|
535
|
+
content = content.replaceAll('_bmad', '_bmad');
|
|
543
536
|
}
|
|
544
537
|
await this.ensureDir(path.dirname(filePath));
|
|
545
538
|
await fs.writeFile(filePath, content, 'utf8');
|
|
546
539
|
}
|
|
547
540
|
|
|
548
541
|
/**
|
|
549
|
-
* Copy file from source to destination (replaces
|
|
542
|
+
* Copy file from source to destination (replaces _bmad placeholder in text files)
|
|
550
543
|
* @param {string} source - Source file path
|
|
551
544
|
* @param {string} dest - Destination file path
|
|
552
545
|
*/
|
|
@@ -563,14 +556,14 @@ class BaseIdeSetup {
|
|
|
563
556
|
// Read the file content
|
|
564
557
|
let content = await fs.readFile(source, 'utf8');
|
|
565
558
|
|
|
566
|
-
// Replace
|
|
567
|
-
if (content.includes('
|
|
568
|
-
content = content.replaceAll('
|
|
559
|
+
// Replace _bmad placeholder with actual folder name
|
|
560
|
+
if (content.includes('_bmad')) {
|
|
561
|
+
content = content.replaceAll('_bmad', this.bmadFolderName);
|
|
569
562
|
}
|
|
570
563
|
|
|
571
|
-
// Replace escape sequence
|
|
572
|
-
if (content.includes('
|
|
573
|
-
content = content.replaceAll('
|
|
564
|
+
// Replace escape sequence _bmad with literal _bmad
|
|
565
|
+
if (content.includes('_bmad')) {
|
|
566
|
+
content = content.replaceAll('_bmad', '_bmad');
|
|
574
567
|
}
|
|
575
568
|
|
|
576
569
|
// Write to dest with replaced content
|
|
@@ -642,7 +635,7 @@ class BaseIdeSetup {
|
|
|
642
635
|
* @param {Object} agent - Agent information
|
|
643
636
|
*/
|
|
644
637
|
async createAgentConfig(bmadDir, agent) {
|
|
645
|
-
const agentConfigDir = path.join(bmadDir, '
|
|
638
|
+
const agentConfigDir = path.join(bmadDir, '_config', 'agents');
|
|
646
639
|
await this.ensureDir(agentConfigDir);
|
|
647
640
|
|
|
648
641
|
// Load agent config template
|
|
@@ -45,12 +45,12 @@ class AntigravitySetup extends BaseIdeSetup {
|
|
|
45
45
|
const injectionConfigPath = path.join(sourceModulesPath, moduleName, 'sub-modules', 'antigravity', 'injections.yaml');
|
|
46
46
|
|
|
47
47
|
if (await this.exists(injectionConfigPath)) {
|
|
48
|
-
const yaml = require('
|
|
48
|
+
const yaml = require('yaml');
|
|
49
49
|
|
|
50
50
|
try {
|
|
51
51
|
// Load injection configuration
|
|
52
52
|
const configContent = await fs.readFile(injectionConfigPath, 'utf8');
|
|
53
|
-
const injectionConfig = yaml.
|
|
53
|
+
const injectionConfig = yaml.parse(configContent);
|
|
54
54
|
|
|
55
55
|
// Ask about subagents if they exist and we haven't asked yet
|
|
56
56
|
if (injectionConfig.subagents && !config.subagentChoices) {
|
|
@@ -119,7 +119,7 @@ class AntigravitySetup extends BaseIdeSetup {
|
|
|
119
119
|
await this.ensureDir(bmadWorkflowsDir);
|
|
120
120
|
|
|
121
121
|
// Generate agent launchers using AgentCommandGenerator
|
|
122
|
-
// This creates small launcher files that reference the actual agents in
|
|
122
|
+
// This creates small launcher files that reference the actual agents in _bmad/
|
|
123
123
|
const agentGen = new AgentCommandGenerator(this.bmadFolderName);
|
|
124
124
|
const { artifacts: agentArtifacts, counts: agentCounts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
|
|
125
125
|
|
|
@@ -44,12 +44,12 @@ class ClaudeCodeSetup extends BaseIdeSetup {
|
|
|
44
44
|
const injectionConfigPath = path.join(sourceModulesPath, moduleName, 'sub-modules', 'claude-code', 'injections.yaml');
|
|
45
45
|
|
|
46
46
|
if (await this.exists(injectionConfigPath)) {
|
|
47
|
-
const yaml = require('
|
|
47
|
+
const yaml = require('yaml');
|
|
48
48
|
|
|
49
49
|
try {
|
|
50
50
|
// Load injection configuration
|
|
51
51
|
const configContent = await fs.readFile(injectionConfigPath, 'utf8');
|
|
52
|
-
const injectionConfig = yaml.
|
|
52
|
+
const injectionConfig = yaml.parse(configContent);
|
|
53
53
|
|
|
54
54
|
// Ask about subagents if they exist and we haven't asked yet
|
|
55
55
|
if (injectionConfig.subagents && !config.subagentChoices) {
|
|
@@ -118,7 +118,7 @@ class ClaudeCodeSetup extends BaseIdeSetup {
|
|
|
118
118
|
await this.ensureDir(bmadCommandsDir);
|
|
119
119
|
|
|
120
120
|
// Generate agent launchers using AgentCommandGenerator
|
|
121
|
-
// This creates small launcher files that reference the actual agents in
|
|
121
|
+
// This creates small launcher files that reference the actual agents in _bmad/
|
|
122
122
|
const agentGen = new AgentCommandGenerator(this.bmadFolderName);
|
|
123
123
|
const { artifacts: agentArtifacts, counts: agentCounts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
|
|
124
124
|
|
|
@@ -265,8 +265,8 @@ class CodexSetup extends BaseIdeSetup {
|
|
|
265
265
|
'',
|
|
266
266
|
chalk.white(' /prompts installed globally to your HOME DIRECTORY.'),
|
|
267
267
|
'',
|
|
268
|
-
chalk.yellow(' ⚠️ These prompts reference a specific
|
|
269
|
-
chalk.dim(" To use with other projects, you'd need to copy the
|
|
268
|
+
chalk.yellow(' ⚠️ These prompts reference a specific _bmad path'),
|
|
269
|
+
chalk.dim(" To use with other projects, you'd need to copy the _bmad dir"),
|
|
270
270
|
'',
|
|
271
271
|
chalk.green(' ✓ You can now use /commands in Codex CLI'),
|
|
272
272
|
chalk.dim(' Example: /bmad-bmm-agents-pm'),
|
|
@@ -1,6 +1,6 @@
|
|
|
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 { BaseIdeSetup } = require('./_base-ide');
|
|
5
5
|
const chalk = require('chalk');
|
|
6
6
|
const { AgentCommandGenerator } = require('./shared/agent-command-generator');
|
|
@@ -34,7 +34,7 @@ class GeminiSetup extends BaseIdeSetup {
|
|
|
34
34
|
if (await fs.pathExists(coreConfigPath)) {
|
|
35
35
|
try {
|
|
36
36
|
const configContent = await fs.readFile(coreConfigPath, 'utf8');
|
|
37
|
-
const config = yaml.
|
|
37
|
+
const config = yaml.parse(configContent);
|
|
38
38
|
|
|
39
39
|
if (config.user_name) {
|
|
40
40
|
configValues.user_name = config.user_name;
|
|
@@ -174,8 +174,8 @@ ${contentWithoutFrontmatter}
|
|
|
174
174
|
// Note: {user_name} and other {config_values} are left as-is for runtime substitution by Gemini
|
|
175
175
|
const tomlContent = template
|
|
176
176
|
.replaceAll('{{title}}', title)
|
|
177
|
-
.replaceAll('{
|
|
178
|
-
.replaceAll('{
|
|
177
|
+
.replaceAll('{_bmad}', '_bmad')
|
|
178
|
+
.replaceAll('{_bmad}', this.bmadFolderName)
|
|
179
179
|
.replaceAll('{{module}}', agent.module)
|
|
180
180
|
.replaceAll('{{name}}', agent.name);
|
|
181
181
|
|
|
@@ -196,8 +196,8 @@ ${contentWithoutFrontmatter}
|
|
|
196
196
|
// Replace template variables
|
|
197
197
|
const tomlContent = template
|
|
198
198
|
.replaceAll('{{taskName}}', taskName)
|
|
199
|
-
.replaceAll('{
|
|
200
|
-
.replaceAll('{
|
|
199
|
+
.replaceAll('{_bmad}', '_bmad')
|
|
200
|
+
.replaceAll('{_bmad}', this.bmadFolderName)
|
|
201
201
|
.replaceAll('{{module}}', task.module)
|
|
202
202
|
.replaceAll('{{filename}}', task.filename);
|
|
203
203
|
|
|
@@ -2,7 +2,7 @@ const path = require('node:path');
|
|
|
2
2
|
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
3
|
const chalk = require('chalk');
|
|
4
4
|
const fs = require('fs-extra');
|
|
5
|
-
const yaml = require('
|
|
5
|
+
const yaml = require('yaml');
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Kiro CLI setup handler for BMad Method
|
|
@@ -150,7 +150,7 @@ class KiroCliSetup extends BaseIdeSetup {
|
|
|
150
150
|
*/
|
|
151
151
|
async processAgentFile(agentFile, agentsDir, projectDir) {
|
|
152
152
|
const yamlContent = await fs.readFile(agentFile, 'utf8');
|
|
153
|
-
const agentData = yaml.
|
|
153
|
+
const agentData = yaml.parse(yamlContent);
|
|
154
154
|
|
|
155
155
|
if (!this.validateBmadCompliance(agentData)) {
|
|
156
156
|
return;
|