bmad-method 6.0.0-alpha.9 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.augment/code_review_guidelines.yaml +271 -0
- package/.claude/skills/bmad-os-changelog-social/SKILL.md +178 -0
- package/.claude/skills/bmad-os-changelog-social/examples/discord-example.md +53 -0
- package/.claude/skills/bmad-os-changelog-social/examples/linkedin-example.md +49 -0
- package/.claude/skills/bmad-os-changelog-social/examples/twitter-example.md +55 -0
- package/.claude/skills/bmad-os-diataxis-style-fix/SKILL.md +7 -0
- package/.claude/skills/bmad-os-diataxis-style-fix/prompts/instructions.md +229 -0
- package/.claude/skills/bmad-os-draft-changelog/SKILL.md +7 -0
- package/.claude/skills/bmad-os-draft-changelog/prompts/instructions.md +82 -0
- package/.claude/skills/bmad-os-gh-triage/README.md +14 -0
- package/.claude/skills/bmad-os-gh-triage/SKILL.md +12 -0
- package/.claude/skills/bmad-os-gh-triage/prompts/agent-prompt.md +60 -0
- package/.claude/skills/bmad-os-gh-triage/prompts/instructions.md +74 -0
- package/.claude/skills/bmad-os-release-module/README.md +24 -0
- package/.claude/skills/bmad-os-release-module/SKILL.md +7 -0
- package/.claude/skills/bmad-os-release-module/prompts/instructions.md +53 -0
- package/.coderabbit.yaml +85 -0
- package/.github/CODE_OF_CONDUCT.md +128 -0
- package/.github/ISSUE_TEMPLATE/bug-report.yaml +124 -0
- package/.github/ISSUE_TEMPLATE/config.yaml +5 -2
- package/.github/ISSUE_TEMPLATE/documentation.yaml +55 -0
- package/.github/ISSUE_TEMPLATE/feature-request.md +22 -0
- package/.github/ISSUE_TEMPLATE/issue.md +32 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
- package/.github/scripts/discord-helpers.sh +34 -0
- package/.github/workflows/coderabbit-review.yaml +22 -0
- package/.github/workflows/discord.yaml +82 -8
- package/.github/workflows/docs.yaml +64 -0
- package/.github/workflows/quality.yaml +40 -2
- package/.husky/pre-commit +13 -0
- package/.markdownlint-cli2.yaml +41 -0
- package/.prettierignore +7 -0
- package/.vscode/settings.json +4 -3
- package/CHANGELOG.md +1074 -674
- package/CNAME +1 -0
- package/CONTRIBUTING.md +97 -189
- package/CONTRIBUTORS.md +32 -0
- package/LICENSE +7 -3
- package/README.md +51 -396
- package/SECURITY.md +85 -0
- package/TRADEMARK.md +55 -0
- package/Wordmark.png +0 -0
- package/banner-bmad-method.png +0 -0
- package/docs/404.md +9 -0
- package/docs/_STYLE_GUIDE.md +370 -0
- package/docs/explanation/advanced-elicitation.md +49 -0
- package/docs/explanation/adversarial-review.md +59 -0
- package/docs/explanation/brainstorming.md +33 -0
- package/docs/explanation/established-projects-faq.md +50 -0
- package/docs/explanation/party-mode.md +59 -0
- package/docs/explanation/preventing-agent-conflicts.md +112 -0
- package/docs/explanation/project-context.md +157 -0
- package/docs/explanation/quick-flow.md +73 -0
- package/docs/explanation/why-solutioning-matters.md +77 -0
- package/docs/how-to/customize-bmad.md +172 -0
- package/docs/how-to/established-projects.md +105 -0
- package/docs/how-to/get-answers-about-bmad.md +103 -0
- package/docs/how-to/install-bmad.md +88 -0
- package/docs/how-to/non-interactive-installation.md +171 -0
- package/docs/how-to/project-context.md +136 -0
- package/docs/how-to/quick-fixes.md +123 -0
- package/docs/how-to/shard-large-documents.md +78 -0
- package/docs/how-to/upgrade-to-v6.md +97 -0
- package/docs/index.md +33 -206
- package/docs/reference/agents.md +28 -0
- package/docs/reference/commands.md +131 -0
- package/docs/reference/modules.md +76 -0
- package/docs/reference/testing.md +106 -0
- package/docs/reference/workflow-map.md +122 -0
- package/docs/tutorials/getting-started.md +219 -0
- package/eslint.config.mjs +26 -16
- package/package.json +35 -28
- package/src/bmm/agents/analyst.agent.yaml +43 -0
- package/src/bmm/agents/architect.agent.yaml +29 -0
- package/src/bmm/agents/dev.agent.yaml +38 -0
- package/src/bmm/agents/pm.agent.yaml +44 -0
- package/src/bmm/agents/qa.agent.yaml +58 -0
- package/src/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
- package/src/bmm/agents/sm.agent.yaml +37 -0
- package/src/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
- package/src/bmm/agents/tech-writer/tech-writer.agent.yaml +46 -0
- package/src/bmm/agents/ux-designer.agent.yaml +27 -0
- package/src/bmm/data/project-context-template.md +26 -0
- package/src/bmm/module-help.csv +31 -0
- package/src/bmm/module.yaml +50 -0
- package/src/bmm/teams/default-party.csv +20 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +57 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +233 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +153 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +154 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +170 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +42 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +184 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +172 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +173 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +133 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +245 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +129 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +13 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
- package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
- package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +44 -0
- package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
- package/src/bmm/workflows/4-implementation/correct-course/instructions.md +207 -0
- package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +54 -0
- package/src/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
- package/src/bmm/workflows/4-implementation/create-story/instructions.xml +346 -0
- package/src/bmm/workflows/4-implementation/create-story/template.md +49 -0
- package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +53 -0
- package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
- package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +21 -0
- package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1444 -0
- package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +53 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +226 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +47 -0
- package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +230 -0
- package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +25 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +174 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +118 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +111 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +111 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +104 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +146 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +191 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +144 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +127 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +200 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
- package/src/bmm/workflows/document-project/checklist.md +245 -0
- package/src/bmm/workflows/document-project/instructions.md +130 -0
- package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/bmm/workflows/document-project/workflow.yaml +22 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/bmm/workflows/generate-project-context/project-context-template.md +21 -0
- package/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
- package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
- package/src/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
- package/src/bmm/workflows/generate-project-context/workflow.md +49 -0
- package/src/bmm/workflows/qa/automate/checklist.md +33 -0
- package/src/bmm/workflows/qa/automate/instructions.md +110 -0
- package/src/bmm/workflows/qa/automate/workflow.yaml +44 -0
- package/src/core/agents/bmad-master.agent.yaml +12 -21
- package/src/core/module-help.csv +9 -0
- package/src/core/module.yaml +25 -0
- package/src/core/tasks/editorial-review-prose.xml +102 -0
- package/src/core/tasks/editorial-review-structure.xml +209 -0
- package/src/core/tasks/help.md +85 -0
- package/src/core/tasks/index-docs.xml +2 -2
- package/src/core/tasks/review-adversarial-general.xml +48 -0
- package/src/core/tasks/shard-doc.xml +108 -0
- package/src/core/tasks/workflow.xml +39 -74
- package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
- package/src/core/workflows/advanced-elicitation/workflow.xml +117 -0
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
- package/src/core/workflows/brainstorming/template.md +13 -104
- package/src/core/workflows/brainstorming/workflow.md +58 -0
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +168 -0
- package/src/core/workflows/party-mode/workflow.md +194 -0
- package/src/utility/agent-components/activation-rules.txt +6 -0
- package/src/utility/agent-components/activation-steps.txt +14 -0
- package/src/utility/agent-components/agent-command-header.md +1 -0
- package/src/utility/agent-components/agent.customize.template.yaml +41 -0
- package/src/utility/agent-components/handler-action.txt +4 -0
- package/src/utility/agent-components/handler-exec.txt +6 -0
- package/src/utility/agent-components/handler-multi.txt +14 -0
- package/src/utility/agent-components/handler-tmpl.txt +5 -0
- package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
- package/src/utility/agent-components/handler-workflow.txt +10 -0
- package/src/utility/agent-components/menu-handlers.txt +6 -0
- package/test/README.md +4 -4
- package/test/adversarial-review-tests/README.md +56 -0
- package/test/adversarial-review-tests/sample-content.md +46 -0
- package/test/adversarial-review-tests/test-cases.yaml +103 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +1 -1
- package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +1 -0
- package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +2 -3
- package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +2 -1
- package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +2 -1
- package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +2 -1
- package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +1 -0
- package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +1 -0
- package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +3 -0
- package/test/fixtures/file-refs-csv/invalid/empty-data.csv +1 -0
- package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +3 -0
- package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/bmm-style.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/core-style.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/minimal.csv +2 -0
- package/test/test-agent-schema.js +4 -4
- package/test/test-file-refs-csv.js +133 -0
- package/test/test-installation-components.js +10 -12
- package/test/test-rehype-plugins.mjs +1050 -0
- package/test/unit-test-schema.js +2 -2
- package/tools/build-docs.mjs +463 -0
- package/tools/cli/README.md +41 -589
- package/tools/cli/bmad-cli.js +67 -1
- package/tools/cli/commands/install.js +42 -34
- package/tools/cli/commands/status.js +44 -26
- package/tools/cli/commands/uninstall.js +146 -23
- package/tools/cli/external-official-modules.yaml +53 -0
- package/tools/cli/installers/install-messages.yaml +39 -0
- package/tools/cli/installers/lib/core/config-collector.js +589 -95
- package/tools/cli/installers/lib/core/custom-module-cache.js +260 -0
- package/tools/cli/installers/lib/core/dependency-resolver.js +57 -39
- package/tools/cli/installers/lib/core/detector.js +19 -125
- package/tools/cli/installers/lib/core/ide-config-manager.js +12 -9
- package/tools/cli/installers/lib/core/installer.js +2075 -1161
- package/tools/cli/installers/lib/core/manifest-generator.js +494 -103
- package/tools/cli/installers/lib/core/manifest.js +544 -46
- package/tools/cli/installers/lib/custom/handler.js +358 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +83 -44
- package/tools/cli/installers/lib/ide/_config-driven.js +560 -0
- package/tools/cli/installers/lib/ide/codex.js +277 -54
- package/tools/cli/installers/lib/ide/github-copilot.js +607 -209
- package/tools/cli/installers/lib/ide/kilo.js +169 -75
- package/tools/cli/installers/lib/ide/manager.js +179 -48
- package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
- package/tools/cli/installers/lib/ide/platform-codes.yaml +227 -0
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +95 -5
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +51 -20
- package/tools/cli/installers/lib/ide/shared/module-injections.js +6 -3
- package/tools/cli/installers/lib/ide/shared/path-utils.js +299 -0
- package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +262 -14
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +108 -27
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +2 -1
- package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-task.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +7 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +11 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +11 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-agent.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-task.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-tool.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md +7 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-agent.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-task.md +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-tool.md +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow-yaml.md +17 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow.md +17 -0
- package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +2 -1
- package/tools/cli/installers/lib/ide/templates/workflow-commander.md +6 -0
- package/tools/cli/installers/lib/message-loader.js +83 -0
- package/tools/cli/installers/lib/modules/external-manager.js +136 -0
- package/tools/cli/installers/lib/modules/manager.js +931 -207
- package/tools/cli/lib/activation-builder.js +13 -16
- package/tools/cli/lib/agent/compiler.js +525 -0
- package/tools/cli/lib/agent/installer.js +680 -0
- package/tools/cli/lib/agent/template-engine.js +152 -0
- package/tools/cli/lib/agent-analyzer.js +48 -20
- package/tools/cli/lib/agent-party-generator.js +5 -17
- package/tools/cli/lib/cli-utils.js +76 -104
- package/tools/cli/lib/config.js +4 -3
- package/tools/cli/lib/platform-codes.js +2 -2
- package/tools/cli/lib/project-root.js +6 -0
- package/tools/cli/lib/prompts.js +809 -0
- package/tools/cli/lib/ui.js +1600 -272
- package/tools/cli/lib/xml-handler.js +4 -55
- package/tools/cli/lib/yaml-format.js +4 -6
- package/tools/cli/lib/yaml-xml-builder.js +183 -61
- package/tools/docs/_prompt-external-modules-page.md +59 -0
- package/tools/docs/fix-refs.md +91 -0
- package/tools/fix-doc-links.js +285 -0
- package/tools/lib/xml-utils.js +13 -0
- package/tools/maintainer/review-pr-README.md +55 -0
- package/tools/maintainer/review-pr.md +242 -0
- package/tools/migrate-custom-module-paths.js +124 -0
- package/tools/platform-codes.yaml +24 -0
- package/tools/schema/agent.js +306 -53
- package/tools/validate-agent-schema.js +3 -3
- package/tools/validate-doc-links.js +393 -0
- package/tools/validate-file-refs.js +554 -0
- package/tools/validate-svg-changes.sh +356 -0
- package/website/README.md +75 -0
- package/website/astro.config.mjs +135 -0
- package/website/public/favicon.ico +0 -0
- package/website/public/img/bmad-dark.png +0 -0
- package/website/public/img/bmad-light.png +0 -0
- package/website/public/workflow-map-diagram.html +361 -0
- package/website/src/components/Banner.astro +62 -0
- package/website/src/components/Header.astro +96 -0
- package/website/src/components/MobileMenuFooter.astro +33 -0
- package/website/src/content/config.ts +6 -0
- package/website/src/lib/site-url.mjs +25 -0
- package/website/src/pages/404.astro +11 -0
- package/website/src/pages/robots.txt.ts +48 -0
- package/website/src/rehype-base-paths.js +112 -0
- package/website/src/rehype-markdown-links.js +111 -0
- package/website/src/styles/custom.css +509 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
- package/.github/ISSUE_TEMPLATE/idea_submission.md +0 -109
- package/.github/workflows/bundle-latest.yaml +0 -277
- package/.github/workflows/manual-release.yaml +0 -212
- package/docs/BUNDLE_DISTRIBUTION_SETUP.md +0 -95
- package/docs/agent-customization-guide.md +0 -208
- package/docs/document-sharding-guide.md +0 -447
- package/docs/ide-info/auggie.md +0 -31
- package/docs/ide-info/claude-code.md +0 -25
- package/docs/ide-info/cline.md +0 -31
- package/docs/ide-info/codex.md +0 -21
- package/docs/ide-info/crush.md +0 -30
- package/docs/ide-info/cursor.md +0 -25
- package/docs/ide-info/gemini.md +0 -25
- package/docs/ide-info/github-copilot.md +0 -26
- package/docs/ide-info/iflow.md +0 -33
- package/docs/ide-info/kilo.md +0 -24
- package/docs/ide-info/opencode.md +0 -24
- package/docs/ide-info/qwen.md +0 -25
- package/docs/ide-info/roo.md +0 -27
- package/docs/ide-info/trae.md +0 -25
- package/docs/ide-info/windsurf.md +0 -22
- package/docs/installers-bundlers/ide-injections.md +0 -186
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +0 -388
- package/docs/installers-bundlers/web-bundler-usage.md +0 -54
- package/docs/v4-to-v6-upgrade.md +0 -227
- package/docs/web-bundles-gemini-gpt-guide.md +0 -473
- package/src/core/_module-installer/install-config.yaml +0 -35
- package/src/core/_module-installer/installer.js +0 -60
- package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -113
- package/src/core/tasks/adv-elicit-methods.csv +0 -39
- package/src/core/tasks/advanced-elicitation.xml +0 -106
- package/src/core/tasks/validate-workflow.xml +0 -89
- package/src/core/tools/shard-doc.xml +0 -109
- package/src/core/workflows/brainstorming/README.md +0 -261
- package/src/core/workflows/brainstorming/instructions.md +0 -315
- package/src/core/workflows/brainstorming/workflow.yaml +0 -43
- package/src/core/workflows/party-mode/instructions.md +0 -183
- package/src/core/workflows/party-mode/workflow.yaml +0 -27
- package/src/modules/bmb/README.md +0 -194
- package/src/modules/bmb/_module-installer/install-config.yaml +0 -31
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +0 -59
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -142
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
- package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
- package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
- package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -34
- package/src/modules/bmb/workflows/create-agent/README.md +0 -203
- package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -415
- package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
- package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
- package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +0 -174
- package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
- package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
- package/src/modules/bmb/workflows/create-agent/instructions.md +0 -456
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -49
- package/src/modules/bmb/workflows/create-module/README.md +0 -229
- package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
- package/src/modules/bmb/workflows/create-module/checklist.md +0 -235
- package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
- package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
- package/src/modules/bmb/workflows/create-module/instructions.md +0 -576
- package/src/modules/bmb/workflows/create-module/module-structure.md +0 -400
- package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -44
- package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
- package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
- package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
- package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -724
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1306
- package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
- package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -65
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -42
- package/src/modules/bmb/workflows/edit-agent/README.md +0 -112
- package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
- package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -290
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -35
- package/src/modules/bmb/workflows/edit-module/README.md +0 -187
- package/src/modules/bmb/workflows/edit-module/checklist.md +0 -165
- package/src/modules/bmb/workflows/edit-module/instructions.md +0 -339
- package/src/modules/bmb/workflows/edit-module/workflow.yaml +0 -36
- package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
- package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -29
- package/src/modules/bmb/workflows/module-brief/README.md +0 -264
- package/src/modules/bmb/workflows/module-brief/checklist.md +0 -116
- package/src/modules/bmb/workflows/module-brief/instructions.md +0 -267
- package/src/modules/bmb/workflows/module-brief/template.md +0 -275
- package/src/modules/bmb/workflows/module-brief/workflow.yaml +0 -31
- package/src/modules/bmb/workflows/redoc/README.md +0 -87
- package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
- package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
- package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
- package/src/modules/bmgd/README.md +0 -208
- package/src/modules/bmgd/_module-installer/install-config.yaml +0 -54
- package/src/modules/bmgd/agents/game-architect.agent.yaml +0 -33
- package/src/modules/bmgd/agents/game-designer.agent.yaml +0 -40
- package/src/modules/bmgd/agents/game-dev.agent.yaml +0 -40
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +0 -75
- package/src/modules/bmgd/teams/default-party.csv +0 -10
- package/src/modules/bmgd/teams/team-gamedev.yaml +0 -18
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/game-brain-methods.csv +0 -26
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/game-context.md +0 -115
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +0 -128
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +0 -41
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/checklist.md +0 -128
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +0 -371
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/template.md +0 -205
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +0 -44
- package/src/modules/bmgd/workflows/2-design/gdd/checklist.md +0 -148
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/action-platformer.md +0 -45
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/adventure.md +0 -84
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/card-game.md +0 -76
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/fighting.md +0 -89
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/horror.md +0 -86
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/idle-incremental.md +0 -78
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/metroidvania.md +0 -87
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/moba.md +0 -74
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/party-game.md +0 -79
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/puzzle.md +0 -58
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/racing.md +0 -88
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/rhythm.md +0 -79
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/roguelike.md +0 -69
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/rpg.md +0 -70
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/sandbox.md +0 -79
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/shooter.md +0 -62
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/simulation.md +0 -73
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/sports.md +0 -75
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/strategy.md +0 -71
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/survival.md +0 -79
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/text-based.md +0 -91
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/tower-defense.md +0 -79
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/turn-based-tactics.md +0 -88
- package/src/modules/bmgd/workflows/2-design/gdd/game-types/visual-novel.md +0 -89
- package/src/modules/bmgd/workflows/2-design/gdd/game-types.csv +0 -25
- package/src/modules/bmgd/workflows/2-design/gdd/gdd-template.md +0 -153
- package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +0 -501
- package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +0 -81
- package/src/modules/bmgd/workflows/2-design/narrative/checklist.md +0 -139
- package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +0 -603
- package/src/modules/bmgd/workflows/2-design/narrative/narrative-template.md +0 -195
- package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +0 -38
- package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +0 -321
- package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-template.md +0 -103
- package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +0 -240
- package/src/modules/bmgd/workflows/3-technical/game-architecture/decision-catalog.yaml +0 -222
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +0 -699
- package/src/modules/bmgd/workflows/3-technical/game-architecture/pattern-categories.csv +0 -13
- package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +0 -67
- package/src/modules/bmgd/workflows/4-production/code-review/backlog_template.md +0 -12
- package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +0 -22
- package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +0 -398
- package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +0 -57
- package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +0 -279
- package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +0 -206
- package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +0 -52
- package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +0 -240
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +0 -256
- package/src/modules/bmgd/workflows/4-production/create-story/template.md +0 -51
- package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +0 -68
- package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +0 -38
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +0 -267
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +0 -53
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +0 -17
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +0 -164
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +0 -76
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +0 -52
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +0 -1442
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +0 -52
- package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +0 -234
- package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +0 -55
- package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +0 -50
- package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +0 -16
- package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +0 -34
- package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +0 -209
- package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +0 -57
- package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +0 -111
- package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +0 -28
- package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +0 -117
- package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +0 -25
- package/src/modules/bmm/README.md +0 -128
- package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
- package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
- package/src/modules/bmm/_module-installer/install-config.yaml +0 -60
- package/src/modules/bmm/_module-installer/installer.js +0 -131
- package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +0 -35
- package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +0 -32
- package/src/modules/bmm/agents/analyst.agent.yaml +0 -48
- package/src/modules/bmm/agents/architect.agent.yaml +0 -42
- package/src/modules/bmm/agents/dev.agent.yaml +0 -40
- package/src/modules/bmm/agents/pm.agent.yaml +0 -61
- package/src/modules/bmm/agents/sm.agent.yaml +0 -72
- package/src/modules/bmm/agents/tea.agent.yaml +0 -65
- package/src/modules/bmm/agents/tech-writer.agent.yaml +0 -73
- package/src/modules/bmm/agents/ux-designer.agent.yaml +0 -38
- package/src/modules/bmm/docs/README.md +0 -235
- package/src/modules/bmm/docs/agents-guide.md +0 -1056
- package/src/modules/bmm/docs/brownfield-guide.md +0 -754
- package/src/modules/bmm/docs/enterprise-agentic-development.md +0 -680
- package/src/modules/bmm/docs/faq.md +0 -587
- package/src/modules/bmm/docs/glossary.md +0 -320
- package/src/modules/bmm/docs/party-mode.md +0 -224
- package/src/modules/bmm/docs/quick-spec-flow.md +0 -652
- package/src/modules/bmm/docs/quick-start.md +0 -366
- package/src/modules/bmm/docs/scale-adaptive-system.md +0 -599
- package/src/modules/bmm/docs/test-architecture.md +0 -394
- package/src/modules/bmm/docs/workflow-architecture-reference.md +0 -371
- package/src/modules/bmm/docs/workflow-document-project-reference.md +0 -487
- package/src/modules/bmm/docs/workflows-analysis.md +0 -370
- package/src/modules/bmm/docs/workflows-implementation.md +0 -284
- package/src/modules/bmm/docs/workflows-planning.md +0 -601
- package/src/modules/bmm/docs/workflows-solutioning.md +0 -501
- package/src/modules/bmm/teams/default-party.csv +0 -19
- package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +0 -675
- package/src/modules/bmm/testarch/knowledge/component-tdd.md +0 -486
- package/src/modules/bmm/testarch/knowledge/contract-testing.md +0 -957
- package/src/modules/bmm/testarch/knowledge/data-factories.md +0 -500
- package/src/modules/bmm/testarch/knowledge/email-auth.md +0 -721
- package/src/modules/bmm/testarch/knowledge/error-handling.md +0 -725
- package/src/modules/bmm/testarch/knowledge/feature-flags.md +0 -750
- package/src/modules/bmm/testarch/knowledge/fixture-architecture.md +0 -401
- package/src/modules/bmm/testarch/knowledge/network-first.md +0 -486
- package/src/modules/bmm/testarch/knowledge/nfr-criteria.md +0 -670
- package/src/modules/bmm/testarch/knowledge/playwright-config.md +0 -730
- package/src/modules/bmm/testarch/knowledge/probability-impact.md +0 -601
- package/src/modules/bmm/testarch/knowledge/risk-governance.md +0 -615
- package/src/modules/bmm/testarch/knowledge/selective-testing.md +0 -732
- package/src/modules/bmm/testarch/knowledge/selector-resilience.md +0 -527
- package/src/modules/bmm/testarch/knowledge/test-healing-patterns.md +0 -644
- package/src/modules/bmm/testarch/knowledge/test-levels-framework.md +0 -473
- package/src/modules/bmm/testarch/knowledge/test-priorities-matrix.md +0 -373
- package/src/modules/bmm/testarch/knowledge/test-quality.md +0 -664
- package/src/modules/bmm/testarch/knowledge/timing-debugging.md +0 -372
- package/src/modules/bmm/testarch/knowledge/visual-debugging.md +0 -524
- package/src/modules/bmm/testarch/tea-index.csv +0 -22
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -110
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
- package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +0 -423
- package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +0 -180
- package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -56
- package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -522
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -181
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -65
- package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
- package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -299
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -437
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -674
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -133
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -533
- package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -347
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -245
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -62
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1306
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -145
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -99
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
- package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +0 -80
- package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +0 -292
- package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +0 -53
- package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -13
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -525
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -237
- package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -11
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -76
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -434
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -978
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -57
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
- package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -696
- package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -96
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -169
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -302
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -146
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -66
- package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
- package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -57
- package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +0 -279
- package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +0 -206
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -52
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +0 -240
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
- package/src/modules/bmm/workflows/4-implementation/create-story/template.md +0 -51
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -68
- package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +0 -38
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -53
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -52
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1442
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -52
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -33
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -234
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -55
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -50
- package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
- package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -57
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -28
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -25
- package/src/modules/bmm/workflows/document-project/checklist.md +0 -245
- package/src/modules/bmm/workflows/document-project/instructions.md +0 -222
- package/src/modules/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
- package/src/modules/bmm/workflows/document-project/workflow.yaml +0 -36
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
- package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
- package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
- package/src/modules/bmm/workflows/techdoc/documentation-standards.md +0 -262
- package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -363
- package/src/modules/bmm/workflows/testarch/atdd/checklist.md +0 -373
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +0 -785
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +0 -54
- package/src/modules/bmm/workflows/testarch/automate/checklist.md +0 -580
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +0 -1303
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +0 -63
- package/src/modules/bmm/workflows/testarch/ci/checklist.md +0 -246
- package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -165
- package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -128
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +0 -517
- package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +0 -55
- package/src/modules/bmm/workflows/testarch/framework/checklist.md +0 -321
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +0 -455
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +0 -55
- package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +0 -405
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +0 -722
- package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -443
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +0 -58
- package/src/modules/bmm/workflows/testarch/test-design/checklist.md +0 -234
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +0 -782
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +0 -285
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +0 -58
- package/src/modules/bmm/workflows/testarch/test-review/checklist.md +0 -470
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +0 -608
- package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +0 -388
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +0 -55
- package/src/modules/bmm/workflows/testarch/trace/checklist.md +0 -654
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +0 -1045
- package/src/modules/bmm/workflows/testarch/trace/trace-template.md +0 -673
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +0 -68
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +0 -823
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +0 -29
- package/src/modules/bmm/workflows/workflow-status/instructions.md +0 -387
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +0 -120
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +0 -108
- package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -52
- package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -104
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -95
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
- package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +0 -59
- package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -24
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +0 -30
- package/src/modules/cis/README.md +0 -153
- package/src/modules/cis/_module-installer/install-config.yaml +0 -16
- package/src/modules/cis/_module-installer/installer.js +0 -92
- package/src/modules/cis/agents/README.md +0 -104
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +0 -28
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +0 -28
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +0 -28
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +0 -28
- package/src/modules/cis/agents/storyteller.agent.yaml +0 -28
- package/src/modules/cis/teams/creative-squad.yaml +0 -7
- package/src/modules/cis/teams/default-party.csv +0 -11
- package/src/modules/cis/workflows/README.md +0 -139
- package/src/modules/cis/workflows/design-thinking/README.md +0 -56
- package/src/modules/cis/workflows/design-thinking/design-methods.csv +0 -31
- package/src/modules/cis/workflows/design-thinking/instructions.md +0 -200
- package/src/modules/cis/workflows/design-thinking/template.md +0 -111
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +0 -43
- package/src/modules/cis/workflows/innovation-strategy/README.md +0 -56
- package/src/modules/cis/workflows/innovation-strategy/innovation-frameworks.csv +0 -31
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +0 -274
- package/src/modules/cis/workflows/innovation-strategy/template.md +0 -189
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +0 -43
- package/src/modules/cis/workflows/problem-solving/README.md +0 -56
- package/src/modules/cis/workflows/problem-solving/instructions.md +0 -250
- package/src/modules/cis/workflows/problem-solving/solving-methods.csv +0 -31
- package/src/modules/cis/workflows/problem-solving/template.md +0 -165
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +0 -43
- package/src/modules/cis/workflows/storytelling/README.md +0 -58
- package/src/modules/cis/workflows/storytelling/instructions.md +0 -291
- package/src/modules/cis/workflows/storytelling/story-types.csv +0 -26
- package/src/modules/cis/workflows/storytelling/template.md +0 -113
- package/src/modules/cis/workflows/storytelling/workflow.yaml +0 -43
- package/src/utility/models/agent-activation-ide.xml +0 -51
- package/src/utility/models/agent-activation-web.xml +0 -60
- package/src/utility/models/agent-command-header.md +0 -1
- package/src/utility/models/agent-config-template.md +0 -23
- package/src/utility/models/agent-in-team-activation.xml +0 -3
- package/src/utility/models/fragments/activation-rules.xml +0 -8
- package/src/utility/models/fragments/activation-steps.xml +0 -16
- package/src/utility/models/fragments/handler-action.xml +0 -4
- package/src/utility/models/fragments/handler-exec.xml +0 -5
- package/src/utility/models/fragments/handler-tmpl.xml +0 -5
- package/src/utility/models/fragments/handler-validate-workflow.xml +0 -7
- package/src/utility/models/fragments/handler-workflow.xml +0 -9
- package/src/utility/models/fragments/menu-handlers.xml +0 -6
- package/src/utility/models/fragments/web-bundle-activation-steps.xml +0 -32
- package/src/utility/templates/agent.customize.template.yaml +0 -42
- package/test/fixtures/agent-schema/invalid/metadata/core-agent-with-module.agent.yaml +0 -26
- package/test/fixtures/agent-schema/invalid/metadata/module-agent-missing-module.agent.yaml +0 -25
- package/test/fixtures/agent-schema/invalid/metadata/wrong-module-value.agent.yaml +0 -26
- package/tools/cli/bundlers/bundle-web.js +0 -179
- package/tools/cli/bundlers/test-analyst.js +0 -28
- package/tools/cli/bundlers/test-bundler.js +0 -118
- package/tools/cli/bundlers/web-bundler.js +0 -1667
- package/tools/cli/commands/build.js +0 -458
- package/tools/cli/commands/list.js +0 -28
- package/tools/cli/commands/update.js +0 -28
- package/tools/cli/installers/lib/ide/auggie.js +0 -179
- package/tools/cli/installers/lib/ide/claude-code.js +0 -471
- package/tools/cli/installers/lib/ide/cline.js +0 -220
- package/tools/cli/installers/lib/ide/crush.js +0 -240
- package/tools/cli/installers/lib/ide/cursor.js +0 -352
- package/tools/cli/installers/lib/ide/gemini.js +0 -206
- package/tools/cli/installers/lib/ide/iflow.js +0 -125
- package/tools/cli/installers/lib/ide/opencode.js +0 -212
- package/tools/cli/installers/lib/ide/qwen.js +0 -318
- package/tools/cli/installers/lib/ide/roo.js +0 -253
- package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +0 -14
- package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +0 -12
- package/tools/cli/installers/lib/ide/trae.js +0 -266
- package/tools/cli/installers/lib/ide/windsurf.js +0 -211
- package/tools/cli/lib/replace-project-root.js +0 -239
- package/tools/cli/regenerate-manifests.js +0 -28
- package/tools/cli/test-yaml-builder.js +0 -43
- package/tools/flattener/aggregate.js +0 -76
- package/tools/flattener/binary.js +0 -80
- package/tools/flattener/discovery.js +0 -71
- package/tools/flattener/files.js +0 -35
- package/tools/flattener/ignoreRules.js +0 -172
- package/tools/flattener/main.js +0 -483
- package/tools/flattener/projectRoot.js +0 -201
- package/tools/flattener/prompts.js +0 -44
- package/tools/flattener/stats.helpers.js +0 -368
- package/tools/flattener/stats.js +0 -75
- package/tools/flattener/test-matrix.js +0 -409
- package/tools/flattener/xml.js +0 -88
- package/tools/validate-bundles.js +0 -87
- package/v6-open-items.md +0 -17
- /package/src/{modules/bmm → bmm}/teams/team-fullstack.yaml +0 -0
- /package/src/{modules/bmgd/workflows/4-production → bmm/workflows/4-implementation}/sprint-planning/checklist.md +0 -0
- /package/src/{modules/bmm → bmm}/workflows/document-project/documentation-requirements.csv +0 -0
- /package/src/{modules/bmm → bmm}/workflows/document-project/templates/deep-dive-template.md +0 -0
- /package/src/{modules/bmm → bmm}/workflows/document-project/templates/index-template.md +0 -0
- /package/src/{modules/bmm → bmm}/workflows/document-project/templates/project-overview-template.md +0 -0
- /package/src/{modules/bmm → bmm}/workflows/document-project/templates/source-tree-template.md +0 -0
- /package/src/utility/{models/fragments/handler-data.xml → agent-components/handler-data.txt} +0 -0
- /package/{src/utility/models/action-command-header.md → tools/cli/installers/lib/ide/templates/split/.gitkeep} +0 -0
|
@@ -1,87 +1,27 @@
|
|
|
1
1
|
const path = require('node:path');
|
|
2
2
|
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
|
-
const
|
|
4
|
-
const inquirer = require('inquirer');
|
|
3
|
+
const prompts = require('../../../lib/prompts');
|
|
5
4
|
const { AgentCommandGenerator } = require('./shared/agent-command-generator');
|
|
5
|
+
const { BMAD_FOLDER_NAME, toDashPath } = require('./shared/path-utils');
|
|
6
|
+
const fs = require('fs-extra');
|
|
7
|
+
const csv = require('csv-parse/sync');
|
|
8
|
+
const yaml = require('yaml');
|
|
6
9
|
|
|
7
10
|
/**
|
|
8
11
|
* GitHub Copilot setup handler
|
|
9
|
-
* Creates
|
|
12
|
+
* Creates agents in .github/agents/, prompts in .github/prompts/,
|
|
13
|
+
* copilot-instructions.md, and configures VS Code settings
|
|
10
14
|
*/
|
|
11
15
|
class GitHubCopilotSetup extends BaseIdeSetup {
|
|
12
16
|
constructor() {
|
|
13
|
-
super('github-copilot', 'GitHub Copilot',
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* @param {Object} options - Configuration options
|
|
22
|
-
* @returns {Object} Collected configuration
|
|
23
|
-
*/
|
|
24
|
-
async collectConfiguration(options = {}) {
|
|
25
|
-
const config = {};
|
|
26
|
-
|
|
27
|
-
console.log('\n' + chalk.blue(' 🔧 VS Code Settings Configuration'));
|
|
28
|
-
console.log(chalk.dim(' GitHub Copilot works best with specific settings\n'));
|
|
29
|
-
|
|
30
|
-
const response = await inquirer.prompt([
|
|
31
|
-
{
|
|
32
|
-
type: 'list',
|
|
33
|
-
name: 'configChoice',
|
|
34
|
-
message: 'How would you like to configure VS Code settings?',
|
|
35
|
-
choices: [
|
|
36
|
-
{ name: 'Use recommended defaults (fastest)', value: 'defaults' },
|
|
37
|
-
{ name: 'Configure each setting manually', value: 'manual' },
|
|
38
|
-
{ name: 'Skip settings configuration', value: 'skip' },
|
|
39
|
-
],
|
|
40
|
-
default: 'defaults',
|
|
41
|
-
},
|
|
42
|
-
]);
|
|
43
|
-
config.vsCodeConfig = response.configChoice;
|
|
44
|
-
|
|
45
|
-
if (response.configChoice === 'manual') {
|
|
46
|
-
config.manualSettings = await inquirer.prompt([
|
|
47
|
-
{
|
|
48
|
-
type: 'input',
|
|
49
|
-
name: 'maxRequests',
|
|
50
|
-
message: 'Maximum requests per session (1-50)?',
|
|
51
|
-
default: '15',
|
|
52
|
-
validate: (input) => {
|
|
53
|
-
const num = parseInt(input);
|
|
54
|
-
return (num >= 1 && num <= 50) || 'Enter 1-50';
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
type: 'confirm',
|
|
59
|
-
name: 'runTasks',
|
|
60
|
-
message: 'Allow running workspace tasks?',
|
|
61
|
-
default: true,
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
type: 'confirm',
|
|
65
|
-
name: 'mcpDiscovery',
|
|
66
|
-
message: 'Enable MCP server discovery?',
|
|
67
|
-
default: true,
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
type: 'confirm',
|
|
71
|
-
name: 'autoFix',
|
|
72
|
-
message: 'Enable automatic error fixing?',
|
|
73
|
-
default: true,
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
type: 'confirm',
|
|
77
|
-
name: 'autoApprove',
|
|
78
|
-
message: 'Auto-approve tools (less secure)?',
|
|
79
|
-
default: false,
|
|
80
|
-
},
|
|
81
|
-
]);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return config;
|
|
17
|
+
super('github-copilot', 'GitHub Copilot', false);
|
|
18
|
+
// Don't set configDir to '.github' — nearly every GitHub repo has that directory,
|
|
19
|
+
// which would cause the base detect() to false-positive. Use detectionPaths instead.
|
|
20
|
+
this.configDir = null;
|
|
21
|
+
this.githubDir = '.github';
|
|
22
|
+
this.agentsDir = 'agents';
|
|
23
|
+
this.promptsDir = 'prompts';
|
|
24
|
+
this.detectionPaths = ['.github/copilot-instructions.md', '.github/agents'];
|
|
85
25
|
}
|
|
86
26
|
|
|
87
27
|
/**
|
|
@@ -91,176 +31,558 @@ class GitHubCopilotSetup extends BaseIdeSetup {
|
|
|
91
31
|
* @param {Object} options - Setup options
|
|
92
32
|
*/
|
|
93
33
|
async setup(projectDir, bmadDir, options = {}) {
|
|
94
|
-
|
|
34
|
+
if (!options.silent) await prompts.log.info(`Setting up ${this.name}...`);
|
|
95
35
|
|
|
96
|
-
//
|
|
97
|
-
const
|
|
98
|
-
|
|
36
|
+
// Create .github/agents and .github/prompts directories
|
|
37
|
+
const githubDir = path.join(projectDir, this.githubDir);
|
|
38
|
+
const agentsDir = path.join(githubDir, this.agentsDir);
|
|
39
|
+
const promptsDir = path.join(githubDir, this.promptsDir);
|
|
40
|
+
await this.ensureDir(agentsDir);
|
|
41
|
+
await this.ensureDir(promptsDir);
|
|
99
42
|
|
|
100
|
-
//
|
|
101
|
-
|
|
102
|
-
const chatmodesDir = path.join(githubDir, this.chatmodesDir);
|
|
103
|
-
await this.ensureDir(chatmodesDir);
|
|
43
|
+
// Preserve any customised tool permissions from existing files before cleanup
|
|
44
|
+
this.existingToolPermissions = await this.collectExistingToolPermissions(projectDir);
|
|
104
45
|
|
|
105
46
|
// Clean up any existing BMAD files before reinstalling
|
|
106
47
|
await this.cleanup(projectDir);
|
|
107
48
|
|
|
49
|
+
// Load agent manifest for enriched descriptions
|
|
50
|
+
const agentManifest = await this.loadAgentManifest(bmadDir);
|
|
51
|
+
|
|
108
52
|
// Generate agent launchers
|
|
109
53
|
const agentGen = new AgentCommandGenerator(this.bmadFolderName);
|
|
110
54
|
const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
|
|
111
55
|
|
|
112
|
-
// Create
|
|
113
|
-
let
|
|
56
|
+
// Create agent .agent.md files
|
|
57
|
+
let agentCount = 0;
|
|
114
58
|
for (const artifact of agentArtifacts) {
|
|
115
|
-
const
|
|
116
|
-
|
|
59
|
+
const agentMeta = agentManifest.get(artifact.name);
|
|
60
|
+
|
|
61
|
+
// Compute fileName first so we can look up any existing tool permissions
|
|
62
|
+
const dashName = toDashPath(artifact.relativePath);
|
|
63
|
+
const fileName = dashName.replace(/\.md$/, '.agent.md');
|
|
64
|
+
const toolsStr = this.getToolsForFile(fileName);
|
|
65
|
+
const agentContent = this.createAgentContent(artifact, agentMeta, toolsStr);
|
|
66
|
+
const targetPath = path.join(agentsDir, fileName);
|
|
67
|
+
await this.writeFile(targetPath, agentContent);
|
|
68
|
+
agentCount++;
|
|
69
|
+
}
|
|
117
70
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
await this.writeFile(targetPath, chatmodeContent);
|
|
121
|
-
modeCount++;
|
|
71
|
+
// Generate prompt files from bmad-help.csv
|
|
72
|
+
const promptCount = await this.generatePromptFiles(projectDir, bmadDir, agentArtifacts, agentManifest);
|
|
122
73
|
|
|
123
|
-
|
|
124
|
-
|
|
74
|
+
// Generate copilot-instructions.md
|
|
75
|
+
await this.generateCopilotInstructions(projectDir, bmadDir, agentManifest, options);
|
|
125
76
|
|
|
126
|
-
|
|
127
|
-
console.log(chalk.dim(` - ${modeCount} chat modes created`));
|
|
128
|
-
console.log(chalk.dim(` - Chat modes directory: ${path.relative(projectDir, chatmodesDir)}`));
|
|
129
|
-
console.log(chalk.dim(` - VS Code settings configured`));
|
|
130
|
-
console.log(chalk.dim('\n Chat modes available in VS Code Chat view'));
|
|
77
|
+
if (!options.silent) await prompts.log.success(`${this.name} configured: ${agentCount} agents, ${promptCount} prompts → .github/`);
|
|
131
78
|
|
|
132
79
|
return {
|
|
133
80
|
success: true,
|
|
134
|
-
|
|
135
|
-
|
|
81
|
+
results: {
|
|
82
|
+
agents: agentCount,
|
|
83
|
+
workflows: promptCount,
|
|
84
|
+
tasks: 0,
|
|
85
|
+
tools: 0,
|
|
86
|
+
},
|
|
136
87
|
};
|
|
137
88
|
}
|
|
138
89
|
|
|
139
90
|
/**
|
|
140
|
-
*
|
|
91
|
+
* Load agent manifest CSV into a Map keyed by agent name
|
|
92
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
93
|
+
* @returns {Map} Agent metadata keyed by name
|
|
141
94
|
*/
|
|
142
|
-
async
|
|
143
|
-
const
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
95
|
+
async loadAgentManifest(bmadDir) {
|
|
96
|
+
const manifestPath = path.join(bmadDir, '_config', 'agent-manifest.csv');
|
|
97
|
+
const agents = new Map();
|
|
98
|
+
|
|
99
|
+
if (!(await fs.pathExists(manifestPath))) {
|
|
100
|
+
return agents;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
const csvContent = await fs.readFile(manifestPath, 'utf8');
|
|
105
|
+
const records = csv.parse(csvContent, {
|
|
106
|
+
columns: true,
|
|
107
|
+
skip_empty_lines: true,
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
for (const record of records) {
|
|
111
|
+
agents.set(record.name, record);
|
|
158
112
|
}
|
|
113
|
+
} catch {
|
|
114
|
+
// Gracefully degrade if manifest is unreadable/malformed
|
|
159
115
|
}
|
|
160
116
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
117
|
+
return agents;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Load bmad-help.csv to drive prompt generation
|
|
122
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
123
|
+
* @returns {Array|null} Parsed CSV rows
|
|
124
|
+
*/
|
|
125
|
+
async loadBmadHelp(bmadDir) {
|
|
126
|
+
const helpPath = path.join(bmadDir, '_config', 'bmad-help.csv');
|
|
127
|
+
|
|
128
|
+
if (!(await fs.pathExists(helpPath))) {
|
|
129
|
+
return null;
|
|
167
130
|
}
|
|
168
131
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
return
|
|
132
|
+
try {
|
|
133
|
+
const csvContent = await fs.readFile(helpPath, 'utf8');
|
|
134
|
+
return csv.parse(csvContent, {
|
|
135
|
+
columns: true,
|
|
136
|
+
skip_empty_lines: true,
|
|
137
|
+
});
|
|
138
|
+
} catch {
|
|
139
|
+
// Gracefully degrade if help CSV is unreadable/malformed
|
|
140
|
+
return null;
|
|
172
141
|
}
|
|
142
|
+
}
|
|
173
143
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
144
|
+
/**
|
|
145
|
+
* Create agent .agent.md content with enriched description
|
|
146
|
+
* @param {Object} artifact - Agent artifact from AgentCommandGenerator
|
|
147
|
+
* @param {Object|undefined} manifestEntry - Agent manifest entry with metadata
|
|
148
|
+
* @returns {string} Agent file content
|
|
149
|
+
*/
|
|
150
|
+
createAgentContent(artifact, manifestEntry, toolsStr) {
|
|
151
|
+
// Build enriched description from manifest metadata
|
|
152
|
+
let description;
|
|
153
|
+
if (manifestEntry) {
|
|
154
|
+
const persona = manifestEntry.displayName || artifact.name;
|
|
155
|
+
const title = manifestEntry.title || this.formatTitle(artifact.name);
|
|
156
|
+
const capabilities = manifestEntry.capabilities || 'agent capabilities';
|
|
157
|
+
description = `${persona} — ${title}: ${capabilities}`;
|
|
186
158
|
} else {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
159
|
+
description = `Activates the ${this.formatTitle(artifact.name)} agent persona.`;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Build the agent file path for the activation block
|
|
163
|
+
const agentPath = artifact.agentPath || artifact.relativePath;
|
|
164
|
+
const agentFilePath = `{project-root}/${this.bmadFolderName}/${agentPath}`;
|
|
165
|
+
|
|
166
|
+
return `---
|
|
167
|
+
description: '${description.replaceAll("'", "''")}'
|
|
168
|
+
tools: ${toolsStr}
|
|
169
|
+
disable-model-invocation: true
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
You must fully embody this agent's persona and follow all activation instructions exactly as specified.
|
|
173
|
+
|
|
174
|
+
<agent-activation CRITICAL="TRUE">
|
|
175
|
+
1. LOAD the FULL agent file from ${agentFilePath}
|
|
176
|
+
2. READ its entire contents - this contains the complete agent persona, menu, and instructions
|
|
177
|
+
3. FOLLOW every step in the <activation> section precisely
|
|
178
|
+
4. DISPLAY the welcome/greeting as instructed
|
|
179
|
+
5. PRESENT the numbered menu
|
|
180
|
+
6. WAIT for user input before proceeding
|
|
181
|
+
</agent-activation>
|
|
182
|
+
`;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Generate .prompt.md files for workflows, tasks, tech-writer commands, and agent activators
|
|
187
|
+
* @param {string} projectDir - Project directory
|
|
188
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
189
|
+
* @param {Array} agentArtifacts - Agent artifacts for activator generation
|
|
190
|
+
* @param {Map} agentManifest - Agent manifest data
|
|
191
|
+
* @returns {number} Count of prompts generated
|
|
192
|
+
*/
|
|
193
|
+
async generatePromptFiles(projectDir, bmadDir, agentArtifacts, agentManifest) {
|
|
194
|
+
const promptsDir = path.join(projectDir, this.githubDir, this.promptsDir);
|
|
195
|
+
let promptCount = 0;
|
|
196
|
+
|
|
197
|
+
// Load bmad-help.csv to drive workflow/task prompt generation
|
|
198
|
+
const helpEntries = await this.loadBmadHelp(bmadDir);
|
|
199
|
+
|
|
200
|
+
if (helpEntries) {
|
|
201
|
+
for (const entry of helpEntries) {
|
|
202
|
+
const command = entry.command;
|
|
203
|
+
if (!command) continue; // Skip entries without a command (tech-writer commands have no command column)
|
|
204
|
+
|
|
205
|
+
const workflowFile = entry['workflow-file'];
|
|
206
|
+
if (!workflowFile) continue; // Skip entries with no workflow file path
|
|
207
|
+
const promptFileName = `${command}.prompt.md`;
|
|
208
|
+
const toolsStr = this.getToolsForFile(promptFileName);
|
|
209
|
+
const promptContent = this.createWorkflowPromptContent(entry, workflowFile, toolsStr);
|
|
210
|
+
const promptPath = path.join(promptsDir, promptFileName);
|
|
211
|
+
await this.writeFile(promptPath, promptContent);
|
|
212
|
+
promptCount++;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Generate tech-writer command prompts (entries with no command column)
|
|
216
|
+
for (const entry of helpEntries) {
|
|
217
|
+
if (entry.command) continue; // Already handled above
|
|
218
|
+
const techWriterPrompt = this.createTechWriterPromptContent(entry);
|
|
219
|
+
if (techWriterPrompt) {
|
|
220
|
+
const promptFileName = `${techWriterPrompt.fileName}.prompt.md`;
|
|
221
|
+
const promptPath = path.join(promptsDir, promptFileName);
|
|
222
|
+
await this.writeFile(promptPath, techWriterPrompt.content);
|
|
223
|
+
promptCount++;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
198
226
|
}
|
|
199
227
|
|
|
200
|
-
//
|
|
201
|
-
const
|
|
228
|
+
// Generate agent activator prompts (Pattern D)
|
|
229
|
+
for (const artifact of agentArtifacts) {
|
|
230
|
+
const agentMeta = agentManifest.get(artifact.name);
|
|
231
|
+
const fileName = `bmad-${artifact.name}.prompt.md`;
|
|
232
|
+
const toolsStr = this.getToolsForFile(fileName);
|
|
233
|
+
const promptContent = this.createAgentActivatorPromptContent(artifact, agentMeta, toolsStr);
|
|
234
|
+
const promptPath = path.join(promptsDir, fileName);
|
|
235
|
+
await this.writeFile(promptPath, promptContent);
|
|
236
|
+
promptCount++;
|
|
237
|
+
}
|
|
202
238
|
|
|
203
|
-
|
|
204
|
-
await fs.writeFile(settingsPath, JSON.stringify(mergedSettings, null, 2));
|
|
205
|
-
console.log(chalk.green(' ✓ VS Code settings configured'));
|
|
239
|
+
return promptCount;
|
|
206
240
|
}
|
|
207
241
|
|
|
208
242
|
/**
|
|
209
|
-
* Create
|
|
243
|
+
* Create prompt content for a workflow/task entry from bmad-help.csv
|
|
244
|
+
* Determines the pattern (A, B, or A for .xml tasks) based on file extension
|
|
245
|
+
* @param {Object} entry - bmad-help.csv row
|
|
246
|
+
* @param {string} workflowFile - Workflow file path
|
|
247
|
+
* @returns {string} Prompt file content
|
|
210
248
|
*/
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
249
|
+
createWorkflowPromptContent(entry, workflowFile, toolsStr) {
|
|
250
|
+
const description = this.escapeYamlSingleQuote(this.createPromptDescription(entry.name));
|
|
251
|
+
// bmm/config.yaml is safe to hardcode here: these prompts are only generated when
|
|
252
|
+
// bmad-help.csv exists (bmm module data), so bmm is guaranteed to be installed.
|
|
253
|
+
const configLine = `1. Load {project-root}/${this.bmadFolderName}/bmm/config.yaml and store ALL fields as session variables`;
|
|
254
|
+
|
|
255
|
+
let body;
|
|
256
|
+
if (workflowFile.endsWith('.yaml')) {
|
|
257
|
+
// Pattern B: YAML-based workflows — use workflow engine
|
|
258
|
+
body = `${configLine}
|
|
259
|
+
2. Load the workflow engine at {project-root}/${this.bmadFolderName}/core/tasks/workflow.xml
|
|
260
|
+
3. Load and execute the workflow configuration at {project-root}/${workflowFile} using the engine from step 2`;
|
|
261
|
+
} else if (workflowFile.endsWith('.xml')) {
|
|
262
|
+
// Pattern A variant: XML tasks — load and execute directly
|
|
263
|
+
body = `${configLine}
|
|
264
|
+
2. Load and execute the task at {project-root}/${workflowFile}`;
|
|
265
|
+
} else {
|
|
266
|
+
// Pattern A: MD workflows — load and follow directly
|
|
267
|
+
body = `${configLine}
|
|
268
|
+
2. Load and follow the workflow at {project-root}/${workflowFile}`;
|
|
223
269
|
}
|
|
224
270
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
'
|
|
243
|
-
'
|
|
244
|
-
'
|
|
245
|
-
'
|
|
246
|
-
'
|
|
247
|
-
'
|
|
248
|
-
'
|
|
249
|
-
'
|
|
250
|
-
|
|
271
|
+
return `---
|
|
272
|
+
description: '${description}'
|
|
273
|
+
agent: 'agent'
|
|
274
|
+
tools: ${toolsStr}
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
${body}
|
|
278
|
+
`;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Create a short 2-5 word description for a prompt from the entry name
|
|
283
|
+
* @param {string} name - Entry name from bmad-help.csv
|
|
284
|
+
* @returns {string} Short description
|
|
285
|
+
*/
|
|
286
|
+
createPromptDescription(name) {
|
|
287
|
+
const descriptionMap = {
|
|
288
|
+
'Brainstorm Project': 'Brainstorm ideas',
|
|
289
|
+
'Market Research': 'Market research',
|
|
290
|
+
'Domain Research': 'Domain research',
|
|
291
|
+
'Technical Research': 'Technical research',
|
|
292
|
+
'Create Brief': 'Create product brief',
|
|
293
|
+
'Create PRD': 'Create PRD',
|
|
294
|
+
'Validate PRD': 'Validate PRD',
|
|
295
|
+
'Edit PRD': 'Edit PRD',
|
|
296
|
+
'Create UX': 'Create UX design',
|
|
297
|
+
'Create Architecture': 'Create architecture',
|
|
298
|
+
'Create Epics and Stories': 'Create epics and stories',
|
|
299
|
+
'Check Implementation Readiness': 'Check implementation readiness',
|
|
300
|
+
'Sprint Planning': 'Sprint planning',
|
|
301
|
+
'Sprint Status': 'Sprint status',
|
|
302
|
+
'Create Story': 'Create story',
|
|
303
|
+
'Validate Story': 'Validate story',
|
|
304
|
+
'Dev Story': 'Dev story',
|
|
305
|
+
'QA Automation Test': 'QA automation',
|
|
306
|
+
'Code Review': 'Code review',
|
|
307
|
+
Retrospective: 'Retrospective',
|
|
308
|
+
'Document Project': 'Document project',
|
|
309
|
+
'Generate Project Context': 'Generate project context',
|
|
310
|
+
'Quick Spec': 'Quick spec',
|
|
311
|
+
'Quick Dev': 'Quick dev',
|
|
312
|
+
'Correct Course': 'Correct course',
|
|
313
|
+
Brainstorming: 'Brainstorm ideas',
|
|
314
|
+
'Party Mode': 'Party mode',
|
|
315
|
+
'bmad-help': 'BMAD help',
|
|
316
|
+
'Index Docs': 'Index documents',
|
|
317
|
+
'Shard Document': 'Shard document',
|
|
318
|
+
'Editorial Review - Prose': 'Editorial review prose',
|
|
319
|
+
'Editorial Review - Structure': 'Editorial review structure',
|
|
320
|
+
'Adversarial Review (General)': 'Adversarial review',
|
|
321
|
+
};
|
|
251
322
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
323
|
+
return descriptionMap[name] || name;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Create prompt content for tech-writer agent-only commands (Pattern C)
|
|
328
|
+
* @param {Object} entry - bmad-help.csv row
|
|
329
|
+
* @returns {Object|null} { fileName, content } or null if not a tech-writer command
|
|
330
|
+
*/
|
|
331
|
+
createTechWriterPromptContent(entry) {
|
|
332
|
+
if (entry['agent-name'] !== 'tech-writer') return null;
|
|
333
|
+
|
|
334
|
+
const techWriterCommands = {
|
|
335
|
+
'Write Document': { code: 'WD', file: 'bmad-bmm-write-document', description: 'Write document' },
|
|
336
|
+
'Update Standards': { code: 'US', file: 'bmad-bmm-update-standards', description: 'Update standards' },
|
|
337
|
+
'Mermaid Generate': { code: 'MG', file: 'bmad-bmm-mermaid-generate', description: 'Mermaid generate' },
|
|
338
|
+
'Validate Document': { code: 'VD', file: 'bmad-bmm-validate-document', description: 'Validate document' },
|
|
339
|
+
'Explain Concept': { code: 'EC', file: 'bmad-bmm-explain-concept', description: 'Explain concept' },
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
const cmd = techWriterCommands[entry.name];
|
|
343
|
+
if (!cmd) return null;
|
|
344
|
+
|
|
345
|
+
const safeDescription = this.escapeYamlSingleQuote(cmd.description);
|
|
346
|
+
const toolsStr = this.getToolsForFile(`${cmd.file}.prompt.md`);
|
|
347
|
+
|
|
348
|
+
const content = `---
|
|
349
|
+
description: '${safeDescription}'
|
|
350
|
+
agent: 'agent'
|
|
351
|
+
tools: ${toolsStr}
|
|
255
352
|
---
|
|
256
353
|
|
|
257
|
-
|
|
354
|
+
1. Load {project-root}/${this.bmadFolderName}/bmm/config.yaml and store ALL fields as session variables
|
|
355
|
+
2. Load the full agent file from {project-root}/${this.bmadFolderName}/bmm/agents/tech-writer/tech-writer.md and activate the Paige (Technical Writer) persona
|
|
356
|
+
3. Execute the ${entry.name} menu command (${cmd.code})
|
|
357
|
+
`;
|
|
358
|
+
|
|
359
|
+
return { fileName: cmd.file, content };
|
|
360
|
+
}
|
|
258
361
|
|
|
259
|
-
|
|
362
|
+
/**
|
|
363
|
+
* Create agent activator prompt content (Pattern D)
|
|
364
|
+
* @param {Object} artifact - Agent artifact
|
|
365
|
+
* @param {Object|undefined} manifestEntry - Agent manifest entry
|
|
366
|
+
* @returns {string} Prompt file content
|
|
367
|
+
*/
|
|
368
|
+
createAgentActivatorPromptContent(artifact, manifestEntry, toolsStr) {
|
|
369
|
+
let description;
|
|
370
|
+
if (manifestEntry) {
|
|
371
|
+
description = manifestEntry.title || this.formatTitle(artifact.name);
|
|
372
|
+
} else {
|
|
373
|
+
description = this.formatTitle(artifact.name);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
const safeDescription = this.escapeYamlSingleQuote(description);
|
|
377
|
+
const agentPath = artifact.agentPath || artifact.relativePath;
|
|
378
|
+
const agentFilePath = `{project-root}/${this.bmadFolderName}/${agentPath}`;
|
|
379
|
+
|
|
380
|
+
// bmm/config.yaml is safe to hardcode: agent activators are only generated from
|
|
381
|
+
// bmm agent artifacts, so bmm is guaranteed to be installed.
|
|
382
|
+
return `---
|
|
383
|
+
description: '${safeDescription}'
|
|
384
|
+
agent: 'agent'
|
|
385
|
+
tools: ${toolsStr}
|
|
386
|
+
---
|
|
260
387
|
|
|
388
|
+
1. Load {project-root}/${this.bmadFolderName}/bmm/config.yaml and store ALL fields as session variables
|
|
389
|
+
2. Load the full agent file from ${agentFilePath}
|
|
390
|
+
3. Follow ALL activation instructions in the agent file
|
|
391
|
+
4. Display the welcome/greeting as instructed
|
|
392
|
+
5. Present the numbered menu
|
|
393
|
+
6. Wait for user input before proceeding
|
|
261
394
|
`;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Generate copilot-instructions.md from module config
|
|
399
|
+
* @param {string} projectDir - Project directory
|
|
400
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
401
|
+
* @param {Map} agentManifest - Agent manifest data
|
|
402
|
+
*/
|
|
403
|
+
async generateCopilotInstructions(projectDir, bmadDir, agentManifest, options = {}) {
|
|
404
|
+
const configVars = await this.loadModuleConfig(bmadDir);
|
|
405
|
+
|
|
406
|
+
// Build the agents table from the manifest
|
|
407
|
+
let agentsTable = '| Agent | Persona | Title | Capabilities |\n|---|---|---|---|\n';
|
|
408
|
+
const agentOrder = [
|
|
409
|
+
'bmad-master',
|
|
410
|
+
'analyst',
|
|
411
|
+
'architect',
|
|
412
|
+
'dev',
|
|
413
|
+
'pm',
|
|
414
|
+
'qa',
|
|
415
|
+
'quick-flow-solo-dev',
|
|
416
|
+
'sm',
|
|
417
|
+
'tech-writer',
|
|
418
|
+
'ux-designer',
|
|
419
|
+
];
|
|
420
|
+
|
|
421
|
+
for (const agentName of agentOrder) {
|
|
422
|
+
const meta = agentManifest.get(agentName);
|
|
423
|
+
if (meta) {
|
|
424
|
+
const capabilities = meta.capabilities || 'agent capabilities';
|
|
425
|
+
const cleanTitle = (meta.title || '').replaceAll('""', '"');
|
|
426
|
+
agentsTable += `| ${agentName} | ${meta.displayName} | ${cleanTitle} | ${capabilities} |\n`;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
const bmad = this.bmadFolderName;
|
|
431
|
+
const bmadSection = `# BMAD Method — Project Instructions
|
|
432
|
+
|
|
433
|
+
## Project Configuration
|
|
434
|
+
|
|
435
|
+
- **Project**: ${configVars.project_name || '{{project_name}}'}
|
|
436
|
+
- **User**: ${configVars.user_name || '{{user_name}}'}
|
|
437
|
+
- **Communication Language**: ${configVars.communication_language || '{{communication_language}}'}
|
|
438
|
+
- **Document Output Language**: ${configVars.document_output_language || '{{document_output_language}}'}
|
|
439
|
+
- **User Skill Level**: ${configVars.user_skill_level || '{{user_skill_level}}'}
|
|
440
|
+
- **Output Folder**: ${configVars.output_folder || '{{output_folder}}'}
|
|
441
|
+
- **Planning Artifacts**: ${configVars.planning_artifacts || '{{planning_artifacts}}'}
|
|
442
|
+
- **Implementation Artifacts**: ${configVars.implementation_artifacts || '{{implementation_artifacts}}'}
|
|
443
|
+
- **Project Knowledge**: ${configVars.project_knowledge || '{{project_knowledge}}'}
|
|
444
|
+
|
|
445
|
+
## BMAD Runtime Structure
|
|
446
|
+
|
|
447
|
+
- **Agent definitions**: \`${bmad}/bmm/agents/\` (BMM module) and \`${bmad}/core/agents/\` (core)
|
|
448
|
+
- **Workflow definitions**: \`${bmad}/bmm/workflows/\` (organized by phase)
|
|
449
|
+
- **Core tasks**: \`${bmad}/core/tasks/\` (help, editorial review, indexing, sharding, adversarial review)
|
|
450
|
+
- **Core workflows**: \`${bmad}/core/workflows/\` (brainstorming, party-mode, advanced-elicitation)
|
|
451
|
+
- **Workflow engine**: \`${bmad}/core/tasks/workflow.xml\` (executes YAML-based workflows)
|
|
452
|
+
- **Module configuration**: \`${bmad}/bmm/config.yaml\`
|
|
453
|
+
- **Core configuration**: \`${bmad}/core/config.yaml\`
|
|
454
|
+
- **Agent manifest**: \`${bmad}/_config/agent-manifest.csv\`
|
|
455
|
+
- **Workflow manifest**: \`${bmad}/_config/workflow-manifest.csv\`
|
|
456
|
+
- **Help manifest**: \`${bmad}/_config/bmad-help.csv\`
|
|
457
|
+
- **Agent memory**: \`${bmad}/_memory/\`
|
|
458
|
+
|
|
459
|
+
## Key Conventions
|
|
460
|
+
|
|
461
|
+
- Always load \`${bmad}/bmm/config.yaml\` before any agent activation or workflow execution
|
|
462
|
+
- Store all config fields as session variables: \`{user_name}\`, \`{communication_language}\`, \`{output_folder}\`, \`{planning_artifacts}\`, \`{implementation_artifacts}\`, \`{project_knowledge}\`
|
|
463
|
+
- MD-based workflows execute directly — load and follow the \`.md\` file
|
|
464
|
+
- YAML-based workflows require the workflow engine — load \`workflow.xml\` first, then pass the \`.yaml\` config
|
|
465
|
+
- Follow step-based workflow execution: load steps JIT, never multiple at once
|
|
466
|
+
- Save outputs after EACH step when using the workflow engine
|
|
467
|
+
- The \`{project-root}\` variable resolves to the workspace root at runtime
|
|
468
|
+
|
|
469
|
+
## Available Agents
|
|
470
|
+
|
|
471
|
+
${agentsTable}
|
|
472
|
+
## Slash Commands
|
|
473
|
+
|
|
474
|
+
Type \`/bmad-\` in Copilot Chat to see all available BMAD workflows and agent activators. Agents are also available in the agents dropdown.`;
|
|
475
|
+
|
|
476
|
+
const instructionsPath = path.join(projectDir, this.githubDir, 'copilot-instructions.md');
|
|
477
|
+
const markerStart = '<!-- BMAD:START -->';
|
|
478
|
+
const markerEnd = '<!-- BMAD:END -->';
|
|
479
|
+
const markedContent = `${markerStart}\n${bmadSection}\n${markerEnd}`;
|
|
480
|
+
|
|
481
|
+
if (await fs.pathExists(instructionsPath)) {
|
|
482
|
+
const existing = await fs.readFile(instructionsPath, 'utf8');
|
|
483
|
+
const startIdx = existing.indexOf(markerStart);
|
|
484
|
+
const endIdx = existing.indexOf(markerEnd);
|
|
485
|
+
|
|
486
|
+
if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
|
|
487
|
+
// Replace only the BMAD section between markers
|
|
488
|
+
const before = existing.slice(0, startIdx);
|
|
489
|
+
const after = existing.slice(endIdx + markerEnd.length);
|
|
490
|
+
const merged = `${before}${markedContent}${after}`;
|
|
491
|
+
await this.writeFile(instructionsPath, merged);
|
|
492
|
+
} else {
|
|
493
|
+
// Existing file without markers — back it up before overwriting
|
|
494
|
+
const backupPath = `${instructionsPath}.bak`;
|
|
495
|
+
await fs.copy(instructionsPath, backupPath);
|
|
496
|
+
if (!options.silent) await prompts.log.warn(` Backed up copilot-instructions.md → .bak`);
|
|
497
|
+
await this.writeFile(instructionsPath, `${markedContent}\n`);
|
|
498
|
+
}
|
|
499
|
+
} else {
|
|
500
|
+
// No existing file — create fresh with markers
|
|
501
|
+
await this.writeFile(instructionsPath, `${markedContent}\n`);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Load module config.yaml for template variables
|
|
507
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
508
|
+
* @returns {Object} Config variables
|
|
509
|
+
*/
|
|
510
|
+
async loadModuleConfig(bmadDir) {
|
|
511
|
+
const bmmConfigPath = path.join(bmadDir, 'bmm', 'config.yaml');
|
|
512
|
+
const coreConfigPath = path.join(bmadDir, 'core', 'config.yaml');
|
|
513
|
+
|
|
514
|
+
for (const configPath of [bmmConfigPath, coreConfigPath]) {
|
|
515
|
+
if (await fs.pathExists(configPath)) {
|
|
516
|
+
try {
|
|
517
|
+
const content = await fs.readFile(configPath, 'utf8');
|
|
518
|
+
return yaml.parse(content) || {};
|
|
519
|
+
} catch {
|
|
520
|
+
// Fall through to next config
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
return {};
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Escape a string for use inside YAML single-quoted values.
|
|
530
|
+
* In YAML, the only escape inside single quotes is '' for a literal '.
|
|
531
|
+
* @param {string} value - Raw string
|
|
532
|
+
* @returns {string} Escaped string safe for YAML single-quoted context
|
|
533
|
+
*/
|
|
534
|
+
escapeYamlSingleQuote(value) {
|
|
535
|
+
return (value || '').replaceAll("'", "''");
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/**
|
|
539
|
+
* Scan existing agent and prompt files for customised tool permissions before cleanup.
|
|
540
|
+
* Returns a Map<filename, toolsArray> so permissions can be preserved across reinstalls.
|
|
541
|
+
* @param {string} projectDir - Project directory
|
|
542
|
+
* @returns {Map} Existing tool permissions keyed by filename
|
|
543
|
+
*/
|
|
544
|
+
async collectExistingToolPermissions(projectDir) {
|
|
545
|
+
const permissions = new Map();
|
|
546
|
+
const dirs = [
|
|
547
|
+
[path.join(projectDir, this.githubDir, this.agentsDir), /^bmad.*\.agent\.md$/],
|
|
548
|
+
[path.join(projectDir, this.githubDir, this.promptsDir), /^bmad-.*\.prompt\.md$/],
|
|
549
|
+
];
|
|
550
|
+
|
|
551
|
+
for (const [dir, pattern] of dirs) {
|
|
552
|
+
if (!(await fs.pathExists(dir))) continue;
|
|
553
|
+
const files = await fs.readdir(dir);
|
|
554
|
+
|
|
555
|
+
for (const file of files) {
|
|
556
|
+
if (!pattern.test(file)) continue;
|
|
557
|
+
|
|
558
|
+
try {
|
|
559
|
+
const content = await fs.readFile(path.join(dir, file), 'utf8');
|
|
560
|
+
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
561
|
+
if (!fmMatch) continue;
|
|
562
|
+
|
|
563
|
+
const frontmatter = yaml.parse(fmMatch[1]);
|
|
564
|
+
if (frontmatter && Array.isArray(frontmatter.tools)) {
|
|
565
|
+
permissions.set(file, frontmatter.tools);
|
|
566
|
+
}
|
|
567
|
+
} catch {
|
|
568
|
+
// Skip unreadable files
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
}
|
|
262
572
|
|
|
263
|
-
return
|
|
573
|
+
return permissions;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* Get the tools array string for a file, preserving any existing customisation.
|
|
578
|
+
* Falls back to the default tools if no prior customisation exists.
|
|
579
|
+
* @param {string} fileName - Target filename (e.g. 'bmad-agent-bmm-pm.agent.md')
|
|
580
|
+
* @returns {string} YAML inline array string
|
|
581
|
+
*/
|
|
582
|
+
getToolsForFile(fileName) {
|
|
583
|
+
const defaultTools = ['read', 'edit', 'search', 'execute'];
|
|
584
|
+
const tools = (this.existingToolPermissions && this.existingToolPermissions.get(fileName)) || defaultTools;
|
|
585
|
+
return '[' + tools.map((t) => `'${t}'`).join(', ') + ']';
|
|
264
586
|
}
|
|
265
587
|
|
|
266
588
|
/**
|
|
@@ -276,24 +598,100 @@ ${cleanContent}
|
|
|
276
598
|
/**
|
|
277
599
|
* Cleanup GitHub Copilot configuration - surgically remove only BMAD files
|
|
278
600
|
*/
|
|
279
|
-
async cleanup(projectDir) {
|
|
280
|
-
|
|
281
|
-
const
|
|
601
|
+
async cleanup(projectDir, options = {}) {
|
|
602
|
+
// Clean up agents directory
|
|
603
|
+
const agentsDir = path.join(projectDir, this.githubDir, this.agentsDir);
|
|
604
|
+
if (await fs.pathExists(agentsDir)) {
|
|
605
|
+
const files = await fs.readdir(agentsDir);
|
|
606
|
+
let removed = 0;
|
|
282
607
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
608
|
+
for (const file of files) {
|
|
609
|
+
if (file.startsWith('bmad') && (file.endsWith('.agent.md') || file.endsWith('.md'))) {
|
|
610
|
+
await fs.remove(path.join(agentsDir, file));
|
|
611
|
+
removed++;
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
if (removed > 0 && !options.silent) {
|
|
616
|
+
await prompts.log.message(` Cleaned up ${removed} existing BMAD agents`);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
// Clean up prompts directory
|
|
621
|
+
const promptsDir = path.join(projectDir, this.githubDir, this.promptsDir);
|
|
622
|
+
if (await fs.pathExists(promptsDir)) {
|
|
623
|
+
const files = await fs.readdir(promptsDir);
|
|
286
624
|
let removed = 0;
|
|
287
625
|
|
|
288
626
|
for (const file of files) {
|
|
289
|
-
if (file.startsWith('bmad-') && file.endsWith('.
|
|
290
|
-
await fs.remove(path.join(
|
|
627
|
+
if (file.startsWith('bmad-') && file.endsWith('.prompt.md')) {
|
|
628
|
+
await fs.remove(path.join(promptsDir, file));
|
|
291
629
|
removed++;
|
|
292
630
|
}
|
|
293
631
|
}
|
|
294
632
|
|
|
295
|
-
if (removed > 0) {
|
|
296
|
-
|
|
633
|
+
if (removed > 0 && !options.silent) {
|
|
634
|
+
await prompts.log.message(` Cleaned up ${removed} existing BMAD prompts`);
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
// During uninstall, also strip BMAD markers from copilot-instructions.md.
|
|
639
|
+
// During reinstall (default), this is skipped because generateCopilotInstructions()
|
|
640
|
+
// handles marker-based replacement in a single read-modify-write pass,
|
|
641
|
+
// which correctly preserves user content outside the markers.
|
|
642
|
+
if (options.isUninstall) {
|
|
643
|
+
await this.cleanupCopilotInstructions(projectDir, options);
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
/**
|
|
648
|
+
* Strip BMAD marker section from copilot-instructions.md
|
|
649
|
+
* If file becomes empty after stripping, delete it.
|
|
650
|
+
* If a .bak backup exists and the main file was deleted, restore the backup.
|
|
651
|
+
* @param {string} projectDir - Project directory
|
|
652
|
+
* @param {Object} [options] - Options (e.g. { silent: true })
|
|
653
|
+
*/
|
|
654
|
+
async cleanupCopilotInstructions(projectDir, options = {}) {
|
|
655
|
+
const instructionsPath = path.join(projectDir, this.githubDir, 'copilot-instructions.md');
|
|
656
|
+
const backupPath = `${instructionsPath}.bak`;
|
|
657
|
+
|
|
658
|
+
if (!(await fs.pathExists(instructionsPath))) {
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
const content = await fs.readFile(instructionsPath, 'utf8');
|
|
663
|
+
const markerStart = '<!-- BMAD:START -->';
|
|
664
|
+
const markerEnd = '<!-- BMAD:END -->';
|
|
665
|
+
const startIdx = content.indexOf(markerStart);
|
|
666
|
+
const endIdx = content.indexOf(markerEnd);
|
|
667
|
+
|
|
668
|
+
if (startIdx === -1 || endIdx === -1 || endIdx <= startIdx) {
|
|
669
|
+
return; // No valid markers found
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
// Strip the marker section (including markers)
|
|
673
|
+
const before = content.slice(0, startIdx);
|
|
674
|
+
const after = content.slice(endIdx + markerEnd.length);
|
|
675
|
+
const cleaned = before + after;
|
|
676
|
+
|
|
677
|
+
if (cleaned.trim().length === 0) {
|
|
678
|
+
// File is empty after stripping — delete it
|
|
679
|
+
await fs.remove(instructionsPath);
|
|
680
|
+
|
|
681
|
+
// If backup exists, restore it
|
|
682
|
+
if (await fs.pathExists(backupPath)) {
|
|
683
|
+
await fs.rename(backupPath, instructionsPath);
|
|
684
|
+
if (!options.silent) {
|
|
685
|
+
await prompts.log.message(' Restored copilot-instructions.md from backup');
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
} else {
|
|
689
|
+
// Write cleaned content back (preserve original whitespace)
|
|
690
|
+
await fs.writeFile(instructionsPath, cleaned, 'utf8');
|
|
691
|
+
|
|
692
|
+
// If backup exists, it's stale now — remove it
|
|
693
|
+
if (await fs.pathExists(backupPath)) {
|
|
694
|
+
await fs.remove(backupPath);
|
|
297
695
|
}
|
|
298
696
|
}
|
|
299
697
|
}
|