bmad-method 6.0.0-alpha.6 → 6.0.0-alpha.8
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/.bmad/_cfg/agent-manifest.csv +11 -0
- package/{bmad → .bmad}/_cfg/files-manifest.csv +170 -157
- package/{bmad → .bmad}/_cfg/ides/claude-code.yaml +2 -2
- package/.bmad/_cfg/manifest.yaml +10 -0
- package/{bmad → .bmad}/_cfg/task-manifest.csv +1 -1
- package/{bmad → .bmad}/_cfg/workflow-manifest.csv +1 -1
- package/{bmad → .bmad}/bmb/agents/bmad-builder.md +12 -12
- package/.bmad/bmb/config.yaml +16 -0
- package/{bmad → .bmad}/bmb/workflows/audit-workflow/checklist.md +2 -2
- package/{bmad → .bmad}/bmb/workflows/audit-workflow/instructions.md +5 -5
- package/{bmad → .bmad}/bmb/workflows/audit-workflow/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmb/workflows/convert-legacy/README.md +5 -5
- package/{bmad → .bmad}/bmb/workflows/convert-legacy/checklist.md +2 -2
- package/{bmad → .bmad}/bmb/workflows/convert-legacy/instructions.md +17 -17
- package/{bmad → .bmad}/bmb/workflows/convert-legacy/workflow.yaml +6 -6
- package/{bmad → .bmad}/bmb/workflows/create-agent/README.md +5 -5
- package/{bmad → .bmad}/bmb/workflows/create-agent/agent-architecture.md +15 -15
- package/{bmad → .bmad}/bmb/workflows/create-agent/agent-command-patterns.md +28 -28
- package/{bmad → .bmad}/bmb/workflows/create-agent/agent-types.md +15 -15
- package/{bmad → .bmad}/bmb/workflows/create-agent/checklist.md +3 -3
- package/{bmad → .bmad}/bmb/workflows/create-agent/instructions.md +34 -18
- package/{bmad → .bmad}/bmb/workflows/create-agent/workflow.yaml +6 -6
- package/{bmad → .bmad}/bmb/workflows/create-module/README.md +1 -1
- package/{bmad → .bmad}/bmb/workflows/create-module/checklist.md +1 -1
- package/{bmad → .bmad}/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
- package/{bmad → .bmad}/bmb/workflows/create-module/instructions.md +7 -7
- package/{bmad → .bmad}/bmb/workflows/create-module/module-structure.md +36 -2
- package/{bmad → .bmad}/bmb/workflows/create-module/workflow.yaml +9 -9
- package/{bmad → .bmad}/bmb/workflows/create-workflow/README.md +4 -4
- package/{bmad → .bmad}/bmb/workflows/create-workflow/checklist.md +1 -1
- package/{bmad → .bmad}/bmb/workflows/create-workflow/instructions.md +29 -29
- package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-creation-guide.md +36 -36
- package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/instructions.md +2 -2
- package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/workflow.yaml +1 -1
- package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow.yaml +5 -5
- package/{bmad → .bmad}/bmb/workflows/edit-agent/checklist.md +1 -1
- package/{bmad → .bmad}/bmb/workflows/edit-agent/instructions.md +2 -2
- package/{bmad → .bmad}/bmb/workflows/edit-agent/workflow.yaml +8 -8
- package/{bmad → .bmad}/bmb/workflows/edit-module/README.md +2 -2
- package/{bmad → .bmad}/bmb/workflows/edit-module/checklist.md +2 -2
- package/{bmad → .bmad}/bmb/workflows/edit-module/instructions.md +4 -4
- package/{bmad → .bmad}/bmb/workflows/edit-module/workflow.yaml +10 -10
- package/{bmad → .bmad}/bmb/workflows/edit-workflow/instructions.md +4 -4
- package/{bmad → .bmad}/bmb/workflows/edit-workflow/workflow.yaml +5 -5
- package/{bmad → .bmad}/bmb/workflows/module-brief/README.md +2 -2
- package/{bmad → .bmad}/bmb/workflows/module-brief/instructions.md +2 -2
- package/{bmad → .bmad}/bmb/workflows/module-brief/workflow.yaml +4 -4
- package/{bmad → .bmad}/bmb/workflows/redoc/README.md +5 -5
- package/{bmad → .bmad}/bmb/workflows/redoc/instructions.md +1 -1
- package/{bmad → .bmad}/bmb/workflows/redoc/workflow.yaml +1 -1
- package/{bmad → .bmad}/bmm/agents/analyst.md +20 -12
- package/{bmad → .bmad}/bmm/agents/architect.md +19 -11
- package/{bmad → .bmad}/bmm/agents/dev.md +10 -10
- package/{bmad → .bmad}/bmm/agents/pm.md +23 -15
- package/{bmad → .bmad}/bmm/agents/sm.md +26 -18
- package/{bmad → .bmad}/bmm/agents/tea.md +25 -17
- package/{bmad → .bmad}/bmm/agents/tech-writer.md +16 -8
- package/{bmad → .bmad}/bmm/agents/ux-designer.md +18 -10
- package/{bmad → .bmad}/bmm/config.yaml +7 -7
- package/.bmad/bmm/docs/README.md +235 -0
- package/.bmad/bmm/docs/agents-guide.md +1056 -0
- package/.bmad/bmm/docs/brownfield-guide.md +754 -0
- package/.bmad/bmm/docs/enterprise-agentic-development.md +680 -0
- package/.bmad/bmm/docs/faq.md +587 -0
- package/.bmad/bmm/docs/glossary.md +320 -0
- package/.bmad/bmm/docs/party-mode.md +224 -0
- package/.bmad/bmm/docs/quick-spec-flow.md +652 -0
- package/.bmad/bmm/docs/quick-start.md +366 -0
- package/.bmad/bmm/docs/scale-adaptive-system.md +599 -0
- package/.bmad/bmm/docs/test-architecture.md +394 -0
- package/.bmad/bmm/docs/workflow-architecture-reference.md +371 -0
- package/.bmad/bmm/docs/workflow-document-project-reference.md +487 -0
- package/.bmad/bmm/docs/workflows-analysis.md +370 -0
- package/.bmad/bmm/docs/workflows-implementation.md +284 -0
- package/.bmad/bmm/docs/workflows-planning.md +601 -0
- package/.bmad/bmm/docs/workflows-solutioning.md +501 -0
- package/{bmad → .bmad}/bmm/tasks/daily-standup.xml +2 -2
- package/.bmad/bmm/teams/default-party.csv +19 -0
- package/{bmad → .bmad}/bmm/teams/team-fullstack.yaml +1 -0
- package/{bmad → .bmad}/bmm/workflows/1-analysis/brainstorm-project/instructions.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +3 -3
- package/{bmad → .bmad}/bmm/workflows/1-analysis/domain-research/instructions.md +1 -1
- package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +40 -0
- package/{bmad → .bmad}/bmm/workflows/1-analysis/product-brief/instructions.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/1-analysis/product-brief/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/1-analysis/research/instructions-market.md +6 -6
- package/{bmad → .bmad}/bmm/workflows/1-analysis/research/instructions-router.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/1-analysis/research/instructions-technical.md +4 -4
- package/{bmad → .bmad}/bmm/workflows/1-analysis/research/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +3 -7
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +3 -3
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/instructions.md +6 -6
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +5 -5
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +6 -6
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/instructions.md +6 -6
- package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/workflow.yaml +3 -2
- package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +4 -4
- package/{bmad → .bmad}/bmm/workflows/4-implementation/code-review/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/4-implementation/code-review/workflow.yaml +4 -13
- package/{bmad → .bmad}/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/4-implementation/create-story/instructions.md +3 -3
- package/{bmad → .bmad}/bmm/workflows/4-implementation/create-story/workflow.yaml +3 -3
- package/{bmad → .bmad}/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +3 -3
- package/{bmad → .bmad}/bmm/workflows/4-implementation/dev-story/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/4-implementation/dev-story/workflow.yaml +3 -3
- package/{bmad → .bmad}/bmm/workflows/4-implementation/epic-tech-context/checklist.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/4-implementation/epic-tech-context/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/4-implementation/retrospective/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/4-implementation/retrospective/workflow.yaml +4 -4
- package/{bmad → .bmad}/bmm/workflows/4-implementation/sprint-planning/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +3 -3
- package/{bmad → .bmad}/bmm/workflows/4-implementation/story-context/checklist.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/4-implementation/story-context/context-template.xml +1 -1
- package/{bmad → .bmad}/bmm/workflows/4-implementation/story-context/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/4-implementation/story-context/workflow.yaml +4 -4
- package/{bmad → .bmad}/bmm/workflows/4-implementation/story-done/instructions.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/4-implementation/story-done/workflow.yaml +3 -3
- package/{bmad → .bmad}/bmm/workflows/4-implementation/story-ready/instructions.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/4-implementation/story-ready/workflow.yaml +3 -3
- package/{bmad → .bmad}/bmm/workflows/document-project/instructions.md +5 -5
- package/{bmad → .bmad}/bmm/workflows/document-project/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
- package/{bmad → .bmad}/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
- package/{bmad → .bmad}/bmm/workflows/testarch/atdd/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/automate/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/automate/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/ci/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/ci/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/framework/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/framework/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/test-design/instructions.md +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/testarch/test-design/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/test-review/instructions.md +1 -1
- package/{bmad → .bmad}/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/testarch/trace/instructions.md +9 -9
- package/{bmad → .bmad}/bmm/workflows/testarch/trace/workflow.yaml +2 -2
- package/{bmad → .bmad}/bmm/workflows/workflow-status/init/instructions.md +74 -23
- package/{bmad → .bmad}/bmm/workflows/workflow-status/init/workflow.yaml +4 -4
- package/{bmad → .bmad}/bmm/workflows/workflow-status/instructions.md +5 -4
- package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +18 -11
- package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +18 -11
- package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +52 -0
- package/{bmad → .bmad}/bmm/workflows/workflow-status/project-levels.yaml +1 -1
- package/{bmad → .bmad}/bmm/workflows/workflow-status/workflow.yaml +2 -2
- package/{bmad → .bmad}/core/agents/bmad-master.md +7 -7
- package/{bmad → .bmad}/core/agents/bmad-web-orchestrator.agent.xml +8 -17
- package/{bmad → .bmad}/core/config.yaml +4 -2
- package/{bmad → .bmad}/core/tasks/adv-elicit.xml +5 -3
- package/{bmad → .bmad}/core/tasks/index-docs.xml +1 -1
- package/{bmad → .bmad}/core/tasks/validate-workflow.xml +1 -1
- package/{bmad → .bmad}/core/tasks/workflow.xml +1 -1
- package/{bmad → .bmad}/core/tools/shard-doc.xml +1 -1
- package/{bmad → .bmad}/core/workflows/brainstorming/README.md +2 -2
- package/{bmad → .bmad}/core/workflows/brainstorming/instructions.md +3 -3
- package/{bmad → .bmad}/core/workflows/brainstorming/workflow.yaml +8 -8
- package/{bmad → .bmad}/core/workflows/party-mode/instructions.md +2 -7
- package/.bmad/core/workflows/party-mode/workflow.yaml +27 -0
- package/.claude/commands/bmad/bmb/agents/bmad-builder.md +12 -12
- package/.claude/commands/bmad/bmm/agents/analyst.md +20 -12
- package/.claude/commands/bmad/bmm/agents/architect.md +19 -11
- package/.claude/commands/bmad/bmm/agents/dev.md +10 -10
- package/.claude/commands/bmad/bmm/agents/pm.md +23 -15
- package/.claude/commands/bmad/bmm/agents/sm.md +26 -18
- package/.claude/commands/bmad/bmm/agents/tea.md +25 -17
- package/.claude/commands/bmad/bmm/agents/tech-writer.md +16 -8
- package/.claude/commands/bmad/bmm/agents/ux-designer.md +18 -10
- package/.claude/commands/bmad/bmm/workflows/domain-research.md +15 -0
- package/.claude/commands/bmad/core/agents/bmad-master.md +7 -7
- package/.claude/commands/bmad/core/tasks/adv-elicit.md +9 -0
- package/.claude/settings.local.json +6 -5
- package/.github/workflows/{lint.yaml → quality.yaml} +19 -2
- package/.husky/pre-commit +4 -0
- package/.vscode/settings.json +2 -1
- package/README.md +59 -1
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +61 -0
- package/package.json +5 -3
- package/src/core/_module-installer/install-config.yaml +15 -9
- 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/adv-elicit.xml +5 -3
- package/src/core/tasks/index-docs.xml +1 -1
- package/src/core/tasks/validate-workflow.xml +1 -1
- package/src/core/tasks/workflow.xml +1 -1
- package/src/core/tools/shard-doc.xml +1 -1
- package/src/core/workflows/brainstorming/README.md +2 -2
- package/src/core/workflows/brainstorming/instructions.md +3 -3
- package/src/core/workflows/brainstorming/workflow.yaml +8 -8
- package/src/core/workflows/party-mode/instructions.md +2 -7
- package/src/core/workflows/party-mode/workflow.yaml +10 -6
- package/src/modules/bmb/_module-installer/install-config.yaml +9 -4
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +11 -10
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +2 -2
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +5 -5
- 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 -6
- package/src/modules/bmb/workflows/create-agent/README.md +5 -5
- package/src/modules/bmb/workflows/create-agent/agent-architecture.md +15 -15
- 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 +34 -18
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +12 -12
- package/src/modules/bmb/workflows/create-module/README.md +1 -1
- package/src/modules/bmb/workflows/create-module/checklist.md +1 -1
- package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
- package/src/modules/bmb/workflows/create-module/instructions.md +7 -7
- package/src/modules/bmb/workflows/create-module/module-structure.md +36 -2
- package/src/modules/bmb/workflows/create-module/workflow.yaml +9 -9
- 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 +29 -29
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +42 -42
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +2 -2
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +12 -12
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +5 -5
- 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 +8 -8
- 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 +4 -4
- package/src/modules/bmb/workflows/edit-module/workflow.yaml +10 -10
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +4 -4
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +5 -5
- package/src/modules/bmb/workflows/module-brief/README.md +2 -2
- package/src/modules/bmb/workflows/module-brief/instructions.md +2 -2
- package/src/modules/bmb/workflows/module-brief/workflow.yaml +4 -4
- 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 +67 -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/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/instructions.md +1 -1
- 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 +1 -1
- package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/workflow.yaml +9 -9
- package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/instructions-gdd.md +8 -8
- 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 +6 -6
- package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/workflow.yaml +6 -6
- package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +347 -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 +244 -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 +704 -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 +67 -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 +420 -0
- package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +67 -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 +201 -0
- package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +45 -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 +283 -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 +76 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/AUDIT-REPORT.md +367 -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 +262 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +28 -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 +189 -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 +60 -0
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1460 -0
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +73 -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 +238 -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 +49 -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 +234 -0
- package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +59 -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 +27 -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 +27 -0
- package/src/modules/bmm/_module-installer/install-config.yaml +10 -24
- package/src/modules/bmm/_module-installer/installer.js +2 -2
- package/src/modules/bmm/agents/analyst.agent.yaml +20 -15
- package/src/modules/bmm/agents/architect.agent.yaml +17 -12
- package/src/modules/bmm/agents/dev.agent.yaml +9 -12
- package/src/modules/bmm/agents/pm.agent.yaml +24 -23
- package/src/modules/bmm/agents/sm.agent.yaml +24 -19
- package/src/modules/bmm/agents/tea.agent.yaml +23 -17
- package/src/modules/bmm/agents/tech-writer.agent.yaml +14 -10
- package/src/modules/bmm/agents/ux-designer.agent.yaml +16 -11
- package/src/modules/bmm/docs/README.md +8 -9
- package/src/modules/bmm/docs/agents-guide.md +4 -5
- package/src/modules/bmm/docs/brownfield-guide.md +9 -13
- package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
- package/src/modules/bmm/docs/faq.md +5 -7
- package/src/modules/bmm/docs/glossary.md +0 -1
- package/src/modules/bmm/docs/party-mode.md +3 -3
- package/src/modules/bmm/docs/quick-spec-flow.md +4 -4
- package/src/modules/bmm/docs/quick-start.md +5 -5
- package/src/modules/bmm/docs/scale-adaptive-system.md +5 -5
- package/src/modules/bmm/docs/test-architecture.md +184 -119
- package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
- package/src/modules/bmm/docs/workflows-analysis.md +203 -539
- package/src/modules/bmm/docs/workflows-planning.md +326 -850
- package/src/modules/bmm/docs/workflows-solutioning.md +250 -505
- package/src/modules/bmm/sub-modules/claude-code/README.md +1 -1
- package/src/modules/bmm/sub-modules/claude-code/injections.yaml +22 -22
- package/src/modules/bmm/tasks/daily-standup.xml +2 -2
- package/src/modules/bmm/teams/default-party.csv +19 -0
- package/src/modules/bmm/teams/team-fullstack.yaml +1 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +8 -8
- package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +65 -32
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +12 -8
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +6 -6
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +4 -4
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +14 -14
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +36 -7
- package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +3 -3
- package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +6 -6
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +6 -6
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +21 -13
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +6 -6
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +2 -2
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +15 -9
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +6 -6
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +49 -2
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +4 -4
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +38 -38
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +6 -23
- package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +38 -40
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +6 -19
- package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +3 -3
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +3 -3
- 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 +26 -28
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +6 -18
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +11 -11
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +8 -11
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +6 -15
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +5 -4
- 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 +8 -9
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +6 -14
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +4 -4
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +4 -4
- package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
- package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
- package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +9 -9
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +78 -26
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +5 -4
- package/src/modules/bmm/workflows/workflow-status/instructions.md +5 -4
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +18 -11
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +18 -11
- package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +42 -65
- package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +2 -2
- package/src/modules/cis/README.md +1 -1
- 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 +1 -1
- package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -7
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -7
- package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -7
- package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
- package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -7
- package/src/utility/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/cli/bundlers/web-bundler.js +208 -20
- package/tools/cli/commands/install.js +1 -4
- package/tools/cli/installers/lib/core/config-collector.js +201 -28
- package/tools/cli/installers/lib/core/detector.js +62 -7
- package/tools/cli/installers/lib/core/installer.js +158 -23
- package/tools/cli/installers/lib/core/manifest-generator.js +26 -115
- 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 +207 -7
- package/tools/cli/lib/cli-utils.js +52 -50
- package/tools/cli/lib/ui.js +15 -8
- package/tools/cli/lib/yaml-xml-builder.js +9 -1
- package/tools/schema/agent.js +8 -3
- package/v6-open-items.md +3 -9
- package/web-bundles/bmgd/agents/game-architect.xml +664 -0
- package/web-bundles/bmgd/agents/game-designer.xml +5489 -0
- package/web-bundles/bmgd/agents/game-dev.xml +595 -0
- package/web-bundles/bmgd/agents/game-scrum-master.xml +699 -0
- package/web-bundles/bmgd/teams/team-gamedev.xml +6588 -0
- package/web-bundles/bmm/agents/analyst.xml +5263 -0
- package/web-bundles/bmm/agents/architect.xml +2378 -0
- package/web-bundles/bmm/agents/dev.xml +248 -0
- package/web-bundles/bmm/agents/pm.xml +4137 -0
- package/web-bundles/bmm/agents/sm.xml +708 -0
- package/web-bundles/bmm/agents/tea.xml +759 -0
- package/web-bundles/bmm/agents/tech-writer.xml +624 -0
- package/web-bundles/bmm/agents/ux-designer.xml +2492 -0
- package/web-bundles/bmm/teams/team-fullstack.xml +12369 -0
- package/web-bundles/cis/agents/brainstorming-coach.xml +1069 -0
- package/web-bundles/cis/agents/creative-problem-solver.xml +1060 -0
- package/web-bundles/cis/agents/design-thinking-coach.xml +955 -0
- package/web-bundles/cis/agents/innovation-strategist.xml +1108 -0
- package/web-bundles/cis/agents/storyteller.xml +598 -0
- package/web-bundles/cis/teams/creative-squad.xml +3449 -0
- package/.claude/agents/bmad-analysis/api-documenter.md +0 -102
- package/.claude/agents/bmad-analysis/codebase-analyzer.md +0 -82
- package/.claude/agents/bmad-analysis/data-analyst.md +0 -101
- package/.claude/agents/bmad-analysis/pattern-detector.md +0 -84
- package/.claude/agents/bmad-planning/dependency-mapper.md +0 -83
- package/.claude/agents/bmad-planning/epic-optimizer.md +0 -81
- package/.claude/agents/bmad-planning/requirements-analyst.md +0 -61
- package/.claude/agents/bmad-planning/technical-decisions-curator.md +0 -168
- package/.claude/agents/bmad-planning/trend-spotter.md +0 -115
- package/.claude/agents/bmad-planning/user-journey-mapper.md +0 -123
- package/.claude/agents/bmad-planning/user-researcher.md +0 -72
- package/.claude/agents/bmad-research/market-researcher.md +0 -51
- package/.claude/agents/bmad-research/tech-debt-auditor.md +0 -106
- package/.claude/agents/bmad-review/document-reviewer.md +0 -102
- package/.claude/agents/bmad-review/technical-evaluator.md +0 -68
- package/.claude/agents/bmad-review/test-coverage-analyzer.md +0 -108
- package/.claude/commands/bmad/bmb/workflows/README.md +0 -67
- package/.claude/commands/bmad/bmm/workflows/README.md +0 -132
- package/.claude/commands/bmad/bmm/workflows/narrative.md +0 -15
- package/.claude/commands/bmad/cis/agents/README.md +0 -104
- package/.claude/commands/bmad/cis/agents/brainstorming-coach.md +0 -62
- package/.claude/commands/bmad/cis/agents/creative-problem-solver.md +0 -62
- package/.claude/commands/bmad/cis/agents/design-thinking-coach.md +0 -62
- package/.claude/commands/bmad/cis/agents/innovation-strategist.md +0 -62
- package/.claude/commands/bmad/cis/agents/storyteller.md +0 -59
- package/.claude/commands/bmad/cis/workflows/README.md +0 -37
- package/.claude/commands/bmad/cis/workflows/design-thinking.md +0 -15
- package/.claude/commands/bmad/cis/workflows/innovation-strategy.md +0 -15
- package/.claude/commands/bmad/cis/workflows/problem-solving.md +0 -15
- package/.claude/commands/bmad/cis/workflows/storytelling.md +0 -15
- package/.claude/commands/bmad/core/workflows/README.md +0 -27
- package/bmad/_cfg/agent-manifest.csv +0 -11
- package/bmad/_cfg/manifest.yaml +0 -10
- package/bmad/bmb/config.yaml +0 -14
- package/bmad/bmm/teams/team-gamedev.yaml +0 -14
- package/bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -36
- package/bmad/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md +0 -608
- package/bmad/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +0 -29
- package/bmad/bmm/workflows/workflow-status/paths/game-design.yaml +0 -75
- package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
- 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/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 -35
- package/src/modules/bmm/docs/troubleshooting.md +0 -680
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -81
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/checklist.md +0 -139
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/narrative-template.md +0 -195
- package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
- /package/{bmad → .bmad}/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/agents/bmm-analyst.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/agents/bmm-architect.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/agents/bmm-dev.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/agents/bmm-pm.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/agents/bmm-sm.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/agents/bmm-tea.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/agents/bmm-tech-writer.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/agents/bmm-ux-designer.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/agents/core-bmad-master.customize.yaml +0 -0
- /package/{bmad → .bmad}/_cfg/tool-manifest.csv +0 -0
- /package/{bmad → .bmad}/bmb/README.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/audit-workflow/template.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/create-agent/brainstorm-context.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/create-agent/communication-styles.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/create-module/brainstorm-context.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/create-module/installer-templates/installer.js +0 -0
- /package/{bmad → .bmad}/bmb/workflows/create-workflow/brainstorm-context.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/template.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/edit-agent/README.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/edit-workflow/README.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/edit-workflow/checklist.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/module-brief/checklist.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/module-brief/template.md +0 -0
- /package/{bmad → .bmad}/bmb/workflows/redoc/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/README.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/ci-burn-in.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/component-tdd.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/contract-testing.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/data-factories.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/email-auth.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/error-handling.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/feature-flags.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/fixture-architecture.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/network-first.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/nfr-criteria.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/playwright-config.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/probability-impact.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/risk-governance.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/selective-testing.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/selector-resilience.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/test-healing-patterns.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/test-levels-framework.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/test-priorities-matrix.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/test-quality.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/timing-debugging.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/knowledge/visual-debugging.md +0 -0
- /package/{bmad → .bmad}/bmm/testarch/tea-index.csv +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/domain-research/template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/product-brief/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/product-brief/template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/checklist-technical.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/template-market.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/template-technical.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -0
- /package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/4-implementation/code-review/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/4-implementation/create-story/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/4-implementation/create-story/template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/4-implementation/dev-story/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/document-project/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/document-project/documentation-requirements.csv +0 -0
- /package/{bmad → .bmad}/bmm/workflows/document-project/templates/deep-dive-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/document-project/templates/index-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/document-project/templates/project-overview-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -0
- /package/{bmad → .bmad}/bmm/workflows/document-project/templates/source-tree-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/techdoc/documentation-standards.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/atdd/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/automate/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/ci/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/framework/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/nfr-assess/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/test-design/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/test-review/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/test-review/test-review-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/trace/checklist.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/testarch/trace/trace-template.md +0 -0
- /package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/workflow-status/sample-level-3-workflow.yaml +0 -0
- /package/{bmad → .bmad}/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -0
- /package/{bmad → .bmad}/core/tasks/adv-elicit-methods.csv +0 -0
- /package/{bmad → .bmad}/core/workflows/brainstorming/brain-methods.csv +0 -0
- /package/{bmad → .bmad}/core/workflows/brainstorming/template.md +0 -0
- /package/{bmad → .bmad}/docs/claude-code-instructions.md +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-brain-methods.csv +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-context.md +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/checklist.md +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → 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/{bmad/bmm/workflows/2-plan-workflows → src/modules/bmgd/workflows/2-design}/narrative/checklist.md +0 -0
- /package/{bmad/bmm/workflows/2-plan-workflows → src/modules/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...';
|
|
@@ -726,7 +859,8 @@ class Installer {
|
|
|
726
859
|
const spinner = ora('Checking installation...').start();
|
|
727
860
|
|
|
728
861
|
try {
|
|
729
|
-
const
|
|
862
|
+
const projectDir = path.resolve(config.directory);
|
|
863
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
730
864
|
const existingInstall = await this.detector.detect(bmadDir);
|
|
731
865
|
|
|
732
866
|
if (!existingInstall.installed) {
|
|
@@ -786,7 +920,8 @@ class Installer {
|
|
|
786
920
|
* Get installation status
|
|
787
921
|
*/
|
|
788
922
|
async getStatus(directory) {
|
|
789
|
-
const
|
|
923
|
+
const projectDir = path.resolve(directory);
|
|
924
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
790
925
|
return await this.detector.detect(bmadDir);
|
|
791
926
|
}
|
|
792
927
|
|
|
@@ -801,14 +936,15 @@ class Installer {
|
|
|
801
936
|
* Uninstall BMAD
|
|
802
937
|
*/
|
|
803
938
|
async uninstall(directory) {
|
|
804
|
-
const
|
|
939
|
+
const projectDir = path.resolve(directory);
|
|
940
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
805
941
|
|
|
806
942
|
if (await fs.pathExists(bmadDir)) {
|
|
807
943
|
await fs.remove(bmadDir);
|
|
808
944
|
}
|
|
809
945
|
|
|
810
946
|
// Clean up IDE configurations
|
|
811
|
-
await this.ideManager.cleanup(
|
|
947
|
+
await this.ideManager.cleanup(projectDir);
|
|
812
948
|
|
|
813
949
|
return { success: true };
|
|
814
950
|
}
|
|
@@ -986,7 +1122,7 @@ class Installer {
|
|
|
986
1122
|
const targetPath = path.join(agentsDir, fileName);
|
|
987
1123
|
|
|
988
1124
|
if (await fs.pathExists(sourcePath)) {
|
|
989
|
-
await
|
|
1125
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
|
|
990
1126
|
this.installedFiles.push(targetPath);
|
|
991
1127
|
}
|
|
992
1128
|
}
|
|
@@ -1002,7 +1138,7 @@ class Installer {
|
|
|
1002
1138
|
const targetPath = path.join(tasksDir, fileName);
|
|
1003
1139
|
|
|
1004
1140
|
if (await fs.pathExists(sourcePath)) {
|
|
1005
|
-
await
|
|
1141
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
|
|
1006
1142
|
this.installedFiles.push(targetPath);
|
|
1007
1143
|
}
|
|
1008
1144
|
}
|
|
@@ -1018,7 +1154,7 @@ class Installer {
|
|
|
1018
1154
|
const targetPath = path.join(toolsDir, fileName);
|
|
1019
1155
|
|
|
1020
1156
|
if (await fs.pathExists(sourcePath)) {
|
|
1021
|
-
await
|
|
1157
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
|
|
1022
1158
|
this.installedFiles.push(targetPath);
|
|
1023
1159
|
}
|
|
1024
1160
|
}
|
|
@@ -1034,7 +1170,7 @@ class Installer {
|
|
|
1034
1170
|
const targetPath = path.join(templatesDir, fileName);
|
|
1035
1171
|
|
|
1036
1172
|
if (await fs.pathExists(sourcePath)) {
|
|
1037
|
-
await
|
|
1173
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
|
|
1038
1174
|
this.installedFiles.push(targetPath);
|
|
1039
1175
|
}
|
|
1040
1176
|
}
|
|
@@ -1049,7 +1185,7 @@ class Installer {
|
|
|
1049
1185
|
await fs.ensureDir(path.dirname(targetPath));
|
|
1050
1186
|
|
|
1051
1187
|
if (await fs.pathExists(dataPath)) {
|
|
1052
|
-
await
|
|
1188
|
+
await this.copyFileWithPlaceholderReplacement(dataPath, targetPath, this.bmadFolderName || 'bmad');
|
|
1053
1189
|
this.installedFiles.push(targetPath);
|
|
1054
1190
|
}
|
|
1055
1191
|
}
|
|
@@ -1109,9 +1245,8 @@ class Installer {
|
|
|
1109
1245
|
}
|
|
1110
1246
|
}
|
|
1111
1247
|
|
|
1112
|
-
// Copy the file
|
|
1113
|
-
await
|
|
1114
|
-
await fs.copy(sourceFile, targetFile, { overwrite: true });
|
|
1248
|
+
// Copy the file with placeholder replacement
|
|
1249
|
+
await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile, this.bmadFolderName || 'bmad');
|
|
1115
1250
|
|
|
1116
1251
|
// Track the installed file
|
|
1117
1252
|
this.installedFiles.push(targetFile);
|
|
@@ -1182,7 +1317,7 @@ class Installer {
|
|
|
1182
1317
|
if (!(await fs.pathExists(customizePath))) {
|
|
1183
1318
|
const genericTemplatePath = getSourcePath('utility', 'templates', 'agent.customize.template.yaml');
|
|
1184
1319
|
if (await fs.pathExists(genericTemplatePath)) {
|
|
1185
|
-
await
|
|
1320
|
+
await this.copyFileWithPlaceholderReplacement(genericTemplatePath, customizePath, this.bmadFolderName || 'bmad');
|
|
1186
1321
|
console.log(chalk.dim(` Created customize: ${moduleName}-${agentName}.customize.yaml`));
|
|
1187
1322
|
}
|
|
1188
1323
|
}
|
|
@@ -1417,7 +1552,7 @@ class Installer {
|
|
|
1417
1552
|
|
|
1418
1553
|
try {
|
|
1419
1554
|
const projectDir = path.resolve(config.directory);
|
|
1420
|
-
const bmadDir =
|
|
1555
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
1421
1556
|
|
|
1422
1557
|
// Check if bmad directory exists
|
|
1423
1558
|
if (!(await fs.pathExists(bmadDir))) {
|
|
@@ -1548,7 +1683,7 @@ class Installer {
|
|
|
1548
1683
|
|
|
1549
1684
|
try {
|
|
1550
1685
|
const projectDir = path.resolve(config.directory);
|
|
1551
|
-
const bmadDir =
|
|
1686
|
+
const bmadDir = await this.findBmadDir(projectDir);
|
|
1552
1687
|
|
|
1553
1688
|
// Check if bmad directory exists
|
|
1554
1689
|
if (!(await fs.pathExists(bmadDir))) {
|
|
@@ -2097,7 +2232,7 @@ class Installer {
|
|
|
2097
2232
|
const targetDocPath = path.join(docsDir, `${ide}-instructions.md`);
|
|
2098
2233
|
|
|
2099
2234
|
if (await fs.pathExists(sourceDocPath)) {
|
|
2100
|
-
await
|
|
2235
|
+
await this.copyFileWithPlaceholderReplacement(sourceDocPath, targetDocPath, this.bmadFolderName || 'bmad');
|
|
2101
2236
|
}
|
|
2102
2237
|
}
|
|
2103
2238
|
}
|
|
@@ -34,10 +34,12 @@ class ManifestGenerator {
|
|
|
34
34
|
|
|
35
35
|
// Store modules list (all modules including preserved ones)
|
|
36
36
|
const preservedModules = options.preservedModules || [];
|
|
37
|
-
|
|
38
|
-
this.
|
|
37
|
+
// Deduplicate modules list to prevent duplicates
|
|
38
|
+
this.modules = [...new Set(['core', ...selectedModules, ...preservedModules])];
|
|
39
|
+
this.updatedModules = [...new Set(['core', ...selectedModules])]; // Only these get rescanned
|
|
39
40
|
this.preservedModules = preservedModules; // These stay as-is in CSVs
|
|
40
41
|
this.bmadDir = bmadDir;
|
|
42
|
+
this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '.bmad' or 'bmad')
|
|
41
43
|
this.allInstalledFiles = installedFiles;
|
|
42
44
|
|
|
43
45
|
if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
|
|
@@ -91,15 +93,8 @@ class ManifestGenerator {
|
|
|
91
93
|
async collectWorkflows(selectedModules) {
|
|
92
94
|
this.workflows = [];
|
|
93
95
|
|
|
94
|
-
//
|
|
95
|
-
const
|
|
96
|
-
if (await fs.pathExists(corePath)) {
|
|
97
|
-
const coreWorkflows = await this.getWorkflowsFromPath(corePath, 'core');
|
|
98
|
-
this.workflows.push(...coreWorkflows);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Get module workflows from installed bmad directory
|
|
102
|
-
for (const moduleName of selectedModules) {
|
|
96
|
+
// Use updatedModules which already includes deduplicated 'core' + selectedModules
|
|
97
|
+
for (const moduleName of this.updatedModules) {
|
|
103
98
|
const modulePath = path.join(this.bmadDir, moduleName);
|
|
104
99
|
|
|
105
100
|
if (await fs.pathExists(modulePath)) {
|
|
@@ -146,8 +141,8 @@ class ManifestGenerator {
|
|
|
146
141
|
// Build relative path for installation
|
|
147
142
|
const installPath =
|
|
148
143
|
moduleName === 'core'
|
|
149
|
-
?
|
|
150
|
-
:
|
|
144
|
+
? `${this.bmadFolderName}/core/workflows/${relativePath}/workflow.yaml`
|
|
145
|
+
: `${this.bmadFolderName}/${moduleName}/workflows/${relativePath}/workflow.yaml`;
|
|
151
146
|
|
|
152
147
|
// Check for standalone property (default: false)
|
|
153
148
|
const standalone = workflow.standalone === true;
|
|
@@ -186,15 +181,8 @@ class ManifestGenerator {
|
|
|
186
181
|
async collectAgents(selectedModules) {
|
|
187
182
|
this.agents = [];
|
|
188
183
|
|
|
189
|
-
//
|
|
190
|
-
const
|
|
191
|
-
if (await fs.pathExists(coreAgentsPath)) {
|
|
192
|
-
const coreAgents = await this.getAgentsFromDir(coreAgentsPath, 'core');
|
|
193
|
-
this.agents.push(...coreAgents);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// Get module agents from installed bmad directory
|
|
197
|
-
for (const moduleName of selectedModules) {
|
|
184
|
+
// Use updatedModules which already includes deduplicated 'core' + selectedModules
|
|
185
|
+
for (const moduleName of this.updatedModules) {
|
|
198
186
|
const agentsPath = path.join(this.bmadDir, moduleName, 'agents');
|
|
199
187
|
|
|
200
188
|
if (await fs.pathExists(agentsPath)) {
|
|
@@ -254,7 +242,8 @@ class ManifestGenerator {
|
|
|
254
242
|
const principlesMatch = content.match(/<principles>([\s\S]*?)<\/principles>/);
|
|
255
243
|
|
|
256
244
|
// Build relative path for installation
|
|
257
|
-
const installPath =
|
|
245
|
+
const installPath =
|
|
246
|
+
moduleName === 'core' ? `${this.bmadFolderName}/core/agents/${file}` : `${this.bmadFolderName}/${moduleName}/agents/${file}`;
|
|
258
247
|
|
|
259
248
|
const agentName = file.replace('.md', '');
|
|
260
249
|
|
|
@@ -300,15 +289,8 @@ class ManifestGenerator {
|
|
|
300
289
|
async collectTasks(selectedModules) {
|
|
301
290
|
this.tasks = [];
|
|
302
291
|
|
|
303
|
-
//
|
|
304
|
-
const
|
|
305
|
-
if (await fs.pathExists(coreTasksPath)) {
|
|
306
|
-
const coreTasks = await this.getTasksFromDir(coreTasksPath, 'core');
|
|
307
|
-
this.tasks.push(...coreTasks);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
// Get module tasks from installed bmad directory
|
|
311
|
-
for (const moduleName of selectedModules) {
|
|
292
|
+
// Use updatedModules which already includes deduplicated 'core' + selectedModules
|
|
293
|
+
for (const moduleName of this.updatedModules) {
|
|
312
294
|
const tasksPath = path.join(this.bmadDir, moduleName, 'tasks');
|
|
313
295
|
|
|
314
296
|
if (await fs.pathExists(tasksPath)) {
|
|
@@ -344,7 +326,8 @@ class ManifestGenerator {
|
|
|
344
326
|
const standalone = !!standaloneMatch;
|
|
345
327
|
|
|
346
328
|
// Build relative path for installation
|
|
347
|
-
const installPath =
|
|
329
|
+
const installPath =
|
|
330
|
+
moduleName === 'core' ? `${this.bmadFolderName}/core/tasks/${file}` : `${this.bmadFolderName}/${moduleName}/tasks/${file}`;
|
|
348
331
|
|
|
349
332
|
const taskName = file.replace(/\.(xml|md)$/, '');
|
|
350
333
|
tasks.push({
|
|
@@ -376,15 +359,8 @@ class ManifestGenerator {
|
|
|
376
359
|
async collectTools(selectedModules) {
|
|
377
360
|
this.tools = [];
|
|
378
361
|
|
|
379
|
-
//
|
|
380
|
-
const
|
|
381
|
-
if (await fs.pathExists(coreToolsPath)) {
|
|
382
|
-
const coreTools = await this.getToolsFromDir(coreToolsPath, 'core');
|
|
383
|
-
this.tools.push(...coreTools);
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
// Get module tools from installed bmad directory
|
|
387
|
-
for (const moduleName of selectedModules) {
|
|
362
|
+
// Use updatedModules which already includes deduplicated 'core' + selectedModules
|
|
363
|
+
for (const moduleName of this.updatedModules) {
|
|
388
364
|
const toolsPath = path.join(this.bmadDir, moduleName, 'tools');
|
|
389
365
|
|
|
390
366
|
if (await fs.pathExists(toolsPath)) {
|
|
@@ -420,7 +396,8 @@ class ManifestGenerator {
|
|
|
420
396
|
const standalone = !!standaloneMatch;
|
|
421
397
|
|
|
422
398
|
// Build relative path for installation
|
|
423
|
-
const installPath =
|
|
399
|
+
const installPath =
|
|
400
|
+
moduleName === 'core' ? `${this.bmadFolderName}/core/tools/${file}` : `${this.bmadFolderName}/${moduleName}/tools/${file}`;
|
|
424
401
|
|
|
425
402
|
const toolName = file.replace(/\.(xml|md)$/, '');
|
|
426
403
|
tools.push({
|
|
@@ -564,26 +541,14 @@ class ManifestGenerator {
|
|
|
564
541
|
async writeWorkflowManifest(cfgDir) {
|
|
565
542
|
const csvPath = path.join(cfgDir, 'workflow-manifest.csv');
|
|
566
543
|
|
|
567
|
-
// Define expected columns and defaults for schema upgrade
|
|
568
|
-
const expectedColumns = ['name', 'description', 'module', 'path', 'standalone'];
|
|
569
|
-
const defaultValues = { standalone: 'false' };
|
|
570
|
-
|
|
571
|
-
// Get preserved rows from existing CSV (module is column 2, 0-indexed)
|
|
572
|
-
const preservedRows = await this.getPreservedCsvRows(csvPath, 2, expectedColumns, defaultValues);
|
|
573
|
-
|
|
574
544
|
// Create CSV header with standalone column
|
|
575
545
|
let csv = 'name,description,module,path,standalone\n';
|
|
576
546
|
|
|
577
|
-
// Add
|
|
547
|
+
// Add all workflows
|
|
578
548
|
for (const workflow of this.workflows) {
|
|
579
549
|
csv += `"${workflow.name}","${workflow.description}","${workflow.module}","${workflow.path}","${workflow.standalone}"\n`;
|
|
580
550
|
}
|
|
581
551
|
|
|
582
|
-
// Add preserved rows for modules we didn't update
|
|
583
|
-
for (const row of preservedRows) {
|
|
584
|
-
csv += row + '\n';
|
|
585
|
-
}
|
|
586
|
-
|
|
587
552
|
await fs.writeFile(csvPath, csv);
|
|
588
553
|
return csvPath;
|
|
589
554
|
}
|
|
@@ -595,36 +560,14 @@ class ManifestGenerator {
|
|
|
595
560
|
async writeAgentManifest(cfgDir) {
|
|
596
561
|
const csvPath = path.join(cfgDir, 'agent-manifest.csv');
|
|
597
562
|
|
|
598
|
-
// Define expected columns (no schema changes for agents currently)
|
|
599
|
-
const expectedColumns = [
|
|
600
|
-
'name',
|
|
601
|
-
'displayName',
|
|
602
|
-
'title',
|
|
603
|
-
'icon',
|
|
604
|
-
'role',
|
|
605
|
-
'identity',
|
|
606
|
-
'communicationStyle',
|
|
607
|
-
'principles',
|
|
608
|
-
'module',
|
|
609
|
-
'path',
|
|
610
|
-
];
|
|
611
|
-
|
|
612
|
-
// Get preserved rows from existing CSV (module is column 8, 0-indexed)
|
|
613
|
-
const preservedRows = await this.getPreservedCsvRows(csvPath, 8, expectedColumns);
|
|
614
|
-
|
|
615
563
|
// Create CSV header with persona fields
|
|
616
564
|
let csv = 'name,displayName,title,icon,role,identity,communicationStyle,principles,module,path\n';
|
|
617
565
|
|
|
618
|
-
// Add
|
|
566
|
+
// Add all agents
|
|
619
567
|
for (const agent of this.agents) {
|
|
620
568
|
csv += `"${agent.name}","${agent.displayName}","${agent.title}","${agent.icon}","${agent.role}","${agent.identity}","${agent.communicationStyle}","${agent.principles}","${agent.module}","${agent.path}"\n`;
|
|
621
569
|
}
|
|
622
570
|
|
|
623
|
-
// Add preserved rows for modules we didn't update
|
|
624
|
-
for (const row of preservedRows) {
|
|
625
|
-
csv += row + '\n';
|
|
626
|
-
}
|
|
627
|
-
|
|
628
571
|
await fs.writeFile(csvPath, csv);
|
|
629
572
|
return csvPath;
|
|
630
573
|
}
|
|
@@ -636,26 +579,14 @@ class ManifestGenerator {
|
|
|
636
579
|
async writeTaskManifest(cfgDir) {
|
|
637
580
|
const csvPath = path.join(cfgDir, 'task-manifest.csv');
|
|
638
581
|
|
|
639
|
-
// Define expected columns and defaults for schema upgrade
|
|
640
|
-
const expectedColumns = ['name', 'displayName', 'description', 'module', 'path', 'standalone'];
|
|
641
|
-
const defaultValues = { standalone: 'false' };
|
|
642
|
-
|
|
643
|
-
// Get preserved rows from existing CSV (module is column 3, 0-indexed)
|
|
644
|
-
const preservedRows = await this.getPreservedCsvRows(csvPath, 3, expectedColumns, defaultValues);
|
|
645
|
-
|
|
646
582
|
// Create CSV header with standalone column
|
|
647
583
|
let csv = 'name,displayName,description,module,path,standalone\n';
|
|
648
584
|
|
|
649
|
-
// Add
|
|
585
|
+
// Add all tasks
|
|
650
586
|
for (const task of this.tasks) {
|
|
651
587
|
csv += `"${task.name}","${task.displayName}","${task.description}","${task.module}","${task.path}","${task.standalone}"\n`;
|
|
652
588
|
}
|
|
653
589
|
|
|
654
|
-
// Add preserved rows for modules we didn't update
|
|
655
|
-
for (const row of preservedRows) {
|
|
656
|
-
csv += row + '\n';
|
|
657
|
-
}
|
|
658
|
-
|
|
659
590
|
await fs.writeFile(csvPath, csv);
|
|
660
591
|
return csvPath;
|
|
661
592
|
}
|
|
@@ -667,26 +598,14 @@ class ManifestGenerator {
|
|
|
667
598
|
async writeToolManifest(cfgDir) {
|
|
668
599
|
const csvPath = path.join(cfgDir, 'tool-manifest.csv');
|
|
669
600
|
|
|
670
|
-
// Define expected columns and defaults for schema upgrade
|
|
671
|
-
const expectedColumns = ['name', 'displayName', 'description', 'module', 'path', 'standalone'];
|
|
672
|
-
const defaultValues = { standalone: 'false' };
|
|
673
|
-
|
|
674
|
-
// Get preserved rows from existing CSV (module is column 3, 0-indexed)
|
|
675
|
-
const preservedRows = await this.getPreservedCsvRows(csvPath, 3, expectedColumns, defaultValues);
|
|
676
|
-
|
|
677
601
|
// Create CSV header with standalone column
|
|
678
602
|
let csv = 'name,displayName,description,module,path,standalone\n';
|
|
679
603
|
|
|
680
|
-
// Add
|
|
604
|
+
// Add all tools
|
|
681
605
|
for (const tool of this.tools) {
|
|
682
606
|
csv += `"${tool.name}","${tool.displayName}","${tool.description}","${tool.module}","${tool.path}","${tool.standalone}"\n`;
|
|
683
607
|
}
|
|
684
608
|
|
|
685
|
-
// Add preserved rows for modules we didn't update
|
|
686
|
-
for (const row of preservedRows) {
|
|
687
|
-
csv += row + '\n';
|
|
688
|
-
}
|
|
689
|
-
|
|
690
609
|
await fs.writeFile(csvPath, csv);
|
|
691
610
|
return csvPath;
|
|
692
611
|
}
|
|
@@ -714,9 +633,6 @@ class ManifestGenerator {
|
|
|
714
633
|
async writeFilesManifest(cfgDir) {
|
|
715
634
|
const csvPath = path.join(cfgDir, 'files-manifest.csv');
|
|
716
635
|
|
|
717
|
-
// Get preserved rows from existing CSV (module is column 2, 0-indexed)
|
|
718
|
-
const preservedRows = await this.getPreservedCsvRows(csvPath, 2);
|
|
719
|
-
|
|
720
636
|
// Create CSV header with hash column
|
|
721
637
|
let csv = 'type,name,module,path,hash\n';
|
|
722
638
|
|
|
@@ -747,7 +663,7 @@ class ManifestGenerator {
|
|
|
747
663
|
} else {
|
|
748
664
|
// Fallback: use the collected workflows/agents/tasks
|
|
749
665
|
for (const file of this.files) {
|
|
750
|
-
const filePath = path.join(this.bmadDir, file.path.replace('
|
|
666
|
+
const filePath = path.join(this.bmadDir, file.path.replace(this.bmadFolderName + '/', ''));
|
|
751
667
|
const hash = await this.calculateFileHash(filePath);
|
|
752
668
|
allFiles.push({
|
|
753
669
|
...file,
|
|
@@ -763,16 +679,11 @@ class ManifestGenerator {
|
|
|
763
679
|
return a.name.localeCompare(b.name);
|
|
764
680
|
});
|
|
765
681
|
|
|
766
|
-
// Add
|
|
682
|
+
// Add all files
|
|
767
683
|
for (const file of allFiles) {
|
|
768
684
|
csv += `"${file.type}","${file.name}","${file.module}","${file.path}","${file.hash}"\n`;
|
|
769
685
|
}
|
|
770
686
|
|
|
771
|
-
// Add preserved rows for modules we didn't update
|
|
772
|
-
for (const row of preservedRows) {
|
|
773
|
-
csv += row + '\n';
|
|
774
|
-
}
|
|
775
|
-
|
|
776
687
|
await fs.writeFile(csvPath, csv);
|
|
777
688
|
return csvPath;
|
|
778
689
|
}
|