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,301 @@
|
|
|
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
|
+
* Cline IDE setup handler
|
|
8
|
+
* Creates rules in .clinerules directory with ordering support
|
|
9
|
+
*/
|
|
10
|
+
class ClineSetup extends BaseIdeSetup {
|
|
11
|
+
constructor() {
|
|
12
|
+
super('cline', 'Cline');
|
|
13
|
+
this.configDir = '.clinerules';
|
|
14
|
+
this.defaultOrder = {
|
|
15
|
+
core: 10,
|
|
16
|
+
bmm: 20,
|
|
17
|
+
cis: 30,
|
|
18
|
+
other: 99,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Collect configuration choices before installation
|
|
24
|
+
* @param {Object} options - Configuration options
|
|
25
|
+
* @returns {Object} Collected configuration
|
|
26
|
+
*/
|
|
27
|
+
async collectConfiguration(options = {}) {
|
|
28
|
+
const response = await inquirer.prompt([
|
|
29
|
+
{
|
|
30
|
+
type: 'list',
|
|
31
|
+
name: 'ordering',
|
|
32
|
+
message: 'How should BMAD rules be ordered in Cline?',
|
|
33
|
+
choices: [
|
|
34
|
+
{ name: 'By module (core first, then modules)', value: 'module' },
|
|
35
|
+
{ name: 'By importance (dev agents first)', value: 'importance' },
|
|
36
|
+
{ name: 'Alphabetical (simple A-Z ordering)', value: 'alphabetical' },
|
|
37
|
+
{ name: "Custom (I'll reorder manually)", value: 'custom' },
|
|
38
|
+
],
|
|
39
|
+
default: 'module',
|
|
40
|
+
},
|
|
41
|
+
]);
|
|
42
|
+
|
|
43
|
+
return { ordering: response.ordering };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Setup Cline IDE configuration
|
|
48
|
+
* @param {string} projectDir - Project directory
|
|
49
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
50
|
+
* @param {Object} options - Setup options
|
|
51
|
+
*/
|
|
52
|
+
async setup(projectDir, bmadDir, options = {}) {
|
|
53
|
+
console.log(chalk.cyan(`Setting up ${this.name}...`));
|
|
54
|
+
|
|
55
|
+
// Create .clinerules directory
|
|
56
|
+
const clineRulesDir = path.join(projectDir, this.configDir);
|
|
57
|
+
await this.ensureDir(clineRulesDir);
|
|
58
|
+
|
|
59
|
+
// Get agents and tasks
|
|
60
|
+
const agents = await this.getAgents(bmadDir);
|
|
61
|
+
const tasks = await this.getTasks(bmadDir);
|
|
62
|
+
|
|
63
|
+
// Use pre-collected configuration if available
|
|
64
|
+
const config = options.preCollectedConfig || {};
|
|
65
|
+
const orderingStrategy = config.ordering || options.ordering || 'module';
|
|
66
|
+
|
|
67
|
+
// Process agents as rules with ordering
|
|
68
|
+
let ruleCount = 0;
|
|
69
|
+
for (const agent of agents) {
|
|
70
|
+
const content = await this.readFile(agent.path);
|
|
71
|
+
const order = this.getOrder(agent, orderingStrategy);
|
|
72
|
+
const processedContent = this.createAgentRule(agent, content, projectDir);
|
|
73
|
+
|
|
74
|
+
// Use numeric prefix for ordering
|
|
75
|
+
const prefix = order.toString().padStart(2, '0');
|
|
76
|
+
const targetPath = path.join(clineRulesDir, `${prefix}-${agent.module}-${agent.name}.md`);
|
|
77
|
+
|
|
78
|
+
await this.writeFile(targetPath, processedContent);
|
|
79
|
+
ruleCount++;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Process tasks with ordering
|
|
83
|
+
for (const task of tasks) {
|
|
84
|
+
const content = await this.readFile(task.path);
|
|
85
|
+
const order = this.getTaskOrder(task, orderingStrategy);
|
|
86
|
+
const processedContent = this.createTaskRule(task, content);
|
|
87
|
+
|
|
88
|
+
// Tasks get higher order numbers to appear after agents
|
|
89
|
+
const prefix = (order + 50).toString().padStart(2, '0');
|
|
90
|
+
const targetPath = path.join(clineRulesDir, `${prefix}-task-${task.module}-${task.name}.md`);
|
|
91
|
+
|
|
92
|
+
await this.writeFile(targetPath, processedContent);
|
|
93
|
+
ruleCount++;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
console.log(chalk.green(`✓ ${this.name} configured:`));
|
|
97
|
+
console.log(chalk.dim(` - ${ruleCount} rules created in ${path.relative(projectDir, clineRulesDir)}`));
|
|
98
|
+
console.log(chalk.dim(` - Ordering: ${orderingStrategy}`));
|
|
99
|
+
|
|
100
|
+
// Important message about toggle system
|
|
101
|
+
console.log(chalk.yellow('\n ⚠️ IMPORTANT: Cline Toggle System'));
|
|
102
|
+
console.log(chalk.cyan(' Rules are OFF by default to avoid context pollution'));
|
|
103
|
+
console.log(chalk.dim(' To use BMAD agents:'));
|
|
104
|
+
console.log(chalk.dim(' 1. Click rules icon below chat input'));
|
|
105
|
+
console.log(chalk.dim(' 2. Toggle ON the specific agent you need'));
|
|
106
|
+
console.log(chalk.dim(' 3. Type @{agent-name} to activate'));
|
|
107
|
+
console.log(chalk.dim(' 4. Toggle OFF when done to free context'));
|
|
108
|
+
console.log(chalk.dim('\n 💡 Best practice: Only enable 1-2 agents at a time'));
|
|
109
|
+
|
|
110
|
+
return {
|
|
111
|
+
success: true,
|
|
112
|
+
rules: ruleCount,
|
|
113
|
+
ordering: orderingStrategy,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Ask user about rule ordering strategy
|
|
119
|
+
*/
|
|
120
|
+
async askOrderingStrategy() {
|
|
121
|
+
const response = await inquirer.prompt([
|
|
122
|
+
{
|
|
123
|
+
type: 'list',
|
|
124
|
+
name: 'ordering',
|
|
125
|
+
message: 'How should BMAD rules be ordered in Cline?',
|
|
126
|
+
choices: [
|
|
127
|
+
{ name: 'By module (core first, then modules)', value: 'module' },
|
|
128
|
+
{ name: 'By importance (dev agents first)', value: 'importance' },
|
|
129
|
+
{ name: 'Alphabetical (simple A-Z ordering)', value: 'alphabetical' },
|
|
130
|
+
{ name: "Custom (I'll reorder manually)", value: 'custom' },
|
|
131
|
+
],
|
|
132
|
+
default: 'module',
|
|
133
|
+
},
|
|
134
|
+
]);
|
|
135
|
+
|
|
136
|
+
return response.ordering;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Get order number for an agent based on strategy
|
|
141
|
+
*/
|
|
142
|
+
getOrder(agent, strategy) {
|
|
143
|
+
switch (strategy) {
|
|
144
|
+
case 'module': {
|
|
145
|
+
return this.defaultOrder[agent.module] || this.defaultOrder.other;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
case 'importance': {
|
|
149
|
+
// Prioritize certain agent types
|
|
150
|
+
if (agent.name.includes('dev') || agent.name.includes('code')) return 10;
|
|
151
|
+
if (agent.name.includes('architect') || agent.name.includes('design')) return 15;
|
|
152
|
+
if (agent.name.includes('test') || agent.name.includes('qa')) return 20;
|
|
153
|
+
if (agent.name.includes('doc') || agent.name.includes('write')) return 25;
|
|
154
|
+
if (agent.name.includes('review')) return 30;
|
|
155
|
+
return 40;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
case 'alphabetical': {
|
|
159
|
+
// Use a fixed number, files will sort alphabetically by name
|
|
160
|
+
return 50;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
default: {
|
|
164
|
+
// 'custom' or any other value - user will reorder manually
|
|
165
|
+
return 99;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Get order number for a task
|
|
172
|
+
*/
|
|
173
|
+
getTaskOrder(task, strategy) {
|
|
174
|
+
// Tasks always come after agents
|
|
175
|
+
return this.getOrder(task, strategy) + 50;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Create rule content for an agent
|
|
180
|
+
*/
|
|
181
|
+
createAgentRule(agent, content, projectDir) {
|
|
182
|
+
// Extract metadata
|
|
183
|
+
const titleMatch = content.match(/title="([^"]+)"/);
|
|
184
|
+
const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
|
|
185
|
+
|
|
186
|
+
// Extract YAML content
|
|
187
|
+
const yamlMatch = content.match(/```ya?ml\r?\n([\s\S]*?)```/);
|
|
188
|
+
const yamlContent = yamlMatch ? yamlMatch[1] : content;
|
|
189
|
+
|
|
190
|
+
// Get relative path
|
|
191
|
+
const relativePath = path.relative(projectDir, agent.path).replaceAll('\\', '/');
|
|
192
|
+
|
|
193
|
+
let ruleContent = `# ${title} Agent
|
|
194
|
+
|
|
195
|
+
This rule defines the ${title} persona and project standards.
|
|
196
|
+
|
|
197
|
+
## Role Definition
|
|
198
|
+
|
|
199
|
+
When the user types \`@${agent.name}\`, adopt this persona and follow these guidelines:
|
|
200
|
+
|
|
201
|
+
\`\`\`yaml
|
|
202
|
+
${yamlContent}
|
|
203
|
+
\`\`\`
|
|
204
|
+
|
|
205
|
+
## Project Standards
|
|
206
|
+
|
|
207
|
+
- Always maintain consistency with project documentation in BMAD directories
|
|
208
|
+
- Follow the agent's specific guidelines and constraints
|
|
209
|
+
- Update relevant project files when making changes
|
|
210
|
+
- Reference the complete agent definition in [${relativePath}](${relativePath})
|
|
211
|
+
|
|
212
|
+
## Usage
|
|
213
|
+
|
|
214
|
+
Type \`@${agent.name}\` to activate this ${title} persona.
|
|
215
|
+
|
|
216
|
+
## Module
|
|
217
|
+
|
|
218
|
+
Part of the BMAD ${agent.module.toUpperCase()} module.
|
|
219
|
+
`;
|
|
220
|
+
|
|
221
|
+
return ruleContent;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Create rule content for a task
|
|
226
|
+
*/
|
|
227
|
+
createTaskRule(task, content) {
|
|
228
|
+
// Extract task name
|
|
229
|
+
const nameMatch = content.match(/<name>([^<]+)<\/name>/);
|
|
230
|
+
const taskName = nameMatch ? nameMatch[1] : this.formatTitle(task.name);
|
|
231
|
+
|
|
232
|
+
let ruleContent = `# ${taskName} Task
|
|
233
|
+
|
|
234
|
+
This rule defines the ${taskName} task workflow.
|
|
235
|
+
|
|
236
|
+
## Task Workflow
|
|
237
|
+
|
|
238
|
+
When this task is referenced, execute the following steps:
|
|
239
|
+
|
|
240
|
+
${content}
|
|
241
|
+
|
|
242
|
+
## Project Integration
|
|
243
|
+
|
|
244
|
+
- This task follows BMAD Method standards
|
|
245
|
+
- Ensure all outputs align with project conventions
|
|
246
|
+
- Update relevant documentation after task completion
|
|
247
|
+
|
|
248
|
+
## Usage
|
|
249
|
+
|
|
250
|
+
Reference with \`@task-${task.name}\` to access this workflow.
|
|
251
|
+
|
|
252
|
+
## Module
|
|
253
|
+
|
|
254
|
+
Part of the BMAD ${task.module.toUpperCase()} module.
|
|
255
|
+
`;
|
|
256
|
+
|
|
257
|
+
return ruleContent;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Format name as title
|
|
262
|
+
*/
|
|
263
|
+
formatTitle(name) {
|
|
264
|
+
return name
|
|
265
|
+
.split('-')
|
|
266
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
267
|
+
.join(' ');
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Cleanup Cline configuration
|
|
272
|
+
*/
|
|
273
|
+
async cleanup(projectDir) {
|
|
274
|
+
const fs = require('fs-extra');
|
|
275
|
+
const clineRulesDir = path.join(projectDir, this.configDir);
|
|
276
|
+
|
|
277
|
+
if (await fs.pathExists(clineRulesDir)) {
|
|
278
|
+
// Remove all numbered BMAD rules
|
|
279
|
+
const files = await fs.readdir(clineRulesDir);
|
|
280
|
+
let removed = 0;
|
|
281
|
+
|
|
282
|
+
for (const file of files) {
|
|
283
|
+
// Check if it matches our naming pattern (XX-module-name.md)
|
|
284
|
+
if (/^\d{2}-.*\.md$/.test(file)) {
|
|
285
|
+
const filePath = path.join(clineRulesDir, file);
|
|
286
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
287
|
+
|
|
288
|
+
// Verify it's a BMAD rule
|
|
289
|
+
if (content.includes('BMAD') && content.includes('Module')) {
|
|
290
|
+
await fs.remove(filePath);
|
|
291
|
+
removed++;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
console.log(chalk.dim(`Removed ${removed} BMAD rules from Cline`));
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
module.exports = { ClineSetup };
|
|
@@ -0,0 +1,267 @@
|
|
|
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
|
+
* Codex setup handler (supports both CLI and Web)
|
|
8
|
+
* Creates comprehensive AGENTS.md file in project root
|
|
9
|
+
*/
|
|
10
|
+
class CodexSetup extends BaseIdeSetup {
|
|
11
|
+
constructor() {
|
|
12
|
+
super('codex', 'Codex', true); // preferred IDE
|
|
13
|
+
this.agentsFile = 'AGENTS.md';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Collect configuration choices before installation
|
|
18
|
+
* @param {Object} options - Configuration options
|
|
19
|
+
* @returns {Object} Collected configuration
|
|
20
|
+
*/
|
|
21
|
+
async collectConfiguration(options = {}) {
|
|
22
|
+
const response = await inquirer.prompt([
|
|
23
|
+
{
|
|
24
|
+
type: 'list',
|
|
25
|
+
name: 'mode',
|
|
26
|
+
message: 'Select Codex deployment mode:',
|
|
27
|
+
choices: [
|
|
28
|
+
{ name: 'CLI (Command-line interface)', value: 'cli' },
|
|
29
|
+
{ name: 'Web (Browser-based interface)', value: 'web' },
|
|
30
|
+
],
|
|
31
|
+
default: 'cli',
|
|
32
|
+
},
|
|
33
|
+
]);
|
|
34
|
+
|
|
35
|
+
return { codexMode: response.mode };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Setup Codex configuration
|
|
40
|
+
* @param {string} projectDir - Project directory
|
|
41
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
42
|
+
* @param {Object} options - Setup options
|
|
43
|
+
*/
|
|
44
|
+
async setup(projectDir, bmadDir, options = {}) {
|
|
45
|
+
console.log(chalk.cyan(`Setting up ${this.name}...`));
|
|
46
|
+
|
|
47
|
+
// Use pre-collected configuration if available
|
|
48
|
+
const config = options.preCollectedConfig || {};
|
|
49
|
+
const mode = config.codexMode || options.codexMode || 'cli';
|
|
50
|
+
|
|
51
|
+
// Get agents and tasks
|
|
52
|
+
const agents = await this.getAgents(bmadDir);
|
|
53
|
+
const tasks = await this.getTasks(bmadDir);
|
|
54
|
+
|
|
55
|
+
// Create AGENTS.md content
|
|
56
|
+
const content = this.createAgentsDocument(agents, tasks, mode);
|
|
57
|
+
|
|
58
|
+
// Write AGENTS.md file
|
|
59
|
+
const agentsPath = path.join(projectDir, this.agentsFile);
|
|
60
|
+
await this.writeFile(agentsPath, content);
|
|
61
|
+
|
|
62
|
+
// Handle mode-specific setup
|
|
63
|
+
if (mode === 'web') {
|
|
64
|
+
await this.setupWebMode(projectDir);
|
|
65
|
+
} else {
|
|
66
|
+
await this.setupCliMode(projectDir);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
console.log(chalk.green(`✓ ${this.name} configured:`));
|
|
70
|
+
console.log(chalk.dim(` - Mode: ${mode === 'web' ? 'Web' : 'CLI'}`));
|
|
71
|
+
console.log(chalk.dim(` - ${agents.length} agents documented`));
|
|
72
|
+
console.log(chalk.dim(` - ${tasks.length} tasks documented`));
|
|
73
|
+
console.log(chalk.dim(` - Agents file: ${this.agentsFile}`));
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
success: true,
|
|
77
|
+
mode,
|
|
78
|
+
agents: agents.length,
|
|
79
|
+
tasks: tasks.length,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Select Codex mode (CLI or Web)
|
|
85
|
+
*/
|
|
86
|
+
async selectMode() {
|
|
87
|
+
const response = await inquirer.prompt([
|
|
88
|
+
{
|
|
89
|
+
type: 'list',
|
|
90
|
+
name: 'mode',
|
|
91
|
+
message: 'Select Codex deployment mode:',
|
|
92
|
+
choices: [
|
|
93
|
+
{ name: 'CLI (Command-line interface)', value: 'cli' },
|
|
94
|
+
{ name: 'Web (Browser-based interface)', value: 'web' },
|
|
95
|
+
],
|
|
96
|
+
default: 'cli',
|
|
97
|
+
},
|
|
98
|
+
]);
|
|
99
|
+
|
|
100
|
+
return response.mode;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Create comprehensive agents document
|
|
105
|
+
*/
|
|
106
|
+
createAgentsDocument(agents, tasks, mode) {
|
|
107
|
+
let content = `# BMAD Method - Agent Directory
|
|
108
|
+
|
|
109
|
+
This document contains all available BMAD agents and tasks for use with Codex ${mode === 'web' ? 'Web' : 'CLI'}.
|
|
110
|
+
|
|
111
|
+
## Quick Start
|
|
112
|
+
|
|
113
|
+
${
|
|
114
|
+
mode === 'web'
|
|
115
|
+
? `Access agents through the web interface:
|
|
116
|
+
1. Navigate to the Agents section
|
|
117
|
+
2. Select an agent to activate
|
|
118
|
+
3. The agent persona will be active for your session`
|
|
119
|
+
: `Activate agents in CLI:
|
|
120
|
+
1. Reference agents using \`@{agent-name}\`
|
|
121
|
+
2. Execute tasks using \`@task-{task-name}\`
|
|
122
|
+
3. Agents remain active for the conversation`
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Available Agents
|
|
128
|
+
|
|
129
|
+
`;
|
|
130
|
+
|
|
131
|
+
// Group agents by module
|
|
132
|
+
const agentsByModule = {};
|
|
133
|
+
for (const agent of agents) {
|
|
134
|
+
if (!agentsByModule[agent.module]) {
|
|
135
|
+
agentsByModule[agent.module] = [];
|
|
136
|
+
}
|
|
137
|
+
agentsByModule[agent.module].push(agent);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Document each module's agents
|
|
141
|
+
for (const [module, moduleAgents] of Object.entries(agentsByModule)) {
|
|
142
|
+
content += `### ${module.toUpperCase()} Module\n\n`;
|
|
143
|
+
|
|
144
|
+
for (const agent of moduleAgents) {
|
|
145
|
+
const agentContent = this.readFileSync(agent.path);
|
|
146
|
+
const titleMatch = agentContent.match(/title="([^"]+)"/);
|
|
147
|
+
const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
|
|
148
|
+
|
|
149
|
+
const iconMatch = agentContent.match(/icon="([^"]+)"/);
|
|
150
|
+
const icon = iconMatch ? iconMatch[1] : '🤖';
|
|
151
|
+
|
|
152
|
+
const whenToUseMatch = agentContent.match(/whenToUse="([^"]+)"/);
|
|
153
|
+
const whenToUse = whenToUseMatch ? whenToUseMatch[1] : `Use for ${title} tasks`;
|
|
154
|
+
|
|
155
|
+
content += `#### ${icon} ${title} (\`@${agent.name}\`)\n\n`;
|
|
156
|
+
content += `**When to use:** ${whenToUse}\n\n`;
|
|
157
|
+
content += `**Activation:** Type \`@${agent.name}\` to activate this agent.\n\n`;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
content += `---
|
|
162
|
+
|
|
163
|
+
## Available Tasks
|
|
164
|
+
|
|
165
|
+
`;
|
|
166
|
+
|
|
167
|
+
// Group tasks by module
|
|
168
|
+
const tasksByModule = {};
|
|
169
|
+
for (const task of tasks) {
|
|
170
|
+
if (!tasksByModule[task.module]) {
|
|
171
|
+
tasksByModule[task.module] = [];
|
|
172
|
+
}
|
|
173
|
+
tasksByModule[task.module].push(task);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Document each module's tasks
|
|
177
|
+
for (const [module, moduleTasks] of Object.entries(tasksByModule)) {
|
|
178
|
+
content += `### ${module.toUpperCase()} Module Tasks\n\n`;
|
|
179
|
+
|
|
180
|
+
for (const task of moduleTasks) {
|
|
181
|
+
const taskContent = this.readFileSync(task.path);
|
|
182
|
+
const nameMatch = taskContent.match(/<name>([^<]+)<\/name>/);
|
|
183
|
+
const taskName = nameMatch ? nameMatch[1] : this.formatTitle(task.name);
|
|
184
|
+
|
|
185
|
+
content += `- **${taskName}** (\`@task-${task.name}\`)\n`;
|
|
186
|
+
}
|
|
187
|
+
content += '\n';
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
content += `---
|
|
191
|
+
|
|
192
|
+
## Usage Guidelines
|
|
193
|
+
|
|
194
|
+
1. **One agent at a time**: Activate a single agent for focused assistance
|
|
195
|
+
2. **Task execution**: Tasks are one-time workflows, not persistent personas
|
|
196
|
+
3. **Module organization**: Agents and tasks are grouped by their source module
|
|
197
|
+
4. **Context preservation**: ${mode === 'web' ? 'Sessions maintain agent context' : 'Conversations maintain agent context'}
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
*Generated by BMAD Method installer for Codex ${mode === 'web' ? 'Web' : 'CLI'}*
|
|
202
|
+
`;
|
|
203
|
+
|
|
204
|
+
return content;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Read file synchronously (for document generation)
|
|
209
|
+
*/
|
|
210
|
+
readFileSync(filePath) {
|
|
211
|
+
const fs = require('node:fs');
|
|
212
|
+
try {
|
|
213
|
+
return fs.readFileSync(filePath, 'utf8');
|
|
214
|
+
} catch {
|
|
215
|
+
return '';
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Setup for CLI mode
|
|
221
|
+
*/
|
|
222
|
+
async setupCliMode(projectDir) {
|
|
223
|
+
// CLI mode - ensure .gitignore includes AGENTS.md if needed
|
|
224
|
+
const fs = require('fs-extra');
|
|
225
|
+
const gitignorePath = path.join(projectDir, '.gitignore');
|
|
226
|
+
|
|
227
|
+
if (await fs.pathExists(gitignorePath)) {
|
|
228
|
+
const gitignoreContent = await fs.readFile(gitignorePath, 'utf8');
|
|
229
|
+
if (!gitignoreContent.includes('AGENTS.md')) {
|
|
230
|
+
// User can decide whether to track this file
|
|
231
|
+
console.log(chalk.dim(' Note: Consider adding AGENTS.md to .gitignore if desired'));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Setup for Web mode
|
|
238
|
+
*/
|
|
239
|
+
async setupWebMode(projectDir) {
|
|
240
|
+
// Web mode - add to .gitignore to avoid committing
|
|
241
|
+
const fs = require('fs-extra');
|
|
242
|
+
const gitignorePath = path.join(projectDir, '.gitignore');
|
|
243
|
+
|
|
244
|
+
if (await fs.pathExists(gitignorePath)) {
|
|
245
|
+
const gitignoreContent = await fs.readFile(gitignorePath, 'utf8');
|
|
246
|
+
if (!gitignoreContent.includes('AGENTS.md')) {
|
|
247
|
+
await fs.appendFile(gitignorePath, '\n# Codex Web agents file\nAGENTS.md\n');
|
|
248
|
+
console.log(chalk.dim(' Added AGENTS.md to .gitignore for web deployment'));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Cleanup Codex configuration
|
|
255
|
+
*/
|
|
256
|
+
async cleanup(projectDir) {
|
|
257
|
+
const fs = require('fs-extra');
|
|
258
|
+
const agentsPath = path.join(projectDir, this.agentsFile);
|
|
259
|
+
|
|
260
|
+
if (await fs.pathExists(agentsPath)) {
|
|
261
|
+
await fs.remove(agentsPath);
|
|
262
|
+
console.log(chalk.dim('Removed AGENTS.md file'));
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
module.exports = { CodexSetup };
|