bmad-method 5.1.2 → 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 -32
- 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,289 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
const inquirer = require('inquirer');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* GitHub Copilot setup handler
|
|
8
|
+
* Creates chat modes in .github/chatmodes/ and configures VS Code settings
|
|
9
|
+
*/
|
|
10
|
+
class GitHubCopilotSetup extends BaseIdeSetup {
|
|
11
|
+
constructor() {
|
|
12
|
+
super('github-copilot', 'GitHub Copilot', true); // preferred IDE
|
|
13
|
+
this.configDir = '.github';
|
|
14
|
+
this.chatmodesDir = 'chatmodes';
|
|
15
|
+
this.vscodeDir = '.vscode';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Collect configuration choices before installation
|
|
20
|
+
* @param {Object} options - Configuration options
|
|
21
|
+
* @returns {Object} Collected configuration
|
|
22
|
+
*/
|
|
23
|
+
async collectConfiguration(options = {}) {
|
|
24
|
+
const config = {};
|
|
25
|
+
|
|
26
|
+
console.log('\n' + chalk.blue(' 🔧 VS Code Settings Configuration'));
|
|
27
|
+
console.log(chalk.dim(' GitHub Copilot works best with specific settings\n'));
|
|
28
|
+
|
|
29
|
+
const response = await inquirer.prompt([
|
|
30
|
+
{
|
|
31
|
+
type: 'list',
|
|
32
|
+
name: 'configChoice',
|
|
33
|
+
message: 'How would you like to configure VS Code settings?',
|
|
34
|
+
choices: [
|
|
35
|
+
{ name: 'Use recommended defaults (fastest)', value: 'defaults' },
|
|
36
|
+
{ name: 'Configure each setting manually', value: 'manual' },
|
|
37
|
+
{ name: 'Skip settings configuration', value: 'skip' },
|
|
38
|
+
],
|
|
39
|
+
default: 'defaults',
|
|
40
|
+
},
|
|
41
|
+
]);
|
|
42
|
+
config.vsCodeConfig = response.configChoice;
|
|
43
|
+
|
|
44
|
+
if (response.configChoice === 'manual') {
|
|
45
|
+
config.manualSettings = await inquirer.prompt([
|
|
46
|
+
{
|
|
47
|
+
type: 'input',
|
|
48
|
+
name: 'maxRequests',
|
|
49
|
+
message: 'Maximum requests per session (1-50)?',
|
|
50
|
+
default: '15',
|
|
51
|
+
validate: (input) => {
|
|
52
|
+
const num = parseInt(input);
|
|
53
|
+
return (num >= 1 && num <= 50) || 'Enter 1-50';
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: 'confirm',
|
|
58
|
+
name: 'runTasks',
|
|
59
|
+
message: 'Allow running workspace tasks?',
|
|
60
|
+
default: true,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
type: 'confirm',
|
|
64
|
+
name: 'mcpDiscovery',
|
|
65
|
+
message: 'Enable MCP server discovery?',
|
|
66
|
+
default: true,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'confirm',
|
|
70
|
+
name: 'autoFix',
|
|
71
|
+
message: 'Enable automatic error fixing?',
|
|
72
|
+
default: true,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'confirm',
|
|
76
|
+
name: 'autoApprove',
|
|
77
|
+
message: 'Auto-approve tools (less secure)?',
|
|
78
|
+
default: false,
|
|
79
|
+
},
|
|
80
|
+
]);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return config;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Setup GitHub Copilot configuration
|
|
88
|
+
* @param {string} projectDir - Project directory
|
|
89
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
90
|
+
* @param {Object} options - Setup options
|
|
91
|
+
*/
|
|
92
|
+
async setup(projectDir, bmadDir, options = {}) {
|
|
93
|
+
console.log(chalk.cyan(`Setting up ${this.name}...`));
|
|
94
|
+
|
|
95
|
+
// Configure VS Code settings using pre-collected config if available
|
|
96
|
+
const config = options.preCollectedConfig || {};
|
|
97
|
+
await this.configureVsCodeSettings(projectDir, { ...options, ...config });
|
|
98
|
+
|
|
99
|
+
// Create .github/chatmodes directory
|
|
100
|
+
const githubDir = path.join(projectDir, this.configDir);
|
|
101
|
+
const chatmodesDir = path.join(githubDir, this.chatmodesDir);
|
|
102
|
+
await this.ensureDir(chatmodesDir);
|
|
103
|
+
|
|
104
|
+
// Get agents
|
|
105
|
+
const agents = await this.getAgents(bmadDir);
|
|
106
|
+
|
|
107
|
+
// Create chat mode files
|
|
108
|
+
let modeCount = 0;
|
|
109
|
+
for (const agent of agents) {
|
|
110
|
+
const content = await this.readFile(agent.path);
|
|
111
|
+
const chatmodeContent = this.createChatmodeContent(agent, content);
|
|
112
|
+
|
|
113
|
+
const targetPath = path.join(chatmodesDir, `${agent.module}-${agent.name}.chatmode.md`);
|
|
114
|
+
await this.writeFile(targetPath, chatmodeContent);
|
|
115
|
+
modeCount++;
|
|
116
|
+
|
|
117
|
+
console.log(chalk.green(` ✓ Created chat mode: ${agent.module}-${agent.name}`));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
console.log(chalk.green(`✓ ${this.name} configured:`));
|
|
121
|
+
console.log(chalk.dim(` - ${modeCount} chat modes created`));
|
|
122
|
+
console.log(chalk.dim(` - Chat modes directory: ${path.relative(projectDir, chatmodesDir)}`));
|
|
123
|
+
console.log(chalk.dim(` - VS Code settings configured`));
|
|
124
|
+
console.log(chalk.dim('\n Chat modes available in VS Code Chat view'));
|
|
125
|
+
|
|
126
|
+
return {
|
|
127
|
+
success: true,
|
|
128
|
+
chatmodes: modeCount,
|
|
129
|
+
settings: true,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Configure VS Code settings for GitHub Copilot
|
|
135
|
+
*/
|
|
136
|
+
async configureVsCodeSettings(projectDir, options) {
|
|
137
|
+
const fs = require('fs-extra');
|
|
138
|
+
const vscodeDir = path.join(projectDir, this.vscodeDir);
|
|
139
|
+
const settingsPath = path.join(vscodeDir, 'settings.json');
|
|
140
|
+
|
|
141
|
+
await this.ensureDir(vscodeDir);
|
|
142
|
+
|
|
143
|
+
// Read existing settings
|
|
144
|
+
let existingSettings = {};
|
|
145
|
+
if (await fs.pathExists(settingsPath)) {
|
|
146
|
+
try {
|
|
147
|
+
const content = await fs.readFile(settingsPath, 'utf8');
|
|
148
|
+
existingSettings = JSON.parse(content);
|
|
149
|
+
console.log(chalk.yellow(' Found existing .vscode/settings.json'));
|
|
150
|
+
} catch {
|
|
151
|
+
console.warn(chalk.yellow(' Could not parse settings.json, creating new'));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Use pre-collected configuration or skip if not available
|
|
156
|
+
let configChoice = options.vsCodeConfig;
|
|
157
|
+
if (!configChoice) {
|
|
158
|
+
// If no pre-collected config, skip configuration
|
|
159
|
+
console.log(chalk.yellow(' ⚠ No configuration collected, skipping VS Code settings'));
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (configChoice === 'skip') {
|
|
164
|
+
console.log(chalk.yellow(' ⚠ Skipping VS Code settings'));
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
let bmadSettings = {};
|
|
169
|
+
|
|
170
|
+
if (configChoice === 'defaults') {
|
|
171
|
+
bmadSettings = {
|
|
172
|
+
'chat.agent.enabled': true,
|
|
173
|
+
'chat.agent.maxRequests': 15,
|
|
174
|
+
'github.copilot.chat.agent.runTasks': true,
|
|
175
|
+
'chat.mcp.discovery.enabled': true,
|
|
176
|
+
'github.copilot.chat.agent.autoFix': true,
|
|
177
|
+
'chat.tools.autoApprove': false,
|
|
178
|
+
};
|
|
179
|
+
console.log(chalk.green(' ✓ Using recommended defaults'));
|
|
180
|
+
} else {
|
|
181
|
+
// Manual configuration - use pre-collected settings
|
|
182
|
+
const manual = options.manualSettings || {};
|
|
183
|
+
|
|
184
|
+
bmadSettings = {
|
|
185
|
+
'chat.agent.enabled': true,
|
|
186
|
+
'chat.agent.maxRequests': parseInt(manual.maxRequests || 15),
|
|
187
|
+
'github.copilot.chat.agent.runTasks': manual.runTasks === undefined ? true : manual.runTasks,
|
|
188
|
+
'chat.mcp.discovery.enabled': manual.mcpDiscovery === undefined ? true : manual.mcpDiscovery,
|
|
189
|
+
'github.copilot.chat.agent.autoFix': manual.autoFix === undefined ? true : manual.autoFix,
|
|
190
|
+
'chat.tools.autoApprove': manual.autoApprove || false,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Merge settings (existing take precedence)
|
|
195
|
+
const mergedSettings = { ...bmadSettings, ...existingSettings };
|
|
196
|
+
|
|
197
|
+
// Write settings
|
|
198
|
+
await fs.writeFile(settingsPath, JSON.stringify(mergedSettings, null, 2));
|
|
199
|
+
console.log(chalk.green(' ✓ VS Code settings configured'));
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Create chat mode content
|
|
204
|
+
*/
|
|
205
|
+
createChatmodeContent(agent, content) {
|
|
206
|
+
// Extract metadata
|
|
207
|
+
const titleMatch = content.match(/title="([^"]+)"/);
|
|
208
|
+
const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
|
|
209
|
+
|
|
210
|
+
const whenToUseMatch = content.match(/whenToUse="([^"]+)"/);
|
|
211
|
+
const description = whenToUseMatch ? whenToUseMatch[1] : `Activates the ${title} agent persona.`;
|
|
212
|
+
|
|
213
|
+
// Available GitHub Copilot tools
|
|
214
|
+
const tools = [
|
|
215
|
+
'changes',
|
|
216
|
+
'codebase',
|
|
217
|
+
'fetch',
|
|
218
|
+
'findTestFiles',
|
|
219
|
+
'githubRepo',
|
|
220
|
+
'problems',
|
|
221
|
+
'usages',
|
|
222
|
+
'editFiles',
|
|
223
|
+
'runCommands',
|
|
224
|
+
'runTasks',
|
|
225
|
+
'runTests',
|
|
226
|
+
'search',
|
|
227
|
+
'searchResults',
|
|
228
|
+
'terminalLastCommand',
|
|
229
|
+
'terminalSelection',
|
|
230
|
+
'testFailure',
|
|
231
|
+
];
|
|
232
|
+
|
|
233
|
+
let chatmodeContent = `---
|
|
234
|
+
description: "${description.replaceAll('"', String.raw`\"`)}"
|
|
235
|
+
tools: ${JSON.stringify(tools)}
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
# ${title} Agent
|
|
239
|
+
|
|
240
|
+
${content}
|
|
241
|
+
|
|
242
|
+
## Module
|
|
243
|
+
|
|
244
|
+
Part of the BMAD ${agent.module.toUpperCase()} module.
|
|
245
|
+
`;
|
|
246
|
+
|
|
247
|
+
return chatmodeContent;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Format name as title
|
|
252
|
+
*/
|
|
253
|
+
formatTitle(name) {
|
|
254
|
+
return name
|
|
255
|
+
.split('-')
|
|
256
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
257
|
+
.join(' ');
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Cleanup GitHub Copilot configuration
|
|
262
|
+
*/
|
|
263
|
+
async cleanup(projectDir) {
|
|
264
|
+
const fs = require('fs-extra');
|
|
265
|
+
const chatmodesDir = path.join(projectDir, this.configDir, this.chatmodesDir);
|
|
266
|
+
|
|
267
|
+
if (await fs.pathExists(chatmodesDir)) {
|
|
268
|
+
// Remove BMAD chat modes
|
|
269
|
+
const files = await fs.readdir(chatmodesDir);
|
|
270
|
+
let removed = 0;
|
|
271
|
+
|
|
272
|
+
for (const file of files) {
|
|
273
|
+
if (file.endsWith('.chatmode.md')) {
|
|
274
|
+
const filePath = path.join(chatmodesDir, file);
|
|
275
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
276
|
+
|
|
277
|
+
if (content.includes('BMAD') && content.includes('Module')) {
|
|
278
|
+
await fs.remove(filePath);
|
|
279
|
+
removed++;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
console.log(chalk.dim(`Removed ${removed} BMAD chat modes from GitHub Copilot`));
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
module.exports = { GitHubCopilotSetup };
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* iFlow CLI setup handler
|
|
7
|
+
* Creates commands in .iflow/commands/ directory structure
|
|
8
|
+
*/
|
|
9
|
+
class IFlowSetup extends BaseIdeSetup {
|
|
10
|
+
constructor() {
|
|
11
|
+
super('iflow', 'iFlow CLI');
|
|
12
|
+
this.configDir = '.iflow';
|
|
13
|
+
this.commandsDir = 'commands';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Setup iFlow 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 .iflow/commands/bmad directory structure
|
|
26
|
+
const iflowDir = path.join(projectDir, this.configDir);
|
|
27
|
+
const commandsDir = path.join(iflowDir, 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);
|
|
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
|
+
console.log(chalk.green(`✓ ${this.name} configured:`));
|
|
61
|
+
console.log(chalk.dim(` - ${agentCount} agent commands created`));
|
|
62
|
+
console.log(chalk.dim(` - ${taskCount} task commands created`));
|
|
63
|
+
console.log(chalk.dim(` - Commands directory: ${path.relative(projectDir, commandsDir)}`));
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
success: true,
|
|
67
|
+
agents: agentCount,
|
|
68
|
+
tasks: taskCount,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Create agent command content
|
|
74
|
+
*/
|
|
75
|
+
createAgentCommand(agent, content) {
|
|
76
|
+
// Extract metadata
|
|
77
|
+
const titleMatch = content.match(/title="([^"]+)"/);
|
|
78
|
+
const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
|
|
79
|
+
|
|
80
|
+
let commandContent = `# /${agent.name} Command
|
|
81
|
+
|
|
82
|
+
When this command is used, adopt the following agent persona:
|
|
83
|
+
|
|
84
|
+
## ${title} Agent
|
|
85
|
+
|
|
86
|
+
${content}
|
|
87
|
+
|
|
88
|
+
## Usage
|
|
89
|
+
|
|
90
|
+
This command activates the ${title} agent from the BMAD ${agent.module.toUpperCase()} module.
|
|
91
|
+
|
|
92
|
+
## Module
|
|
93
|
+
|
|
94
|
+
Part of the BMAD ${agent.module.toUpperCase()} module.
|
|
95
|
+
`;
|
|
96
|
+
|
|
97
|
+
return commandContent;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Create task command content
|
|
102
|
+
*/
|
|
103
|
+
createTaskCommand(task, content) {
|
|
104
|
+
// Extract task name
|
|
105
|
+
const nameMatch = content.match(/<name>([^<]+)<\/name>/);
|
|
106
|
+
const taskName = nameMatch ? nameMatch[1] : this.formatTitle(task.name);
|
|
107
|
+
|
|
108
|
+
let commandContent = `# /task-${task.name} Command
|
|
109
|
+
|
|
110
|
+
When this command is used, execute the following task:
|
|
111
|
+
|
|
112
|
+
## ${taskName} Task
|
|
113
|
+
|
|
114
|
+
${content}
|
|
115
|
+
|
|
116
|
+
## Usage
|
|
117
|
+
|
|
118
|
+
This command executes the ${taskName} task from the BMAD ${task.module.toUpperCase()} module.
|
|
119
|
+
|
|
120
|
+
## Module
|
|
121
|
+
|
|
122
|
+
Part of the BMAD ${task.module.toUpperCase()} module.
|
|
123
|
+
`;
|
|
124
|
+
|
|
125
|
+
return commandContent;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Cleanup iFlow configuration
|
|
130
|
+
*/
|
|
131
|
+
async cleanup(projectDir) {
|
|
132
|
+
const fs = require('fs-extra');
|
|
133
|
+
const bmadCommandsDir = path.join(projectDir, this.configDir, this.commandsDir, 'bmad');
|
|
134
|
+
|
|
135
|
+
if (await fs.pathExists(bmadCommandsDir)) {
|
|
136
|
+
await fs.remove(bmadCommandsDir);
|
|
137
|
+
console.log(chalk.dim(`Removed BMAD commands from iFlow CLI`));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
module.exports = { IFlowSetup };
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* KiloCode IDE setup handler
|
|
7
|
+
* Creates custom modes in .kilocodemodes file (similar to Roo)
|
|
8
|
+
*/
|
|
9
|
+
class KiloSetup extends BaseIdeSetup {
|
|
10
|
+
constructor() {
|
|
11
|
+
super('kilo', 'Kilo Code');
|
|
12
|
+
this.configFile = '.kilocodemodes';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Setup KiloCode 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
|
+
// Check for existing .kilocodemodes file
|
|
25
|
+
const kiloModesPath = path.join(projectDir, this.configFile);
|
|
26
|
+
let existingModes = [];
|
|
27
|
+
let existingContent = '';
|
|
28
|
+
|
|
29
|
+
if (await this.pathExists(kiloModesPath)) {
|
|
30
|
+
existingContent = await this.readFile(kiloModesPath);
|
|
31
|
+
// Parse existing modes
|
|
32
|
+
const modeMatches = existingContent.matchAll(/- slug: ([\w-]+)/g);
|
|
33
|
+
for (const match of modeMatches) {
|
|
34
|
+
existingModes.push(match[1]);
|
|
35
|
+
}
|
|
36
|
+
console.log(chalk.yellow(`Found existing .kilocodemodes file with ${existingModes.length} modes`));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Get agents
|
|
40
|
+
const agents = await this.getAgents(bmadDir);
|
|
41
|
+
|
|
42
|
+
// Create modes content
|
|
43
|
+
let newModesContent = '';
|
|
44
|
+
let addedCount = 0;
|
|
45
|
+
let skippedCount = 0;
|
|
46
|
+
|
|
47
|
+
for (const agent of agents) {
|
|
48
|
+
const slug = `bmad-${agent.module}-${agent.name}`;
|
|
49
|
+
|
|
50
|
+
// Skip if already exists
|
|
51
|
+
if (existingModes.includes(slug)) {
|
|
52
|
+
console.log(chalk.dim(` Skipping ${slug} - already exists`));
|
|
53
|
+
skippedCount++;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const content = await this.readFile(agent.path);
|
|
58
|
+
const modeEntry = this.createModeEntry(agent, content, projectDir);
|
|
59
|
+
|
|
60
|
+
newModesContent += modeEntry;
|
|
61
|
+
addedCount++;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Build final content
|
|
65
|
+
let finalContent = '';
|
|
66
|
+
if (existingContent) {
|
|
67
|
+
finalContent = existingContent.trim() + '\n' + newModesContent;
|
|
68
|
+
} else {
|
|
69
|
+
finalContent = 'customModes:\n' + newModesContent;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Write .kilocodemodes file
|
|
73
|
+
await this.writeFile(kiloModesPath, finalContent);
|
|
74
|
+
|
|
75
|
+
console.log(chalk.green(`✓ ${this.name} configured:`));
|
|
76
|
+
console.log(chalk.dim(` - ${addedCount} modes added`));
|
|
77
|
+
if (skippedCount > 0) {
|
|
78
|
+
console.log(chalk.dim(` - ${skippedCount} modes skipped (already exist)`));
|
|
79
|
+
}
|
|
80
|
+
console.log(chalk.dim(` - Configuration file: ${this.configFile}`));
|
|
81
|
+
console.log(chalk.dim('\n Modes will be available when you open this project in KiloCode'));
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
success: true,
|
|
85
|
+
modes: addedCount,
|
|
86
|
+
skipped: skippedCount,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Create a mode entry for an agent
|
|
92
|
+
*/
|
|
93
|
+
createModeEntry(agent, content, projectDir) {
|
|
94
|
+
// Extract metadata
|
|
95
|
+
const titleMatch = content.match(/title="([^"]+)"/);
|
|
96
|
+
const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
|
|
97
|
+
|
|
98
|
+
const iconMatch = content.match(/icon="([^"]+)"/);
|
|
99
|
+
const icon = iconMatch ? iconMatch[1] : '🤖';
|
|
100
|
+
|
|
101
|
+
const whenToUseMatch = content.match(/whenToUse="([^"]+)"/);
|
|
102
|
+
const whenToUse = whenToUseMatch ? whenToUseMatch[1] : `Use for ${title} tasks`;
|
|
103
|
+
|
|
104
|
+
const roleDefinitionMatch = content.match(/roleDefinition="([^"]+)"/);
|
|
105
|
+
const roleDefinition = roleDefinitionMatch
|
|
106
|
+
? roleDefinitionMatch[1]
|
|
107
|
+
: `You are a ${title} specializing in ${title.toLowerCase()} tasks.`;
|
|
108
|
+
|
|
109
|
+
// Get relative path
|
|
110
|
+
const relativePath = path.relative(projectDir, agent.path).replaceAll('\\', '/');
|
|
111
|
+
|
|
112
|
+
// Build mode entry (KiloCode uses same schema as Roo)
|
|
113
|
+
const slug = `bmad-${agent.module}-${agent.name}`;
|
|
114
|
+
let modeEntry = ` - slug: ${slug}\n`;
|
|
115
|
+
modeEntry += ` name: '${icon} ${title}'\n`;
|
|
116
|
+
modeEntry += ` roleDefinition: ${roleDefinition}\n`;
|
|
117
|
+
modeEntry += ` whenToUse: ${whenToUse}\n`;
|
|
118
|
+
modeEntry += ` customInstructions: CRITICAL Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode\n`;
|
|
119
|
+
modeEntry += ` groups:\n`;
|
|
120
|
+
modeEntry += ` - read\n`;
|
|
121
|
+
modeEntry += ` - edit\n`;
|
|
122
|
+
|
|
123
|
+
return modeEntry;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Format name as title
|
|
128
|
+
*/
|
|
129
|
+
formatTitle(name) {
|
|
130
|
+
return name
|
|
131
|
+
.split('-')
|
|
132
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
133
|
+
.join(' ');
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Cleanup KiloCode configuration
|
|
138
|
+
*/
|
|
139
|
+
async cleanup(projectDir) {
|
|
140
|
+
const fs = require('fs-extra');
|
|
141
|
+
const kiloModesPath = path.join(projectDir, this.configFile);
|
|
142
|
+
|
|
143
|
+
if (await fs.pathExists(kiloModesPath)) {
|
|
144
|
+
const content = await fs.readFile(kiloModesPath, 'utf8');
|
|
145
|
+
|
|
146
|
+
// Remove BMAD modes only
|
|
147
|
+
const lines = content.split('\n');
|
|
148
|
+
const filteredLines = [];
|
|
149
|
+
let skipMode = false;
|
|
150
|
+
let removedCount = 0;
|
|
151
|
+
|
|
152
|
+
for (const line of lines) {
|
|
153
|
+
if (/^\s*- slug: bmad-/.test(line)) {
|
|
154
|
+
skipMode = true;
|
|
155
|
+
removedCount++;
|
|
156
|
+
} else if (skipMode && /^\s*- slug: /.test(line)) {
|
|
157
|
+
skipMode = false;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (!skipMode) {
|
|
161
|
+
filteredLines.push(line);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
await fs.writeFile(kiloModesPath, filteredLines.join('\n'));
|
|
166
|
+
console.log(chalk.dim(`Removed ${removedCount} BMAD modes from .kilocodemodes`));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
module.exports = { KiloSetup };
|