bmad-method 5.1.3 → 6.0.0-alpha.1
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/.claude/commands/bmad/bmb/agents/bmad-builder.md +70 -0
- package/.claude/commands/bmad/bmb/workflows/README.md +67 -0
- package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/create-agent.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/create-module.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/create-workflow.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/edit-agent.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/edit-module.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/module-brief.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/redoc.md +15 -0
- package/.claude/commands/bmad/bmd/agents/cli-chief.md +108 -0
- package/.claude/commands/bmad/bmd/agents/doc-keeper.md +115 -0
- package/.claude/commands/bmad/bmd/agents/release-chief.md +109 -0
- package/.claude/commands/bmad/core/agents/bmad-master.md +71 -0
- package/.claude/commands/bmad/core/tasks/index-docs.md +9 -0
- package/.claude/commands/bmad/core/tools/shard-doc.md +9 -0
- package/.claude/commands/bmad/core/workflows/README.md +27 -0
- package/.claude/commands/bmad/core/workflows/brainstorming.md +15 -0
- package/.claude/commands/bmad/core/workflows/party-mode.md +15 -0
- package/.claude/hooks/bmad-tts-injector.sh +415 -0
- package/.claude/hooks/bmad-voice-manager.sh +511 -0
- package/.claude/hooks/check-output-style.sh +112 -0
- package/.claude/hooks/download-extra-voices.sh +244 -0
- package/.claude/hooks/github-star-reminder.sh +154 -0
- package/.claude/hooks/language-manager.sh +392 -0
- package/.claude/hooks/learn-manager.sh +475 -0
- package/.claude/hooks/personality-manager.sh +438 -0
- package/.claude/hooks/piper-download-voices.sh +165 -0
- package/.claude/hooks/piper-installer.sh +178 -0
- package/.claude/hooks/piper-multispeaker-registry.sh +165 -0
- package/.claude/hooks/piper-voice-manager.sh +293 -0
- package/.claude/hooks/play-tts-elevenlabs.sh +404 -0
- package/.claude/hooks/play-tts-piper.sh +338 -0
- package/.claude/hooks/play-tts.sh +100 -0
- package/.claude/hooks/provider-commands.sh +540 -0
- package/.claude/hooks/provider-manager.sh +298 -0
- package/.claude/hooks/replay-target-audio.sh +95 -0
- package/.claude/hooks/sentiment-manager.sh +201 -0
- package/.claude/hooks/speed-manager.sh +291 -0
- package/.claude/hooks/voice-manager.sh +594 -0
- package/.claude/hooks/voices-config.sh +70 -0
- package/.claude/settings.local.json +41 -0
- package/.github/FUNDING.yaml +2 -2
- package/.github/ISSUE_TEMPLATE/config.yaml +5 -0
- package/.github/ISSUE_TEMPLATE/idea_submission.md +109 -0
- package/.github/workflows/discord.yaml +1 -10
- package/.github/workflows/{format-check.yaml → lint.yaml} +22 -3
- package/.github/workflows/manual-release.yaml +2 -2
- package/.nvmrc +1 -0
- package/.prettierignore +2 -0
- package/.vscode/settings.json +34 -9
- package/CHANGELOG.md +214 -574
- package/CONTRIBUTING.md +131 -60
- package/LICENSE +6 -1
- package/README.md +188 -148
- package/bmad/_cfg/agent-manifest.csv +7 -0
- package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +32 -0
- package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +42 -0
- package/bmad/_cfg/agents/core-bmad-master.customize.yaml +42 -0
- package/bmad/_cfg/files-manifest.csv +83 -0
- package/bmad/_cfg/manifest.yaml +12 -0
- package/bmad/_cfg/task-manifest.csv +5 -0
- package/bmad/_cfg/tool-manifest.csv +2 -0
- package/bmad/_cfg/workflow-manifest.csv +15 -0
- package/bmad/bmb/README.md +132 -0
- package/bmad/bmb/agents/bmad-builder.md +70 -0
- package/bmad/bmb/config.yaml +14 -0
- package/bmad/bmb/workflows/audit-workflow/checklist.md +143 -0
- package/bmad/bmb/workflows/audit-workflow/instructions.md +341 -0
- package/bmad/bmb/workflows/audit-workflow/template.md +118 -0
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml +23 -0
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +21 -0
- package/bmad/bmb/workflows/convert-legacy/README.md +262 -0
- package/bmad/bmb/workflows/convert-legacy/checklist.md +205 -0
- package/bmad/bmb/workflows/convert-legacy/instructions.md +377 -0
- package/bmad/bmb/workflows/convert-legacy/workflow.yaml +32 -0
- package/bmad/bmb/workflows/create-agent/README.md +320 -0
- package/bmad/bmb/workflows/create-agent/agent-architecture.md +419 -0
- package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +412 -0
- package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +759 -0
- package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +759 -0
- package/bmad/bmb/workflows/create-agent/agent-types.md +292 -0
- package/bmad/bmb/workflows/create-agent/brainstorm-context.md +174 -0
- package/bmad/bmb/workflows/create-agent/checklist.md +62 -0
- package/bmad/bmb/workflows/create-agent/communication-styles.md +202 -0
- package/bmad/bmb/workflows/create-agent/instructions.md +430 -0
- package/bmad/bmb/workflows/create-agent/workflow.yaml +37 -0
- package/bmad/bmb/workflows/create-module/README.md +220 -0
- package/bmad/bmb/workflows/create-module/README.md.bak +218 -0
- package/bmad/bmb/workflows/create-module/brainstorm-context.md +137 -0
- package/bmad/bmb/workflows/create-module/checklist.md +244 -0
- package/bmad/bmb/workflows/create-module/checklist.md.bak +245 -0
- package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +92 -0
- package/bmad/bmb/workflows/create-module/installer-templates/installer.js +231 -0
- package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +231 -0
- package/bmad/bmb/workflows/create-module/instructions.md +581 -0
- package/bmad/bmb/workflows/create-module/instructions.md.bak +521 -0
- package/bmad/bmb/workflows/create-module/module-structure.md +366 -0
- package/bmad/bmb/workflows/create-module/module-structure.md.bak +310 -0
- package/bmad/bmb/workflows/create-module/workflow.yaml +42 -0
- package/bmad/bmb/workflows/create-module/workflow.yaml.bak +40 -0
- package/bmad/bmb/workflows/create-workflow/README.md +277 -0
- package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +197 -0
- package/bmad/bmb/workflows/create-workflow/checklist.md +94 -0
- package/bmad/bmb/workflows/create-workflow/instructions.md +716 -0
- package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +1150 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +24 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +13 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +9 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +39 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +39 -0
- package/bmad/bmb/workflows/create-workflow/workflow.yaml +40 -0
- package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +38 -0
- package/bmad/bmb/workflows/edit-agent/README.md +112 -0
- package/bmad/bmb/workflows/edit-agent/checklist.md +112 -0
- package/bmad/bmb/workflows/edit-agent/instructions.md +290 -0
- package/bmad/bmb/workflows/edit-agent/workflow.yaml +33 -0
- package/bmad/bmb/workflows/edit-module/README.md +187 -0
- package/bmad/bmb/workflows/edit-module/checklist.md +165 -0
- package/bmad/bmb/workflows/edit-module/instructions.md +339 -0
- package/bmad/bmb/workflows/edit-module/workflow.yaml +34 -0
- package/bmad/bmb/workflows/edit-workflow/README.md +119 -0
- package/bmad/bmb/workflows/edit-workflow/checklist.md +70 -0
- package/bmad/bmb/workflows/edit-workflow/instructions.md +342 -0
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml +27 -0
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +25 -0
- package/bmad/bmb/workflows/module-brief/README.md +264 -0
- package/bmad/bmb/workflows/module-brief/checklist.md +116 -0
- package/bmad/bmb/workflows/module-brief/instructions.md +267 -0
- package/bmad/bmb/workflows/module-brief/template.md +275 -0
- package/bmad/bmb/workflows/module-brief/workflow.yaml +29 -0
- package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +27 -0
- package/bmad/bmb/workflows/redoc/README.md +87 -0
- package/bmad/bmb/workflows/redoc/checklist.md +99 -0
- package/bmad/bmb/workflows/redoc/instructions.md +265 -0
- package/bmad/bmb/workflows/redoc/workflow.yaml +32 -0
- package/bmad/bmb/workflows/redoc/workflow.yaml.bak +31 -0
- package/bmad/bmd/README.md +193 -0
- package/bmad/bmd/README.md.bak +193 -0
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +102 -0
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +102 -0
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +68 -0
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +68 -0
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +123 -0
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +123 -0
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md +53 -0
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +53 -0
- package/bmad/bmd/agents/cli-chief.md +108 -0
- package/bmad/bmd/agents/cli-chief.md.bak +108 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +177 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +177 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +81 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +81 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +88 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +88 -0
- package/bmad/bmd/agents/doc-keeper.md +115 -0
- package/bmad/bmd/agents/doc-keeper.md.bak +115 -0
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md +164 -0
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +164 -0
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +82 -0
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +82 -0
- package/bmad/bmd/agents/release-chief-sidecar/memories.md +73 -0
- package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +73 -0
- package/bmad/bmd/agents/release-chief.md +109 -0
- package/bmad/bmd/agents/release-chief.md.bak +109 -0
- package/bmad/bmd/config.yaml +10 -0
- package/bmad/core/agents/bmad-master.md +71 -0
- package/bmad/core/agents/bmad-web-orchestrator.agent.xml +122 -0
- package/bmad/core/config.yaml +9 -0
- package/bmad/core/tasks/adv-elicit-methods.csv +39 -0
- package/bmad/core/tasks/adv-elicit.xml +104 -0
- package/bmad/core/tasks/index-docs.xml +65 -0
- package/bmad/core/tasks/validate-workflow.xml +89 -0
- package/bmad/core/tasks/workflow.xml +174 -0
- package/bmad/core/tools/shard-doc.xml +100 -0
- package/bmad/core/workflows/brainstorming/README.md +271 -0
- package/bmad/core/workflows/brainstorming/brain-methods.csv +36 -0
- package/bmad/core/workflows/brainstorming/instructions.md +314 -0
- package/bmad/core/workflows/brainstorming/template.md +102 -0
- package/bmad/core/workflows/brainstorming/workflow.yaml +43 -0
- package/bmad/core/workflows/party-mode/instructions.md +188 -0
- package/bmad/core/workflows/party-mode/workflow.yaml +23 -0
- package/bmad/docs/claude-code-instructions.md +25 -0
- package/bmad/docs/codex-instructions.md +21 -0
- package/bmd/README.md +193 -0
- package/bmd/agents/cli-chief-sidecar/instructions.md +102 -0
- package/bmd/agents/cli-chief-sidecar/knowledge/README.md +68 -0
- package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +123 -0
- package/bmd/agents/cli-chief-sidecar/memories.md +53 -0
- package/bmd/agents/cli-chief.agent.yaml +126 -0
- package/bmd/agents/doc-keeper-sidecar/instructions.md +177 -0
- package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +81 -0
- package/bmd/agents/doc-keeper-sidecar/memories.md +88 -0
- package/bmd/agents/doc-keeper.agent.yaml +137 -0
- package/bmd/agents/release-chief-sidecar/instructions.md +164 -0
- package/bmd/agents/release-chief-sidecar/knowledge/README.md +82 -0
- package/bmd/agents/release-chief-sidecar/memories.md +73 -0
- package/bmd/agents/release-chief.agent.yaml +127 -0
- package/bmd/bmad-custom-module-installer-plan.md +1176 -0
- package/bmd/config.yaml +12 -0
- package/docs/bmad-brownfield-guide.md +1260 -0
- package/docs/conversion-report-shard-doc-2025-10-26.md +188 -0
- package/docs/ide-info/auggie.md +31 -0
- package/docs/ide-info/claude-code.md +25 -0
- package/docs/ide-info/cline.md +31 -0
- package/docs/ide-info/codex.md +21 -0
- package/docs/ide-info/crush.md +30 -0
- package/docs/ide-info/cursor.md +25 -0
- package/docs/ide-info/gemini.md +25 -0
- package/docs/ide-info/github-copilot.md +26 -0
- package/docs/ide-info/iflow.md +33 -0
- package/docs/ide-info/kilo.md +24 -0
- package/docs/ide-info/opencode.md +24 -0
- package/docs/ide-info/qwen.md +25 -0
- package/docs/ide-info/roo.md +27 -0
- package/docs/ide-info/trae.md +25 -0
- package/docs/ide-info/windsurf.md +22 -0
- package/docs/installers-bundlers/ide-injections.md +186 -0
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +327 -0
- package/docs/installers-bundlers/web-bundler-usage.md +54 -0
- package/docs/v4-to-v6-upgrade.md +225 -0
- package/eslint.config.mjs +21 -9
- package/package.json +32 -36
- package/prettier.config.mjs +1 -1
- package/src/core/_module-installer/install-config.yaml +28 -0
- package/src/core/_module-installer/installer.js +68 -0
- package/src/core/agents/bmad-master.agent.yaml +39 -0
- package/src/core/agents/bmad-web-orchestrator.agent.xml +122 -0
- package/src/core/tasks/adv-elicit-methods.csv +39 -0
- package/src/core/tasks/adv-elicit.xml +104 -0
- package/src/core/tasks/index-docs.xml +65 -0
- package/src/core/tasks/validate-workflow.xml +89 -0
- package/src/core/tasks/workflow.xml +166 -0
- package/src/core/tools/shard-doc.xml +100 -0
- package/src/core/workflows/brainstorming/README.md +271 -0
- package/src/core/workflows/brainstorming/brain-methods.csv +36 -0
- package/src/core/workflows/brainstorming/instructions.md +314 -0
- package/src/core/workflows/brainstorming/template.md +102 -0
- package/src/core/workflows/brainstorming/workflow.yaml +43 -0
- package/src/core/workflows/party-mode/instructions.md +188 -0
- package/src/core/workflows/party-mode/workflow.yaml +23 -0
- package/src/modules/bmb/README.md +132 -0
- package/src/modules/bmb/_module-installer/install-config.yaml +26 -0
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +58 -0
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +143 -0
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +341 -0
- package/src/modules/bmb/workflows/audit-workflow/template.md +118 -0
- package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +25 -0
- package/src/modules/bmb/workflows/convert-legacy/README.md +262 -0
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +205 -0
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +377 -0
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +34 -0
- package/src/modules/bmb/workflows/create-agent/README.md +320 -0
- package/src/modules/bmb/workflows/create-agent/agent-architecture.md +419 -0
- package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +759 -0
- package/src/modules/bmb/workflows/create-agent/agent-types.md +292 -0
- package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +174 -0
- package/src/modules/bmb/workflows/create-agent/checklist.md +62 -0
- package/src/modules/bmb/workflows/create-agent/communication-styles.md +202 -0
- package/src/modules/bmb/workflows/create-agent/instructions.md +430 -0
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +49 -0
- package/src/modules/bmb/workflows/create-module/README.md +220 -0
- package/src/modules/bmb/workflows/create-module/brainstorm-context.md +137 -0
- package/src/modules/bmb/workflows/create-module/checklist.md +244 -0
- package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +92 -0
- package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +231 -0
- package/src/modules/bmb/workflows/create-module/instructions.md +581 -0
- package/src/modules/bmb/workflows/create-module/module-structure.md +366 -0
- package/src/modules/bmb/workflows/create-module/workflow.yaml +44 -0
- package/src/modules/bmb/workflows/create-workflow/README.md +277 -0
- package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +197 -0
- package/src/modules/bmb/workflows/create-workflow/checklist.md +94 -0
- package/src/modules/bmb/workflows/create-workflow/instructions.md +716 -0
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +1150 -0
- package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +24 -0
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +13 -0
- package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +9 -0
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +65 -0
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +42 -0
- package/src/modules/bmb/workflows/edit-agent/README.md +112 -0
- package/src/modules/bmb/workflows/edit-agent/checklist.md +112 -0
- package/src/modules/bmb/workflows/edit-agent/instructions.md +290 -0
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +35 -0
- package/src/modules/bmb/workflows/edit-module/README.md +187 -0
- package/src/modules/bmb/workflows/edit-module/checklist.md +165 -0
- package/src/modules/bmb/workflows/edit-module/instructions.md +339 -0
- package/src/modules/bmb/workflows/edit-module/workflow.yaml +36 -0
- package/src/modules/bmb/workflows/edit-workflow/README.md +119 -0
- package/src/modules/bmb/workflows/edit-workflow/checklist.md +70 -0
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +342 -0
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +29 -0
- package/src/modules/bmb/workflows/module-brief/README.md +264 -0
- package/src/modules/bmb/workflows/module-brief/checklist.md +116 -0
- package/src/modules/bmb/workflows/module-brief/instructions.md +267 -0
- package/src/modules/bmb/workflows/module-brief/template.md +275 -0
- package/src/modules/bmb/workflows/module-brief/workflow.yaml +31 -0
- package/src/modules/bmb/workflows/redoc/README.md +87 -0
- package/src/modules/bmb/workflows/redoc/checklist.md +99 -0
- package/src/modules/bmb/workflows/redoc/instructions.md +265 -0
- package/src/modules/bmb/workflows/redoc/workflow.yaml +34 -0
- package/src/modules/bmm/README.md +141 -0
- package/src/modules/bmm/_module-installer/assets/bmm-kb.md +1 -0
- package/src/modules/bmm/_module-installer/assets/technical-decisions.md +30 -0
- package/src/modules/bmm/_module-installer/install-config.yaml +74 -0
- package/src/modules/bmm/_module-installer/installer.js +131 -0
- package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +35 -0
- package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +32 -0
- package/src/modules/bmm/agents/analyst.agent.yaml +43 -0
- package/src/modules/bmm/agents/architect.agent.yaml +41 -0
- package/src/modules/bmm/agents/dev.agent.yaml +43 -0
- package/src/modules/bmm/agents/game-architect.agent.yaml +35 -0
- package/src/modules/bmm/agents/game-designer.agent.yaml +47 -0
- package/src/modules/bmm/agents/game-dev.agent.yaml +39 -0
- package/src/modules/bmm/agents/pm.agent.yaml +50 -0
- package/src/modules/bmm/agents/sm.agent.yaml +67 -0
- package/src/modules/bmm/agents/tea.agent.yaml +59 -0
- package/src/modules/bmm/agents/ux-designer.agent.yaml +33 -0
- package/src/modules/bmm/sub-modules/claude-code/config.yaml +5 -0
- package/src/modules/bmm/sub-modules/claude-code/injections.yaml +242 -0
- package/src/modules/bmm/sub-modules/claude-code/readme.md +87 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +102 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +82 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +101 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +84 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +83 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +81 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +61 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +168 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +115 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +123 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +72 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +51 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +106 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +102 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +68 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +108 -0
- package/src/modules/bmm/tasks/daily-standup.xml +85 -0
- package/src/modules/bmm/tasks/retrospective.xml +104 -0
- package/src/modules/bmm/teams/team-fullstack.yaml +11 -0
- package/src/modules/bmm/teams/team-gamedev.yaml +14 -0
- package/src/modules/bmm/testarch/README.md +311 -0
- package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +675 -0
- package/src/modules/bmm/testarch/knowledge/component-tdd.md +486 -0
- package/src/modules/bmm/testarch/knowledge/contract-testing.md +957 -0
- package/src/modules/bmm/testarch/knowledge/data-factories.md +500 -0
- package/src/modules/bmm/testarch/knowledge/email-auth.md +721 -0
- package/src/modules/bmm/testarch/knowledge/error-handling.md +725 -0
- package/src/modules/bmm/testarch/knowledge/feature-flags.md +750 -0
- package/src/modules/bmm/testarch/knowledge/fixture-architecture.md +401 -0
- package/src/modules/bmm/testarch/knowledge/network-first.md +486 -0
- package/src/modules/bmm/testarch/knowledge/nfr-criteria.md +670 -0
- package/src/modules/bmm/testarch/knowledge/playwright-config.md +730 -0
- package/src/modules/bmm/testarch/knowledge/probability-impact.md +601 -0
- package/src/modules/bmm/testarch/knowledge/risk-governance.md +615 -0
- package/src/modules/bmm/testarch/knowledge/selective-testing.md +732 -0
- package/src/modules/bmm/testarch/knowledge/selector-resilience.md +527 -0
- package/src/modules/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
- package/src/modules/bmm/testarch/knowledge/test-levels-framework.md +473 -0
- package/src/modules/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/src/modules/bmm/testarch/knowledge/test-quality.md +664 -0
- package/src/modules/bmm/testarch/knowledge/timing-debugging.md +372 -0
- package/src/modules/bmm/testarch/knowledge/visual-debugging.md +524 -0
- package/src/modules/bmm/testarch/tea-index.csv +22 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +38 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/game-brain-methods.csv +26 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/game-context.md +115 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +109 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +41 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +29 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +91 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +25 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +39 -0
- package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +221 -0
- package/src/modules/bmm/workflows/1-analysis/game-brief/checklist.md +128 -0
- package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +357 -0
- package/src/modules/bmm/workflows/1-analysis/game-brief/template.md +205 -0
- package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +44 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +180 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +115 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +321 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +165 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +43 -0
- package/src/modules/bmm/workflows/1-analysis/research/README.md +454 -0
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +202 -0
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +114 -0
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +259 -0
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +190 -0
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +337 -0
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +107 -0
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +329 -0
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +433 -0
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +613 -0
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +125 -0
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +501 -0
- package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +94 -0
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +311 -0
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +210 -0
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +49 -0
- package/src/modules/bmm/workflows/2-plan-workflows/README.md +258 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +310 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1283 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +145 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +42 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +222 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/checklist.md +148 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/action-platformer.md +45 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/adventure.md +84 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/card-game.md +76 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/fighting.md +89 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/horror.md +86 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/idle-incremental.md +78 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/metroidvania.md +87 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/moba.md +74 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/party-game.md +79 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/puzzle.md +58 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/racing.md +88 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/rhythm.md +79 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/roguelike.md +69 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/rpg.md +70 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/sandbox.md +79 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/shooter.md +62 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/simulation.md +73 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/sports.md +75 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/strategy.md +71 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/survival.md +79 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/text-based.md +91 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/tower-defense.md +79 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/turn-based-tactics.md +88 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types/visual-novel.md +89 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/game-types.csv +25 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/gdd-template.md +153 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md +475 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +67 -0
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/checklist.md +139 -0
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md +557 -0
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/narrative-template.md +195 -0
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +38 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +117 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +63 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +449 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +62 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +46 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +107 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +11 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +167 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +278 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +269 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +55 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +56 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +52 -0
- package/src/modules/bmm/workflows/3-solutioning/README.md +1 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +347 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +103 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +244 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +222 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +703 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +13 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/readme.md +318 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +54 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +177 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +175 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +273 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +146 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +189 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +40 -0
- package/src/modules/bmm/workflows/4-implementation/README.md +221 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/README.md +69 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +12 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +22 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +391 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +56 -0
- package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +73 -0
- package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
- package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +201 -0
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +45 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/README.md +129 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +240 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +252 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/template.md +51 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +49 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +367 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +206 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +38 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +262 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +28 -0
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/README.md +195 -0
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +17 -0
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +160 -0
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +76 -0
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +34 -0
- package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +77 -0
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +479 -0
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +45 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +156 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +221 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +41 -0
- package/src/modules/bmm/workflows/4-implementation/story-context/README.md +234 -0
- package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +16 -0
- package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +34 -0
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +201 -0
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +32 -0
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +111 -0
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +117 -0
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/README.md +577 -0
- package/src/modules/bmm/workflows/document-project/README.md +444 -0
- package/src/modules/bmm/workflows/document-project/checklist.md +245 -0
- package/src/modules/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/src/modules/bmm/workflows/document-project/instructions.md +222 -0
- package/src/modules/bmm/workflows/document-project/templates/README.md +38 -0
- package/src/modules/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/src/modules/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/src/modules/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/src/modules/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/modules/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/src/modules/bmm/workflows/document-project/workflow.yaml +36 -0
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/modules/bmm/workflows/testarch/README.md +26 -0
- package/src/modules/bmm/workflows/testarch/atdd/README.md +672 -0
- package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
- package/src/modules/bmm/workflows/testarch/atdd/checklist.md +373 -0
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +785 -0
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +54 -0
- package/src/modules/bmm/workflows/testarch/automate/README.md +869 -0
- package/src/modules/bmm/workflows/testarch/automate/checklist.md +580 -0
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +1303 -0
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +63 -0
- package/src/modules/bmm/workflows/testarch/ci/README.md +493 -0
- package/src/modules/bmm/workflows/testarch/ci/checklist.md +246 -0
- package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +165 -0
- package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +128 -0
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +517 -0
- package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +55 -0
- package/src/modules/bmm/workflows/testarch/framework/README.md +340 -0
- package/src/modules/bmm/workflows/testarch/framework/checklist.md +321 -0
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +455 -0
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +55 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +469 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +405 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +443 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +58 -0
- package/src/modules/bmm/workflows/testarch/test-design/README.md +493 -0
- package/src/modules/bmm/workflows/testarch/test-design/checklist.md +234 -0
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +621 -0
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +285 -0
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +54 -0
- package/src/modules/bmm/workflows/testarch/test-review/README.md +775 -0
- package/src/modules/bmm/workflows/testarch/test-review/checklist.md +470 -0
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +608 -0
- package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +388 -0
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +55 -0
- package/src/modules/bmm/workflows/testarch/trace/README.md +802 -0
- package/src/modules/bmm/workflows/testarch/trace/checklist.md +654 -0
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +1045 -0
- package/src/modules/bmm/workflows/testarch/trace/trace-template.md +673 -0
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +68 -0
- package/src/modules/bmm/workflows/workflow-status/README.md +241 -0
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +297 -0
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +28 -0
- package/src/modules/bmm/workflows/workflow-status/instructions.md +324 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +54 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-1.yaml +58 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +76 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-3.yaml +95 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +88 -0
- package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +75 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +45 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-1.yaml +49 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +78 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +73 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +75 -0
- package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +59 -0
- package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +30 -0
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +30 -0
- package/src/modules/cis/_module-installer/install-config.yaml +14 -0
- package/src/modules/cis/_module-installer/installer.js +92 -0
- package/src/modules/cis/agents/README.md +104 -0
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +23 -0
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +23 -0
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +23 -0
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +23 -0
- package/src/modules/cis/agents/storyteller.agent.yaml +23 -0
- package/src/modules/cis/readme.md +86 -0
- package/src/modules/cis/teams/creative-squad.yaml +6 -0
- package/src/modules/cis/workflows/README.md +67 -0
- package/src/modules/cis/workflows/design-thinking/README.md +56 -0
- package/src/modules/cis/workflows/design-thinking/design-methods.csv +31 -0
- package/src/modules/cis/workflows/design-thinking/instructions.md +200 -0
- package/src/modules/cis/workflows/design-thinking/template.md +111 -0
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +43 -0
- package/src/modules/cis/workflows/innovation-strategy/README.md +56 -0
- package/src/modules/cis/workflows/innovation-strategy/innovation-frameworks.csv +31 -0
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +274 -0
- package/src/modules/cis/workflows/innovation-strategy/template.md +189 -0
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +43 -0
- package/src/modules/cis/workflows/problem-solving/README.md +56 -0
- package/src/modules/cis/workflows/problem-solving/instructions.md +250 -0
- package/src/modules/cis/workflows/problem-solving/solving-methods.csv +31 -0
- package/src/modules/cis/workflows/problem-solving/template.md +165 -0
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +43 -0
- package/src/modules/cis/workflows/storytelling/README.md +58 -0
- package/src/modules/cis/workflows/storytelling/instructions.md +283 -0
- package/src/modules/cis/workflows/storytelling/story-types.csv +26 -0
- package/src/modules/cis/workflows/storytelling/template.md +113 -0
- package/src/modules/cis/workflows/storytelling/workflow.yaml +43 -0
- package/src/utility/models/agent-activation-ide.xml +51 -0
- package/src/utility/models/agent-activation-web.xml +60 -0
- package/src/utility/models/agent-config-template.md +23 -0
- package/src/utility/models/agent-in-team-activation.xml +3 -0
- package/src/utility/models/fragments/activation-rules.xml +8 -0
- package/src/utility/models/fragments/activation-steps.xml +15 -0
- package/src/utility/models/fragments/handler-action.xml +4 -0
- package/src/utility/models/fragments/handler-data.xml +5 -0
- package/src/utility/models/fragments/handler-exec.xml +5 -0
- package/src/utility/models/fragments/handler-tmpl.xml +5 -0
- package/src/utility/models/fragments/handler-validate-workflow.xml +7 -0
- package/src/utility/models/fragments/handler-workflow.xml +9 -0
- package/src/utility/models/fragments/menu-handlers.xml +6 -0
- package/src/utility/models/fragments/web-bundle-activation-steps.xml +32 -0
- package/src/utility/templates/agent.customize.template.yaml +42 -0
- package/test/README.md +295 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +29 -0
- package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +21 -0
- package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/core-agent-with-module.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/metadata/module-agent-missing-module.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/metadata/wrong-module-value.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
- package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
- package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +21 -0
- package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +26 -0
- package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +30 -0
- package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +21 -0
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +39 -0
- package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +33 -0
- package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +21 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +27 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +29 -0
- package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +23 -0
- package/test/test-agent-schema.js +387 -0
- package/test/test-cli-integration.sh +159 -0
- package/test/unit-test-schema.js +133 -0
- package/tools/bmad-npx-wrapper.js +100 -13
- package/tools/cli/README.md +590 -0
- package/tools/cli/bmad-cli.js +40 -0
- package/tools/cli/bundlers/bundle-web.js +179 -0
- package/tools/cli/bundlers/test-analyst.js +28 -0
- package/tools/cli/bundlers/test-bundler.js +118 -0
- package/tools/cli/bundlers/web-bundler.js +1479 -0
- package/tools/cli/commands/build.js +458 -0
- package/tools/cli/commands/install.js +82 -0
- package/tools/cli/commands/list.js +28 -0
- package/tools/cli/commands/status.js +47 -0
- package/tools/cli/commands/uninstall.js +44 -0
- package/tools/cli/commands/update.js +28 -0
- package/tools/cli/installers/lib/core/config-collector.js +590 -0
- package/tools/cli/installers/lib/core/dependency-resolver.js +725 -0
- package/tools/cli/installers/lib/core/detector.js +274 -0
- package/tools/cli/installers/lib/core/ide-config-manager.js +152 -0
- package/tools/cli/installers/lib/core/installer.js +2095 -0
- package/tools/cli/installers/lib/core/manifest-generator.js +776 -0
- package/tools/cli/installers/lib/core/manifest.js +536 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +572 -0
- package/tools/cli/installers/lib/ide/auggie.js +336 -0
- package/tools/cli/installers/lib/ide/claude-code.js +449 -0
- package/tools/cli/installers/lib/ide/cline.js +223 -0
- package/tools/cli/installers/lib/ide/codex.js +234 -0
- package/tools/cli/installers/lib/ide/crush.js +276 -0
- package/tools/cli/installers/lib/ide/cursor.js +292 -0
- package/tools/cli/installers/lib/ide/gemini.js +156 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +290 -0
- package/tools/cli/installers/lib/ide/iflow.js +142 -0
- package/tools/cli/installers/lib/ide/kilo.js +171 -0
- package/tools/cli/installers/lib/ide/manager.js +194 -0
- package/tools/cli/installers/lib/ide/opencode.js +213 -0
- package/tools/cli/installers/lib/ide/qwen.js +290 -0
- package/tools/cli/installers/lib/ide/roo.js +288 -0
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +143 -0
- package/tools/cli/installers/lib/ide/shared/module-injections.js +133 -0
- package/tools/cli/installers/lib/ide/task-tool-command-generator.js +119 -0
- package/tools/cli/installers/lib/ide/trae.js +278 -0
- package/tools/cli/installers/lib/ide/windsurf.js +201 -0
- package/tools/cli/installers/lib/ide/workflow-command-generator.js +235 -0
- package/tools/cli/installers/lib/ide/workflow-command-template.md +15 -0
- package/tools/cli/installers/lib/modules/manager.js +568 -0
- package/tools/cli/lib/activation-builder.js +168 -0
- package/tools/cli/lib/agent-analyzer.js +81 -0
- package/tools/cli/lib/agent-party-generator.js +206 -0
- package/tools/cli/lib/cli-utils.js +208 -0
- package/tools/cli/lib/config.js +210 -0
- package/tools/cli/lib/file-ops.js +204 -0
- package/tools/cli/lib/platform-codes.js +116 -0
- package/tools/cli/lib/project-root.js +71 -0
- package/tools/cli/lib/replace-project-root.js +239 -0
- package/tools/cli/lib/ui.js +591 -0
- package/tools/cli/lib/xml-handler.js +228 -0
- package/tools/cli/lib/xml-to-markdown.js +82 -0
- package/tools/{yaml-format.js → cli/lib/yaml-format.js} +3 -10
- package/tools/cli/lib/yaml-xml-builder.js +439 -0
- package/tools/cli/regenerate-manifests.js +28 -0
- package/tools/cli/test-yaml-builder.js +43 -0
- package/tools/flattener/ignoreRules.js +2 -6
- package/tools/flattener/main.js +31 -121
- package/tools/flattener/projectRoot.js +3 -8
- package/tools/flattener/stats.helpers.js +8 -35
- package/tools/flattener/stats.js +1 -6
- package/tools/flattener/test-matrix.js +1 -5
- package/tools/format-workflow-md.js +263 -0
- package/tools/platform-codes.yaml +133 -0
- package/tools/schema/agent.js +231 -0
- package/tools/validate-agent-schema.js +110 -0
- package/tools/validate-bundles.js +87 -0
- package/v6-open-items.md +23 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -22
- package/bmad-core/agent-teams/team-all.yaml +0 -14
- package/bmad-core/agent-teams/team-fullstack.yaml +0 -18
- package/bmad-core/agent-teams/team-ide-minimal.yaml +0 -10
- package/bmad-core/agent-teams/team-no-ui.yaml +0 -13
- package/bmad-core/agents/analyst.md +0 -81
- package/bmad-core/agents/architect.md +0 -83
- package/bmad-core/agents/bmad-master.md +0 -107
- package/bmad-core/agents/bmad-orchestrator.md +0 -149
- package/bmad-core/agents/dev.md +0 -75
- package/bmad-core/agents/pm.md +0 -81
- package/bmad-core/agents/po.md +0 -76
- package/bmad-core/agents/qa.md +0 -88
- package/bmad-core/agents/sm.md +0 -62
- package/bmad-core/agents/ux-expert.md +0 -66
- package/bmad-core/checklists/architect-checklist.md +0 -438
- package/bmad-core/checklists/change-checklist.md +0 -182
- package/bmad-core/checklists/pm-checklist.md +0 -370
- package/bmad-core/checklists/po-master-checklist.md +0 -432
- package/bmad-core/checklists/story-dod-checklist.md +0 -94
- package/bmad-core/checklists/story-draft-checklist.md +0 -153
- package/bmad-core/core-config.yaml +0 -20
- package/bmad-core/data/bmad-kb.md +0 -806
- package/bmad-core/data/brainstorming-techniques.md +0 -36
- package/bmad-core/data/elicitation-methods.md +0 -154
- package/bmad-core/data/technical-preferences.md +0 -3
- package/bmad-core/data/test-levels-framework.md +0 -146
- package/bmad-core/data/test-priorities-matrix.md +0 -172
- package/bmad-core/tasks/advanced-elicitation.md +0 -117
- package/bmad-core/tasks/brownfield-create-epic.md +0 -160
- package/bmad-core/tasks/brownfield-create-story.md +0 -147
- package/bmad-core/tasks/correct-course.md +0 -70
- package/bmad-core/tasks/create-brownfield-story.md +0 -312
- package/bmad-core/tasks/create-deep-research-prompt.md +0 -278
- package/bmad-core/tasks/create-next-story.md +0 -112
- package/bmad-core/tasks/document-project.md +0 -343
- package/bmad-core/tasks/facilitate-brainstorming-session.md +0 -136
- package/bmad-core/tasks/generate-ai-frontend-prompt.md +0 -51
- package/bmad-core/tasks/index-docs.md +0 -173
- package/bmad-core/tasks/kb-mode-interaction.md +0 -75
- package/bmad-core/tasks/nfr-assess.md +0 -343
- package/bmad-core/tasks/qa-gate.md +0 -159
- package/bmad-core/tasks/review-story.md +0 -314
- package/bmad-core/tasks/risk-profile.md +0 -353
- package/bmad-core/tasks/shard-doc.md +0 -185
- package/bmad-core/tasks/test-design.md +0 -174
- package/bmad-core/tasks/trace-requirements.md +0 -264
- package/bmad-core/tasks/validate-next-story.md +0 -134
- package/bmad-core/templates/architecture-tmpl.yaml +0 -650
- package/bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -476
- package/bmad-core/templates/brownfield-prd-tmpl.yaml +0 -280
- package/bmad-core/templates/competitor-analysis-tmpl.yaml +0 -306
- package/bmad-core/templates/front-end-architecture-tmpl.yaml +0 -218
- package/bmad-core/templates/front-end-spec-tmpl.yaml +0 -349
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -823
- package/bmad-core/templates/market-research-tmpl.yaml +0 -252
- package/bmad-core/templates/prd-tmpl.yaml +0 -202
- package/bmad-core/templates/project-brief-tmpl.yaml +0 -221
- package/bmad-core/templates/qa-gate-tmpl.yaml +0 -102
- package/bmad-core/templates/story-tmpl.yaml +0 -137
- package/bmad-core/workflows/brownfield-fullstack.yaml +0 -297
- package/bmad-core/workflows/brownfield-service.yaml +0 -187
- package/bmad-core/workflows/brownfield-ui.yaml +0 -197
- package/bmad-core/workflows/greenfield-fullstack.yaml +0 -240
- package/bmad-core/workflows/greenfield-service.yaml +0 -206
- package/bmad-core/workflows/greenfield-ui.yaml +0 -235
- package/common/tasks/create-doc.md +0 -101
- package/common/tasks/execute-checklist.md +0 -86
- package/common/utils/bmad-doc-template.md +0 -325
- package/common/utils/workflow-management.md +0 -69
- package/dist/agents/analyst.txt +0 -2889
- package/dist/agents/architect.txt +0 -3552
- package/dist/agents/bmad-master.txt +0 -8769
- package/dist/agents/bmad-orchestrator.txt +0 -1513
- package/dist/agents/dev.txt +0 -414
- package/dist/agents/pm.txt +0 -2204
- package/dist/agents/po.txt +0 -1346
- package/dist/agents/qa.txt +0 -1987
- package/dist/agents/sm.txt +0 -658
- package/dist/agents/ux-expert.txt +0 -694
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +0 -2371
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +0 -1620
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +0 -815
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -10952
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +0 -4012
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +0 -3698
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -450
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +0 -973
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -15376
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +0 -2075
- package/dist/teams/team-all.txt +0 -12682
- package/dist/teams/team-fullstack.txt +0 -10421
- package/dist/teams/team-ide-minimal.txt +0 -5103
- package/dist/teams/team-no-ui.txt +0 -8980
- package/docs/GUIDING-PRINCIPLES.md +0 -91
- package/docs/core-architecture.md +0 -219
- package/docs/enhanced-ide-development-workflow.md +0 -248
- package/docs/expansion-packs.md +0 -280
- package/docs/how-to-contribute-with-pull-requests.md +0 -158
- package/docs/user-guide.md +0 -504
- package/docs/versioning-and-releases.md +0 -147
- package/docs/versions.md +0 -48
- package/docs/working-in-the-brownfield.md +0 -597
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash copy.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.2 Agent Development Kit Installation/1.2.2 - Basic Project Structure - txt.txt +0 -25
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.1 - settings.py +0 -34
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.2 - main.py - Base Application.py +0 -70
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +0 -26
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
- package/expansion-packs/README.md +0 -3
- package/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +0 -13
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +0 -71
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +0 -78
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +0 -64
- package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +0 -201
- package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +0 -160
- package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +0 -8
- package/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +0 -250
- package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +0 -647
- package/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +0 -110
- package/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +0 -216
- package/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +0 -290
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +0 -613
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +0 -356
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +0 -343
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +0 -253
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +0 -183
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +0 -175
- package/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +0 -14
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +0 -80
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +0 -77
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +0 -78
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +0 -65
- package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +0 -391
- package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +0 -203
- package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +0 -201
- package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +0 -124
- package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +0 -6
- package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +0 -769
- package/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +0 -586
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +0 -110
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +0 -141
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +0 -184
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +0 -290
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +0 -200
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +0 -1030
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +0 -356
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +0 -705
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +0 -256
- package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +0 -183
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +0 -175
- package/expansion-packs/bmad-infrastructure-devops/README.md +0 -147
- package/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +0 -71
- package/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +0 -484
- package/expansion-packs/bmad-infrastructure-devops/config.yaml +0 -9
- package/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +0 -305
- package/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +0 -159
- package/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +0 -153
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +0 -424
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +0 -629
- package/release_notes.md +0 -33
- package/tools/builders/web-builder.js +0 -675
- package/tools/bump-all-versions.js +0 -115
- package/tools/bump-expansion-version.js +0 -90
- package/tools/cli.js +0 -152
- package/tools/installer/README.md +0 -8
- package/tools/installer/bin/bmad.js +0 -585
- package/tools/installer/config/ide-agent-config.yaml +0 -58
- package/tools/installer/config/install.config.yaml +0 -123
- package/tools/installer/lib/config-loader.js +0 -257
- package/tools/installer/lib/file-manager.js +0 -389
- package/tools/installer/lib/ide-base-setup.js +0 -228
- package/tools/installer/lib/ide-setup.js +0 -1441
- package/tools/installer/lib/installer.js +0 -1995
- package/tools/installer/lib/memory-profiler.js +0 -225
- package/tools/installer/lib/module-manager.js +0 -114
- package/tools/installer/lib/resource-locator.js +0 -308
- package/tools/installer/package.json +0 -44
- package/tools/lib/dependency-resolver.js +0 -175
- package/tools/lib/yaml-utils.js +0 -29
- package/tools/md-assets/web-agent-startup-instructions.md +0 -39
- package/tools/preview-release-notes.js +0 -66
- package/tools/shared/bannerArt.js +0 -105
- package/tools/sync-installer-version.js +0 -32
- package/tools/update-expansion-version.js +0 -53
- package/tools/upgraders/v3-to-v4-upgrader.js +0 -672
- package/tools/version-bump.js +0 -94
|
@@ -0,0 +1,776 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const fs = require('fs-extra');
|
|
3
|
+
const yaml = require('js-yaml');
|
|
4
|
+
const crypto = require('node:crypto');
|
|
5
|
+
const { getSourcePath, getModulePath } = require('../../../lib/project-root');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Generates manifest files for installed workflows, agents, and tasks
|
|
9
|
+
*/
|
|
10
|
+
class ManifestGenerator {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.workflows = [];
|
|
13
|
+
this.agents = [];
|
|
14
|
+
this.tasks = [];
|
|
15
|
+
this.tools = [];
|
|
16
|
+
this.modules = [];
|
|
17
|
+
this.files = [];
|
|
18
|
+
this.selectedIdes = [];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Generate all manifests for the installation
|
|
23
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
24
|
+
* @param {Array} selectedModules - Selected modules for installation
|
|
25
|
+
* @param {Array} installedFiles - All installed files (optional, for hash tracking)
|
|
26
|
+
*/
|
|
27
|
+
async generateManifests(bmadDir, selectedModules, installedFiles = [], options = {}) {
|
|
28
|
+
// Create _cfg directory if it doesn't exist
|
|
29
|
+
const cfgDir = path.join(bmadDir, '_cfg');
|
|
30
|
+
await fs.ensureDir(cfgDir);
|
|
31
|
+
|
|
32
|
+
// Store modules list (all modules including preserved ones)
|
|
33
|
+
const preservedModules = options.preservedModules || [];
|
|
34
|
+
this.modules = ['core', ...selectedModules, ...preservedModules];
|
|
35
|
+
this.updatedModules = ['core', ...selectedModules]; // Only these get rescanned
|
|
36
|
+
this.preservedModules = preservedModules; // These stay as-is in CSVs
|
|
37
|
+
this.bmadDir = bmadDir;
|
|
38
|
+
this.allInstalledFiles = installedFiles;
|
|
39
|
+
|
|
40
|
+
if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
|
|
41
|
+
throw new Error('ManifestGenerator requires `options.ides` to be provided – installer should supply the selected IDEs array.');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const resolvedIdes = options.ides ?? [];
|
|
45
|
+
if (!Array.isArray(resolvedIdes)) {
|
|
46
|
+
throw new TypeError('ManifestGenerator expected `options.ides` to be an array.');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Filter out any undefined/null values from IDE list
|
|
50
|
+
this.selectedIdes = resolvedIdes.filter((ide) => ide && typeof ide === 'string');
|
|
51
|
+
|
|
52
|
+
// Collect workflow data
|
|
53
|
+
await this.collectWorkflows(selectedModules);
|
|
54
|
+
|
|
55
|
+
// Collect agent data
|
|
56
|
+
await this.collectAgents(selectedModules);
|
|
57
|
+
|
|
58
|
+
// Collect task data
|
|
59
|
+
await this.collectTasks(selectedModules);
|
|
60
|
+
|
|
61
|
+
// Collect tool data
|
|
62
|
+
await this.collectTools(selectedModules);
|
|
63
|
+
|
|
64
|
+
// Write manifest files and collect their paths
|
|
65
|
+
const manifestFiles = [
|
|
66
|
+
await this.writeMainManifest(cfgDir),
|
|
67
|
+
await this.writeWorkflowManifest(cfgDir),
|
|
68
|
+
await this.writeAgentManifest(cfgDir),
|
|
69
|
+
await this.writeTaskManifest(cfgDir),
|
|
70
|
+
await this.writeToolManifest(cfgDir),
|
|
71
|
+
await this.writeFilesManifest(cfgDir),
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
workflows: this.workflows.length,
|
|
76
|
+
agents: this.agents.length,
|
|
77
|
+
tasks: this.tasks.length,
|
|
78
|
+
tools: this.tools.length,
|
|
79
|
+
files: this.files.length,
|
|
80
|
+
manifestFiles: manifestFiles,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Collect all workflows from core and selected modules
|
|
86
|
+
* Scans the INSTALLED bmad directory, not the source
|
|
87
|
+
*/
|
|
88
|
+
async collectWorkflows(selectedModules) {
|
|
89
|
+
this.workflows = [];
|
|
90
|
+
|
|
91
|
+
// Get core workflows from installed bmad directory
|
|
92
|
+
const corePath = path.join(this.bmadDir, 'core');
|
|
93
|
+
if (await fs.pathExists(corePath)) {
|
|
94
|
+
const coreWorkflows = await this.getWorkflowsFromPath(corePath, 'core');
|
|
95
|
+
this.workflows.push(...coreWorkflows);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Get module workflows from installed bmad directory
|
|
99
|
+
for (const moduleName of selectedModules) {
|
|
100
|
+
const modulePath = path.join(this.bmadDir, moduleName);
|
|
101
|
+
|
|
102
|
+
if (await fs.pathExists(modulePath)) {
|
|
103
|
+
const moduleWorkflows = await this.getWorkflowsFromPath(modulePath, moduleName);
|
|
104
|
+
this.workflows.push(...moduleWorkflows);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Recursively find and parse workflow.yaml files
|
|
111
|
+
*/
|
|
112
|
+
async getWorkflowsFromPath(basePath, moduleName) {
|
|
113
|
+
const workflows = [];
|
|
114
|
+
const workflowsPath = path.join(basePath, 'workflows');
|
|
115
|
+
|
|
116
|
+
if (!(await fs.pathExists(workflowsPath))) {
|
|
117
|
+
return workflows;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Recursively find workflow.yaml files
|
|
121
|
+
const findWorkflows = async (dir, relativePath = '') => {
|
|
122
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
123
|
+
|
|
124
|
+
for (const entry of entries) {
|
|
125
|
+
const fullPath = path.join(dir, entry.name);
|
|
126
|
+
|
|
127
|
+
if (entry.isDirectory()) {
|
|
128
|
+
// Recurse into subdirectories
|
|
129
|
+
const newRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
|
|
130
|
+
await findWorkflows(fullPath, newRelativePath);
|
|
131
|
+
} else if (entry.name === 'workflow.yaml') {
|
|
132
|
+
// Parse workflow file
|
|
133
|
+
try {
|
|
134
|
+
const content = await fs.readFile(fullPath, 'utf8');
|
|
135
|
+
const workflow = yaml.load(content);
|
|
136
|
+
|
|
137
|
+
// Skip template workflows (those with placeholder values)
|
|
138
|
+
if (workflow.name && workflow.name.includes('{') && workflow.name.includes('}')) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (workflow.name && workflow.description) {
|
|
143
|
+
// Build relative path for installation
|
|
144
|
+
const installPath =
|
|
145
|
+
moduleName === 'core'
|
|
146
|
+
? `bmad/core/workflows/${relativePath}/workflow.yaml`
|
|
147
|
+
: `bmad/${moduleName}/workflows/${relativePath}/workflow.yaml`;
|
|
148
|
+
|
|
149
|
+
// Check for standalone property (default: false)
|
|
150
|
+
const standalone = workflow.standalone === true;
|
|
151
|
+
|
|
152
|
+
workflows.push({
|
|
153
|
+
name: workflow.name,
|
|
154
|
+
description: workflow.description.replaceAll('"', '""'), // Escape quotes for CSV
|
|
155
|
+
module: moduleName,
|
|
156
|
+
path: installPath,
|
|
157
|
+
standalone: standalone,
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Add to files list
|
|
161
|
+
this.files.push({
|
|
162
|
+
type: 'workflow',
|
|
163
|
+
name: workflow.name,
|
|
164
|
+
module: moduleName,
|
|
165
|
+
path: installPath,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
} catch (error) {
|
|
169
|
+
console.warn(`Warning: Failed to parse workflow at ${fullPath}: ${error.message}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
await findWorkflows(workflowsPath);
|
|
176
|
+
return workflows;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Collect all agents from core and selected modules
|
|
181
|
+
* Scans the INSTALLED bmad directory, not the source
|
|
182
|
+
*/
|
|
183
|
+
async collectAgents(selectedModules) {
|
|
184
|
+
this.agents = [];
|
|
185
|
+
|
|
186
|
+
// Get core agents from installed bmad directory
|
|
187
|
+
const coreAgentsPath = path.join(this.bmadDir, 'core', 'agents');
|
|
188
|
+
if (await fs.pathExists(coreAgentsPath)) {
|
|
189
|
+
const coreAgents = await this.getAgentsFromDir(coreAgentsPath, 'core');
|
|
190
|
+
this.agents.push(...coreAgents);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Get module agents from installed bmad directory
|
|
194
|
+
for (const moduleName of selectedModules) {
|
|
195
|
+
const agentsPath = path.join(this.bmadDir, moduleName, 'agents');
|
|
196
|
+
|
|
197
|
+
if (await fs.pathExists(agentsPath)) {
|
|
198
|
+
const moduleAgents = await this.getAgentsFromDir(agentsPath, moduleName);
|
|
199
|
+
this.agents.push(...moduleAgents);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Get standalone agents from bmad/agents/ directory
|
|
204
|
+
const standaloneAgentsDir = path.join(this.bmadDir, 'agents');
|
|
205
|
+
if (await fs.pathExists(standaloneAgentsDir)) {
|
|
206
|
+
const agentDirs = await fs.readdir(standaloneAgentsDir, { withFileTypes: true });
|
|
207
|
+
|
|
208
|
+
for (const agentDir of agentDirs) {
|
|
209
|
+
if (!agentDir.isDirectory()) continue;
|
|
210
|
+
|
|
211
|
+
const agentDirPath = path.join(standaloneAgentsDir, agentDir.name);
|
|
212
|
+
const standaloneAgents = await this.getAgentsFromDir(agentDirPath, 'standalone');
|
|
213
|
+
this.agents.push(...standaloneAgents);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Get agents from a directory
|
|
220
|
+
* Only includes compiled .md files (not .agent.yaml source files)
|
|
221
|
+
*/
|
|
222
|
+
async getAgentsFromDir(dirPath, moduleName) {
|
|
223
|
+
const agents = [];
|
|
224
|
+
const files = await fs.readdir(dirPath);
|
|
225
|
+
|
|
226
|
+
for (const file of files) {
|
|
227
|
+
// Only include .md files, skip .agent.yaml source files and README.md
|
|
228
|
+
if (file.endsWith('.md') && !file.endsWith('.agent.yaml') && file.toLowerCase() !== 'readme.md') {
|
|
229
|
+
const filePath = path.join(dirPath, file);
|
|
230
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
231
|
+
|
|
232
|
+
// Skip files that don't contain <agent> tag (e.g., README files)
|
|
233
|
+
if (!content.includes('<agent')) {
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Skip web-only agents
|
|
238
|
+
if (content.includes('localskip="true"')) {
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Extract agent metadata from the XML structure
|
|
243
|
+
const nameMatch = content.match(/name="([^"]+)"/);
|
|
244
|
+
const titleMatch = content.match(/title="([^"]+)"/);
|
|
245
|
+
const iconMatch = content.match(/icon="([^"]+)"/);
|
|
246
|
+
|
|
247
|
+
// Extract persona fields
|
|
248
|
+
const roleMatch = content.match(/<role>([^<]+)<\/role>/);
|
|
249
|
+
const identityMatch = content.match(/<identity>([\s\S]*?)<\/identity>/);
|
|
250
|
+
const styleMatch = content.match(/<communication_style>([\s\S]*?)<\/communication_style>/);
|
|
251
|
+
const principlesMatch = content.match(/<principles>([\s\S]*?)<\/principles>/);
|
|
252
|
+
|
|
253
|
+
// Build relative path for installation
|
|
254
|
+
const installPath = moduleName === 'core' ? `bmad/core/agents/${file}` : `bmad/${moduleName}/agents/${file}`;
|
|
255
|
+
|
|
256
|
+
const agentName = file.replace('.md', '');
|
|
257
|
+
|
|
258
|
+
// Helper function to clean and escape CSV content
|
|
259
|
+
const cleanForCSV = (text) => {
|
|
260
|
+
if (!text) return '';
|
|
261
|
+
return text
|
|
262
|
+
.trim()
|
|
263
|
+
.replaceAll(/\s+/g, ' ') // Normalize whitespace
|
|
264
|
+
.replaceAll('"', '""'); // Escape quotes for CSV
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
agents.push({
|
|
268
|
+
name: agentName,
|
|
269
|
+
displayName: nameMatch ? nameMatch[1] : agentName,
|
|
270
|
+
title: titleMatch ? titleMatch[1] : '',
|
|
271
|
+
icon: iconMatch ? iconMatch[1] : '',
|
|
272
|
+
role: roleMatch ? cleanForCSV(roleMatch[1]) : '',
|
|
273
|
+
identity: identityMatch ? cleanForCSV(identityMatch[1]) : '',
|
|
274
|
+
communicationStyle: styleMatch ? cleanForCSV(styleMatch[1]) : '',
|
|
275
|
+
principles: principlesMatch ? cleanForCSV(principlesMatch[1]) : '',
|
|
276
|
+
module: moduleName,
|
|
277
|
+
path: installPath,
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
// Add to files list
|
|
281
|
+
this.files.push({
|
|
282
|
+
type: 'agent',
|
|
283
|
+
name: agentName,
|
|
284
|
+
module: moduleName,
|
|
285
|
+
path: installPath,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return agents;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Collect all tasks from core and selected modules
|
|
295
|
+
* Scans the INSTALLED bmad directory, not the source
|
|
296
|
+
*/
|
|
297
|
+
async collectTasks(selectedModules) {
|
|
298
|
+
this.tasks = [];
|
|
299
|
+
|
|
300
|
+
// Get core tasks from installed bmad directory
|
|
301
|
+
const coreTasksPath = path.join(this.bmadDir, 'core', 'tasks');
|
|
302
|
+
if (await fs.pathExists(coreTasksPath)) {
|
|
303
|
+
const coreTasks = await this.getTasksFromDir(coreTasksPath, 'core');
|
|
304
|
+
this.tasks.push(...coreTasks);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// Get module tasks from installed bmad directory
|
|
308
|
+
for (const moduleName of selectedModules) {
|
|
309
|
+
const tasksPath = path.join(this.bmadDir, moduleName, 'tasks');
|
|
310
|
+
|
|
311
|
+
if (await fs.pathExists(tasksPath)) {
|
|
312
|
+
const moduleTasks = await this.getTasksFromDir(tasksPath, moduleName);
|
|
313
|
+
this.tasks.push(...moduleTasks);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Get tasks from a directory
|
|
320
|
+
*/
|
|
321
|
+
async getTasksFromDir(dirPath, moduleName) {
|
|
322
|
+
const tasks = [];
|
|
323
|
+
const files = await fs.readdir(dirPath);
|
|
324
|
+
|
|
325
|
+
for (const file of files) {
|
|
326
|
+
// Check for both .xml and .md files
|
|
327
|
+
if (file.endsWith('.xml') || file.endsWith('.md')) {
|
|
328
|
+
const filePath = path.join(dirPath, file);
|
|
329
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
330
|
+
|
|
331
|
+
// Extract task metadata from content if possible
|
|
332
|
+
const nameMatch = content.match(/name="([^"]+)"/);
|
|
333
|
+
|
|
334
|
+
// Try description attribute first, fall back to <objective> element
|
|
335
|
+
const descMatch = content.match(/description="([^"]+)"/);
|
|
336
|
+
const objMatch = content.match(/<objective>([^<]+)<\/objective>/);
|
|
337
|
+
const description = descMatch ? descMatch[1] : objMatch ? objMatch[1].trim() : '';
|
|
338
|
+
|
|
339
|
+
// Check for standalone attribute in <task> tag (default: false)
|
|
340
|
+
const standaloneMatch = content.match(/<task[^>]+standalone="true"/);
|
|
341
|
+
const standalone = !!standaloneMatch;
|
|
342
|
+
|
|
343
|
+
// Build relative path for installation
|
|
344
|
+
const installPath = moduleName === 'core' ? `bmad/core/tasks/${file}` : `bmad/${moduleName}/tasks/${file}`;
|
|
345
|
+
|
|
346
|
+
const taskName = file.replace(/\.(xml|md)$/, '');
|
|
347
|
+
tasks.push({
|
|
348
|
+
name: taskName,
|
|
349
|
+
displayName: nameMatch ? nameMatch[1] : taskName,
|
|
350
|
+
description: description.replaceAll('"', '""'),
|
|
351
|
+
module: moduleName,
|
|
352
|
+
path: installPath,
|
|
353
|
+
standalone: standalone,
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
// Add to files list
|
|
357
|
+
this.files.push({
|
|
358
|
+
type: 'task',
|
|
359
|
+
name: taskName,
|
|
360
|
+
module: moduleName,
|
|
361
|
+
path: installPath,
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
return tasks;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Collect all tools from core and selected modules
|
|
371
|
+
* Scans the INSTALLED bmad directory, not the source
|
|
372
|
+
*/
|
|
373
|
+
async collectTools(selectedModules) {
|
|
374
|
+
this.tools = [];
|
|
375
|
+
|
|
376
|
+
// Get core tools from installed bmad directory
|
|
377
|
+
const coreToolsPath = path.join(this.bmadDir, 'core', 'tools');
|
|
378
|
+
if (await fs.pathExists(coreToolsPath)) {
|
|
379
|
+
const coreTools = await this.getToolsFromDir(coreToolsPath, 'core');
|
|
380
|
+
this.tools.push(...coreTools);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// Get module tools from installed bmad directory
|
|
384
|
+
for (const moduleName of selectedModules) {
|
|
385
|
+
const toolsPath = path.join(this.bmadDir, moduleName, 'tools');
|
|
386
|
+
|
|
387
|
+
if (await fs.pathExists(toolsPath)) {
|
|
388
|
+
const moduleTools = await this.getToolsFromDir(toolsPath, moduleName);
|
|
389
|
+
this.tools.push(...moduleTools);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Get tools from a directory
|
|
396
|
+
*/
|
|
397
|
+
async getToolsFromDir(dirPath, moduleName) {
|
|
398
|
+
const tools = [];
|
|
399
|
+
const files = await fs.readdir(dirPath);
|
|
400
|
+
|
|
401
|
+
for (const file of files) {
|
|
402
|
+
// Check for both .xml and .md files
|
|
403
|
+
if (file.endsWith('.xml') || file.endsWith('.md')) {
|
|
404
|
+
const filePath = path.join(dirPath, file);
|
|
405
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
406
|
+
|
|
407
|
+
// Extract tool metadata from content if possible
|
|
408
|
+
const nameMatch = content.match(/name="([^"]+)"/);
|
|
409
|
+
|
|
410
|
+
// Try description attribute first, fall back to <objective> element
|
|
411
|
+
const descMatch = content.match(/description="([^"]+)"/);
|
|
412
|
+
const objMatch = content.match(/<objective>([^<]+)<\/objective>/);
|
|
413
|
+
const description = descMatch ? descMatch[1] : objMatch ? objMatch[1].trim() : '';
|
|
414
|
+
|
|
415
|
+
// Check for standalone attribute in <tool> tag (default: false)
|
|
416
|
+
const standaloneMatch = content.match(/<tool[^>]+standalone="true"/);
|
|
417
|
+
const standalone = !!standaloneMatch;
|
|
418
|
+
|
|
419
|
+
// Build relative path for installation
|
|
420
|
+
const installPath = moduleName === 'core' ? `bmad/core/tools/${file}` : `bmad/${moduleName}/tools/${file}`;
|
|
421
|
+
|
|
422
|
+
const toolName = file.replace(/\.(xml|md)$/, '');
|
|
423
|
+
tools.push({
|
|
424
|
+
name: toolName,
|
|
425
|
+
displayName: nameMatch ? nameMatch[1] : toolName,
|
|
426
|
+
description: description.replaceAll('"', '""'),
|
|
427
|
+
module: moduleName,
|
|
428
|
+
path: installPath,
|
|
429
|
+
standalone: standalone,
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
// Add to files list
|
|
433
|
+
this.files.push({
|
|
434
|
+
type: 'tool',
|
|
435
|
+
name: toolName,
|
|
436
|
+
module: moduleName,
|
|
437
|
+
path: installPath,
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
return tools;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* Write main manifest as YAML with installation info only
|
|
447
|
+
* @returns {string} Path to the manifest file
|
|
448
|
+
*/
|
|
449
|
+
async writeMainManifest(cfgDir) {
|
|
450
|
+
const manifestPath = path.join(cfgDir, 'manifest.yaml');
|
|
451
|
+
|
|
452
|
+
const manifest = {
|
|
453
|
+
installation: {
|
|
454
|
+
version: '6.0.0-alpha.0',
|
|
455
|
+
installDate: new Date().toISOString(),
|
|
456
|
+
lastUpdated: new Date().toISOString(),
|
|
457
|
+
},
|
|
458
|
+
modules: this.modules,
|
|
459
|
+
ides: this.selectedIdes,
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
const yamlStr = yaml.dump(manifest, {
|
|
463
|
+
indent: 2,
|
|
464
|
+
lineWidth: -1,
|
|
465
|
+
noRefs: true,
|
|
466
|
+
sortKeys: false,
|
|
467
|
+
});
|
|
468
|
+
|
|
469
|
+
await fs.writeFile(manifestPath, yamlStr);
|
|
470
|
+
return manifestPath;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Read existing CSV and preserve rows for modules NOT being updated
|
|
475
|
+
* @param {string} csvPath - Path to existing CSV file
|
|
476
|
+
* @param {number} moduleColumnIndex - Which column contains the module name (0-indexed)
|
|
477
|
+
* @param {Array<string>} expectedColumns - Expected column names in order
|
|
478
|
+
* @param {Object} defaultValues - Default values for missing columns
|
|
479
|
+
* @returns {Array} Preserved CSV rows (without header), upgraded to match expected columns
|
|
480
|
+
*/
|
|
481
|
+
async getPreservedCsvRows(csvPath, moduleColumnIndex, expectedColumns, defaultValues = {}) {
|
|
482
|
+
if (!(await fs.pathExists(csvPath)) || this.preservedModules.length === 0) {
|
|
483
|
+
return [];
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
try {
|
|
487
|
+
const content = await fs.readFile(csvPath, 'utf8');
|
|
488
|
+
const lines = content.trim().split('\n');
|
|
489
|
+
|
|
490
|
+
if (lines.length < 2) {
|
|
491
|
+
return []; // No data rows
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// Parse header to understand old schema
|
|
495
|
+
const header = lines[0];
|
|
496
|
+
const headerColumns = header.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g) || [];
|
|
497
|
+
const oldColumns = headerColumns.map((c) => c.replaceAll(/^"|"$/g, ''));
|
|
498
|
+
|
|
499
|
+
// Skip header row for data
|
|
500
|
+
const dataRows = lines.slice(1);
|
|
501
|
+
const preservedRows = [];
|
|
502
|
+
|
|
503
|
+
for (const row of dataRows) {
|
|
504
|
+
// Simple CSV parsing (handles quoted values)
|
|
505
|
+
const columns = row.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g) || [];
|
|
506
|
+
const cleanColumns = columns.map((c) => c.replaceAll(/^"|"$/g, ''));
|
|
507
|
+
|
|
508
|
+
const moduleValue = cleanColumns[moduleColumnIndex];
|
|
509
|
+
|
|
510
|
+
// Keep this row if it belongs to a preserved module
|
|
511
|
+
if (this.preservedModules.includes(moduleValue)) {
|
|
512
|
+
// Upgrade row to match expected schema
|
|
513
|
+
const upgradedRow = this.upgradeRowToSchema(cleanColumns, oldColumns, expectedColumns, defaultValues);
|
|
514
|
+
preservedRows.push(upgradedRow);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
return preservedRows;
|
|
519
|
+
} catch (error) {
|
|
520
|
+
console.warn(`Warning: Failed to read existing CSV ${csvPath}:`, error.message);
|
|
521
|
+
return [];
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
/**
|
|
526
|
+
* Upgrade a CSV row from old schema to new schema
|
|
527
|
+
* @param {Array<string>} rowValues - Values from old row
|
|
528
|
+
* @param {Array<string>} oldColumns - Old column names
|
|
529
|
+
* @param {Array<string>} newColumns - New column names
|
|
530
|
+
* @param {Object} defaultValues - Default values for missing columns
|
|
531
|
+
* @returns {string} Upgraded CSV row
|
|
532
|
+
*/
|
|
533
|
+
upgradeRowToSchema(rowValues, oldColumns, newColumns, defaultValues) {
|
|
534
|
+
const upgradedValues = [];
|
|
535
|
+
|
|
536
|
+
for (const newCol of newColumns) {
|
|
537
|
+
const oldIndex = oldColumns.indexOf(newCol);
|
|
538
|
+
|
|
539
|
+
if (oldIndex !== -1 && oldIndex < rowValues.length) {
|
|
540
|
+
// Column exists in old schema, use its value
|
|
541
|
+
upgradedValues.push(rowValues[oldIndex]);
|
|
542
|
+
} else if (defaultValues[newCol] === undefined) {
|
|
543
|
+
// Column missing, no default provided
|
|
544
|
+
upgradedValues.push('');
|
|
545
|
+
} else {
|
|
546
|
+
// Column missing, use default value
|
|
547
|
+
upgradedValues.push(defaultValues[newCol]);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
// Properly quote values and join
|
|
552
|
+
return upgradedValues.map((v) => `"${v}"`).join(',');
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* Write workflow manifest CSV
|
|
557
|
+
* @returns {string} Path to the manifest file
|
|
558
|
+
*/
|
|
559
|
+
async writeWorkflowManifest(cfgDir) {
|
|
560
|
+
const csvPath = path.join(cfgDir, 'workflow-manifest.csv');
|
|
561
|
+
|
|
562
|
+
// Define expected columns and defaults for schema upgrade
|
|
563
|
+
const expectedColumns = ['name', 'description', 'module', 'path', 'standalone'];
|
|
564
|
+
const defaultValues = { standalone: 'false' };
|
|
565
|
+
|
|
566
|
+
// Get preserved rows from existing CSV (module is column 2, 0-indexed)
|
|
567
|
+
const preservedRows = await this.getPreservedCsvRows(csvPath, 2, expectedColumns, defaultValues);
|
|
568
|
+
|
|
569
|
+
// Create CSV header with standalone column
|
|
570
|
+
let csv = 'name,description,module,path,standalone\n';
|
|
571
|
+
|
|
572
|
+
// Add new rows for updated modules
|
|
573
|
+
for (const workflow of this.workflows) {
|
|
574
|
+
csv += `"${workflow.name}","${workflow.description}","${workflow.module}","${workflow.path}","${workflow.standalone}"\n`;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// Add preserved rows for modules we didn't update
|
|
578
|
+
for (const row of preservedRows) {
|
|
579
|
+
csv += row + '\n';
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
await fs.writeFile(csvPath, csv);
|
|
583
|
+
return csvPath;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* Write agent manifest CSV
|
|
588
|
+
* @returns {string} Path to the manifest file
|
|
589
|
+
*/
|
|
590
|
+
async writeAgentManifest(cfgDir) {
|
|
591
|
+
const csvPath = path.join(cfgDir, 'agent-manifest.csv');
|
|
592
|
+
|
|
593
|
+
// Define expected columns (no schema changes for agents currently)
|
|
594
|
+
const expectedColumns = [
|
|
595
|
+
'name',
|
|
596
|
+
'displayName',
|
|
597
|
+
'title',
|
|
598
|
+
'icon',
|
|
599
|
+
'role',
|
|
600
|
+
'identity',
|
|
601
|
+
'communicationStyle',
|
|
602
|
+
'principles',
|
|
603
|
+
'module',
|
|
604
|
+
'path',
|
|
605
|
+
];
|
|
606
|
+
|
|
607
|
+
// Get preserved rows from existing CSV (module is column 8, 0-indexed)
|
|
608
|
+
const preservedRows = await this.getPreservedCsvRows(csvPath, 8, expectedColumns);
|
|
609
|
+
|
|
610
|
+
// Create CSV header with persona fields
|
|
611
|
+
let csv = 'name,displayName,title,icon,role,identity,communicationStyle,principles,module,path\n';
|
|
612
|
+
|
|
613
|
+
// Add new rows for updated modules
|
|
614
|
+
for (const agent of this.agents) {
|
|
615
|
+
csv += `"${agent.name}","${agent.displayName}","${agent.title}","${agent.icon}","${agent.role}","${agent.identity}","${agent.communicationStyle}","${agent.principles}","${agent.module}","${agent.path}"\n`;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
// Add preserved rows for modules we didn't update
|
|
619
|
+
for (const row of preservedRows) {
|
|
620
|
+
csv += row + '\n';
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
await fs.writeFile(csvPath, csv);
|
|
624
|
+
return csvPath;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* Write task manifest CSV
|
|
629
|
+
* @returns {string} Path to the manifest file
|
|
630
|
+
*/
|
|
631
|
+
async writeTaskManifest(cfgDir) {
|
|
632
|
+
const csvPath = path.join(cfgDir, 'task-manifest.csv');
|
|
633
|
+
|
|
634
|
+
// Define expected columns and defaults for schema upgrade
|
|
635
|
+
const expectedColumns = ['name', 'displayName', 'description', 'module', 'path', 'standalone'];
|
|
636
|
+
const defaultValues = { standalone: 'false' };
|
|
637
|
+
|
|
638
|
+
// Get preserved rows from existing CSV (module is column 3, 0-indexed)
|
|
639
|
+
const preservedRows = await this.getPreservedCsvRows(csvPath, 3, expectedColumns, defaultValues);
|
|
640
|
+
|
|
641
|
+
// Create CSV header with standalone column
|
|
642
|
+
let csv = 'name,displayName,description,module,path,standalone\n';
|
|
643
|
+
|
|
644
|
+
// Add new rows for updated modules
|
|
645
|
+
for (const task of this.tasks) {
|
|
646
|
+
csv += `"${task.name}","${task.displayName}","${task.description}","${task.module}","${task.path}","${task.standalone}"\n`;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
// Add preserved rows for modules we didn't update
|
|
650
|
+
for (const row of preservedRows) {
|
|
651
|
+
csv += row + '\n';
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
await fs.writeFile(csvPath, csv);
|
|
655
|
+
return csvPath;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Write tool manifest CSV
|
|
660
|
+
* @returns {string} Path to the manifest file
|
|
661
|
+
*/
|
|
662
|
+
async writeToolManifest(cfgDir) {
|
|
663
|
+
const csvPath = path.join(cfgDir, 'tool-manifest.csv');
|
|
664
|
+
|
|
665
|
+
// Define expected columns and defaults for schema upgrade
|
|
666
|
+
const expectedColumns = ['name', 'displayName', 'description', 'module', 'path', 'standalone'];
|
|
667
|
+
const defaultValues = { standalone: 'false' };
|
|
668
|
+
|
|
669
|
+
// Get preserved rows from existing CSV (module is column 3, 0-indexed)
|
|
670
|
+
const preservedRows = await this.getPreservedCsvRows(csvPath, 3, expectedColumns, defaultValues);
|
|
671
|
+
|
|
672
|
+
// Create CSV header with standalone column
|
|
673
|
+
let csv = 'name,displayName,description,module,path,standalone\n';
|
|
674
|
+
|
|
675
|
+
// Add new rows for updated modules
|
|
676
|
+
for (const tool of this.tools) {
|
|
677
|
+
csv += `"${tool.name}","${tool.displayName}","${tool.description}","${tool.module}","${tool.path}","${tool.standalone}"\n`;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
// Add preserved rows for modules we didn't update
|
|
681
|
+
for (const row of preservedRows) {
|
|
682
|
+
csv += row + '\n';
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
await fs.writeFile(csvPath, csv);
|
|
686
|
+
return csvPath;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/**
|
|
690
|
+
* Write files manifest CSV
|
|
691
|
+
*/
|
|
692
|
+
/**
|
|
693
|
+
* Calculate SHA256 hash of a file
|
|
694
|
+
* @param {string} filePath - Path to file
|
|
695
|
+
* @returns {string} SHA256 hash
|
|
696
|
+
*/
|
|
697
|
+
async calculateFileHash(filePath) {
|
|
698
|
+
try {
|
|
699
|
+
const content = await fs.readFile(filePath);
|
|
700
|
+
return crypto.createHash('sha256').update(content).digest('hex');
|
|
701
|
+
} catch {
|
|
702
|
+
return '';
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
/**
|
|
707
|
+
* @returns {string} Path to the manifest file
|
|
708
|
+
*/
|
|
709
|
+
async writeFilesManifest(cfgDir) {
|
|
710
|
+
const csvPath = path.join(cfgDir, 'files-manifest.csv');
|
|
711
|
+
|
|
712
|
+
// Get preserved rows from existing CSV (module is column 2, 0-indexed)
|
|
713
|
+
const preservedRows = await this.getPreservedCsvRows(csvPath, 2);
|
|
714
|
+
|
|
715
|
+
// Create CSV header with hash column
|
|
716
|
+
let csv = 'type,name,module,path,hash\n';
|
|
717
|
+
|
|
718
|
+
// If we have ALL installed files, use those instead of just workflows/agents/tasks
|
|
719
|
+
const allFiles = [];
|
|
720
|
+
if (this.allInstalledFiles && this.allInstalledFiles.length > 0) {
|
|
721
|
+
// Process all installed files
|
|
722
|
+
for (const filePath of this.allInstalledFiles) {
|
|
723
|
+
const relativePath = 'bmad' + filePath.replace(this.bmadDir, '').replaceAll('\\', '/');
|
|
724
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
725
|
+
const fileName = path.basename(filePath, ext);
|
|
726
|
+
|
|
727
|
+
// Determine module from path
|
|
728
|
+
const pathParts = relativePath.split('/');
|
|
729
|
+
const module = pathParts.length > 1 ? pathParts[1] : 'unknown';
|
|
730
|
+
|
|
731
|
+
// Calculate hash
|
|
732
|
+
const hash = await this.calculateFileHash(filePath);
|
|
733
|
+
|
|
734
|
+
allFiles.push({
|
|
735
|
+
type: ext.slice(1) || 'file',
|
|
736
|
+
name: fileName,
|
|
737
|
+
module: module,
|
|
738
|
+
path: relativePath,
|
|
739
|
+
hash: hash,
|
|
740
|
+
});
|
|
741
|
+
}
|
|
742
|
+
} else {
|
|
743
|
+
// Fallback: use the collected workflows/agents/tasks
|
|
744
|
+
for (const file of this.files) {
|
|
745
|
+
const filePath = path.join(this.bmadDir, file.path.replace('bmad/', ''));
|
|
746
|
+
const hash = await this.calculateFileHash(filePath);
|
|
747
|
+
allFiles.push({
|
|
748
|
+
...file,
|
|
749
|
+
hash: hash,
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
// Sort files by module, then type, then name
|
|
755
|
+
allFiles.sort((a, b) => {
|
|
756
|
+
if (a.module !== b.module) return a.module.localeCompare(b.module);
|
|
757
|
+
if (a.type !== b.type) return a.type.localeCompare(b.type);
|
|
758
|
+
return a.name.localeCompare(b.name);
|
|
759
|
+
});
|
|
760
|
+
|
|
761
|
+
// Add rows for updated modules
|
|
762
|
+
for (const file of allFiles) {
|
|
763
|
+
csv += `"${file.type}","${file.name}","${file.module}","${file.path}","${file.hash}"\n`;
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
// Add preserved rows for modules we didn't update
|
|
767
|
+
for (const row of preservedRows) {
|
|
768
|
+
csv += row + '\n';
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
await fs.writeFile(csvPath, csv);
|
|
772
|
+
return csvPath;
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
module.exports = { ManifestGenerator };
|