bmad-method 6.0.0-alpha.1 → 6.0.0-alpha.10
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 +1203 -0
- package/CONTRIBUTING.md +1 -13
- package/README.md +330 -149
- package/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
- package/docs/agent-customization-guide.md +208 -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/web-bundles-gemini-gpt-guide.md +473 -0
- package/eslint.config.mjs +2 -0
- package/package.json +5 -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/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/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/README.md +126 -243
- package/src/modules/bmb/workflows/create-agent/agent-architecture.md +15 -19
- package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +28 -28
- package/src/modules/bmb/workflows/create-agent/agent-types.md +15 -15
- package/src/modules/bmb/workflows/create-agent/checklist.md +3 -3
- package/src/modules/bmb/workflows/create-agent/instructions.md +67 -39
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +14 -15
- 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/checklist.md +1 -1
- package/src/modules/bmb/workflows/edit-agent/instructions.md +2 -2
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +10 -12
- 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/bmb/workflows/redoc/README.md +5 -5
- package/src/modules/bmb/workflows/redoc/instructions.md +1 -1
- package/src/modules/bmb/workflows/redoc/workflow.yaml +1 -1
- 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 +20 -19
- package/src/modules/bmm/agents/dev.agent.yaml +12 -15
- package/src/modules/bmm/agents/frame-expert.agent.yaml +42 -0
- package/src/modules/bmm/agents/pm.agent.yaml +36 -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 +68 -0
- package/src/modules/bmm/agents/ux-designer.agent.yaml +18 -12
- package/src/modules/bmm/docs/README.md +236 -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/party-mode.md +224 -0
- package/src/modules/bmm/docs/quick-spec-flow.md +652 -0
- package/src/modules/bmm/docs/quick-start.md +376 -0
- package/src/modules/bmm/docs/scale-adaptive-system.md +612 -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 +286 -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-epics-and-stories/epics-template.md +80 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md +616 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml +63 -0
- 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/{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/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/frame-expert/_shared/excalidraw-helpers.md +127 -0
- package/src/modules/bmm/workflows/frame-expert/_shared/excalidraw-library.json +90 -0
- package/src/modules/bmm/workflows/frame-expert/_shared/excalidraw-templates.yaml +127 -0
- package/src/modules/bmm/workflows/frame-expert/_shared/validate-json-instructions.md +79 -0
- package/src/modules/bmm/workflows/frame-expert/create-dataflow/checklist.md +39 -0
- package/src/modules/bmm/workflows/frame-expert/create-dataflow/instructions.md +131 -0
- package/src/modules/bmm/workflows/frame-expert/create-dataflow/workflow.yaml +24 -0
- package/src/modules/bmm/workflows/frame-expert/create-diagram/checklist.md +43 -0
- package/src/modules/bmm/workflows/frame-expert/create-diagram/instructions.md +142 -0
- package/src/modules/bmm/workflows/frame-expert/create-diagram/workflow.yaml +25 -0
- package/src/modules/bmm/workflows/frame-expert/create-flowchart/checklist.md +49 -0
- package/src/modules/bmm/workflows/frame-expert/create-flowchart/instructions.md +242 -0
- package/src/modules/bmm/workflows/frame-expert/create-flowchart/workflow.yaml +28 -0
- package/src/modules/bmm/workflows/frame-expert/create-wireframe/checklist.md +38 -0
- package/src/modules/bmm/workflows/frame-expert/create-wireframe/instructions.md +133 -0
- package/src/modules/bmm/workflows/frame-expert/create-wireframe/workflow.yaml +24 -0
- 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 +138 -0
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +126 -0
- package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +42 -65
- package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +122 -0
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +113 -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/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/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 +219 -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 +57 -3
- package/tools/cli/installers/lib/ide/auggie.js +81 -238
- package/tools/cli/installers/lib/ide/claude-code.js +47 -25
- package/tools/cli/installers/lib/ide/cline.js +15 -18
- package/tools/cli/installers/lib/ide/codex.js +17 -48
- package/tools/cli/installers/lib/ide/crush.js +14 -50
- package/tools/cli/installers/lib/ide/cursor.js +68 -8
- package/tools/cli/installers/lib/ide/gemini.js +87 -37
- package/tools/cli/installers/lib/ide/github-copilot.js +47 -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 +15 -0
- package/tools/cli/installers/lib/ide/opencode.js +16 -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 +18 -8
- package/tools/cli/installers/lib/modules/manager.js +213 -7
- 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/v6-open-items.md +3 -9
- 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/src/core/tasks/adv-elicit.xml +0 -104
- 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-3.yaml +0 -95
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +0 -88
- package/src/modules/bmm/workflows/workflow-status/paths/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/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
|
@@ -33,6 +33,76 @@ class Installer {
|
|
|
33
33
|
this.installedFiles = []; // Track all installed files
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Find the bmad installation directory in a project
|
|
38
|
+
* V6+ installations can use ANY folder name but ALWAYS have _cfg/manifest.yaml
|
|
39
|
+
* @param {string} projectDir - Project directory
|
|
40
|
+
* @returns {Promise<string>} Path to bmad directory
|
|
41
|
+
*/
|
|
42
|
+
async findBmadDir(projectDir) {
|
|
43
|
+
// Check if project directory exists
|
|
44
|
+
if (!(await fs.pathExists(projectDir))) {
|
|
45
|
+
// Project doesn't exist yet, return default
|
|
46
|
+
return path.join(projectDir, 'bmad');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// V6+ strategy: Look for ANY directory with _cfg/manifest.yaml
|
|
50
|
+
// This is the definitive marker of a V6+ installation
|
|
51
|
+
try {
|
|
52
|
+
const entries = await fs.readdir(projectDir, { withFileTypes: true });
|
|
53
|
+
for (const entry of entries) {
|
|
54
|
+
if (entry.isDirectory()) {
|
|
55
|
+
const manifestPath = path.join(projectDir, entry.name, '_cfg', 'manifest.yaml');
|
|
56
|
+
if (await fs.pathExists(manifestPath)) {
|
|
57
|
+
// Found a V6+ installation
|
|
58
|
+
return path.join(projectDir, entry.name);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
} catch {
|
|
63
|
+
// Ignore errors, fall through to default
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// No V6+ installation found, return default
|
|
67
|
+
// This will be used for new installations
|
|
68
|
+
return path.join(projectDir, 'bmad');
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Copy a file and replace {bmad_folder} placeholder with actual folder name
|
|
73
|
+
* @param {string} sourcePath - Source file path
|
|
74
|
+
* @param {string} targetPath - Target file path
|
|
75
|
+
* @param {string} bmadFolderName - The bmad folder name to use for replacement
|
|
76
|
+
*/
|
|
77
|
+
async copyFileWithPlaceholderReplacement(sourcePath, targetPath, bmadFolderName) {
|
|
78
|
+
// List of text file extensions that should have placeholder replacement
|
|
79
|
+
const textExtensions = ['.md', '.yaml', '.yml', '.txt', '.json', '.js', '.ts', '.html', '.css', '.sh', '.bat', '.csv'];
|
|
80
|
+
const ext = path.extname(sourcePath).toLowerCase();
|
|
81
|
+
|
|
82
|
+
// Check if this is a text file that might contain placeholders
|
|
83
|
+
if (textExtensions.includes(ext)) {
|
|
84
|
+
try {
|
|
85
|
+
// Read the file content
|
|
86
|
+
let content = await fs.readFile(sourcePath, 'utf8');
|
|
87
|
+
|
|
88
|
+
// Replace {bmad_folder} placeholder with actual folder name
|
|
89
|
+
if (content.includes('{bmad_folder}')) {
|
|
90
|
+
content = content.replaceAll('{bmad_folder}', bmadFolderName);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Write to target with replaced content
|
|
94
|
+
await fs.ensureDir(path.dirname(targetPath));
|
|
95
|
+
await fs.writeFile(targetPath, content, 'utf8');
|
|
96
|
+
} catch {
|
|
97
|
+
// If reading as text fails (might be binary despite extension), fall back to regular copy
|
|
98
|
+
await fs.copy(sourcePath, targetPath, { overwrite: true });
|
|
99
|
+
}
|
|
100
|
+
} else {
|
|
101
|
+
// Binary file or other file type - just copy directly
|
|
102
|
+
await fs.copy(sourcePath, targetPath, { overwrite: true });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
36
106
|
/**
|
|
37
107
|
* Collect Tool/IDE configurations after module configuration
|
|
38
108
|
* @param {string} projectDir - Project directory
|
|
@@ -61,7 +131,7 @@ class Installer {
|
|
|
61
131
|
// Check for already configured IDEs
|
|
62
132
|
const { Detector } = require('./detector');
|
|
63
133
|
const detector = new Detector();
|
|
64
|
-
const bmadDir = path.join(projectDir, 'bmad');
|
|
134
|
+
const bmadDir = path.join(projectDir, this.bmadFolderName || 'bmad');
|
|
65
135
|
|
|
66
136
|
// During full reinstall, use the saved previous IDEs since bmad dir was deleted
|
|
67
137
|
// Otherwise detect from existing installation
|
|
@@ -170,12 +240,10 @@ class Installer {
|
|
|
170
240
|
// Display welcome message
|
|
171
241
|
CLIUtils.displaySection('BMAD™ Installation', 'Version ' + require(path.join(getProjectRoot(), 'package.json')).version);
|
|
172
242
|
|
|
173
|
-
//
|
|
243
|
+
// Note: Legacy V4 detection now happens earlier in UI.promptInstall()
|
|
244
|
+
// before any config collection, so we don't need to check again here
|
|
245
|
+
|
|
174
246
|
const projectDir = path.resolve(config.directory);
|
|
175
|
-
const legacyV4 = await this.detector.detectLegacyV4(projectDir);
|
|
176
|
-
if (legacyV4.hasLegacyV4) {
|
|
177
|
-
await this.handleLegacyV4Migration(projectDir, legacyV4);
|
|
178
|
-
}
|
|
179
247
|
|
|
180
248
|
// If core config was pre-collected (from interactive mode), use it
|
|
181
249
|
if (config.coreConfig) {
|
|
@@ -197,6 +265,14 @@ class Installer {
|
|
|
197
265
|
moduleConfigs = await this.configCollector.collectAllConfigurations(config.modules || [], path.resolve(config.directory));
|
|
198
266
|
}
|
|
199
267
|
|
|
268
|
+
// Get bmad_folder from config (default to 'bmad' for backwards compatibility)
|
|
269
|
+
const bmadFolderName = moduleConfigs.core && moduleConfigs.core.bmad_folder ? moduleConfigs.core.bmad_folder : 'bmad';
|
|
270
|
+
this.bmadFolderName = bmadFolderName; // Store for use in other methods
|
|
271
|
+
|
|
272
|
+
// Set bmad folder name on module manager and IDE manager for placeholder replacement
|
|
273
|
+
this.moduleManager.setBmadFolderName(bmadFolderName);
|
|
274
|
+
this.ideManager.setBmadFolderName(bmadFolderName);
|
|
275
|
+
|
|
200
276
|
// Tool selection will be collected after we determine if it's a reinstall/update/new install
|
|
201
277
|
|
|
202
278
|
const spinner = ora('Preparing installation...').start();
|
|
@@ -205,6 +281,63 @@ class Installer {
|
|
|
205
281
|
// Resolve target directory (path.resolve handles platform differences)
|
|
206
282
|
const projectDir = path.resolve(config.directory);
|
|
207
283
|
|
|
284
|
+
// Check if bmad_folder has changed from existing installation (only if project dir exists)
|
|
285
|
+
let existingBmadDir = null;
|
|
286
|
+
let existingBmadFolderName = null;
|
|
287
|
+
|
|
288
|
+
if (await fs.pathExists(projectDir)) {
|
|
289
|
+
existingBmadDir = await this.findBmadDir(projectDir);
|
|
290
|
+
existingBmadFolderName = path.basename(existingBmadDir);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
const targetBmadDir = path.join(projectDir, bmadFolderName);
|
|
294
|
+
|
|
295
|
+
// If bmad_folder changed during update/upgrade, back up old folder and do fresh install
|
|
296
|
+
if (existingBmadDir && (await fs.pathExists(existingBmadDir)) && existingBmadFolderName !== bmadFolderName) {
|
|
297
|
+
spinner.stop();
|
|
298
|
+
console.log(chalk.yellow(`\n⚠️ bmad_folder has changed: ${existingBmadFolderName} → ${bmadFolderName}`));
|
|
299
|
+
console.log(chalk.yellow('This will result in a fresh installation to the new folder.'));
|
|
300
|
+
|
|
301
|
+
const inquirer = require('inquirer');
|
|
302
|
+
const { confirmFreshInstall } = await inquirer.prompt([
|
|
303
|
+
{
|
|
304
|
+
type: 'confirm',
|
|
305
|
+
name: 'confirmFreshInstall',
|
|
306
|
+
message: chalk.cyan('Proceed with fresh install? (Your old folder will be backed up)'),
|
|
307
|
+
default: true,
|
|
308
|
+
},
|
|
309
|
+
]);
|
|
310
|
+
|
|
311
|
+
if (!confirmFreshInstall) {
|
|
312
|
+
console.log(chalk.yellow('Installation cancelled.'));
|
|
313
|
+
return { success: false, cancelled: true };
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
spinner.start('Backing up existing installation...');
|
|
317
|
+
|
|
318
|
+
// Find a unique backup name
|
|
319
|
+
let backupDir = `${existingBmadDir}-bak`;
|
|
320
|
+
let counter = 1;
|
|
321
|
+
while (await fs.pathExists(backupDir)) {
|
|
322
|
+
backupDir = `${existingBmadDir}-bak-${counter}`;
|
|
323
|
+
counter++;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// Rename the old folder to backup
|
|
327
|
+
await fs.move(existingBmadDir, backupDir);
|
|
328
|
+
|
|
329
|
+
spinner.succeed(`Backed up ${existingBmadFolderName} → ${path.basename(backupDir)}`);
|
|
330
|
+
console.log(chalk.cyan('\n📋 Important:'));
|
|
331
|
+
console.log(chalk.dim(` - Your old installation has been backed up to: ${path.basename(backupDir)}`));
|
|
332
|
+
console.log(chalk.dim(` - If you had custom agents or configurations, copy them from:`));
|
|
333
|
+
console.log(chalk.dim(` ${path.basename(backupDir)}/_cfg/`));
|
|
334
|
+
console.log(chalk.dim(` - To the new location:`));
|
|
335
|
+
console.log(chalk.dim(` ${bmadFolderName}/_cfg/`));
|
|
336
|
+
console.log('');
|
|
337
|
+
|
|
338
|
+
spinner.start('Starting fresh installation...');
|
|
339
|
+
}
|
|
340
|
+
|
|
208
341
|
// Create a project directory if it doesn't exist (user already confirmed)
|
|
209
342
|
if (!(await fs.pathExists(projectDir))) {
|
|
210
343
|
spinner.text = 'Creating installation directory...';
|
|
@@ -225,7 +358,7 @@ class Installer {
|
|
|
225
358
|
}
|
|
226
359
|
}
|
|
227
360
|
|
|
228
|
-
const bmadDir = path.join(projectDir,
|
|
361
|
+
const bmadDir = path.join(projectDir, bmadFolderName);
|
|
229
362
|
|
|
230
363
|
// Check existing installation
|
|
231
364
|
spinner.text = 'Checking for existing installation...';
|
|
@@ -429,7 +562,12 @@ class Installer {
|
|
|
429
562
|
config.skipIde = toolSelection.skipIde;
|
|
430
563
|
const ideConfigurations = toolSelection.configurations;
|
|
431
564
|
|
|
432
|
-
spinner.
|
|
565
|
+
// Check if spinner is already running (e.g., from folder name change scenario)
|
|
566
|
+
if (spinner.isSpinning) {
|
|
567
|
+
spinner.text = 'Continuing installation...';
|
|
568
|
+
} else {
|
|
569
|
+
spinner.start('Continuing installation...');
|
|
570
|
+
}
|
|
433
571
|
|
|
434
572
|
// Create bmad directory structure
|
|
435
573
|
spinner.text = 'Creating directory structure...';
|
|
@@ -726,7 +864,8 @@ class Installer {
|
|
|
726
864
|
const spinner = ora('Checking installation...').start();
|
|
727
865
|
|
|
728
866
|
try {
|
|
729
|
-
const
|
|
867
|
+
const projectDir = path.resolve(config.directory);
|
|
868
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
730
869
|
const existingInstall = await this.detector.detect(bmadDir);
|
|
731
870
|
|
|
732
871
|
if (!existingInstall.installed) {
|
|
@@ -786,7 +925,8 @@ class Installer {
|
|
|
786
925
|
* Get installation status
|
|
787
926
|
*/
|
|
788
927
|
async getStatus(directory) {
|
|
789
|
-
const
|
|
928
|
+
const projectDir = path.resolve(directory);
|
|
929
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
790
930
|
return await this.detector.detect(bmadDir);
|
|
791
931
|
}
|
|
792
932
|
|
|
@@ -801,14 +941,15 @@ class Installer {
|
|
|
801
941
|
* Uninstall BMAD
|
|
802
942
|
*/
|
|
803
943
|
async uninstall(directory) {
|
|
804
|
-
const
|
|
944
|
+
const projectDir = path.resolve(directory);
|
|
945
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
805
946
|
|
|
806
947
|
if (await fs.pathExists(bmadDir)) {
|
|
807
948
|
await fs.remove(bmadDir);
|
|
808
949
|
}
|
|
809
950
|
|
|
810
951
|
// Clean up IDE configurations
|
|
811
|
-
await this.ideManager.cleanup(
|
|
952
|
+
await this.ideManager.cleanup(projectDir);
|
|
812
953
|
|
|
813
954
|
return { success: true };
|
|
814
955
|
}
|
|
@@ -906,8 +1047,9 @@ class Installer {
|
|
|
906
1047
|
}
|
|
907
1048
|
}
|
|
908
1049
|
|
|
909
|
-
// Write the clean config file
|
|
910
|
-
|
|
1050
|
+
// Write the clean config file with POSIX-compliant final newline
|
|
1051
|
+
const content = header + yamlContent;
|
|
1052
|
+
await fs.writeFile(configPath, content.endsWith('\n') ? content : content + '\n', 'utf8');
|
|
911
1053
|
|
|
912
1054
|
// Track the config file in installedFiles
|
|
913
1055
|
this.installedFiles.push(configPath);
|
|
@@ -985,7 +1127,7 @@ class Installer {
|
|
|
985
1127
|
const targetPath = path.join(agentsDir, fileName);
|
|
986
1128
|
|
|
987
1129
|
if (await fs.pathExists(sourcePath)) {
|
|
988
|
-
await
|
|
1130
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
|
|
989
1131
|
this.installedFiles.push(targetPath);
|
|
990
1132
|
}
|
|
991
1133
|
}
|
|
@@ -1001,7 +1143,7 @@ class Installer {
|
|
|
1001
1143
|
const targetPath = path.join(tasksDir, fileName);
|
|
1002
1144
|
|
|
1003
1145
|
if (await fs.pathExists(sourcePath)) {
|
|
1004
|
-
await
|
|
1146
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
|
|
1005
1147
|
this.installedFiles.push(targetPath);
|
|
1006
1148
|
}
|
|
1007
1149
|
}
|
|
@@ -1017,7 +1159,7 @@ class Installer {
|
|
|
1017
1159
|
const targetPath = path.join(toolsDir, fileName);
|
|
1018
1160
|
|
|
1019
1161
|
if (await fs.pathExists(sourcePath)) {
|
|
1020
|
-
await
|
|
1162
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
|
|
1021
1163
|
this.installedFiles.push(targetPath);
|
|
1022
1164
|
}
|
|
1023
1165
|
}
|
|
@@ -1033,7 +1175,7 @@ class Installer {
|
|
|
1033
1175
|
const targetPath = path.join(templatesDir, fileName);
|
|
1034
1176
|
|
|
1035
1177
|
if (await fs.pathExists(sourcePath)) {
|
|
1036
|
-
await
|
|
1178
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
|
|
1037
1179
|
this.installedFiles.push(targetPath);
|
|
1038
1180
|
}
|
|
1039
1181
|
}
|
|
@@ -1048,7 +1190,7 @@ class Installer {
|
|
|
1048
1190
|
await fs.ensureDir(path.dirname(targetPath));
|
|
1049
1191
|
|
|
1050
1192
|
if (await fs.pathExists(dataPath)) {
|
|
1051
|
-
await
|
|
1193
|
+
await this.copyFileWithPlaceholderReplacement(dataPath, targetPath, this.bmadFolderName || 'bmad');
|
|
1052
1194
|
this.installedFiles.push(targetPath);
|
|
1053
1195
|
}
|
|
1054
1196
|
}
|
|
@@ -1108,9 +1250,8 @@ class Installer {
|
|
|
1108
1250
|
}
|
|
1109
1251
|
}
|
|
1110
1252
|
|
|
1111
|
-
// Copy the file
|
|
1112
|
-
await
|
|
1113
|
-
await fs.copy(sourceFile, targetFile, { overwrite: true });
|
|
1253
|
+
// Copy the file with placeholder replacement
|
|
1254
|
+
await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile, this.bmadFolderName || 'bmad');
|
|
1114
1255
|
|
|
1115
1256
|
// Track the installed file
|
|
1116
1257
|
this.installedFiles.push(targetFile);
|
|
@@ -1181,7 +1322,7 @@ class Installer {
|
|
|
1181
1322
|
if (!(await fs.pathExists(customizePath))) {
|
|
1182
1323
|
const genericTemplatePath = getSourcePath('utility', 'templates', 'agent.customize.template.yaml');
|
|
1183
1324
|
if (await fs.pathExists(genericTemplatePath)) {
|
|
1184
|
-
await
|
|
1325
|
+
await this.copyFileWithPlaceholderReplacement(genericTemplatePath, customizePath, this.bmadFolderName || 'bmad');
|
|
1185
1326
|
console.log(chalk.dim(` Created customize: ${moduleName}-${agentName}.customize.yaml`));
|
|
1186
1327
|
}
|
|
1187
1328
|
}
|
|
@@ -1195,8 +1336,9 @@ class Installer {
|
|
|
1195
1336
|
// DO NOT replace {project-root} - LLMs understand this placeholder at runtime
|
|
1196
1337
|
// const processedContent = xmlContent.replaceAll('{project-root}', projectDir);
|
|
1197
1338
|
|
|
1198
|
-
// Write the built .md file to bmad/{module}/agents/
|
|
1199
|
-
|
|
1339
|
+
// Write the built .md file to bmad/{module}/agents/ with POSIX-compliant final newline
|
|
1340
|
+
const content = xmlContent.endsWith('\n') ? xmlContent : xmlContent + '\n';
|
|
1341
|
+
await fs.writeFile(mdPath, content, 'utf8');
|
|
1200
1342
|
this.installedFiles.push(mdPath);
|
|
1201
1343
|
|
|
1202
1344
|
// Remove the source YAML file - we can regenerate from installer source if needed
|
|
@@ -1213,7 +1355,9 @@ class Installer {
|
|
|
1213
1355
|
if (content.includes('<agent') && !content.includes('<activation')) {
|
|
1214
1356
|
// Inject the activation block using XML handler
|
|
1215
1357
|
content = this.xmlHandler.injectActivationSimple(content);
|
|
1216
|
-
|
|
1358
|
+
// Ensure POSIX-compliant final newline
|
|
1359
|
+
const finalContent = content.endsWith('\n') ? content : content + '\n';
|
|
1360
|
+
await fs.writeFile(agentPath, finalContent, 'utf8');
|
|
1217
1361
|
}
|
|
1218
1362
|
}
|
|
1219
1363
|
}
|
|
@@ -1294,8 +1438,9 @@ class Installer {
|
|
|
1294
1438
|
// DO NOT replace {project-root} - LLMs understand this placeholder at runtime
|
|
1295
1439
|
// const processedContent = xmlContent.replaceAll('{project-root}', projectDir);
|
|
1296
1440
|
|
|
1297
|
-
// Write the built .md file
|
|
1298
|
-
|
|
1441
|
+
// Write the built .md file with POSIX-compliant final newline
|
|
1442
|
+
const content = xmlContent.endsWith('\n') ? xmlContent : xmlContent + '\n';
|
|
1443
|
+
await fs.writeFile(targetMdPath, content, 'utf8');
|
|
1299
1444
|
|
|
1300
1445
|
// Display result
|
|
1301
1446
|
if (customizedFields.length > 0) {
|
|
@@ -1387,8 +1532,9 @@ class Installer {
|
|
|
1387
1532
|
// DO NOT replace {project-root} - LLMs understand this placeholder at runtime
|
|
1388
1533
|
// const processedContent = xmlContent.replaceAll('{project-root}', projectDir);
|
|
1389
1534
|
|
|
1390
|
-
// Write the rebuilt .md file
|
|
1391
|
-
|
|
1535
|
+
// Write the rebuilt .md file with POSIX-compliant final newline
|
|
1536
|
+
const content = xmlContent.endsWith('\n') ? xmlContent : xmlContent + '\n';
|
|
1537
|
+
await fs.writeFile(targetMdPath, content, 'utf8');
|
|
1392
1538
|
|
|
1393
1539
|
// Display result with customizations if any
|
|
1394
1540
|
if (customizedFields.length > 0) {
|
|
@@ -1411,7 +1557,7 @@ class Installer {
|
|
|
1411
1557
|
|
|
1412
1558
|
try {
|
|
1413
1559
|
const projectDir = path.resolve(config.directory);
|
|
1414
|
-
const bmadDir =
|
|
1560
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
1415
1561
|
|
|
1416
1562
|
// Check if bmad directory exists
|
|
1417
1563
|
if (!(await fs.pathExists(bmadDir))) {
|
|
@@ -1486,26 +1632,33 @@ class Installer {
|
|
|
1486
1632
|
});
|
|
1487
1633
|
spinner.succeed('Manifests regenerated');
|
|
1488
1634
|
|
|
1489
|
-
//
|
|
1490
|
-
|
|
1491
|
-
// Note: UI lives in tools/cli/lib/ui.js; from installers/lib/core use '../../../lib/ui'
|
|
1492
|
-
const { UI } = require('../../../lib/ui');
|
|
1493
|
-
const ui = new UI();
|
|
1494
|
-
const toolConfig = await ui.promptToolSelection(projectDir, []);
|
|
1495
|
-
|
|
1496
|
-
if (!toolConfig.skipIde && toolConfig.ides && toolConfig.ides.length > 0) {
|
|
1635
|
+
// Update IDE configurations using the existing IDE list from manifest
|
|
1636
|
+
if (existingIdes && existingIdes.length > 0) {
|
|
1497
1637
|
spinner.start('Updating IDE configurations...');
|
|
1498
1638
|
|
|
1499
|
-
for (const ide of
|
|
1639
|
+
for (const ide of existingIdes) {
|
|
1500
1640
|
spinner.text = `Updating ${ide}...`;
|
|
1641
|
+
|
|
1642
|
+
// Stop spinner before IDE setup to prevent blocking any potential prompts
|
|
1643
|
+
// However, we pass _alreadyConfigured to skip all prompts during compile
|
|
1644
|
+
spinner.stop();
|
|
1645
|
+
|
|
1501
1646
|
await this.ideManager.setup(ide, projectDir, bmadDir, {
|
|
1502
1647
|
selectedModules: installedModules,
|
|
1503
1648
|
skipModuleInstall: true, // Skip module installation, just update IDE files
|
|
1504
1649
|
verbose: config.verbose,
|
|
1650
|
+
preCollectedConfig: { _alreadyConfigured: true }, // Skip all interactive prompts during compile
|
|
1505
1651
|
});
|
|
1652
|
+
|
|
1653
|
+
// Restart spinner for next IDE
|
|
1654
|
+
if (existingIdes.indexOf(ide) < existingIdes.length - 1) {
|
|
1655
|
+
spinner.start('Updating IDE configurations...');
|
|
1656
|
+
}
|
|
1506
1657
|
}
|
|
1507
1658
|
|
|
1508
|
-
|
|
1659
|
+
console.log(chalk.green('✓ IDE configurations updated'));
|
|
1660
|
+
} else {
|
|
1661
|
+
console.log(chalk.yellow('⚠️ No IDEs configured. Skipping IDE update.'));
|
|
1509
1662
|
}
|
|
1510
1663
|
|
|
1511
1664
|
return { agentCount, taskCount };
|
|
@@ -1542,7 +1695,7 @@ class Installer {
|
|
|
1542
1695
|
|
|
1543
1696
|
try {
|
|
1544
1697
|
const projectDir = path.resolve(config.directory);
|
|
1545
|
-
const bmadDir =
|
|
1698
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
1546
1699
|
|
|
1547
1700
|
// Check if bmad directory exists
|
|
1548
1701
|
if (!(await fs.pathExists(bmadDir))) {
|
|
@@ -1605,8 +1758,19 @@ class Installer {
|
|
|
1605
1758
|
lastModified: new Date().toISOString(),
|
|
1606
1759
|
};
|
|
1607
1760
|
|
|
1608
|
-
//
|
|
1609
|
-
|
|
1761
|
+
// Check if bmad_folder has changed
|
|
1762
|
+
const existingBmadFolderName = path.basename(bmadDir);
|
|
1763
|
+
const newBmadFolderName = this.configCollector.collectedConfig.core?.bmad_folder || existingBmadFolderName;
|
|
1764
|
+
|
|
1765
|
+
if (existingBmadFolderName === newBmadFolderName) {
|
|
1766
|
+
// Normal quick update - start the spinner
|
|
1767
|
+
spinner.start('Updating BMAD installation...');
|
|
1768
|
+
} else {
|
|
1769
|
+
// Folder name has changed - stop spinner and let install() handle it
|
|
1770
|
+
spinner.stop();
|
|
1771
|
+
console.log(chalk.yellow(`\n⚠️ Folder name will change: ${existingBmadFolderName} → ${newBmadFolderName}`));
|
|
1772
|
+
console.log(chalk.yellow('The installer will handle the folder migration.\n'));
|
|
1773
|
+
}
|
|
1610
1774
|
|
|
1611
1775
|
// Build the config object for the installer
|
|
1612
1776
|
const installConfig = {
|
|
@@ -1625,7 +1789,11 @@ class Installer {
|
|
|
1625
1789
|
// Call the standard install method
|
|
1626
1790
|
const result = await this.install(installConfig);
|
|
1627
1791
|
|
|
1628
|
-
spinner
|
|
1792
|
+
// Only succeed the spinner if it's still spinning
|
|
1793
|
+
// (install method might have stopped it if folder name changed)
|
|
1794
|
+
if (spinner.isSpinning) {
|
|
1795
|
+
spinner.succeed('Quick update complete!');
|
|
1796
|
+
}
|
|
1629
1797
|
|
|
1630
1798
|
return {
|
|
1631
1799
|
success: true,
|
|
@@ -2005,6 +2173,11 @@ class Installer {
|
|
|
2005
2173
|
|
|
2006
2174
|
configContent += processedTemplate;
|
|
2007
2175
|
|
|
2176
|
+
// Ensure POSIX-compliant final newline
|
|
2177
|
+
if (!configContent.endsWith('\n')) {
|
|
2178
|
+
configContent += '\n';
|
|
2179
|
+
}
|
|
2180
|
+
|
|
2008
2181
|
await fs.writeFile(configPath, configContent, 'utf8');
|
|
2009
2182
|
this.installedFiles.push(configPath); // Track agent config files
|
|
2010
2183
|
createdCount++;
|
|
@@ -2086,7 +2259,7 @@ class Installer {
|
|
|
2086
2259
|
const targetDocPath = path.join(docsDir, `${ide}-instructions.md`);
|
|
2087
2260
|
|
|
2088
2261
|
if (await fs.pathExists(sourceDocPath)) {
|
|
2089
|
-
await
|
|
2262
|
+
await this.copyFileWithPlaceholderReplacement(sourceDocPath, targetDocPath, this.bmadFolderName || 'bmad');
|
|
2090
2263
|
}
|
|
2091
2264
|
}
|
|
2092
2265
|
}
|