bmad-method 5.1.3 → 6.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/FUNDING.yaml +2 -2
- package/.github/ISSUE_TEMPLATE/config.yaml +1 -0
- package/.github/ISSUE_TEMPLATE/idea_submission.md +109 -0
- package/.github/workflows/discord.yaml +1 -10
- package/.github/workflows/format-check.yaml +3 -2
- package/.github/workflows/manual-release.yaml +2 -2
- package/.nvmrc +1 -0
- package/.vscode/settings.json +34 -9
- package/CHANGELOG.md +211 -577
- package/CONTRIBUTING.md +130 -60
- package/LICENSE +6 -1
- package/docs/codebase-flattener.md +19 -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 +32 -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/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 +196 -0
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +355 -0
- package/docs/installers-bundlers/web-bundler-usage.md +54 -0
- package/eslint.config.mjs +17 -7
- package/package.json +26 -35
- package/prettier.config.mjs +1 -1
- package/readme.md +216 -0
- package/src/core/_module-installer/install-menu-config.yaml +24 -0
- package/src/core/_module-installer/installer.js +68 -0
- package/src/core/agents/bmad-master.md +27 -0
- package/src/core/agents/bmad-web-orchestrator.md +71 -0
- package/src/core/tasks/adv-elicit-methods.csv +39 -0
- package/src/core/tasks/adv-elicit.md +109 -0
- package/src/core/tasks/index-docs.md +69 -0
- package/src/core/tasks/shard-doc.md +57 -0
- package/src/core/tasks/validate-workflow.md +92 -0
- package/src/core/tasks/workflow.md +141 -0
- package/src/core/workflows/bmad-init/instructions.md +79 -0
- package/src/core/workflows/bmad-init/workflow.yaml +24 -0
- package/src/core/workflows/party-mode/instructions.md +181 -0
- package/src/core/workflows/party-mode/workflow.yaml +24 -0
- package/src/modules/bmb/_module-installer/install-menu-config.yaml +16 -0
- package/src/modules/bmb/agents/bmad-builder.md +30 -0
- package/src/modules/bmb/workflows/convert-legacy/README.md +262 -0
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +204 -0
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +328 -0
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +35 -0
- package/src/modules/bmb/workflows/create-agent/README.md +268 -0
- package/src/modules/bmb/workflows/create-agent/agent-architecture.md +412 -0
- package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +757 -0
- package/src/modules/bmb/workflows/create-agent/agent-types.md +177 -0
- package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +174 -0
- package/src/modules/bmb/workflows/create-agent/checklist.md +134 -0
- package/src/modules/bmb/workflows/create-agent/communication-styles.md +240 -0
- package/src/modules/bmb/workflows/create-agent/instructions.md +340 -0
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +39 -0
- package/src/modules/bmb/workflows/create-module/README.md +218 -0
- package/src/modules/bmb/workflows/create-module/brainstorm-context.md +137 -0
- package/src/modules/bmb/workflows/create-module/checklist.md +245 -0
- package/src/modules/bmb/workflows/create-module/installer-templates/install-module-config.yaml +132 -0
- package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +231 -0
- package/src/modules/bmb/workflows/create-module/instructions.md +509 -0
- package/src/modules/bmb/workflows/create-module/module-structure.md +310 -0
- package/src/modules/bmb/workflows/create-module/workflow.yaml +47 -0
- package/src/modules/bmb/workflows/create-workflow/README.md +216 -0
- package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +197 -0
- package/src/modules/bmb/workflows/create-workflow/checklist.md +72 -0
- package/src/modules/bmb/workflows/create-workflow/instructions.md +267 -0
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +456 -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 +12 -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 +35 -0
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +42 -0
- package/src/modules/bmb/workflows/edit-workflow/README.md +63 -0
- package/src/modules/bmb/workflows/edit-workflow/checklist.md +70 -0
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +170 -0
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +34 -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 +265 -0
- package/src/modules/bmb/workflows/module-brief/template.md +275 -0
- package/src/modules/bmb/workflows/module-brief/workflow.yaml +30 -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 +255 -0
- package/src/modules/bmb/workflows/redoc/workflow.yaml +33 -0
- package/src/modules/bmm/_module-installer/assets/bmm-kb.md +1 -0
- package/src/modules/bmm/_module-installer/assets/technical-decisions-template.md +30 -0
- package/src/modules/bmm/_module-installer/install-menu-config.yaml +49 -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.md +26 -0
- package/src/modules/bmm/agents/architect.md +29 -0
- package/src/modules/bmm/agents/dev.md +61 -0
- package/src/modules/bmm/agents/game-architect.md +26 -0
- package/src/modules/bmm/agents/game-designer.md +27 -0
- package/src/modules/bmm/agents/game-dev.md +28 -0
- package/src/modules/bmm/agents/pm.md +26 -0
- package/src/modules/bmm/agents/po.md +25 -0
- package/src/modules/bmm/agents/sm.md +29 -0
- package/src/modules/bmm/agents/tea.md +32 -0
- package/src/modules/bmm/agents/ux-expert.md +24 -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/api-documenter.md +85 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/codebase-analyzer.md +64 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/data-analyst.md +84 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/dependency-mapper.md +67 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/document-reviewer.md +85 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/epic-optimizer.md +66 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/market-researcher.md +34 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/pattern-detector.md +67 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/requirements-analyst.md +61 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/tech-debt-auditor.md +89 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/technical-decisions-curator.md +146 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/technical-evaluator.md +51 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/test-coverage-analyzer.md +91 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/trend-spotter.md +99 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/user-journey-mapper.md +101 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/user-researcher.md +56 -0
- package/src/modules/bmm/tasks/daily-standup.md +91 -0
- package/src/modules/bmm/tasks/retrospective.md +110 -0
- package/src/modules/bmm/teams/team-all.yaml +7 -0
- package/src/modules/bmm/teams/team-dev.yaml +14 -0
- package/src/modules/bmm/teams/team-gamedev.yaml +9 -0
- package/src/modules/bmm/testarch/atdd.md +40 -0
- package/src/modules/bmm/testarch/automate.md +38 -0
- package/src/modules/bmm/testarch/ci.md +39 -0
- package/src/modules/bmm/testarch/framework.md +41 -0
- package/src/modules/bmm/testarch/nfr-assess.md +38 -0
- package/src/modules/bmm/testarch/risk-profile.md +38 -0
- package/src/modules/bmm/testarch/tea-commands.csv +11 -0
- package/src/modules/bmm/testarch/tea-gate.md +38 -0
- package/src/modules/bmm/testarch/tea-knowledge.md +275 -0
- package/src/modules/bmm/testarch/test-design.md +39 -0
- package/{bmad-core/data → src/modules/bmm/testarch}/test-levels-framework.md +2 -0
- package/{bmad-core/data → src/modules/bmm/testarch}/test-priorities-matrix.md +2 -0
- package/src/modules/bmm/testarch/trace-requirements.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 +47 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +22 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +38 -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 +21 -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 +517 -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 +34 -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 +353 -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 +33 -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 +370 -0
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +553 -0
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +91 -0
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +442 -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 +149 -0
- package/src/modules/bmm/workflows/2-plan/README.md +203 -0
- package/src/modules/bmm/workflows/2-plan/checklist.md +369 -0
- package/src/modules/bmm/workflows/2-plan/gdd/README.md +222 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/action-platformer.md +45 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/adventure.md +84 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/card-game.md +76 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/fighting.md +89 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/horror.md +86 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/idle-incremental.md +78 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/metroidvania.md +87 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/moba.md +74 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/party-game.md +79 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/puzzle.md +58 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/racing.md +88 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/rhythm.md +79 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/roguelike.md +69 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/rpg.md +70 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/sandbox.md +79 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/shooter.md +62 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/simulation.md +73 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/sports.md +75 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/strategy.md +71 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/survival.md +79 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/text-based.md +91 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/tower-defense.md +79 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/turn-based-tactics.md +88 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types/visual-novel.md +89 -0
- package/src/modules/bmm/workflows/2-plan/gdd/game-types.csv +25 -0
- package/src/modules/bmm/workflows/2-plan/gdd/gdd-template.md +159 -0
- package/src/modules/bmm/workflows/2-plan/gdd/instructions-gdd.md +480 -0
- package/src/modules/bmm/workflows/2-plan/instructions-router.md +222 -0
- package/src/modules/bmm/workflows/2-plan/narrative/instructions-narrative.md +517 -0
- package/src/modules/bmm/workflows/2-plan/narrative/narrative-template.md +195 -0
- package/src/modules/bmm/workflows/2-plan/prd/analysis-template.md +53 -0
- package/src/modules/bmm/workflows/2-plan/prd/epics-template.md +18 -0
- package/src/modules/bmm/workflows/2-plan/prd/instructions-lg.md +267 -0
- package/src/modules/bmm/workflows/2-plan/prd/instructions-med.md +251 -0
- package/src/modules/bmm/workflows/2-plan/prd/prd-template.md +73 -0
- package/src/modules/bmm/workflows/2-plan/tech-spec/instructions-sm.md +137 -0
- package/src/modules/bmm/workflows/2-plan/tech-spec/tech-spec-template.md +59 -0
- package/src/modules/bmm/workflows/2-plan/ux/instructions-ux.md +360 -0
- package/src/modules/bmm/workflows/2-plan/ux/ux-spec-template.md +162 -0
- package/src/modules/bmm/workflows/2-plan/workflow.yaml +60 -0
- package/src/modules/bmm/workflows/3-solutioning/ADR-template.md +74 -0
- package/src/modules/bmm/workflows/3-solutioning/README.md +565 -0
- package/src/modules/bmm/workflows/3-solutioning/checklist.md +170 -0
- package/src/modules/bmm/workflows/3-solutioning/instructions.md +661 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/backend-questions.md +490 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/cli-questions.md +337 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/data-questions.md +472 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/desktop-questions.md +299 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/embedded-questions.md +118 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/extension-questions.md +374 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/game-questions.md +133 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/infra-questions.md +484 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/library-questions.md +146 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/mobile-questions.md +110 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/project-types.csv +12 -0
- package/src/modules/bmm/workflows/3-solutioning/project-types/web-questions.md +136 -0
- package/src/modules/bmm/workflows/3-solutioning/tech-spec/README.md +195 -0
- package/src/modules/bmm/workflows/3-solutioning/tech-spec/checklist.md +17 -0
- package/src/modules/bmm/workflows/3-solutioning/tech-spec/instructions.md +73 -0
- package/src/modules/bmm/workflows/3-solutioning/tech-spec/template.md +76 -0
- package/src/modules/bmm/workflows/3-solutioning/tech-spec/workflow.yaml +51 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/backend-service-architecture.md +66 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/cli-tool-architecture.md +66 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/data-pipeline-architecture.md +66 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/desktop-app-architecture.md +66 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/embedded-firmware-architecture.md +66 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-architecture.md +244 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-godot-guide.md +428 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-unity-guide.md +333 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-web-guide.md +528 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/infrastructure-architecture.md +66 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/library-package-architecture.md +66 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/mobile-app-architecture.md +66 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/registry.csv +172 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/web-api-architecture.md +66 -0
- package/src/modules/bmm/workflows/3-solutioning/templates/web-fullstack-architecture.md +277 -0
- package/src/modules/bmm/workflows/3-solutioning/workflow.yaml +65 -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 +190 -0
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +35 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/README.md +42 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +39 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +81 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/template.md +57 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +72 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +84 -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 +87 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +53 -0
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +391 -0
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +41 -0
- package/src/modules/bmm/workflows/4-implementation/review-story/README.md +72 -0
- package/src/modules/bmm/workflows/4-implementation/review-story/backlog_template.md +12 -0
- package/src/modules/bmm/workflows/4-implementation/review-story/checklist.md +22 -0
- package/src/modules/bmm/workflows/4-implementation/review-story/instructions.md +176 -0
- package/src/modules/bmm/workflows/4-implementation/review-story/workflow.yaml +99 -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 +76 -0
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +56 -0
- package/src/modules/cis/_module-installer/install-menu-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.md +24 -0
- package/src/modules/cis/agents/creative-problem-solver.md +24 -0
- package/src/modules/cis/agents/design-thinking-coach.md +24 -0
- package/src/modules/cis/agents/innovation-strategist.md +24 -0
- package/src/modules/cis/agents/storyteller.md +24 -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/brainstorming/README.md +271 -0
- package/src/modules/cis/workflows/brainstorming/brain-methods.csv +36 -0
- package/src/modules/cis/workflows/brainstorming/instructions.md +310 -0
- package/src/modules/cis/workflows/brainstorming/template.md +102 -0
- package/src/modules/cis/workflows/brainstorming/workflow.yaml +30 -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 +29 -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 +29 -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 +29 -0
- package/src/modules/cis/workflows/storytelling/README.md +58 -0
- package/src/modules/cis/workflows/storytelling/instructions.md +275 -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 +29 -0
- package/src/utility/models/agent-activation-ide.xml +51 -0
- package/src/utility/models/agent-config-template.md +23 -0
- package/tools/cli/bmad-cli.js +42 -0
- package/tools/cli/bundlers/bundle-web.js +157 -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 +880 -0
- package/tools/cli/commands/install.js +41 -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 +383 -0
- package/tools/cli/installers/lib/core/dependency-resolver.js +721 -0
- package/tools/cli/installers/lib/core/detector.js +208 -0
- package/tools/cli/installers/lib/core/installer.js +1070 -0
- package/tools/cli/installers/lib/core/manifest-generator.js +385 -0
- package/tools/cli/installers/lib/core/manifest.js +484 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +281 -0
- package/tools/cli/installers/lib/ide/auggie.js +271 -0
- package/tools/cli/installers/lib/ide/claude-code.js +625 -0
- package/tools/cli/installers/lib/ide/cline.js +301 -0
- package/tools/cli/installers/lib/ide/codex.js +267 -0
- package/tools/cli/installers/lib/ide/crush.js +204 -0
- package/tools/cli/installers/lib/ide/cursor.js +224 -0
- package/tools/cli/installers/lib/ide/gemini.js +160 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +289 -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 +203 -0
- package/tools/cli/installers/lib/ide/qwen.js +188 -0
- package/tools/cli/installers/lib/ide/roo.js +288 -0
- package/tools/cli/installers/lib/ide/trae.js +182 -0
- package/tools/cli/installers/lib/ide/windsurf.js +149 -0
- package/tools/cli/installers/lib/ide/workflow-command-generator.js +162 -0
- package/tools/cli/installers/lib/ide/workflow-command-template.md +11 -0
- package/tools/cli/installers/lib/modules/manager.js +452 -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 +516 -0
- package/tools/cli/lib/xml-handler.js +183 -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/regenerate-manifests.js +28 -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/platform-codes.yaml +127 -0
- package/tools/test-agents/captain-kirk-commander.md +110 -0
- package/tools/test-agents/data-operations-android.md +123 -0
- package/tools/test-agents/geordi-chief-engineer.md +135 -0
- package/tools/test-agents/isabella-martinez-ethicist.md +109 -0
- package/tools/test-agents/marcus-thompson-security.md +109 -0
- package/tools/test-agents/maya-patel-pragmatist.md +82 -0
- package/tools/test-agents/picard-diplomat-captain.md +134 -0
- package/tools/test-agents/spock-science-officer.md +124 -0
- package/tools/test-agents/william-smithers-technocrat.md +71 -0
- package/tools/test-agents/zara-chen-designer.md +94 -0
- package/tools/validate-bundles.js +87 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -22
- package/README.md +0 -221
- 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/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/bmad-npx-wrapper.js +0 -39
- 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,116 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('node:path');
|
|
3
|
+
const yaml = require('js-yaml');
|
|
4
|
+
const { getProjectRoot } = require('./project-root');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Platform Codes Manager
|
|
8
|
+
* Loads and provides access to the centralized platform codes configuration
|
|
9
|
+
*/
|
|
10
|
+
class PlatformCodes {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.configPath = path.join(getProjectRoot(), 'tools', 'platform-codes.yaml');
|
|
13
|
+
this.loadConfig();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Load the platform codes configuration
|
|
18
|
+
*/
|
|
19
|
+
loadConfig() {
|
|
20
|
+
try {
|
|
21
|
+
if (fs.existsSync(this.configPath)) {
|
|
22
|
+
const content = fs.readFileSync(this.configPath, 'utf8');
|
|
23
|
+
this.config = yaml.load(content);
|
|
24
|
+
} else {
|
|
25
|
+
console.warn(`Platform codes config not found at ${this.configPath}`);
|
|
26
|
+
this.config = { platforms: {} };
|
|
27
|
+
}
|
|
28
|
+
} catch (error) {
|
|
29
|
+
console.error(`Error loading platform codes: ${error.message}`);
|
|
30
|
+
this.config = { platforms: {} };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Get all platform codes
|
|
36
|
+
* @returns {Object} All platform configurations
|
|
37
|
+
*/
|
|
38
|
+
getAllPlatforms() {
|
|
39
|
+
return this.config.platforms || {};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Get a specific platform configuration
|
|
44
|
+
* @param {string} code - Platform code
|
|
45
|
+
* @returns {Object|null} Platform configuration or null if not found
|
|
46
|
+
*/
|
|
47
|
+
getPlatform(code) {
|
|
48
|
+
return this.config.platforms[code] || null;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Check if a platform code is valid
|
|
53
|
+
* @param {string} code - Platform code to validate
|
|
54
|
+
* @returns {boolean} True if valid
|
|
55
|
+
*/
|
|
56
|
+
isValidPlatform(code) {
|
|
57
|
+
return code in this.config.platforms;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Get all preferred platforms
|
|
62
|
+
* @returns {Array} Array of preferred platform codes
|
|
63
|
+
*/
|
|
64
|
+
getPreferredPlatforms() {
|
|
65
|
+
return Object.entries(this.config.platforms)
|
|
66
|
+
.filter(([, config]) => config.preferred)
|
|
67
|
+
.map(([code]) => code);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Get platforms by category
|
|
72
|
+
* @param {string} category - Category to filter by
|
|
73
|
+
* @returns {Array} Array of platform codes in the category
|
|
74
|
+
*/
|
|
75
|
+
getPlatformsByCategory(category) {
|
|
76
|
+
return Object.entries(this.config.platforms)
|
|
77
|
+
.filter(([, config]) => config.category === category)
|
|
78
|
+
.map(([code]) => code);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Get platform display name
|
|
83
|
+
* @param {string} code - Platform code
|
|
84
|
+
* @returns {string} Display name or code if not found
|
|
85
|
+
*/
|
|
86
|
+
getDisplayName(code) {
|
|
87
|
+
const platform = this.getPlatform(code);
|
|
88
|
+
return platform ? platform.name : code;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Validate platform code format
|
|
93
|
+
* @param {string} code - Platform code to validate
|
|
94
|
+
* @returns {boolean} True if format is valid
|
|
95
|
+
*/
|
|
96
|
+
isValidFormat(code) {
|
|
97
|
+
const conventions = this.config.conventions || {};
|
|
98
|
+
const pattern = conventions.allowed_characters || 'a-z0-9-';
|
|
99
|
+
const maxLength = conventions.max_code_length || 20;
|
|
100
|
+
|
|
101
|
+
const regex = new RegExp(`^[${pattern}]+$`);
|
|
102
|
+
return regex.test(code) && code.length <= maxLength;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Get all platform codes as array
|
|
107
|
+
* @returns {Array} Array of platform codes
|
|
108
|
+
*/
|
|
109
|
+
getCodes() {
|
|
110
|
+
return Object.keys(this.config.platforms);
|
|
111
|
+
}
|
|
112
|
+
config = null;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Export singleton instance
|
|
116
|
+
module.exports = new PlatformCodes();
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const fs = require('fs-extra');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Find the BMAD project root directory by looking for package.json
|
|
6
|
+
* or specific BMAD markers
|
|
7
|
+
*/
|
|
8
|
+
function findProjectRoot(startPath = __dirname) {
|
|
9
|
+
let currentPath = path.resolve(startPath);
|
|
10
|
+
|
|
11
|
+
// Keep going up until we find package.json with bmad-method
|
|
12
|
+
while (currentPath !== path.dirname(currentPath)) {
|
|
13
|
+
const packagePath = path.join(currentPath, 'package.json');
|
|
14
|
+
|
|
15
|
+
if (fs.existsSync(packagePath)) {
|
|
16
|
+
try {
|
|
17
|
+
const pkg = fs.readJsonSync(packagePath);
|
|
18
|
+
// Check if this is the BMAD project
|
|
19
|
+
if (pkg.name === 'bmad-method' || fs.existsSync(path.join(currentPath, 'src', 'core'))) {
|
|
20
|
+
return currentPath;
|
|
21
|
+
}
|
|
22
|
+
} catch {
|
|
23
|
+
// Continue searching
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Also check for src/core as a marker
|
|
28
|
+
if (fs.existsSync(path.join(currentPath, 'src', 'core', 'agents'))) {
|
|
29
|
+
return currentPath;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
currentPath = path.dirname(currentPath);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// If we can't find it, use process.cwd() as fallback
|
|
36
|
+
return process.cwd();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Cache the project root after first calculation
|
|
40
|
+
let cachedRoot = null;
|
|
41
|
+
|
|
42
|
+
function getProjectRoot() {
|
|
43
|
+
if (!cachedRoot) {
|
|
44
|
+
cachedRoot = findProjectRoot();
|
|
45
|
+
}
|
|
46
|
+
return cachedRoot;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Get path to source directory
|
|
51
|
+
*/
|
|
52
|
+
function getSourcePath(...segments) {
|
|
53
|
+
return path.join(getProjectRoot(), 'src', ...segments);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get path to a module's directory
|
|
58
|
+
*/
|
|
59
|
+
function getModulePath(moduleName, ...segments) {
|
|
60
|
+
if (moduleName === 'core') {
|
|
61
|
+
return getSourcePath('core', ...segments);
|
|
62
|
+
}
|
|
63
|
+
return getSourcePath('modules', moduleName, ...segments);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
module.exports = {
|
|
67
|
+
getProjectRoot,
|
|
68
|
+
getSourcePath,
|
|
69
|
+
getModulePath,
|
|
70
|
+
findProjectRoot,
|
|
71
|
+
};
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility function to replace {project-root} placeholders with actual installation target
|
|
3
|
+
* Used during BMAD installation to set correct paths in agent and task files
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const fs = require('node:fs');
|
|
7
|
+
const path = require('node:path');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Replace {project-root} and {output_folder}/ placeholders in a single file
|
|
11
|
+
* @param {string} filePath - Path to the file to process
|
|
12
|
+
* @param {string} projectRoot - The actual project root path to substitute (must include trailing slash)
|
|
13
|
+
* @param {string} docOut - The document output path (with leading slash)
|
|
14
|
+
* @param {boolean} removeCompletely - If true, removes placeholders entirely instead of replacing
|
|
15
|
+
* @returns {boolean} - True if replacements were made, false otherwise
|
|
16
|
+
*/
|
|
17
|
+
function replacePlaceholdersInFile(filePath, projectRoot, docOut = '/docs', removeCompletely = false) {
|
|
18
|
+
try {
|
|
19
|
+
let content = fs.readFileSync(filePath, 'utf8');
|
|
20
|
+
const originalContent = content;
|
|
21
|
+
|
|
22
|
+
if (removeCompletely) {
|
|
23
|
+
// Remove placeholders entirely (for bundling)
|
|
24
|
+
content = content.replaceAll('{project-root}', '');
|
|
25
|
+
content = content.replaceAll('{output_folder}/', '');
|
|
26
|
+
} else {
|
|
27
|
+
// Handle the combined pattern first to avoid double slashes
|
|
28
|
+
if (projectRoot && docOut) {
|
|
29
|
+
// Replace {project-root}{output_folder}/ combinations first
|
|
30
|
+
// Remove leading slash from docOut since projectRoot has trailing slash
|
|
31
|
+
// Add trailing slash to docOut
|
|
32
|
+
const docOutNoLeadingSlash = docOut.replace(/^\//, '');
|
|
33
|
+
const docOutWithTrailingSlash = docOutNoLeadingSlash.endsWith('/') ? docOutNoLeadingSlash : docOutNoLeadingSlash + '/';
|
|
34
|
+
content = content.replaceAll('{project-root}{output_folder}/', projectRoot + docOutWithTrailingSlash);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Then replace remaining individual placeholders
|
|
38
|
+
if (projectRoot) {
|
|
39
|
+
content = content.replaceAll('{project-root}', projectRoot);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (docOut) {
|
|
43
|
+
// For standalone {output_folder}/, keep the leading slash and add trailing slash
|
|
44
|
+
const docOutWithTrailingSlash = docOut.endsWith('/') ? docOut : docOut + '/';
|
|
45
|
+
content = content.replaceAll('{output_folder}/', docOutWithTrailingSlash);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (content !== originalContent) {
|
|
50
|
+
fs.writeFileSync(filePath, content, 'utf8');
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return false;
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error(`Error processing file ${filePath}:`, error.message);
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Legacy function name for backward compatibility
|
|
63
|
+
*/
|
|
64
|
+
function replaceProjectRootInFile(filePath, projectRoot, removeCompletely = false) {
|
|
65
|
+
return replacePlaceholdersInFile(filePath, projectRoot, '/docs', removeCompletely);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Recursively replace {project-root} and {output_folder}/ in all files in a directory
|
|
70
|
+
* @param {string} dirPath - Directory to process
|
|
71
|
+
* @param {string} projectRoot - The actual project root path to substitute (or null to remove)
|
|
72
|
+
* @param {string} docOut - The document output path (with leading slash)
|
|
73
|
+
* @param {Array<string>} extensions - File extensions to process (default: ['.md', '.xml', '.yaml'])
|
|
74
|
+
* @param {boolean} removeCompletely - If true, removes placeholders entirely instead of replacing
|
|
75
|
+
* @param {boolean} verbose - If true, show detailed output for each file
|
|
76
|
+
* @returns {Object} - Stats object with counts of files processed and modified
|
|
77
|
+
*/
|
|
78
|
+
function replacePlaceholdersInDirectory(
|
|
79
|
+
dirPath,
|
|
80
|
+
projectRoot,
|
|
81
|
+
docOut = '/docs',
|
|
82
|
+
extensions = ['.md', '.xml', '.yaml'],
|
|
83
|
+
removeCompletely = false,
|
|
84
|
+
verbose = false,
|
|
85
|
+
) {
|
|
86
|
+
const stats = {
|
|
87
|
+
processed: 0,
|
|
88
|
+
modified: 0,
|
|
89
|
+
errors: 0,
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
function processDirectory(currentPath) {
|
|
93
|
+
try {
|
|
94
|
+
const items = fs.readdirSync(currentPath, { withFileTypes: true });
|
|
95
|
+
|
|
96
|
+
for (const item of items) {
|
|
97
|
+
const fullPath = path.join(currentPath, item.name);
|
|
98
|
+
|
|
99
|
+
if (item.isDirectory()) {
|
|
100
|
+
// Skip node_modules and .git directories
|
|
101
|
+
if (item.name !== 'node_modules' && item.name !== '.git') {
|
|
102
|
+
processDirectory(fullPath);
|
|
103
|
+
}
|
|
104
|
+
} else if (item.isFile()) {
|
|
105
|
+
// Check if file has one of the target extensions
|
|
106
|
+
const ext = path.extname(item.name).toLowerCase();
|
|
107
|
+
if (extensions.includes(ext)) {
|
|
108
|
+
stats.processed++;
|
|
109
|
+
if (replacePlaceholdersInFile(fullPath, projectRoot, docOut, removeCompletely)) {
|
|
110
|
+
stats.modified++;
|
|
111
|
+
if (verbose) {
|
|
112
|
+
console.log(`✓ Updated: ${fullPath}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error(`Error processing directory ${currentPath}:`, error.message);
|
|
120
|
+
stats.errors++;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
processDirectory(dirPath);
|
|
125
|
+
return stats;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Legacy function for backward compatibility
|
|
130
|
+
*/
|
|
131
|
+
function replaceProjectRootInDirectory(dirPath, projectRoot, extensions = ['.md', '.xml'], removeCompletely = false) {
|
|
132
|
+
return replacePlaceholdersInDirectory(dirPath, projectRoot, '/docs', extensions, removeCompletely);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Replace placeholders in a list of specific files
|
|
137
|
+
* @param {Array<string>} filePaths - Array of file paths to process
|
|
138
|
+
* @param {string} projectRoot - The actual project root path to substitute (or null to remove)
|
|
139
|
+
* @param {string} docOut - The document output path (with leading slash)
|
|
140
|
+
* @param {boolean} removeCompletely - If true, removes placeholders entirely instead of replacing
|
|
141
|
+
* @returns {Object} - Stats object with counts of files processed and modified
|
|
142
|
+
*/
|
|
143
|
+
function replacePlaceholdersInFiles(filePaths, projectRoot, docOut = '/docs', removeCompletely = false) {
|
|
144
|
+
const stats = {
|
|
145
|
+
processed: 0,
|
|
146
|
+
modified: 0,
|
|
147
|
+
errors: 0,
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
for (const filePath of filePaths) {
|
|
151
|
+
stats.processed++;
|
|
152
|
+
try {
|
|
153
|
+
if (replacePlaceholdersInFile(filePath, projectRoot, docOut, removeCompletely)) {
|
|
154
|
+
stats.modified++;
|
|
155
|
+
console.log(`✓ Updated: ${filePath}`);
|
|
156
|
+
}
|
|
157
|
+
} catch (error) {
|
|
158
|
+
console.error(`Error processing file ${filePath}:`, error.message);
|
|
159
|
+
stats.errors++;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return stats;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Legacy function for backward compatibility
|
|
168
|
+
*/
|
|
169
|
+
function replaceProjectRootInFiles(filePaths, projectRoot, removeCompletely = false) {
|
|
170
|
+
return replacePlaceholdersInFiles(filePaths, projectRoot, '/docs', removeCompletely);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Main installation helper - replaces {project-root} and {output_folder}/ during BMAD installation
|
|
175
|
+
* @param {string} installPath - Path where BMAD is being installed
|
|
176
|
+
* @param {string} targetProjectRoot - The project root to set in the files (slash will be added)
|
|
177
|
+
* @param {string} docsOutputPath - The documentation output path (relative to project root)
|
|
178
|
+
* @param {boolean} verbose - If true, show detailed output
|
|
179
|
+
* @returns {Object} - Installation stats
|
|
180
|
+
*/
|
|
181
|
+
function processInstallation(installPath, targetProjectRoot, docsOutputPath = 'docs', verbose = false) {
|
|
182
|
+
// Ensure project root has trailing slash since usage is like {project-root}/bmad
|
|
183
|
+
const projectRootWithSlash = targetProjectRoot.endsWith('/') ? targetProjectRoot : targetProjectRoot + '/';
|
|
184
|
+
|
|
185
|
+
// Ensure docs path has leading slash (for internal use) but will add trailing slash during replacement
|
|
186
|
+
const normalizedDocsPath = docsOutputPath.replaceAll(/^\/+|\/+$/g, '');
|
|
187
|
+
const docOutPath = normalizedDocsPath ? `/${normalizedDocsPath}` : '/docs';
|
|
188
|
+
|
|
189
|
+
if (verbose) {
|
|
190
|
+
console.log(`\nReplacing {project-root} with: ${projectRootWithSlash}`);
|
|
191
|
+
console.log(`Replacing {output_folder}/ with: ${docOutPath}/`);
|
|
192
|
+
console.log(`Processing files in: ${installPath}\n`);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const stats = replacePlaceholdersInDirectory(installPath, projectRootWithSlash, docOutPath, ['.md', '.xml', '.yaml'], false, verbose);
|
|
196
|
+
|
|
197
|
+
if (verbose) {
|
|
198
|
+
console.log('\n--- Installation Processing Complete ---');
|
|
199
|
+
}
|
|
200
|
+
console.log(`Files processed: ${stats.processed}`);
|
|
201
|
+
console.log(`Files modified: ${stats.modified}`);
|
|
202
|
+
if (stats.errors > 0) {
|
|
203
|
+
console.log(`Errors encountered: ${stats.errors}`);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return stats;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Bundle helper - removes {project-root}/ references for web bundling
|
|
211
|
+
* @param {string} bundlePath - Path where files are being bundled
|
|
212
|
+
* @returns {Object} - Bundle stats
|
|
213
|
+
*/
|
|
214
|
+
function processBundleRemoval(bundlePath) {
|
|
215
|
+
console.log(`\nRemoving {project-root}/ references for bundling`);
|
|
216
|
+
console.log(`Processing files in: ${bundlePath}\n`);
|
|
217
|
+
|
|
218
|
+
const stats = replaceProjectRootInDirectory(bundlePath, null, ['.md', '.xml'], true);
|
|
219
|
+
|
|
220
|
+
console.log('\n--- Bundle Processing Complete ---');
|
|
221
|
+
console.log(`Files processed: ${stats.processed}`);
|
|
222
|
+
console.log(`Files modified: ${stats.modified}`);
|
|
223
|
+
if (stats.errors > 0) {
|
|
224
|
+
console.log(`Errors encountered: ${stats.errors}`);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
return stats;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
module.exports = {
|
|
231
|
+
replacePlaceholdersInFile,
|
|
232
|
+
replacePlaceholdersInDirectory,
|
|
233
|
+
replacePlaceholdersInFiles,
|
|
234
|
+
replaceProjectRootInFile,
|
|
235
|
+
replaceProjectRootInDirectory,
|
|
236
|
+
replaceProjectRootInFiles,
|
|
237
|
+
processInstallation,
|
|
238
|
+
processBundleRemoval,
|
|
239
|
+
};
|