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,204 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Crush IDE setup handler
|
|
7
|
+
* Creates commands in .crush/commands/ directory structure
|
|
8
|
+
*/
|
|
9
|
+
class CrushSetup extends BaseIdeSetup {
|
|
10
|
+
constructor() {
|
|
11
|
+
super('crush', 'Crush');
|
|
12
|
+
this.configDir = '.crush';
|
|
13
|
+
this.commandsDir = 'commands';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Setup Crush IDE configuration
|
|
18
|
+
* @param {string} projectDir - Project directory
|
|
19
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
20
|
+
* @param {Object} options - Setup options
|
|
21
|
+
*/
|
|
22
|
+
async setup(projectDir, bmadDir, options = {}) {
|
|
23
|
+
console.log(chalk.cyan(`Setting up ${this.name}...`));
|
|
24
|
+
|
|
25
|
+
// Create .crush/commands/bmad directory structure
|
|
26
|
+
const crushDir = path.join(projectDir, this.configDir);
|
|
27
|
+
const commandsDir = path.join(crushDir, this.commandsDir, 'bmad');
|
|
28
|
+
const agentsDir = path.join(commandsDir, 'agents');
|
|
29
|
+
const tasksDir = path.join(commandsDir, 'tasks');
|
|
30
|
+
|
|
31
|
+
await this.ensureDir(agentsDir);
|
|
32
|
+
await this.ensureDir(tasksDir);
|
|
33
|
+
|
|
34
|
+
// Get agents and tasks
|
|
35
|
+
const agents = await this.getAgents(bmadDir);
|
|
36
|
+
const tasks = await this.getTasks(bmadDir);
|
|
37
|
+
|
|
38
|
+
// Setup agents as commands
|
|
39
|
+
let agentCount = 0;
|
|
40
|
+
for (const agent of agents) {
|
|
41
|
+
const content = await this.readFile(agent.path);
|
|
42
|
+
const commandContent = this.createAgentCommand(agent, content, projectDir);
|
|
43
|
+
|
|
44
|
+
const targetPath = path.join(agentsDir, `${agent.module}-${agent.name}.md`);
|
|
45
|
+
await this.writeFile(targetPath, commandContent);
|
|
46
|
+
agentCount++;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Setup tasks as commands
|
|
50
|
+
let taskCount = 0;
|
|
51
|
+
for (const task of tasks) {
|
|
52
|
+
const content = await this.readFile(task.path);
|
|
53
|
+
const commandContent = this.createTaskCommand(task, content);
|
|
54
|
+
|
|
55
|
+
const targetPath = path.join(tasksDir, `${task.module}-${task.name}.md`);
|
|
56
|
+
await this.writeFile(targetPath, commandContent);
|
|
57
|
+
taskCount++;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Create module-specific subdirectories for better organization
|
|
61
|
+
await this.organizeByModule(commandsDir, agents, tasks, bmadDir);
|
|
62
|
+
|
|
63
|
+
console.log(chalk.green(`✓ ${this.name} configured:`));
|
|
64
|
+
console.log(chalk.dim(` - ${agentCount} agent commands created`));
|
|
65
|
+
console.log(chalk.dim(` - ${taskCount} task commands created`));
|
|
66
|
+
console.log(chalk.dim(` - Commands directory: ${path.relative(projectDir, commandsDir)}`));
|
|
67
|
+
console.log(chalk.dim('\n Commands can be accessed via Crush command palette'));
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
success: true,
|
|
71
|
+
agents: agentCount,
|
|
72
|
+
tasks: taskCount,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Organize commands by module
|
|
78
|
+
*/
|
|
79
|
+
async organizeByModule(commandsDir, agents, tasks, bmadDir) {
|
|
80
|
+
// Get unique modules
|
|
81
|
+
const modules = new Set();
|
|
82
|
+
for (const agent of agents) modules.add(agent.module);
|
|
83
|
+
for (const task of tasks) modules.add(task.module);
|
|
84
|
+
|
|
85
|
+
// Create module directories
|
|
86
|
+
for (const module of modules) {
|
|
87
|
+
const moduleDir = path.join(commandsDir, module);
|
|
88
|
+
const moduleAgentsDir = path.join(moduleDir, 'agents');
|
|
89
|
+
const moduleTasksDir = path.join(moduleDir, 'tasks');
|
|
90
|
+
|
|
91
|
+
await this.ensureDir(moduleAgentsDir);
|
|
92
|
+
await this.ensureDir(moduleTasksDir);
|
|
93
|
+
|
|
94
|
+
// Copy module-specific agents
|
|
95
|
+
const moduleAgents = agents.filter((a) => a.module === module);
|
|
96
|
+
for (const agent of moduleAgents) {
|
|
97
|
+
const content = await this.readFile(agent.path);
|
|
98
|
+
const commandContent = this.createAgentCommand(agent, content, bmadDir);
|
|
99
|
+
const targetPath = path.join(moduleAgentsDir, `${agent.name}.md`);
|
|
100
|
+
await this.writeFile(targetPath, commandContent);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Copy module-specific tasks
|
|
104
|
+
const moduleTasks = tasks.filter((t) => t.module === module);
|
|
105
|
+
for (const task of moduleTasks) {
|
|
106
|
+
const content = await this.readFile(task.path);
|
|
107
|
+
const commandContent = this.createTaskCommand(task, content);
|
|
108
|
+
const targetPath = path.join(moduleTasksDir, `${task.name}.md`);
|
|
109
|
+
await this.writeFile(targetPath, commandContent);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Create agent command content
|
|
116
|
+
*/
|
|
117
|
+
createAgentCommand(agent, content, projectDir) {
|
|
118
|
+
// Extract metadata
|
|
119
|
+
const titleMatch = content.match(/title="([^"]+)"/);
|
|
120
|
+
const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
|
|
121
|
+
|
|
122
|
+
const iconMatch = content.match(/icon="([^"]+)"/);
|
|
123
|
+
const icon = iconMatch ? iconMatch[1] : '🤖';
|
|
124
|
+
|
|
125
|
+
// Get relative path
|
|
126
|
+
const relativePath = path.relative(projectDir, agent.path).replaceAll('\\', '/');
|
|
127
|
+
|
|
128
|
+
let commandContent = `# /${agent.name} Command
|
|
129
|
+
|
|
130
|
+
When this command is used, adopt the following agent persona:
|
|
131
|
+
|
|
132
|
+
## ${icon} ${title} Agent
|
|
133
|
+
|
|
134
|
+
${content}
|
|
135
|
+
|
|
136
|
+
## Command Usage
|
|
137
|
+
|
|
138
|
+
This command activates the ${title} agent from the BMAD ${agent.module.toUpperCase()} module.
|
|
139
|
+
|
|
140
|
+
## File Reference
|
|
141
|
+
|
|
142
|
+
Complete agent definition: [${relativePath}](${relativePath})
|
|
143
|
+
|
|
144
|
+
## Module
|
|
145
|
+
|
|
146
|
+
Part of the BMAD ${agent.module.toUpperCase()} module.
|
|
147
|
+
`;
|
|
148
|
+
|
|
149
|
+
return commandContent;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Create task command content
|
|
154
|
+
*/
|
|
155
|
+
createTaskCommand(task, content) {
|
|
156
|
+
// Extract task name
|
|
157
|
+
const nameMatch = content.match(/<name>([^<]+)<\/name>/);
|
|
158
|
+
const taskName = nameMatch ? nameMatch[1] : this.formatTitle(task.name);
|
|
159
|
+
|
|
160
|
+
let commandContent = `# /task-${task.name} Command
|
|
161
|
+
|
|
162
|
+
When this command is used, execute the following task:
|
|
163
|
+
|
|
164
|
+
## ${taskName} Task
|
|
165
|
+
|
|
166
|
+
${content}
|
|
167
|
+
|
|
168
|
+
## Command Usage
|
|
169
|
+
|
|
170
|
+
This command executes the ${taskName} task from the BMAD ${task.module.toUpperCase()} module.
|
|
171
|
+
|
|
172
|
+
## Module
|
|
173
|
+
|
|
174
|
+
Part of the BMAD ${task.module.toUpperCase()} module.
|
|
175
|
+
`;
|
|
176
|
+
|
|
177
|
+
return commandContent;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Format name as title
|
|
182
|
+
*/
|
|
183
|
+
formatTitle(name) {
|
|
184
|
+
return name
|
|
185
|
+
.split('-')
|
|
186
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
187
|
+
.join(' ');
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Cleanup Crush configuration
|
|
192
|
+
*/
|
|
193
|
+
async cleanup(projectDir) {
|
|
194
|
+
const fs = require('fs-extra');
|
|
195
|
+
const bmadCommandsDir = path.join(projectDir, this.configDir, this.commandsDir, 'bmad');
|
|
196
|
+
|
|
197
|
+
if (await fs.pathExists(bmadCommandsDir)) {
|
|
198
|
+
await fs.remove(bmadCommandsDir);
|
|
199
|
+
console.log(chalk.dim(`Removed BMAD commands from Crush`));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
module.exports = { CrushSetup };
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Cursor IDE setup handler
|
|
7
|
+
*/
|
|
8
|
+
class CursorSetup extends BaseIdeSetup {
|
|
9
|
+
constructor() {
|
|
10
|
+
super('cursor', 'Cursor', true); // preferred IDE
|
|
11
|
+
this.configDir = '.cursor';
|
|
12
|
+
this.rulesDir = 'rules';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Setup Cursor IDE configuration
|
|
17
|
+
* @param {string} projectDir - Project directory
|
|
18
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
19
|
+
* @param {Object} options - Setup options
|
|
20
|
+
*/
|
|
21
|
+
async setup(projectDir, bmadDir, options = {}) {
|
|
22
|
+
console.log(chalk.cyan(`Setting up ${this.name}...`));
|
|
23
|
+
|
|
24
|
+
// Create .cursor/rules directory structure
|
|
25
|
+
const cursorDir = path.join(projectDir, this.configDir);
|
|
26
|
+
const rulesDir = path.join(cursorDir, this.rulesDir);
|
|
27
|
+
const bmadRulesDir = path.join(rulesDir, 'bmad');
|
|
28
|
+
|
|
29
|
+
await this.ensureDir(bmadRulesDir);
|
|
30
|
+
|
|
31
|
+
// Get agents and tasks
|
|
32
|
+
const agents = await this.getAgents(bmadDir);
|
|
33
|
+
const tasks = await this.getTasks(bmadDir);
|
|
34
|
+
|
|
35
|
+
// Create directories for each module
|
|
36
|
+
const modules = new Set();
|
|
37
|
+
for (const item of [...agents, ...tasks]) modules.add(item.module);
|
|
38
|
+
|
|
39
|
+
for (const module of modules) {
|
|
40
|
+
await this.ensureDir(path.join(bmadRulesDir, module));
|
|
41
|
+
await this.ensureDir(path.join(bmadRulesDir, module, 'agents'));
|
|
42
|
+
await this.ensureDir(path.join(bmadRulesDir, module, 'tasks'));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Process and copy agents
|
|
46
|
+
let agentCount = 0;
|
|
47
|
+
for (const agent of agents) {
|
|
48
|
+
const content = await this.readAndProcess(agent.path, {
|
|
49
|
+
module: agent.module,
|
|
50
|
+
name: agent.name,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const targetPath = path.join(bmadRulesDir, agent.module, 'agents', `${agent.name}.mdc`);
|
|
54
|
+
|
|
55
|
+
await this.writeFile(targetPath, content);
|
|
56
|
+
agentCount++;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Process and copy tasks
|
|
60
|
+
let taskCount = 0;
|
|
61
|
+
for (const task of tasks) {
|
|
62
|
+
const content = await this.readAndProcess(task.path, {
|
|
63
|
+
module: task.module,
|
|
64
|
+
name: task.name,
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const targetPath = path.join(bmadRulesDir, task.module, 'tasks', `${task.name}.mdc`);
|
|
68
|
+
|
|
69
|
+
await this.writeFile(targetPath, content);
|
|
70
|
+
taskCount++;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Create BMAD index file (but NOT .cursorrules - user manages that)
|
|
74
|
+
await this.createBMADIndex(bmadRulesDir, agents, tasks, modules);
|
|
75
|
+
|
|
76
|
+
console.log(chalk.green(`✓ ${this.name} configured:`));
|
|
77
|
+
console.log(chalk.dim(` - ${agentCount} agents installed`));
|
|
78
|
+
console.log(chalk.dim(` - ${taskCount} tasks installed`));
|
|
79
|
+
console.log(chalk.dim(` - Rules directory: ${path.relative(projectDir, bmadRulesDir)}`));
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
success: true,
|
|
83
|
+
agents: agentCount,
|
|
84
|
+
tasks: taskCount,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Create BMAD index file for easy navigation
|
|
90
|
+
*/
|
|
91
|
+
async createBMADIndex(bmadRulesDir, agents, tasks, modules) {
|
|
92
|
+
const indexPath = path.join(bmadRulesDir, 'index.mdc');
|
|
93
|
+
|
|
94
|
+
let content = `---
|
|
95
|
+
description: BMAD Method - Master Index
|
|
96
|
+
globs:
|
|
97
|
+
alwaysApply: true
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
# BMAD Method - Cursor Rules Index
|
|
101
|
+
|
|
102
|
+
This is the master index for all BMAD agents and tasks available in your project.
|
|
103
|
+
|
|
104
|
+
## Installation Complete!
|
|
105
|
+
|
|
106
|
+
BMAD rules have been installed to: \`.cursor/rules/bmad/\`
|
|
107
|
+
|
|
108
|
+
**Note:** BMAD does not modify your \`.cursorrules\` file. You manage that separately.
|
|
109
|
+
|
|
110
|
+
## How to Use
|
|
111
|
+
|
|
112
|
+
- Reference specific agents: @bmad/{module}/agents/{agent-name}
|
|
113
|
+
- Reference specific tasks: @bmad/{module}/tasks/{task-name}
|
|
114
|
+
- Reference entire modules: @bmad/{module}
|
|
115
|
+
- Reference this index: @bmad/index
|
|
116
|
+
|
|
117
|
+
## Available Modules
|
|
118
|
+
|
|
119
|
+
`;
|
|
120
|
+
|
|
121
|
+
for (const module of modules) {
|
|
122
|
+
content += `### ${module.toUpperCase()}\n\n`;
|
|
123
|
+
|
|
124
|
+
// List agents for this module
|
|
125
|
+
const moduleAgents = agents.filter((a) => a.module === module);
|
|
126
|
+
if (moduleAgents.length > 0) {
|
|
127
|
+
content += `**Agents:**\n`;
|
|
128
|
+
for (const agent of moduleAgents) {
|
|
129
|
+
content += `- @bmad/${module}/agents/${agent.name} - ${agent.name}\n`;
|
|
130
|
+
}
|
|
131
|
+
content += '\n';
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// List tasks for this module
|
|
135
|
+
const moduleTasks = tasks.filter((t) => t.module === module);
|
|
136
|
+
if (moduleTasks.length > 0) {
|
|
137
|
+
content += `**Tasks:**\n`;
|
|
138
|
+
for (const task of moduleTasks) {
|
|
139
|
+
content += `- @bmad/${module}/tasks/${task.name} - ${task.name}\n`;
|
|
140
|
+
}
|
|
141
|
+
content += '\n';
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
content += `
|
|
146
|
+
## Quick Reference
|
|
147
|
+
|
|
148
|
+
- All BMAD rules are Manual type - reference them explicitly when needed
|
|
149
|
+
- Agents provide persona-based assistance with specific expertise
|
|
150
|
+
- Tasks are reusable workflows for common operations
|
|
151
|
+
- Each agent includes an activation block for proper initialization
|
|
152
|
+
|
|
153
|
+
## Configuration
|
|
154
|
+
|
|
155
|
+
BMAD rules are configured as Manual rules (alwaysApply: false) to give you control
|
|
156
|
+
over when they're included in your context. Reference them explicitly when you need
|
|
157
|
+
specific agent expertise or task workflows.
|
|
158
|
+
`;
|
|
159
|
+
|
|
160
|
+
await this.writeFile(indexPath, content);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Read and process file content
|
|
165
|
+
*/
|
|
166
|
+
async readAndProcess(filePath, metadata) {
|
|
167
|
+
const fs = require('fs-extra');
|
|
168
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
169
|
+
return this.processContent(content, metadata);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Override processContent to add MDC metadata header for Cursor
|
|
174
|
+
* @param {string} content - File content
|
|
175
|
+
* @param {Object} metadata - File metadata
|
|
176
|
+
* @returns {string} Processed content with MDC header
|
|
177
|
+
*/
|
|
178
|
+
processContent(content, metadata = {}) {
|
|
179
|
+
// First apply base processing (includes activation injection for agents)
|
|
180
|
+
let processed = super.processContent(content, metadata);
|
|
181
|
+
|
|
182
|
+
// Determine the type and description based on content
|
|
183
|
+
const isAgent = content.includes('<agent');
|
|
184
|
+
const isTask = content.includes('<task');
|
|
185
|
+
|
|
186
|
+
let description = '';
|
|
187
|
+
let globs = '';
|
|
188
|
+
|
|
189
|
+
if (isAgent) {
|
|
190
|
+
// Extract agent title if available
|
|
191
|
+
const titleMatch = content.match(/title="([^"]+)"/);
|
|
192
|
+
const title = titleMatch ? titleMatch[1] : metadata.name;
|
|
193
|
+
description = `BMAD ${metadata.module.toUpperCase()} Agent: ${title}`;
|
|
194
|
+
|
|
195
|
+
// Manual rules for agents don't need globs
|
|
196
|
+
globs = '';
|
|
197
|
+
} else if (isTask) {
|
|
198
|
+
// Extract task name if available
|
|
199
|
+
const nameMatch = content.match(/<name>([^<]+)<\/name>/);
|
|
200
|
+
const taskName = nameMatch ? nameMatch[1] : metadata.name;
|
|
201
|
+
description = `BMAD ${metadata.module.toUpperCase()} Task: ${taskName}`;
|
|
202
|
+
|
|
203
|
+
// Tasks might be auto-attached to certain file types
|
|
204
|
+
globs = '';
|
|
205
|
+
} else {
|
|
206
|
+
description = `BMAD ${metadata.module.toUpperCase()}: ${metadata.name}`;
|
|
207
|
+
globs = '';
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Create MDC metadata header
|
|
211
|
+
const mdcHeader = `---
|
|
212
|
+
description: ${description}
|
|
213
|
+
globs: ${globs}
|
|
214
|
+
alwaysApply: false
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
`;
|
|
218
|
+
|
|
219
|
+
// Add the MDC header to the processed content
|
|
220
|
+
return mdcHeader + processed;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
module.exports = { CursorSetup };
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Gemini CLI setup handler
|
|
7
|
+
* Creates TOML files in .gemini/commands/ structure
|
|
8
|
+
*/
|
|
9
|
+
class GeminiSetup extends BaseIdeSetup {
|
|
10
|
+
constructor() {
|
|
11
|
+
super('gemini', 'Gemini CLI', true); // preferred IDE
|
|
12
|
+
this.configDir = '.gemini';
|
|
13
|
+
this.commandsDir = 'commands';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Setup Gemini CLI configuration
|
|
18
|
+
* @param {string} projectDir - Project directory
|
|
19
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
20
|
+
* @param {Object} options - Setup options
|
|
21
|
+
*/
|
|
22
|
+
async setup(projectDir, bmadDir, options = {}) {
|
|
23
|
+
console.log(chalk.cyan(`Setting up ${this.name}...`));
|
|
24
|
+
|
|
25
|
+
// Create .gemini/commands/agents and .gemini/commands/tasks directories
|
|
26
|
+
const geminiDir = path.join(projectDir, this.configDir);
|
|
27
|
+
const commandsDir = path.join(geminiDir, this.commandsDir);
|
|
28
|
+
const agentsDir = path.join(commandsDir, 'agents');
|
|
29
|
+
const tasksDir = path.join(commandsDir, 'tasks');
|
|
30
|
+
|
|
31
|
+
await this.ensureDir(agentsDir);
|
|
32
|
+
await this.ensureDir(tasksDir);
|
|
33
|
+
|
|
34
|
+
// Get agents and tasks
|
|
35
|
+
const agents = await this.getAgents(bmadDir);
|
|
36
|
+
const tasks = await this.getTasks(bmadDir);
|
|
37
|
+
|
|
38
|
+
// Install agents as TOML files
|
|
39
|
+
let agentCount = 0;
|
|
40
|
+
for (const agent of agents) {
|
|
41
|
+
const content = await this.readFile(agent.path);
|
|
42
|
+
const tomlContent = this.createAgentToml(agent, content, bmadDir);
|
|
43
|
+
|
|
44
|
+
const tomlPath = path.join(agentsDir, `${agent.name}.toml`);
|
|
45
|
+
await this.writeFile(tomlPath, tomlContent);
|
|
46
|
+
agentCount++;
|
|
47
|
+
|
|
48
|
+
console.log(chalk.green(` ✓ Added agent: /bmad:agents:${agent.name}`));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Install tasks as TOML files
|
|
52
|
+
let taskCount = 0;
|
|
53
|
+
for (const task of tasks) {
|
|
54
|
+
const content = await this.readFile(task.path);
|
|
55
|
+
const tomlContent = this.createTaskToml(task, content, bmadDir);
|
|
56
|
+
|
|
57
|
+
const tomlPath = path.join(tasksDir, `${task.name}.toml`);
|
|
58
|
+
await this.writeFile(tomlPath, tomlContent);
|
|
59
|
+
taskCount++;
|
|
60
|
+
|
|
61
|
+
console.log(chalk.green(` ✓ Added task: /bmad:tasks:${task.name}`));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
console.log(chalk.green(`✓ ${this.name} configured:`));
|
|
65
|
+
console.log(chalk.dim(` - ${agentCount} agents configured`));
|
|
66
|
+
console.log(chalk.dim(` - ${taskCount} tasks configured`));
|
|
67
|
+
console.log(chalk.dim(` - Commands directory: ${path.relative(projectDir, commandsDir)}`));
|
|
68
|
+
console.log(chalk.dim(` - Agent activation: /bmad:agents:{agent-name}`));
|
|
69
|
+
console.log(chalk.dim(` - Task activation: /bmad:tasks:{task-name}`));
|
|
70
|
+
|
|
71
|
+
return {
|
|
72
|
+
success: true,
|
|
73
|
+
agents: agentCount,
|
|
74
|
+
tasks: taskCount,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Create agent TOML content
|
|
80
|
+
*/
|
|
81
|
+
createAgentToml(agent, content, bmadDir) {
|
|
82
|
+
// Extract metadata
|
|
83
|
+
const titleMatch = content.match(/title="([^"]+)"/);
|
|
84
|
+
const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
|
|
85
|
+
|
|
86
|
+
// Get relative path from project root to agent file
|
|
87
|
+
const relativePath = path.relative(process.cwd(), agent.path).replaceAll('\\', '/');
|
|
88
|
+
|
|
89
|
+
// Create TOML content
|
|
90
|
+
const tomlContent = `description = "Activates the ${title} agent from the BMad Method."
|
|
91
|
+
prompt = """
|
|
92
|
+
CRITICAL: You are now the BMad '${title}' agent. Adopt its persona and capabilities as defined in the following configuration.
|
|
93
|
+
|
|
94
|
+
Read and internalize the full agent definition, following all instructions and maintaining this persona until explicitly told to switch or exit.
|
|
95
|
+
|
|
96
|
+
@${relativePath}
|
|
97
|
+
"""
|
|
98
|
+
`;
|
|
99
|
+
|
|
100
|
+
return tomlContent;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Create task TOML content
|
|
105
|
+
*/
|
|
106
|
+
createTaskToml(task, content, bmadDir) {
|
|
107
|
+
// Extract task name from XML if available
|
|
108
|
+
const nameMatch = content.match(/<name>([^<]+)<\/name>/);
|
|
109
|
+
const taskName = nameMatch ? nameMatch[1] : this.formatTitle(task.name);
|
|
110
|
+
|
|
111
|
+
// Get relative path from project root to task file
|
|
112
|
+
const relativePath = path.relative(process.cwd(), task.path).replaceAll('\\', '/');
|
|
113
|
+
|
|
114
|
+
// Create TOML content
|
|
115
|
+
const tomlContent = `description = "Executes the ${taskName} task from the BMad Method."
|
|
116
|
+
prompt = """
|
|
117
|
+
Execute the following BMad Method task workflow:
|
|
118
|
+
|
|
119
|
+
@${relativePath}
|
|
120
|
+
|
|
121
|
+
Follow all instructions and complete the task as defined.
|
|
122
|
+
"""
|
|
123
|
+
`;
|
|
124
|
+
|
|
125
|
+
return tomlContent;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Cleanup Gemini configuration
|
|
130
|
+
*/
|
|
131
|
+
async cleanup(projectDir) {
|
|
132
|
+
const fs = require('fs-extra');
|
|
133
|
+
const commandsDir = path.join(projectDir, this.configDir, this.commandsDir);
|
|
134
|
+
const agentsDir = path.join(commandsDir, 'agents');
|
|
135
|
+
const tasksDir = path.join(commandsDir, 'tasks');
|
|
136
|
+
|
|
137
|
+
// Remove BMAD TOML files
|
|
138
|
+
if (await fs.pathExists(agentsDir)) {
|
|
139
|
+
const files = await fs.readdir(agentsDir);
|
|
140
|
+
for (const file of files) {
|
|
141
|
+
if (file.endsWith('.toml')) {
|
|
142
|
+
await fs.remove(path.join(agentsDir, file));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (await fs.pathExists(tasksDir)) {
|
|
148
|
+
const files = await fs.readdir(tasksDir);
|
|
149
|
+
for (const file of files) {
|
|
150
|
+
if (file.endsWith('.toml')) {
|
|
151
|
+
await fs.remove(path.join(tasksDir, file));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
console.log(chalk.dim(`Removed BMAD configuration from Gemini CLI`));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
module.exports = { GeminiSetup };
|