bmad-method 6.0.0-alpha.1 → 6.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/idea_submission.md +1 -1
- package/.github/workflows/bundle-latest.yaml +277 -0
- package/.github/workflows/manual-release.yaml +64 -17
- package/.github/workflows/{lint.yaml → quality.yaml} +19 -2
- package/.husky/pre-commit +4 -0
- package/.prettierignore +4 -0
- package/.vscode/settings.json +3 -1
- package/CHANGELOG.md +321 -12
- package/CONTRIBUTING.md +1 -13
- package/README.md +138 -187
- package/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
- package/docs/agent-customization-guide.md +208 -0
- package/docs/custom-agent-installation.md +169 -0
- package/docs/document-sharding-guide.md +449 -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/index.md +227 -0
- package/docs/installers-bundlers/ide-injections.md +2 -2
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +80 -19
- package/docs/v4-to-v6-upgrade.md +21 -19
- package/docs/v6-open-items.md +17 -0
- package/docs/web-bundles-gemini-gpt-guide.md +473 -0
- package/eslint.config.mjs +2 -0
- package/package.json +6 -3
- package/src/core/_module-installer/install-config.yaml +17 -10
- package/src/core/_module-installer/installer.js +0 -8
- package/src/core/agents/bmad-master.agent.yaml +5 -5
- package/src/core/agents/bmad-web-orchestrator.agent.xml +8 -17
- 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 +21 -0
- package/{bmad/core/tasks/adv-elicit.xml → src/core/tasks/advanced-elicitation.xml} +6 -4
- package/src/core/tasks/index-docs.xml +1 -1
- package/src/core/tasks/validate-workflow.xml +1 -1
- package/src/core/tasks/workflow.xml +126 -22
- package/src/core/tools/shard-doc.xml +54 -45
- package/src/core/workflows/brainstorming/README.md +6 -16
- package/src/core/workflows/brainstorming/instructions.md +6 -5
- package/src/core/workflows/brainstorming/template.md +4 -0
- package/src/core/workflows/brainstorming/workflow.yaml +8 -13
- package/src/core/workflows/party-mode/instructions.md +2 -7
- package/src/core/workflows/party-mode/workflow.yaml +11 -6
- package/src/modules/bmb/README.md +135 -73
- package/src/modules/bmb/_module-installer/install-config.yaml +9 -4
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +11 -12
- package/src/modules/bmb/docs/agent-compilation.md +340 -0
- package/src/modules/bmb/docs/agent-menu-patterns.md +524 -0
- package/src/modules/bmb/docs/expert-agent-architecture.md +364 -0
- package/src/modules/bmb/docs/index.md +55 -0
- package/src/modules/bmb/docs/module-agent-architecture.md +367 -0
- package/src/modules/bmb/docs/simple-agent-architecture.md +288 -0
- package/src/modules/bmb/docs/understanding-agent-types.md +184 -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 +50 -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/readme.md +3 -0
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +5 -6
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +6 -6
- package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +2 -2
- package/src/modules/bmb/workflows/convert-legacy/README.md +5 -5
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +2 -2
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +17 -17
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +6 -10
- package/src/modules/bmb/workflows/create-agent/agent-validation-checklist.md +174 -0
- package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +99 -120
- package/src/modules/bmb/workflows/create-agent/communication-presets.csv +61 -0
- package/src/modules/bmb/workflows/create-agent/instructions.md +171 -82
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +26 -20
- package/src/modules/bmb/workflows/create-module/README.md +163 -154
- package/src/modules/bmb/workflows/create-module/checklist.md +1 -10
- package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
- package/src/modules/bmb/workflows/create-module/instructions.md +13 -17
- package/src/modules/bmb/workflows/create-module/module-structure.md +39 -5
- package/src/modules/bmb/workflows/create-module/workflow.yaml +21 -13
- package/src/modules/bmb/workflows/create-workflow/README.md +4 -4
- package/src/modules/bmb/workflows/create-workflow/checklist.md +1 -1
- package/src/modules/bmb/workflows/create-workflow/instructions.md +46 -37
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +219 -42
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +4 -2
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +12 -16
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +7 -8
- package/src/modules/bmb/workflows/edit-agent/README.md +174 -47
- package/src/modules/bmb/workflows/edit-agent/instructions.md +399 -35
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +27 -13
- package/src/modules/bmb/workflows/edit-module/README.md +2 -2
- package/src/modules/bmb/workflows/edit-module/checklist.md +2 -2
- package/src/modules/bmb/workflows/edit-module/instructions.md +7 -5
- package/src/modules/bmb/workflows/edit-module/workflow.yaml +11 -13
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +4 -4
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +6 -8
- package/src/modules/bmb/workflows/module-brief/README.md +2 -2
- package/src/modules/bmb/workflows/module-brief/checklist.md +2 -2
- package/src/modules/bmb/workflows/module-brief/instructions.md +3 -2
- package/src/modules/bmb/workflows/module-brief/workflow.yaml +12 -7
- package/src/modules/bmgd/README.md +208 -0
- package/src/modules/bmgd/_module-installer/install-config.yaml +54 -0
- package/src/modules/bmgd/agents/game-architect.agent.yaml +33 -0
- package/src/modules/bmgd/agents/game-designer.agent.yaml +40 -0
- package/src/modules/bmgd/agents/game-dev.agent.yaml +40 -0
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +75 -0
- package/src/modules/bmgd/teams/default-party.csv +10 -0
- package/src/modules/{bmm → bmgd}/teams/team-gamedev.yaml +5 -1
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +130 -0
- package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/workflow.yaml +10 -10
- package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/instructions.md +44 -28
- package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/workflow.yaml +9 -17
- package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/instructions-gdd.md +58 -31
- package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +81 -0
- package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/instructions-narrative.md +75 -28
- package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/workflow.yaml +6 -12
- package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +321 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-template.md +103 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +240 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/decision-catalog.yaml +222 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +701 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/pattern-categories.csv +13 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +69 -0
- package/src/modules/bmgd/workflows/4-production/code-review/backlog_template.md +12 -0
- package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +22 -0
- package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +398 -0
- package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +61 -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 +58 -0
- package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +240 -0
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +256 -0
- package/src/modules/bmgd/workflows/4-production/create-story/template.md +51 -0
- package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +74 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +38 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +267 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +58 -0
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +17 -0
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +164 -0
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +76 -0
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +58 -0
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1443 -0
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +57 -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 +51 -0
- package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +16 -0
- package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +34 -0
- package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +209 -0
- package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +63 -0
- package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +111 -0
- package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +28 -0
- package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +117 -0
- package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +25 -0
- package/src/modules/bmm/README.md +79 -92
- package/src/modules/bmm/_module-installer/install-config.yaml +9 -23
- package/src/modules/bmm/_module-installer/installer.js +2 -2
- package/src/modules/bmm/agents/analyst.agent.yaml +25 -19
- package/src/modules/bmm/agents/architect.agent.yaml +28 -19
- package/src/modules/bmm/agents/dev.agent.yaml +12 -15
- package/src/modules/bmm/agents/pm.agent.yaml +40 -22
- package/src/modules/bmm/agents/sm.agent.yaml +30 -24
- package/src/modules/bmm/agents/tea.agent.yaml +25 -17
- package/src/modules/bmm/agents/tech-writer.agent.yaml +80 -0
- package/src/modules/bmm/agents/ux-designer.agent.yaml +22 -12
- package/src/modules/bmm/docs/README.md +240 -0
- package/src/modules/bmm/docs/agents-guide.md +1058 -0
- package/src/modules/bmm/docs/brownfield-guide.md +762 -0
- package/src/modules/bmm/docs/enterprise-agentic-development.md +686 -0
- package/src/modules/bmm/docs/faq.md +588 -0
- package/src/modules/bmm/docs/glossary.md +320 -0
- package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +5919 -0
- package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +2 -0
- package/src/modules/bmm/docs/party-mode.md +224 -0
- package/src/modules/bmm/docs/quick-spec-flow.md +652 -0
- package/src/modules/bmm/docs/quick-start.md +382 -0
- package/src/modules/bmm/docs/scale-adaptive-system.md +618 -0
- package/src/modules/bmm/docs/test-architecture.md +396 -0
- package/src/modules/bmm/{workflows/3-solutioning/architecture/readme.md → docs/workflow-architecture-reference.md} +132 -84
- package/src/modules/bmm/{workflows/document-project/README.md → docs/workflow-document-project-reference.md} +49 -4
- package/src/modules/bmm/docs/workflows-analysis.md +370 -0
- package/src/modules/bmm/docs/workflows-implementation.md +296 -0
- package/src/modules/bmm/docs/workflows-planning.md +612 -0
- package/src/modules/bmm/docs/workflows-solutioning.md +554 -0
- package/src/modules/bmm/teams/default-party.csv +20 -0
- package/src/modules/bmm/teams/team-fullstack.yaml +2 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +45 -24
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +8 -8
- package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +425 -0
- package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +180 -0
- package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +56 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +435 -232
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +93 -77
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +32 -14
- package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +144 -0
- package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +249 -0
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +156 -59
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +70 -65
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +205 -143
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +55 -46
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +116 -83
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +37 -1
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +36 -1
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +25 -12
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +51 -26
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +67 -16
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +292 -63
- package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +544 -290
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +165 -23
- package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +50 -18
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +146 -36
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +67 -4
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +436 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +874 -163
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +132 -6
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +54 -20
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +36 -28
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -26
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +5 -9
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +215 -150
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +72 -26
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md +80 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +616 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +63 -0
- package/src/modules/bmm/workflows/3-solutioning/{solutioning-gate-check → implementation-readiness}/checklist.md +7 -13
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +332 -0
- package/src/modules/bmm/workflows/3-solutioning/{solutioning-gate-check → implementation-readiness}/template.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +64 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +25 -18
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +31 -26
- 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 +38 -25
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +22 -18
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +38 -14
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +8 -3
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +35 -5
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +10 -6
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +40 -16
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +1207 -243
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +38 -26
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +28 -15
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +1 -1
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +16 -6
- package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +1 -1
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +23 -15
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +39 -8
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +5 -4
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +6 -6
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +5 -7
- package/src/modules/bmm/workflows/diagrams/_shared/excalidraw-library.json +90 -0
- package/src/modules/bmm/workflows/diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/src/modules/bmm/workflows/diagrams/create-dataflow/checklist.md +39 -0
- package/src/modules/bmm/workflows/diagrams/create-dataflow/instructions.md +130 -0
- package/src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/diagrams/create-diagram/checklist.md +43 -0
- package/src/modules/bmm/workflows/diagrams/create-diagram/instructions.md +141 -0
- package/src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/diagrams/create-flowchart/checklist.md +49 -0
- package/src/modules/bmm/workflows/diagrams/create-flowchart/instructions.md +241 -0
- package/src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/diagrams/create-wireframe/checklist.md +38 -0
- package/src/modules/bmm/workflows/diagrams/create-wireframe/instructions.md +133 -0
- package/src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/document-project/checklist.md +1 -1
- package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
- package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -7
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +4 -4
- 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/techdoc/documentation-standards.md +262 -0
- package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -9
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -11
- package/src/modules/bmm/workflows/testarch/ci/checklist.md +4 -4
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +2 -2
- 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 +2 -2
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -8
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -11
- package/src/modules/bmm/workflows/testarch/test-design/checklist.md +4 -4
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +175 -14
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +4 -4
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +7 -11
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -9
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +9 -9
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -13
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +249 -212
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +6 -5
- package/src/modules/bmm/workflows/workflow-status/instructions.md +177 -113
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +126 -0
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +114 -0
- package/src/modules/bmm/workflows/workflow-status/paths/{brownfield-level-3.yaml → method-brownfield.yaml} +48 -33
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +101 -0
- package/src/modules/bmm/workflows/workflow-status/paths/{brownfield-level-1.yaml → quick-flow-brownfield.yaml} +18 -18
- package/src/modules/bmm/workflows/workflow-status/paths/{greenfield-level-1.yaml → quick-flow-greenfield.yaml} +16 -18
- 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 +5 -5
- package/src/modules/cis/README.md +153 -0
- package/src/modules/cis/_module-installer/install-config.yaml +6 -4
- package/src/modules/cis/agents/README.md +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +13 -8
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +13 -8
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +13 -8
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +13 -8
- package/src/modules/cis/agents/presentation-master.agent.yaml +60 -0
- package/src/modules/cis/agents/storyteller.agent.yaml +13 -8
- package/src/modules/cis/teams/creative-squad.yaml +1 -0
- package/src/modules/cis/teams/default-party.csv +11 -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/models/action-command-header.md +0 -0
- package/src/utility/models/agent-activation-ide.xml +3 -3
- package/src/utility/models/agent-activation-web.xml +4 -4
- package/src/utility/models/agent-command-header.md +1 -0
- package/src/utility/models/fragments/activation-steps.xml +3 -2
- package/src/utility/models/fragments/handler-validate-workflow.xml +1 -1
- package/src/utility/models/fragments/handler-workflow.xml +1 -1
- package/src/utility/models/fragments/web-bundle-activation-steps.xml +3 -3
- package/test/test-installation-components.js +214 -0
- package/tools/bmad-npx-wrapper.js +10 -98
- package/tools/cli/README.md +50 -32
- package/tools/cli/bundlers/web-bundler.js +322 -26
- package/tools/cli/commands/agent-install.js +409 -0
- package/tools/cli/commands/install.js +2 -5
- package/tools/cli/installers/lib/core/config-collector.js +279 -39
- package/tools/cli/installers/lib/core/detector.js +62 -7
- package/tools/cli/installers/lib/core/ide-config-manager.js +3 -1
- package/tools/cli/installers/lib/core/installer.js +338 -46
- package/tools/cli/installers/lib/core/manifest-generator.js +33 -117
- package/tools/cli/installers/lib/core/manifest.js +6 -2
- package/tools/cli/installers/lib/ide/_base-ide.js +82 -3
- package/tools/cli/installers/lib/ide/antigravity.js +463 -0
- package/tools/cli/installers/lib/ide/auggie.js +81 -238
- package/tools/cli/installers/lib/ide/claude-code.js +90 -25
- package/tools/cli/installers/lib/ide/cline.js +15 -18
- package/tools/cli/installers/lib/ide/codex.js +225 -71
- package/tools/cli/installers/lib/ide/crush.js +14 -50
- package/tools/cli/installers/lib/ide/cursor.js +116 -8
- package/tools/cli/installers/lib/ide/gemini.js +87 -37
- package/tools/cli/installers/lib/ide/github-copilot.js +121 -35
- package/tools/cli/installers/lib/ide/iflow.js +13 -30
- package/tools/cli/installers/lib/ide/kilo.js +20 -16
- package/tools/cli/installers/lib/ide/manager.js +50 -0
- package/tools/cli/installers/lib/ide/opencode.js +61 -17
- package/tools/cli/installers/lib/ide/qwen.js +39 -11
- package/tools/cli/installers/lib/ide/roo.js +27 -62
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +90 -0
- package/tools/cli/installers/lib/ide/{task-tool-command-generator.js → shared/task-tool-command-generator.js} +1 -1
- package/tools/cli/installers/lib/ide/{workflow-command-generator.js → shared/workflow-command-generator.js} +11 -9
- 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/{workflow-command-template.md → templates/workflow-command-template.md} +3 -5
- package/tools/cli/installers/lib/ide/trae.js +20 -32
- package/tools/cli/installers/lib/ide/windsurf.js +65 -8
- package/tools/cli/installers/lib/modules/manager.js +213 -7
- package/tools/cli/lib/agent/compiler.js +390 -0
- package/tools/cli/lib/agent/installer.js +725 -0
- package/tools/cli/lib/agent/template-engine.js +152 -0
- package/tools/cli/lib/cli-utils.js +52 -50
- package/tools/cli/lib/config.js +3 -1
- package/tools/cli/lib/ui.js +34 -17
- package/tools/cli/lib/xml-handler.js +1 -0
- package/tools/cli/lib/yaml-format.js +2 -1
- package/tools/cli/lib/yaml-xml-builder.js +76 -8
- package/tools/schema/agent.js +12 -3
- 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/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/template.md +0 -275
- 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/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/web-bundler-usage.md +0 -54
- package/src/core/tasks/adv-elicit.xml +0 -104
- 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/checklist.md +0 -62
- package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
- package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
- 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/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/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-project/README.md +0 -29
- package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +0 -221
- package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +0 -180
- package/src/modules/bmm/workflows/1-analysis/research/README.md +0 -454
- 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/2-plan-workflows/README.md +0 -258
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +0 -222
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -67
- package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +0 -63
- 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/3-solutioning/README.md +0 -1
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +0 -177
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -273
- 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/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/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/epic-tech-context/README.md +0 -195
- 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/README.md +0 -577
- 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-2.yaml +0 -76
- 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-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/readme.md +0 -86
- package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
- package/v6-open-items.md +0 -23
- /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 → bmgd/workflows/1-preproduction}/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 → bmgd/workflows/2-design}/gdd/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 → bmgd/workflows/2-design}/narrative/narrative-template.md +0 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template Engine for BMAD Agent Install Configuration
|
|
3
|
+
* Processes {{variable}}, {{#if}}, {{#unless}}, and {{/if}} blocks
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Process all template syntax in a string
|
|
8
|
+
* @param {string} content - Content with template syntax
|
|
9
|
+
* @param {Object} variables - Key-value pairs from install_config answers
|
|
10
|
+
* @returns {string} Processed content
|
|
11
|
+
*/
|
|
12
|
+
function processTemplate(content, variables = {}) {
|
|
13
|
+
let result = content;
|
|
14
|
+
|
|
15
|
+
// Process conditionals first (they may contain variables)
|
|
16
|
+
result = processConditionals(result, variables);
|
|
17
|
+
|
|
18
|
+
// Then process simple variable replacements
|
|
19
|
+
result = processVariables(result, variables);
|
|
20
|
+
|
|
21
|
+
// Clean up any empty lines left by removed conditionals
|
|
22
|
+
result = cleanupEmptyLines(result);
|
|
23
|
+
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Process {{#if}}, {{#unless}}, {{/if}}, {{/unless}} blocks
|
|
29
|
+
*/
|
|
30
|
+
function processConditionals(content, variables) {
|
|
31
|
+
let result = content;
|
|
32
|
+
|
|
33
|
+
// Process {{#if variable == "value"}} blocks
|
|
34
|
+
// Handle both regular quotes and JSON-escaped quotes (\")
|
|
35
|
+
const ifEqualsPattern = /\{\{#if\s+(\w+)\s*==\s*\\?"([^"\\]+)\\?"\s*\}\}([\s\S]*?)\{\{\/if\}\}/g;
|
|
36
|
+
result = result.replaceAll(ifEqualsPattern, (match, varName, value, block) => {
|
|
37
|
+
return variables[varName] === value ? block : '';
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Process {{#if variable}} blocks (boolean or truthy check)
|
|
41
|
+
const ifBoolPattern = /\{\{#if\s+(\w+)\s*\}\}([\s\S]*?)\{\{\/if\}\}/g;
|
|
42
|
+
result = result.replaceAll(ifBoolPattern, (match, varName, block) => {
|
|
43
|
+
const val = variables[varName];
|
|
44
|
+
// Treat as truthy: true, non-empty string, non-zero number
|
|
45
|
+
const isTruthy = val === true || (typeof val === 'string' && val.length > 0) || (typeof val === 'number' && val !== 0);
|
|
46
|
+
return isTruthy ? block : '';
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// Process {{#unless variable}} blocks (inverse of if)
|
|
50
|
+
const unlessPattern = /\{\{#unless\s+(\w+)\s*\}\}([\s\S]*?)\{\{\/unless\}\}/g;
|
|
51
|
+
result = result.replaceAll(unlessPattern, (match, varName, block) => {
|
|
52
|
+
const val = variables[varName];
|
|
53
|
+
const isFalsy = val === false || val === '' || val === null || val === undefined || val === 0;
|
|
54
|
+
return isFalsy ? block : '';
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Process {{variable}} replacements
|
|
62
|
+
*/
|
|
63
|
+
function processVariables(content, variables) {
|
|
64
|
+
let result = content;
|
|
65
|
+
|
|
66
|
+
// Replace {{variable}} with value
|
|
67
|
+
const varPattern = /\{\{(\w+)\}\}/g;
|
|
68
|
+
result = result.replaceAll(varPattern, (match, varName) => {
|
|
69
|
+
if (Object.hasOwn(variables, varName)) {
|
|
70
|
+
return String(variables[varName]);
|
|
71
|
+
}
|
|
72
|
+
// If variable not found, leave as-is (might be runtime variable like {user_name})
|
|
73
|
+
return match;
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Clean up excessive empty lines left after removing conditional blocks
|
|
81
|
+
*/
|
|
82
|
+
function cleanupEmptyLines(content) {
|
|
83
|
+
// Replace 3+ consecutive newlines with 2
|
|
84
|
+
return content.replaceAll(/\n{3,}/g, '\n\n');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Extract install_config from agent YAML object
|
|
89
|
+
* @param {Object} agentYaml - Parsed agent YAML
|
|
90
|
+
* @returns {Object|null} install_config section or null
|
|
91
|
+
*/
|
|
92
|
+
function extractInstallConfig(agentYaml) {
|
|
93
|
+
return agentYaml?.agent?.install_config || null;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Remove install_config from agent YAML (after processing)
|
|
98
|
+
* @param {Object} agentYaml - Parsed agent YAML
|
|
99
|
+
* @returns {Object} Agent YAML without install_config
|
|
100
|
+
*/
|
|
101
|
+
function stripInstallConfig(agentYaml) {
|
|
102
|
+
const result = structuredClone(agentYaml);
|
|
103
|
+
if (result.agent) {
|
|
104
|
+
delete result.agent.install_config;
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Process entire agent YAML object with template variables
|
|
111
|
+
* @param {Object} agentYaml - Parsed agent YAML
|
|
112
|
+
* @param {Object} variables - Answers from install_config questions
|
|
113
|
+
* @returns {Object} Processed agent YAML
|
|
114
|
+
*/
|
|
115
|
+
function processAgentYaml(agentYaml, variables) {
|
|
116
|
+
// Convert to JSON string, process templates, parse back
|
|
117
|
+
const jsonString = JSON.stringify(agentYaml, null, 2);
|
|
118
|
+
const processed = processTemplate(jsonString, variables);
|
|
119
|
+
return JSON.parse(processed);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Get default values from install_config questions
|
|
124
|
+
* @param {Object} installConfig - install_config section
|
|
125
|
+
* @returns {Object} Default values keyed by variable name
|
|
126
|
+
*/
|
|
127
|
+
function getDefaultValues(installConfig) {
|
|
128
|
+
const defaults = {};
|
|
129
|
+
|
|
130
|
+
if (!installConfig?.questions) {
|
|
131
|
+
return defaults;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
for (const question of installConfig.questions) {
|
|
135
|
+
if (question.var && question.default !== undefined) {
|
|
136
|
+
defaults[question.var] = question.default;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return defaults;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
module.exports = {
|
|
144
|
+
processTemplate,
|
|
145
|
+
processConditionals,
|
|
146
|
+
processVariables,
|
|
147
|
+
extractInstallConfig,
|
|
148
|
+
stripInstallConfig,
|
|
149
|
+
processAgentYaml,
|
|
150
|
+
getDefaultValues,
|
|
151
|
+
cleanupEmptyLines,
|
|
152
|
+
};
|
|
@@ -2,13 +2,31 @@ const chalk = require('chalk');
|
|
|
2
2
|
const boxen = require('boxen');
|
|
3
3
|
const wrapAnsi = require('wrap-ansi');
|
|
4
4
|
const figlet = require('figlet');
|
|
5
|
+
const path = require('node:path');
|
|
5
6
|
|
|
6
7
|
const CLIUtils = {
|
|
8
|
+
/**
|
|
9
|
+
* Get version from package.json
|
|
10
|
+
*/
|
|
11
|
+
getVersion() {
|
|
12
|
+
try {
|
|
13
|
+
const packageJson = require(path.join(__dirname, '..', '..', '..', 'package.json'));
|
|
14
|
+
return packageJson.version || 'Unknown';
|
|
15
|
+
} catch {
|
|
16
|
+
return 'Unknown';
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
|
|
7
20
|
/**
|
|
8
21
|
* Display BMAD logo
|
|
22
|
+
* @param {boolean} clearScreen - Whether to clear the screen first (default: true for initial display only)
|
|
9
23
|
*/
|
|
10
|
-
displayLogo() {
|
|
11
|
-
|
|
24
|
+
displayLogo(clearScreen = true) {
|
|
25
|
+
if (clearScreen) {
|
|
26
|
+
console.clear();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const version = this.getVersion();
|
|
12
30
|
|
|
13
31
|
// ASCII art logo
|
|
14
32
|
const logo = `
|
|
@@ -20,7 +38,7 @@ const CLIUtils = {
|
|
|
20
38
|
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝`;
|
|
21
39
|
|
|
22
40
|
console.log(chalk.cyan(logo));
|
|
23
|
-
console.log(chalk.dim(
|
|
41
|
+
console.log(chalk.dim(` Build More, Architect Dreams`) + chalk.cyan.bold(` v${version}`) + '\n');
|
|
24
42
|
},
|
|
25
43
|
|
|
26
44
|
/**
|
|
@@ -64,18 +82,35 @@ const CLIUtils = {
|
|
|
64
82
|
},
|
|
65
83
|
|
|
66
84
|
/**
|
|
67
|
-
* Display
|
|
68
|
-
* @param {string
|
|
85
|
+
* Display module configuration header
|
|
86
|
+
* @param {string} moduleName - Module name (fallback if no custom header)
|
|
87
|
+
* @param {string} header - Custom header from install-config.yaml
|
|
88
|
+
* @param {string} subheader - Custom subheader from install-config.yaml
|
|
69
89
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
90
|
+
displayModuleConfigHeader(moduleName, header = null, subheader = null) {
|
|
91
|
+
// Simple blue banner with custom header/subheader if provided
|
|
92
|
+
console.log('\n' + chalk.cyan('─'.repeat(80)));
|
|
93
|
+
console.log(chalk.cyan(header || `Configuring ${moduleName.toUpperCase()} Module`));
|
|
94
|
+
if (subheader) {
|
|
95
|
+
console.log(chalk.dim(`${subheader}`));
|
|
96
|
+
}
|
|
97
|
+
console.log(chalk.cyan('─'.repeat(80)) + '\n');
|
|
98
|
+
},
|
|
74
99
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Display module with no custom configuration
|
|
102
|
+
* @param {string} moduleName - Module name (fallback if no custom header)
|
|
103
|
+
* @param {string} header - Custom header from install-config.yaml
|
|
104
|
+
* @param {string} subheader - Custom subheader from install-config.yaml
|
|
105
|
+
*/
|
|
106
|
+
displayModuleNoConfig(moduleName, header = null, subheader = null) {
|
|
107
|
+
// Show full banner with header/subheader, just like modules with config
|
|
108
|
+
console.log('\n' + chalk.cyan('─'.repeat(80)));
|
|
109
|
+
console.log(chalk.cyan(header || `${moduleName.toUpperCase()} Module - No Custom Configuration`));
|
|
110
|
+
if (subheader) {
|
|
111
|
+
console.log(chalk.dim(`${subheader}`));
|
|
112
|
+
}
|
|
113
|
+
console.log(chalk.cyan('─'.repeat(80)) + '\n');
|
|
79
114
|
},
|
|
80
115
|
|
|
81
116
|
/**
|
|
@@ -164,44 +199,11 @@ const CLIUtils = {
|
|
|
164
199
|
/**
|
|
165
200
|
* Display module completion message
|
|
166
201
|
* @param {string} moduleName - Name of the completed module
|
|
167
|
-
* @param {boolean} clearScreen - Whether to clear the screen first
|
|
202
|
+
* @param {boolean} clearScreen - Whether to clear the screen first (deprecated, always false now)
|
|
168
203
|
*/
|
|
169
|
-
displayModuleComplete(moduleName, clearScreen =
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
this.displayLogo();
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
let message;
|
|
176
|
-
|
|
177
|
-
// Special messages for specific modules
|
|
178
|
-
if (moduleName.toLowerCase() === 'bmm') {
|
|
179
|
-
message = `Thank you for configuring the BMAD™ Method Module (BMM)!
|
|
180
|
-
|
|
181
|
-
Your responses have been saved and will be used to configure your installation.`;
|
|
182
|
-
} else if (moduleName.toLowerCase() === 'cis') {
|
|
183
|
-
message = `Thank you for choosing the BMAD™ Creative Innovation Suite, an early beta
|
|
184
|
-
release with much more planned!
|
|
185
|
-
|
|
186
|
-
With this BMAD™ Creative Innovation Suite Configuration, remember that all
|
|
187
|
-
paths are relative to project root, with no leading slash.`;
|
|
188
|
-
} else if (moduleName.toLowerCase() === 'core') {
|
|
189
|
-
message = `Thank you for choosing the BMAD™ Method, your gateway to dreaming, planning
|
|
190
|
-
and building with real world proven techniques.
|
|
191
|
-
|
|
192
|
-
All paths are relative to project root, with no leading slash.`;
|
|
193
|
-
} else {
|
|
194
|
-
message = `Thank you for configuring the BMAD™ ${moduleName.toUpperCase()} module!
|
|
195
|
-
|
|
196
|
-
Your responses have been saved and will be used to configure your installation.`;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
this.displayBox(message, {
|
|
200
|
-
borderColor: 'yellow',
|
|
201
|
-
borderStyle: 'double',
|
|
202
|
-
padding: 1,
|
|
203
|
-
margin: 1,
|
|
204
|
-
});
|
|
204
|
+
displayModuleComplete(moduleName, clearScreen = false) {
|
|
205
|
+
// No longer clear screen or show boxes - just a simple completion message
|
|
206
|
+
// This is deprecated but kept for backwards compatibility
|
|
205
207
|
},
|
|
206
208
|
};
|
|
207
209
|
|
package/tools/cli/lib/config.js
CHANGED
|
@@ -33,7 +33,9 @@ class Config {
|
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
await fs.ensureDir(path.dirname(configPath));
|
|
36
|
-
|
|
36
|
+
// Ensure POSIX-compliant final newline
|
|
37
|
+
const content = yamlContent.endsWith('\n') ? yamlContent : yamlContent + '\n';
|
|
38
|
+
await fs.writeFile(configPath, content, 'utf8');
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
/**
|
package/tools/cli/lib/ui.js
CHANGED
|
@@ -17,14 +17,26 @@ class UI {
|
|
|
17
17
|
*/
|
|
18
18
|
async promptInstall() {
|
|
19
19
|
CLIUtils.displayLogo();
|
|
20
|
-
CLIUtils.
|
|
20
|
+
const version = CLIUtils.getVersion();
|
|
21
|
+
CLIUtils.displaySection('BMAD™ Setup', `Build More, Architect Dreams v${version}`);
|
|
21
22
|
|
|
22
23
|
const confirmedDirectory = await this.getConfirmedDirectory();
|
|
23
24
|
|
|
25
|
+
// Preflight: Check for legacy BMAD v4 footprints immediately after getting directory
|
|
26
|
+
const { Detector } = require('../installers/lib/core/detector');
|
|
27
|
+
const { Installer } = require('../installers/lib/core/installer');
|
|
28
|
+
const detector = new Detector();
|
|
29
|
+
const installer = new Installer();
|
|
30
|
+
const legacyV4 = await detector.detectLegacyV4(confirmedDirectory);
|
|
31
|
+
if (legacyV4.hasLegacyV4) {
|
|
32
|
+
await installer.handleLegacyV4Migration(confirmedDirectory, legacyV4);
|
|
33
|
+
}
|
|
34
|
+
|
|
24
35
|
// Check if there's an existing BMAD installation
|
|
25
36
|
const fs = require('fs-extra');
|
|
26
37
|
const path = require('node:path');
|
|
27
|
-
|
|
38
|
+
// Use findBmadDir to detect any custom folder names (V6+)
|
|
39
|
+
const bmadDir = await installer.findBmadDir(confirmedDirectory);
|
|
28
40
|
const hasExistingInstall = await fs.pathExists(bmadDir);
|
|
29
41
|
|
|
30
42
|
// Track action type (only set if there's an existing installation)
|
|
@@ -82,25 +94,23 @@ class UI {
|
|
|
82
94
|
// If actionType === 'update' or 'reinstall', continue with normal flow below
|
|
83
95
|
}
|
|
84
96
|
|
|
85
|
-
// Collect IDE tool selection EARLY (before module configuration)
|
|
86
|
-
// This allows users to make all decisions upfront before file copying begins
|
|
87
|
-
const toolSelection = await this.promptToolSelection(confirmedDirectory, []);
|
|
88
|
-
|
|
89
97
|
const { installedModuleIds } = await this.getExistingInstallation(confirmedDirectory);
|
|
90
98
|
const coreConfig = await this.collectCoreConfig(confirmedDirectory);
|
|
91
99
|
const moduleChoices = await this.getModuleChoices(installedModuleIds);
|
|
92
100
|
const selectedModules = await this.selectModules(moduleChoices);
|
|
93
101
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
102
|
+
// Collect IDE tool selection AFTER configuration prompts (fixes Windows/PowerShell hang)
|
|
103
|
+
// This allows text-based prompts to complete before the checkbox prompt
|
|
104
|
+
const toolSelection = await this.promptToolSelection(confirmedDirectory, selectedModules);
|
|
105
|
+
|
|
106
|
+
// No more screen clearing - keep output flowing
|
|
97
107
|
|
|
98
108
|
return {
|
|
99
109
|
actionType: actionType || 'update', // Preserve reinstall or update action
|
|
100
110
|
directory: confirmedDirectory,
|
|
101
111
|
installCore: true, // Always install core
|
|
102
112
|
modules: selectedModules,
|
|
103
|
-
// IDE selection collected
|
|
113
|
+
// IDE selection collected after config, will be configured later
|
|
104
114
|
ides: toolSelection.ides,
|
|
105
115
|
skipIde: toolSelection.skipIde,
|
|
106
116
|
coreConfig: coreConfig, // Pass collected core config to installer
|
|
@@ -114,10 +124,12 @@ class UI {
|
|
|
114
124
|
* @returns {Object} Tool configuration
|
|
115
125
|
*/
|
|
116
126
|
async promptToolSelection(projectDir, selectedModules) {
|
|
117
|
-
// Check for existing configured IDEs
|
|
127
|
+
// Check for existing configured IDEs - use findBmadDir to detect custom folder names
|
|
118
128
|
const { Detector } = require('../installers/lib/core/detector');
|
|
129
|
+
const { Installer } = require('../installers/lib/core/installer');
|
|
119
130
|
const detector = new Detector();
|
|
120
|
-
const
|
|
131
|
+
const installer = new Installer();
|
|
132
|
+
const bmadDir = await installer.findBmadDir(projectDir || process.cwd());
|
|
121
133
|
const existingInstall = await detector.detect(bmadDir);
|
|
122
134
|
const configuredIdes = existingInstall.ides || [];
|
|
123
135
|
|
|
@@ -322,8 +334,10 @@ class UI {
|
|
|
322
334
|
*/
|
|
323
335
|
async getExistingInstallation(directory) {
|
|
324
336
|
const { Detector } = require('../installers/lib/core/detector');
|
|
337
|
+
const { Installer } = require('../installers/lib/core/installer');
|
|
325
338
|
const detector = new Detector();
|
|
326
|
-
const
|
|
339
|
+
const installer = new Installer();
|
|
340
|
+
const bmadDir = await installer.findBmadDir(directory);
|
|
327
341
|
const existingInstall = await detector.detect(bmadDir);
|
|
328
342
|
const installedModuleIds = new Set(existingInstall.modules.map((mod) => mod.id));
|
|
329
343
|
|
|
@@ -421,17 +435,20 @@ class UI {
|
|
|
421
435
|
if (stats.isDirectory()) {
|
|
422
436
|
const files = await fs.readdir(directory);
|
|
423
437
|
if (files.length > 0) {
|
|
438
|
+
// Check for any bmad installation (any folder with _cfg/manifest.yaml)
|
|
439
|
+
const { Installer } = require('../installers/lib/core/installer');
|
|
440
|
+
const installer = new Installer();
|
|
441
|
+
const bmadDir = await installer.findBmadDir(directory);
|
|
442
|
+
const hasBmadInstall = (await fs.pathExists(bmadDir)) && (await fs.pathExists(path.join(bmadDir, '_cfg', 'manifest.yaml')));
|
|
443
|
+
|
|
424
444
|
console.log(
|
|
425
445
|
chalk.gray(`Directory exists and contains ${files.length} item(s)`) +
|
|
426
|
-
(
|
|
446
|
+
(hasBmadInstall ? chalk.yellow(` including existing BMAD installation (${path.basename(bmadDir)})`) : ''),
|
|
427
447
|
);
|
|
428
448
|
} else {
|
|
429
449
|
console.log(chalk.gray('Directory exists and is empty'));
|
|
430
450
|
}
|
|
431
451
|
}
|
|
432
|
-
} else {
|
|
433
|
-
const existingParent = await this.findExistingParent(directory);
|
|
434
|
-
console.log(chalk.gray(`Will create in: ${existingParent}`));
|
|
435
452
|
}
|
|
436
453
|
}
|
|
437
454
|
|
|
@@ -203,6 +203,7 @@ class XmlHandler {
|
|
|
203
203
|
customizeHash: customizePath ? await this.yamlBuilder.calculateFileHash(customizePath) : null,
|
|
204
204
|
builderVersion: '1.0.0',
|
|
205
205
|
includeMetadata: metadata.includeMetadata !== false,
|
|
206
|
+
forWebBundle: metadata.forWebBundle || false, // Pass through forWebBundle flag
|
|
206
207
|
};
|
|
207
208
|
|
|
208
209
|
// Convert to XML
|
|
@@ -64,7 +64,8 @@ async function formatYamlContent(content, filename) {
|
|
|
64
64
|
noRefs: true,
|
|
65
65
|
sortKeys: false, // Preserve key order
|
|
66
66
|
});
|
|
67
|
-
|
|
67
|
+
// Ensure POSIX-compliant final newline
|
|
68
|
+
return formatted.endsWith('\n') ? formatted : formatted + '\n';
|
|
68
69
|
} catch (error) {
|
|
69
70
|
console.error(chalk.red(`❌ YAML syntax error in ${filename}:`), error.message);
|
|
70
71
|
console.error(chalk.yellow(`💡 Try manually fixing the YAML structure first`));
|
|
@@ -119,6 +119,16 @@ class YamlXmlBuilder {
|
|
|
119
119
|
if (customizeYaml.critical_actions) {
|
|
120
120
|
merged.agent.critical_actions = [...(merged.agent.critical_actions || []), ...customizeYaml.critical_actions];
|
|
121
121
|
}
|
|
122
|
+
|
|
123
|
+
// Append prompts
|
|
124
|
+
if (customizeYaml.prompts) {
|
|
125
|
+
merged.agent.prompts = [...(merged.agent.prompts || []), ...customizeYaml.prompts];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Append memories
|
|
129
|
+
if (customizeYaml.memories) {
|
|
130
|
+
merged.agent.memories = [...(merged.agent.memories || []), ...customizeYaml.memories];
|
|
131
|
+
}
|
|
122
132
|
}
|
|
123
133
|
}
|
|
124
134
|
|
|
@@ -202,6 +212,11 @@ class YamlXmlBuilder {
|
|
|
202
212
|
// Persona section
|
|
203
213
|
xml += this.buildPersonaXml(agent.persona);
|
|
204
214
|
|
|
215
|
+
// Memories section (if exists)
|
|
216
|
+
if (agent.memories) {
|
|
217
|
+
xml += this.buildMemoriesXml(agent.memories);
|
|
218
|
+
}
|
|
219
|
+
|
|
205
220
|
// Prompts section (if exists)
|
|
206
221
|
if (agent.prompts) {
|
|
207
222
|
xml += this.buildPromptsXml(agent.prompts);
|
|
@@ -209,7 +224,7 @@ class YamlXmlBuilder {
|
|
|
209
224
|
|
|
210
225
|
// Menu section (support both 'menu' and legacy 'commands')
|
|
211
226
|
const menuItems = agent.menu || agent.commands || [];
|
|
212
|
-
xml += this.buildCommandsXml(menuItems);
|
|
227
|
+
xml += this.buildCommandsXml(menuItems, buildMetadata.forWebBundle);
|
|
213
228
|
|
|
214
229
|
xml += '</agent>\n';
|
|
215
230
|
xml += '```\n';
|
|
@@ -268,19 +283,54 @@ class YamlXmlBuilder {
|
|
|
268
283
|
return xml;
|
|
269
284
|
}
|
|
270
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Build memories XML section
|
|
288
|
+
*/
|
|
289
|
+
buildMemoriesXml(memories) {
|
|
290
|
+
if (!memories || memories.length === 0) return '';
|
|
291
|
+
|
|
292
|
+
let xml = ' <memories>\n';
|
|
293
|
+
|
|
294
|
+
for (const memory of memories) {
|
|
295
|
+
xml += ` <memory>${this.escapeXml(memory)}</memory>\n`;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
xml += ' </memories>\n';
|
|
299
|
+
|
|
300
|
+
return xml;
|
|
301
|
+
}
|
|
302
|
+
|
|
271
303
|
/**
|
|
272
304
|
* Build prompts XML section
|
|
305
|
+
* Handles both array format and object/dictionary format
|
|
273
306
|
*/
|
|
274
307
|
buildPromptsXml(prompts) {
|
|
275
|
-
if (!prompts
|
|
308
|
+
if (!prompts) return '';
|
|
309
|
+
|
|
310
|
+
// Handle object/dictionary format: { promptId: 'content', ... }
|
|
311
|
+
// Convert to array format for processing
|
|
312
|
+
let promptsArray = prompts;
|
|
313
|
+
if (!Array.isArray(prompts)) {
|
|
314
|
+
// Check if it's an object with no length property (dictionary format)
|
|
315
|
+
if (typeof prompts === 'object' && prompts.length === undefined) {
|
|
316
|
+
promptsArray = Object.entries(prompts).map(([id, content]) => ({
|
|
317
|
+
id: id,
|
|
318
|
+
content: content,
|
|
319
|
+
}));
|
|
320
|
+
} else {
|
|
321
|
+
return ''; // Not a valid prompts format
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if (promptsArray.length === 0) return '';
|
|
276
326
|
|
|
277
327
|
let xml = ' <prompts>\n';
|
|
278
328
|
|
|
279
|
-
for (const prompt of
|
|
329
|
+
for (const prompt of promptsArray) {
|
|
280
330
|
xml += ` <prompt id="${prompt.id || ''}">\n`;
|
|
281
|
-
xml += `
|
|
282
|
-
xml +=
|
|
283
|
-
xml += `
|
|
331
|
+
xml += ` <content>\n`;
|
|
332
|
+
xml += `${this.escapeXml(prompt.content || '')}\n`;
|
|
333
|
+
xml += ` </content>\n`;
|
|
284
334
|
xml += ` </prompt>\n`;
|
|
285
335
|
}
|
|
286
336
|
|
|
@@ -292,8 +342,10 @@ class YamlXmlBuilder {
|
|
|
292
342
|
/**
|
|
293
343
|
* Build menu XML section (renamed from commands for clarity)
|
|
294
344
|
* Auto-injects *help and *exit, adds * prefix to all triggers
|
|
345
|
+
* @param {Array} menuItems - Menu items from YAML
|
|
346
|
+
* @param {boolean} forWebBundle - Whether building for web bundle
|
|
295
347
|
*/
|
|
296
|
-
buildCommandsXml(menuItems) {
|
|
348
|
+
buildCommandsXml(menuItems, forWebBundle = false) {
|
|
297
349
|
let xml = ' <menu>\n';
|
|
298
350
|
|
|
299
351
|
// Always inject *help first
|
|
@@ -302,6 +354,14 @@ class YamlXmlBuilder {
|
|
|
302
354
|
// Add user-defined menu items with * prefix
|
|
303
355
|
if (menuItems && menuItems.length > 0) {
|
|
304
356
|
for (const item of menuItems) {
|
|
357
|
+
// Skip ide-only items when building for web bundles
|
|
358
|
+
if (forWebBundle && item['ide-only'] === true) {
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
// Skip web-only items when NOT building for web bundles (i.e., IDE/local installation)
|
|
362
|
+
if (!forWebBundle && item['web-only'] === true) {
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
305
365
|
// Build command attributes - add * prefix if not present
|
|
306
366
|
let trigger = item.trigger || '';
|
|
307
367
|
if (!trigger.startsWith('*')) {
|
|
@@ -311,7 +371,15 @@ class YamlXmlBuilder {
|
|
|
311
371
|
const attrs = [`cmd="${trigger}"`];
|
|
312
372
|
|
|
313
373
|
// Add handler attributes
|
|
314
|
-
|
|
374
|
+
// If workflow-install exists, use its value for workflow attribute (vendoring)
|
|
375
|
+
// workflow-install is build-time metadata - tells installer where to copy workflows
|
|
376
|
+
// The final XML should only have workflow pointing to the install location
|
|
377
|
+
if (item['workflow-install']) {
|
|
378
|
+
attrs.push(`workflow="${item['workflow-install']}"`);
|
|
379
|
+
} else if (item.workflow) {
|
|
380
|
+
attrs.push(`workflow="${item.workflow}"`);
|
|
381
|
+
}
|
|
382
|
+
|
|
315
383
|
if (item['validate-workflow']) attrs.push(`validate-workflow="${item['validate-workflow']}"`);
|
|
316
384
|
if (item.exec) attrs.push(`exec="${item.exec}"`);
|
|
317
385
|
if (item.tmpl) attrs.push(`tmpl="${item.tmpl}"`);
|
package/tools/schema/agent.js
CHANGED
|
@@ -88,6 +88,7 @@ function buildAgentSchema(expectedModule) {
|
|
|
88
88
|
critical_actions: z.array(createNonEmptyString('agent.critical_actions[]')).optional(),
|
|
89
89
|
menu: z.array(buildMenuItemSchema()).min(1, { message: 'agent.menu must include at least one entry' }),
|
|
90
90
|
prompts: z.array(buildPromptSchema()).optional(),
|
|
91
|
+
webskip: z.boolean().optional(),
|
|
91
92
|
})
|
|
92
93
|
.strict();
|
|
93
94
|
}
|
|
@@ -142,9 +143,12 @@ function buildPersonaSchema() {
|
|
|
142
143
|
role: createNonEmptyString('agent.persona.role'),
|
|
143
144
|
identity: createNonEmptyString('agent.persona.identity'),
|
|
144
145
|
communication_style: createNonEmptyString('agent.persona.communication_style'),
|
|
145
|
-
principles: z
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
principles: z.union([
|
|
147
|
+
createNonEmptyString('agent.persona.principles'),
|
|
148
|
+
z
|
|
149
|
+
.array(createNonEmptyString('agent.persona.principles[]'))
|
|
150
|
+
.min(1, { message: 'agent.persona.principles must include at least one entry' }),
|
|
151
|
+
]),
|
|
148
152
|
})
|
|
149
153
|
.strict();
|
|
150
154
|
}
|
|
@@ -170,12 +174,17 @@ function buildMenuItemSchema() {
|
|
|
170
174
|
trigger: createNonEmptyString('agent.menu[].trigger'),
|
|
171
175
|
description: createNonEmptyString('agent.menu[].description'),
|
|
172
176
|
workflow: createNonEmptyString('agent.menu[].workflow').optional(),
|
|
177
|
+
'workflow-install': createNonEmptyString('agent.menu[].workflow-install').optional(),
|
|
173
178
|
'validate-workflow': createNonEmptyString('agent.menu[].validate-workflow').optional(),
|
|
174
179
|
exec: createNonEmptyString('agent.menu[].exec').optional(),
|
|
175
180
|
action: createNonEmptyString('agent.menu[].action').optional(),
|
|
176
181
|
tmpl: createNonEmptyString('agent.menu[].tmpl').optional(),
|
|
177
182
|
data: createNonEmptyString('agent.menu[].data').optional(),
|
|
178
183
|
'run-workflow': createNonEmptyString('agent.menu[].run-workflow').optional(),
|
|
184
|
+
checklist: createNonEmptyString('agent.menu[].checklist').optional(),
|
|
185
|
+
document: createNonEmptyString('agent.menu[].document').optional(),
|
|
186
|
+
'ide-only': z.boolean().optional(),
|
|
187
|
+
'web-only': z.boolean().optional(),
|
|
179
188
|
})
|
|
180
189
|
.strict()
|
|
181
190
|
.superRefine((value, ctx) => {
|