ma-agents 3.6.2 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +139 -0
- package/README.md +27 -11
- package/bin/cli.js +34 -10
- package/docs/deployment/vllm-nemotron.md +4 -2
- package/lib/.bmad-extension-plugin.build-1264-1777348888201/.claude-plugin/marketplace.json +109 -0
- package/lib/{bmad-extension → .bmad-extension-plugin.build-1264-1777348888201/skills}/module-help.csv +5 -5
- package/lib/.bmad-extension-plugin.build-1264-1777348888201/skills/module.yaml +20 -0
- package/lib/.bmad-extension-plugin.build-24696-1777348768444/.claude-plugin/marketplace.json +109 -0
- package/lib/.bmad-extension-plugin.build-24696-1777348768444/skills/module-help.csv +62 -0
- package/lib/.bmad-extension-plugin.build-24696-1777348768444/skills/module.yaml +20 -0
- package/lib/.bmad-extension-plugin.build-25428-1777348694953/.claude-plugin/marketplace.json +109 -0
- package/lib/.bmad-extension-plugin.build-25428-1777348694953/skills/module-help.csv +62 -0
- package/lib/.bmad-extension-plugin.build-25428-1777348694953/skills/module.yaml +20 -0
- package/lib/agents.js +36 -6
- package/lib/bmad-cache/bmb/.claude-plugin/marketplace.json +4 -11
- package/lib/bmad-cache/bmb/README.md +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/index +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.idx +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/{pack-554778ad4e7254827618ebd2497c3f4bce9054a4.pack → pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.pack} +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.rev +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/refs/tags/v1.7.0 +1 -0
- package/lib/bmad-cache/bmb/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/bmb/package-lock.json +2 -2
- package/lib/bmad-cache/bmb/package.json +2 -7
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/customize-template.toml +62 -0
- package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/sample-customize-analyst.toml +87 -0
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/customize-template.toml +56 -0
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/sample-customize-product-brief.toml +51 -0
- package/lib/bmad-cache/bmb/tools/validate-doc-links.cjs +6 -1
- package/lib/bmad-cache/bmb/website/astro.config.mjs +5 -1
- package/lib/bmad-cache/cache-manifest.json +13 -11
- package/lib/bmad-cache/cis/.claude-plugin/marketplace.json +1 -1
- package/lib/bmad-cache/cis/README.md +1 -1
- package/lib/bmad-cache/cis/_git_preserved/index +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-cad8ff313ea5db860ddcc7780f03917dcba1da8d.idx +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/{pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.pack → pack-cad8ff313ea5db860ddcc7780f03917dcba1da8d.pack} +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-cad8ff313ea5db860ddcc7780f03917dcba1da8d.rev +0 -0
- package/lib/bmad-cache/cis/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/cis/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/cis/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/cis/package.json +1 -1
- package/lib/bmad-cache/cis/src/module.yaml +49 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-brainstorming-coach/customize.toml +38 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-creative-problem-solver/customize.toml +38 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-design-thinking-coach/customize.toml +39 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-innovation-strategist/customize.toml +38 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-presentation-master/customize.toml +73 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-storyteller/customize.toml +60 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-design-thinking/customize.toml +41 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-innovation-strategy/customize.toml +41 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-problem-solving/customize.toml +42 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-storytelling/customize.toml +41 -0
- package/lib/bmad-cache/cis/tools/build-docs.mjs +8 -0
- package/lib/bmad-cache/cis/website/astro.config.mjs +34 -4
- package/lib/bmad-cache/cis/website/src/content/config.ts +2 -1
- package/lib/bmad-cache/cis/website/src/content/i18n/zh-CN.json +28 -0
- package/lib/bmad-cache/cis/website/src/lib/locales.mjs +27 -0
- package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +7 -6
- package/lib/bmad-cache/gds/README.md +5 -3
- package/lib/bmad-cache/gds/_git_preserved/index +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-c1322f7c8531a89dc4f3f34c4955d194f286c1e6.idx +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/{pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.pack → pack-c1322f7c8531a89dc4f3f34c4955d194f286c1e6.pack} +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-c1322f7c8531a89dc4f3f34c4955d194f286c1e6.rev +0 -0
- package/lib/bmad-cache/gds/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/gds/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/gds/package.json +1 -1
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/customize.toml +57 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/customize.toml +59 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/customize.toml +129 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/customize.toml +60 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/customize.toml +65 -0
- package/lib/bmad-cache/gds/src/module-help.csv +4 -4
- package/lib/bmad-cache/gds/src/module.yaml +43 -1
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-gdd/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-prd/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-gdd/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-gdd/data/genre-complexity.csv +26 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/domain-complexity.csv +15 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/project-types.csv +11 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/gds-document-project/customize.toml +41 -0
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/customize.toml +41 -0
- package/lib/bmad-cache/tea/.claude-plugin/marketplace.json +1 -1
- package/lib/bmad-cache/tea/.github/CODE_OF_CONDUCT.md +128 -0
- package/lib/bmad-cache/tea/.github/FUNDING.yaml +15 -0
- package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/config.yaml +11 -0
- package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/feature_request.md +70 -0
- package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/issue.md +61 -0
- package/lib/bmad-cache/tea/.github/workflows/docs.yaml +66 -0
- package/lib/bmad-cache/tea/.github/workflows/manual-release.yaml +216 -0
- package/lib/bmad-cache/tea/.github/workflows/quality.yaml +117 -0
- package/lib/bmad-cache/tea/.vscode/settings.json +47 -0
- package/lib/bmad-cache/tea/README.md +63 -55
- package/lib/bmad-cache/tea/_git_preserved/index +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9b16db8eb5022c18cef1f0a27d63b6e0f4bc2b2a.idx +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/{pack-e75385cd52b693dbb8a3b2afb50058952543b3a2.pack → pack-9b16db8eb5022c18cef1f0a27d63b6e0f4bc2b2a.pack} +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9b16db8eb5022c18cef1f0a27d63b6e0f4bc2b2a.rev +0 -0
- package/lib/bmad-cache/tea/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/tea/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/tea/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/tea/docs/explanation/engagement-models.md +1 -1
- package/lib/bmad-cache/tea/docs/explanation/tea-overview.md +1 -1
- package/lib/bmad-cache/tea/docs/glossary/index.md +1 -1
- package/lib/bmad-cache/tea/docs/how-to/customization/extend-tea-with-custom-workflows.md +29 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-trace.md +27 -20
- package/lib/bmad-cache/tea/docs/how-to/workflows/teach-me-testing.md +2 -2
- package/lib/bmad-cache/tea/docs/reference/commands.md +3 -3
- package/lib/bmad-cache/tea/docs/reference/troubleshooting.md +36 -0
- package/lib/bmad-cache/tea/docs/tutorials/learn-testing-tea-academy.md +1 -1
- package/lib/bmad-cache/tea/package-lock.json +2 -2
- package/lib/bmad-cache/tea/package.json +3 -3
- package/lib/bmad-cache/tea/src/agents/bmad-tea/SKILL.md +54 -44
- package/lib/bmad-cache/tea/src/agents/bmad-tea/customize.toml +104 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/contract-testing.md +32 -15
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pact-broker-webhooks.md +237 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pact-consumer-framework-setup.md +134 -12
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pact-mcp.md +1 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-overview.md +15 -12
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-zod-to-pact.md +262 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-module-setup.md +122 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-providers.md +155 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-risk-guidance.md +114 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-template-matchers.md +160 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-testing-fundamentals.md +42 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-timeout-error.md +130 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-waiting-querying.md +167 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/tea-index.csv +13 -4
- package/lib/bmad-cache/tea/src/module.yaml +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/README.md +5 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/SKILL.md +124 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/checklist.md +3 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/customize.toml +40 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/instructions.md +7 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01-init.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01b-continue.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-02-assess.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-01.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-02.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-03.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-04.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-05.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-06.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-07.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-05-completion.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-01-assess-workflow.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-02-apply-edits.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-v/step-v-01-validate.md +12 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/SKILL.md +80 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/customize.toml +40 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/instructions.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/contract-testing.md +32 -15
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-broker-webhooks.md +237 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-consumer-framework-setup.md +134 -12
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-mcp.md +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-overview.md +15 -12
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-zod-to-pact.md +262 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-module-setup.md +122 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-providers.md +155 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-risk-guidance.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-template-matchers.md +160 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-testing-fundamentals.md +42 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-timeout-error.md +130 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-waiting-querying.md +167 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/tea-index.csv +13 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-01-preflight-and-context.md +3 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-02-generation-mode.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-03-test-strategy.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04-generate-tests.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04a-subagent-api-failing.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04c-aggregate.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-05-validate-and-complete.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-01-assess.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-02-apply-edit.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-v/step-01-validate.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/SKILL.md +80 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/customize.toml +40 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/instructions.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/contract-testing.md +18 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-broker-webhooks.md +237 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-consumer-framework-setup.md +134 -12
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-mcp.md +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-module-setup.md +122 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-providers.md +155 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-risk-guidance.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-template-matchers.md +160 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-testing-fundamentals.md +42 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-timeout-error.md +130 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-waiting-querying.md +167 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/tea-index.csv +12 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-01-preflight-and-context.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-02-identify-targets.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03-generate-tests.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03a-subagent-api.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03c-aggregate.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-04-validate-and-summarize.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-01-assess.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-02-apply-edit.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-v/step-01-validate.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/SKILL.md +80 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/customize.toml +40 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/instructions.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/contract-testing.md +18 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-broker-webhooks.md +237 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-consumer-framework-setup.md +134 -12
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-mcp.md +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-module-setup.md +122 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-providers.md +155 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-risk-guidance.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-template-matchers.md +160 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-testing-fundamentals.md +42 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-timeout-error.md +130 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-waiting-querying.md +167 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/tea-index.csv +12 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-01-preflight.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-02-generate-pipeline.md +15 -7
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-03-configure-quality-gates.md +7 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-04-validate-and-summary.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-01-assess.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-02-apply-edit.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-v/step-01-validate.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/SKILL.md +80 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/customize.toml +40 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/instructions.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/contract-testing.md +18 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-broker-webhooks.md +237 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-consumer-framework-setup.md +134 -12
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-mcp.md +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-module-setup.md +122 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-providers.md +155 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-risk-guidance.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-template-matchers.md +160 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-testing-fundamentals.md +42 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-timeout-error.md +130 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-waiting-querying.md +167 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/tea-index.csv +12 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-01-preflight.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-02-select-framework.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-03-scaffold-framework.md +11 -7
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-04-docs-and-scripts.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-05-validate-and-summary.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-01-assess.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-02-apply-edit.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-v/step-01-validate.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/SKILL.md +80 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/customize.toml +40 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/instructions.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/contract-testing.md +18 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-broker-webhooks.md +237 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-consumer-framework-setup.md +134 -12
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-mcp.md +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-module-setup.md +122 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-providers.md +155 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-risk-guidance.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-template-matchers.md +160 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-testing-fundamentals.md +42 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-timeout-error.md +130 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-waiting-querying.md +167 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/tea-index.csv +12 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-02-define-thresholds.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-03-gather-evidence.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04-evaluate-and-score.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04e-aggregate-nfr.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-05-generate-report.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-01-assess.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-02-apply-edit.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-v/step-01-validate.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/SKILL.md +82 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/customize.toml +40 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/instructions.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/contract-testing.md +18 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-broker-webhooks.md +237 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-consumer-framework-setup.md +134 -12
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-mcp.md +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-module-setup.md +122 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-providers.md +155 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-risk-guidance.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-template-matchers.md +160 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-testing-fundamentals.md +42 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-timeout-error.md +130 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-waiting-querying.md +167 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/tea-index.csv +12 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01-detect-mode.md +7 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01b-resume.md +29 -15
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +7 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-03-risk-and-testability.md +7 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-04-coverage-plan.md +7 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-05-generate-output.md +14 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-01-assess.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-02-apply-edit.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-v/step-01-validate.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-architecture-template.md +3 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +3 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-template.md +3 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/SKILL.md +80 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/customize.toml +40 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/instructions.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/contract-testing.md +18 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-broker-webhooks.md +237 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-consumer-framework-setup.md +134 -12
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-mcp.md +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-module-setup.md +122 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-providers.md +155 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-risk-guidance.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-template-matchers.md +160 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-testing-fundamentals.md +42 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-timeout-error.md +130 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-waiting-querying.md +167 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/tea-index.csv +12 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-01-load-context.md +3 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-02-discover-tests.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03-quality-evaluation.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03a-subagent-determinism.md +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03f-aggregate-scores.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-04-generate-report.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-01-assess.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-02-apply-edit.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-v/step-01-validate.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/SKILL.md +82 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/checklist.md +42 -18
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/customize.toml +40 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/instructions.md +6 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/contract-testing.md +18 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-broker-webhooks.md +237 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-consumer-framework-setup.md +134 -12
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-mcp.md +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-module-setup.md +122 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-providers.md +155 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-risk-guidance.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-template-matchers.md +160 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-testing-fundamentals.md +42 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-timeout-error.md +130 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-waiting-querying.md +167 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/tea-index.csv +12 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01-load-context.md +74 -13
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01b-resume.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-02-discover-tests.md +24 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-03-map-criteria.md +15 -11
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-04-analyze-gaps.md +210 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-05-gate-decision.md +477 -62
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-01-assess.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-02-apply-edit.md +8 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-v/step-01-validate.md +9 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/trace-template.md +10 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow-plan.md +14 -11
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.yaml +24 -0
- package/lib/bmad-cache/tea/test/test-installation-components.js +210 -66
- package/lib/bmad-cache/tea/test/test-knowledge-base.js +6 -1
- package/lib/bmad-cache/tea/test/test-release-metadata.js +71 -0
- package/lib/bmad-cache/tea/tools/validate-agent-schema.js +73 -0
- package/lib/bmad-customize/bmm-qa.customize.yaml +1 -1
- package/lib/bmad-extension/.claude-plugin/marketplace.json.template +117 -0
- package/lib/bmad-extension/skills/ma-agent-cyber/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ma-agent-cyber/SKILL.md +49 -0
- package/lib/bmad-extension/skills/ma-agent-cyber/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-extension/skills/ma-agent-devops/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ma-agent-devops/SKILL.md +49 -0
- package/lib/bmad-extension/skills/ma-agent-devops/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-extension/skills/ma-agent-ml/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ma-agent-ml/SKILL.md +59 -0
- package/lib/bmad-extension/skills/ma-agent-ml/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-extension/skills/ma-agent-sqa/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ma-agent-sqa/SKILL.md +59 -0
- package/lib/bmad-extension/skills/ma-agent-sqa/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-extension/skills/ma-agent-sre/.gitkeep +0 -0
- package/lib/bmad-extension/skills/ma-agent-sre/SKILL.md +49 -0
- package/lib/bmad-extension/skills/ma-agent-sre/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-extension/skills/module-help.csv +62 -0
- package/lib/bmad-extension/skills/module.yaml +20 -0
- package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +109 -0
- package/lib/bmad-extension-plugin/skills/add-sprint/SKILL.md +175 -0
- package/lib/bmad-extension-plugin/skills/add-sprint/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/add-to-sprint/SKILL.md +243 -0
- package/lib/bmad-extension-plugin/skills/add-to-sprint/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/bmad-dev-story/SKILL.md +6 -0
- package/lib/bmad-extension-plugin/skills/bmad-dev-story/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/bmad-dev-story/checklist.md +80 -0
- package/lib/bmad-extension-plugin/skills/bmad-dev-story/workflow.md +509 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/SKILL.md +6 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/checklist.md +74 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/sprint-status-template.yaml +89 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/workflow.md +372 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-status/SKILL.md +6 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-status/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-status/workflow.md +434 -0
- package/lib/bmad-extension-plugin/skills/cleanup-done/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/cleanup-done/SKILL.md +215 -0
- package/lib/bmad-extension-plugin/skills/cleanup-done/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/close-sprint/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/close-sprint/SKILL.md +379 -0
- package/lib/bmad-extension-plugin/skills/close-sprint/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/create-bug-story/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/create-bug-story/SKILL.md +195 -0
- package/lib/bmad-extension-plugin/skills/create-bug-story/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/cyber-generate-certs/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/cyber-generate-certs/SKILL.md +27 -0
- package/lib/bmad-extension-plugin/skills/cyber-generate-certs/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/cyber-immunity-estimation/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/cyber-immunity-estimation/SKILL.md +29 -0
- package/lib/bmad-extension-plugin/skills/cyber-immunity-estimation/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/cyber-security-audit/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/cyber-security-audit/SKILL.md +27 -0
- package/lib/bmad-extension-plugin/skills/cyber-security-audit/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/cyber-vault-secrets/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/cyber-vault-secrets/SKILL.md +28 -0
- package/lib/bmad-extension-plugin/skills/cyber-vault-secrets/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/cyber-verify-docker-users/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/cyber-verify-docker-users/SKILL.md +23 -0
- package/lib/bmad-extension-plugin/skills/cyber-verify-docker-users/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/cyber-verify-image-signature/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/cyber-verify-image-signature/SKILL.md +22 -0
- package/lib/bmad-extension-plugin/skills/cyber-verify-image-signature/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/cyber-vulnerability-scan/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/cyber-vulnerability-scan/SKILL.md +28 -0
- package/lib/bmad-extension-plugin/skills/cyber-vulnerability-scan/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/devops-configure-infrastructure/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/devops-configure-infrastructure/SKILL.md +27 -0
- package/lib/bmad-extension-plugin/skills/devops-configure-infrastructure/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/devops-disconnected-deployment/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/devops-disconnected-deployment/SKILL.md +27 -0
- package/lib/bmad-extension-plugin/skills/devops-disconnected-deployment/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/devops-docker-compose-setup/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/devops-docker-compose-setup/SKILL.md +26 -0
- package/lib/bmad-extension-plugin/skills/devops-docker-compose-setup/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/devops-manage-helm/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/devops-manage-helm/SKILL.md +28 -0
- package/lib/bmad-extension-plugin/skills/devops-manage-helm/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/devops-sign-docker-image/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/devops-sign-docker-image/SKILL.md +24 -0
- package/lib/bmad-extension-plugin/skills/devops-sign-docker-image/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/generate-backlog/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/generate-backlog/SKILL.md +195 -0
- package/lib/bmad-extension-plugin/skills/generate-backlog/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ma-agent-cyber/.gitkeep +0 -0
- package/lib/{bmad-extension/skills/bmad-ma-agent-cyber → bmad-extension-plugin/skills/ma-agent-cyber}/SKILL.md +1 -1
- package/lib/{bmad-extension/skills/bmad-ma-agent-cyber → bmad-extension-plugin/skills/ma-agent-cyber}/bmad-skill-manifest.yaml +1 -1
- package/lib/bmad-extension-plugin/skills/ma-agent-devops/.gitkeep +0 -0
- package/lib/{bmad-extension/skills/bmad-ma-agent-devops → bmad-extension-plugin/skills/ma-agent-devops}/SKILL.md +1 -1
- package/lib/{bmad-extension/skills/bmad-ma-agent-devops → bmad-extension-plugin/skills/ma-agent-devops}/bmad-skill-manifest.yaml +1 -1
- package/lib/bmad-extension-plugin/skills/ma-agent-ml/.gitkeep +0 -0
- package/lib/{bmad-extension/skills/bmad-ma-agent-ml → bmad-extension-plugin/skills/ma-agent-ml}/SKILL.md +1 -1
- package/lib/{bmad-extension/skills/bmad-ma-agent-ml → bmad-extension-plugin/skills/ma-agent-ml}/bmad-skill-manifest.yaml +1 -1
- package/lib/bmad-extension-plugin/skills/ma-agent-sqa/.gitkeep +0 -0
- package/lib/{bmad-extension/skills/bmad-ma-agent-sqa → bmad-extension-plugin/skills/ma-agent-sqa}/SKILL.md +1 -1
- package/lib/{bmad-extension/skills/bmad-ma-agent-sqa → bmad-extension-plugin/skills/ma-agent-sqa}/bmad-skill-manifest.yaml +1 -1
- package/lib/bmad-extension-plugin/skills/ma-agent-sre/.gitkeep +0 -0
- package/lib/{bmad-extension/skills/bmad-ma-agent-sre → bmad-extension-plugin/skills/ma-agent-sre}/SKILL.md +1 -1
- package/lib/{bmad-extension/skills/bmad-ma-agent-sre → bmad-extension-plugin/skills/ma-agent-sre}/bmad-skill-manifest.yaml +1 -1
- package/lib/bmad-extension-plugin/skills/mil498-ocd/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/mil498-ocd/SKILL.md +30 -0
- package/lib/bmad-extension-plugin/skills/mil498-ocd/bmad-skill-manifest.yaml +5 -0
- package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +26 -0
- package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/02-load-template.md +10 -0
- package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/03-generate-document.md +90 -0
- package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/04-validate.md +14 -0
- package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/05-review.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/06-save.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-ocd/template.md +169 -0
- package/lib/bmad-extension-plugin/skills/mil498-requirement-quality/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/mil498-requirement-quality/SKILL.md +105 -0
- package/lib/bmad-extension-plugin/skills/mil498-requirement-quality/bmad-skill-manifest.yaml +5 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/SKILL.md +30 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/bmad-skill-manifest.yaml +5 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +50 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/02-load-template.md +10 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/03-generate-document.md +98 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/04-validate.md +16 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/05-review.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/06-save.md +19 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdd/template.md +163 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/SKILL.md +30 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/bmad-skill-manifest.yaml +5 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +32 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/02-load-template.md +10 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/03-generate-document.md +187 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/04-validate.md +13 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/05-review.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/06-save.md +14 -0
- package/lib/bmad-extension-plugin/skills/mil498-sdp/template.md +307 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/SKILL.md +30 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/bmad-skill-manifest.yaml +5 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/01-discover-project-artifacts.md +42 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/02-load-template.md +10 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/03-generate-document.md +100 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/04-validate.md +16 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/05-review.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/06-save.md +18 -0
- package/lib/bmad-extension-plugin/skills/mil498-srs/template.md +219 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/SKILL.md +32 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/bmad-skill-manifest.yaml +5 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +32 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/02-load-template.md +10 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/03-csci-discovery-interview.md +43 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/04-generate-document.md +96 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/05-validate.md +18 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/06-review.md +16 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/07-save.md +16 -0
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/template.md +154 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/SKILL.md +31 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/bmad-skill-manifest.yaml +5 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/01-discover-project-artifacts.md +31 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/02-load-template.md +10 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/03-generate-document.md +108 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/04-validate.md +16 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/05-review.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/06-save.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-sss/template.md +225 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/SKILL.md +30 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/bmad-skill-manifest.yaml +5 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/prompts/01-discover-project-artifacts.md +42 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/prompts/02-load-template.md +10 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/prompts/03-generate-document.md +117 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/prompts/04-validate.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/prompts/05-review.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/prompts/06-save.md +15 -0
- package/lib/bmad-extension-plugin/skills/mil498-std/template.md +188 -0
- package/lib/bmad-extension-plugin/skills/ml-advise/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-advise/SKILL.md +76 -0
- package/lib/bmad-extension-plugin/skills/ml-advise/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-advise/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-analysis/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-analysis/SKILL.md +60 -0
- package/lib/bmad-extension-plugin/skills/ml-analysis/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-analysis/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-architecture/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-architecture/SKILL.md +55 -0
- package/lib/bmad-extension-plugin/skills/ml-architecture/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-architecture/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-detailed-design/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-detailed-design/SKILL.md +67 -0
- package/lib/bmad-extension-plugin/skills/ml-detailed-design/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-detailed-design/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-eda/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-eda/SKILL.md +56 -0
- package/lib/bmad-extension-plugin/skills/ml-eda/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-eda/scripts/baseline_classifier.py +522 -0
- package/lib/bmad-extension-plugin/skills/ml-eda/scripts/class_weights_calculator.py +295 -0
- package/lib/bmad-extension-plugin/skills/ml-eda/scripts/clustering_explorer.py +383 -0
- package/lib/bmad-extension-plugin/skills/ml-eda/scripts/eda_analyzer.py +654 -0
- package/lib/bmad-extension-plugin/skills/ml-eda/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-experiment/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-experiment/SKILL.md +74 -0
- package/lib/bmad-extension-plugin/skills/ml-experiment/assets/advanced_trainer_configs.py +430 -0
- package/lib/bmad-extension-plugin/skills/ml-experiment/assets/quick_trainer_setup.py +233 -0
- package/lib/bmad-extension-plugin/skills/ml-experiment/assets/template_datamodule.py +219 -0
- package/lib/bmad-extension-plugin/skills/ml-experiment/assets/template_gnn_module.py +341 -0
- package/lib/bmad-extension-plugin/skills/ml-experiment/assets/template_lightning_module.py +158 -0
- package/lib/bmad-extension-plugin/skills/ml-experiment/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-experiment/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-hparam/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-hparam/SKILL.md +81 -0
- package/lib/bmad-extension-plugin/skills/ml-hparam/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-hparam/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-ideation/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-ideation/SKILL.md +50 -0
- package/lib/bmad-extension-plugin/skills/ml-ideation/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-ideation/scripts/validate_ml_prd.py +287 -0
- package/lib/bmad-extension-plugin/skills/ml-ideation/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-infra/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-infra/SKILL.md +58 -0
- package/lib/bmad-extension-plugin/skills/ml-infra/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-infra/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-retrospective/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-retrospective/SKILL.md +63 -0
- package/lib/bmad-extension-plugin/skills/ml-retrospective/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-retrospective/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-revision/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-revision/SKILL.md +82 -0
- package/lib/bmad-extension-plugin/skills/ml-revision/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-revision/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/ml-techspec/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/ml-techspec/SKILL.md +80 -0
- package/lib/bmad-extension-plugin/skills/ml-techspec/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/ml-techspec/skill.json +7 -0
- package/lib/bmad-extension-plugin/skills/modify-sprint/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/modify-sprint/SKILL.md +311 -0
- package/lib/bmad-extension-plugin/skills/modify-sprint/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/module-help.csv +62 -0
- package/lib/bmad-extension-plugin/skills/module.yaml +20 -0
- package/lib/bmad-extension-plugin/skills/prioritize-backlog/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/prioritize-backlog/SKILL.md +217 -0
- package/lib/bmad-extension-plugin/skills/prioritize-backlog/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/project-context-expansion/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/project-context-expansion/SKILL.md +238 -0
- package/lib/bmad-extension-plugin/skills/project-context-expansion/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/remove-from-sprint/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/remove-from-sprint/SKILL.md +184 -0
- package/lib/bmad-extension-plugin/skills/remove-from-sprint/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sprint-status-view/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sprint-status-view/SKILL.md +177 -0
- package/lib/bmad-extension-plugin/skills/sprint-status-view/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sqa-audit/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sqa-audit/SKILL.md +279 -0
- package/lib/bmad-extension-plugin/skills/sqa-audit/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sqa-ieee12207/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sqa-ieee12207/SKILL.md +374 -0
- package/lib/bmad-extension-plugin/skills/sqa-ieee12207/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/SKILL.md +244 -0
- package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sre-check-deployment-status/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sre-check-deployment-status/SKILL.md +32 -0
- package/lib/bmad-extension-plugin/skills/sre-check-deployment-status/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sre-check-secrets/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sre-check-secrets/SKILL.md +23 -0
- package/lib/bmad-extension-plugin/skills/sre-check-secrets/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sre-check-system-status/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sre-check-system-status/SKILL.md +27 -0
- package/lib/bmad-extension-plugin/skills/sre-check-system-status/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sre-day-2-ops/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sre-day-2-ops/SKILL.md +26 -0
- package/lib/bmad-extension-plugin/skills/sre-day-2-ops/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sre-deployment-strategies/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sre-deployment-strategies/SKILL.md +28 -0
- package/lib/bmad-extension-plugin/skills/sre-deployment-strategies/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sre-fix-deployments/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sre-fix-deployments/SKILL.md +25 -0
- package/lib/bmad-extension-plugin/skills/sre-fix-deployments/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension-plugin/skills/sre-gitops-status/.gitkeep +0 -0
- package/lib/bmad-extension-plugin/skills/sre-gitops-status/SKILL.md +25 -0
- package/lib/bmad-extension-plugin/skills/sre-gitops-status/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad.js +1379 -372
- package/lib/installer.js +362 -2
- package/package.json +23 -5
- package/scripts/build-bmad-cache.js +250 -47
- package/scripts/build-plugin.js +574 -0
- package/.ma-agents.json +0 -10
- package/AGENTS.md +0 -97
- package/AiAudit.md +0 -12
- package/DEVELOPMENT.md +0 -173
- package/MANIFEST.yaml +0 -3
- package/_bmad-output/implementation-artifacts/16-4-validation-report.md +0 -79
- package/_bmad-output/implementation-artifacts/17-10-rework-generate-backlog.md +0 -237
- package/_bmad-output/implementation-artifacts/17-11-rework-add-to-sprint.md +0 -339
- package/_bmad-output/implementation-artifacts/17-12-rework-remove-from-sprint.md +0 -348
- package/_bmad-output/implementation-artifacts/17-13-rework-sprint-status-view.md +0 -383
- package/_bmad-output/implementation-artifacts/17-14-rework-cleanup-done.md +0 -348
- package/_bmad-output/implementation-artifacts/17-15-rework-bmad-sprint-planning.md +0 -385
- package/_bmad-output/implementation-artifacts/17-16-rework-add-sprint.md +0 -362
- package/_bmad-output/implementation-artifacts/17-17-rework-modify-sprint.md +0 -477
- package/_bmad-output/implementation-artifacts/17-18-rework-bmad-dev-story.md +0 -377
- package/_bmad-output/implementation-artifacts/17-19-rework-story-status-lookup.md +0 -301
- package/_bmad-output/implementation-artifacts/17-20-rework-bmad-sprint-status.md +0 -508
- package/_bmad-output/implementation-artifacts/17-21-new-close-sprint.md +0 -455
- package/_bmad-output/implementation-artifacts/17-22-jira-adapter-pattern.md +0 -325
- package/_bmad-output/implementation-artifacts/17-23-migration-deprecation-old-files.md +0 -403
- package/_bmad-output/implementation-artifacts/17-24-rework-prioritize-backlog.md +0 -344
- package/_bmad-output/implementation-artifacts/17-9-unified-sprint-status-schema.md +0 -279
- package/_bmad-output/implementation-artifacts/19-1-knowledge-graph-core-library.md +0 -239
- package/_bmad-output/implementation-artifacts/19-2-graph-emission-create-prd.md +0 -171
- package/_bmad-output/implementation-artifacts/19-3-graph-emission-create-architecture-epics.md +0 -179
- package/_bmad-output/implementation-artifacts/19-4-graph-emission-create-story-remaining.md +0 -190
- package/_bmad-output/implementation-artifacts/19-5-open-graph-skill.md +0 -213
- package/_bmad-output/implementation-artifacts/19-6-interactive-visualization-renderer.md +0 -259
- package/_bmad-output/implementation-artifacts/19-7-llm-writability-validation-tests.md +0 -280
- package/_bmad-output/implementation-artifacts/21-1-install-time-profile-prompt.md +0 -181
- package/_bmad-output/implementation-artifacts/21-10-profile-reconfigure.md +0 -161
- package/_bmad-output/implementation-artifacts/21-11-profile-uninstall.md +0 -150
- package/_bmad-output/implementation-artifacts/21-2-universal-instruction-block-expansion.md +0 -253
- package/_bmad-output/implementation-artifacts/21-3-roomodes-template-bmad-modes.md +0 -229
- package/_bmad-output/implementation-artifacts/21-4-agents-md-template-opencode.md +0 -275
- package/_bmad-output/implementation-artifacts/21-5-clinerules-template-extension.md +0 -221
- package/_bmad-output/implementation-artifacts/21-6-onprem-layered-guardrails.md +0 -287
- package/_bmad-output/implementation-artifacts/21-7-bmad-persona-phase-prefix.md +0 -258
- package/_bmad-output/implementation-artifacts/21-8-vllm-reference-doc-readme.md +0 -158
- package/_bmad-output/implementation-artifacts/21-9-tests-validation.md +0 -368
- package/_bmad-output/implementation-artifacts/4-1-vs-agent-registry-entry.md +0 -173
- package/_bmad-output/implementation-artifacts/4-2-vs-skill-template-format.md +0 -129
- package/_bmad-output/implementation-artifacts/5-5-explicit-parameter-passing.md +0 -274
- package/_bmad-output/implementation-artifacts/5-6-fix-space-in-path-bug.md +0 -186
- package/_bmad-output/implementation-artifacts/7-1-test-infrastructure-setup.md +0 -144
- package/_bmad-output/implementation-artifacts/7-2-installer-pipeline-tests.md +0 -132
- package/_bmad-output/implementation-artifacts/7-3-bmad-pipeline-tests.md +0 -119
- package/_bmad-output/implementation-artifacts/7-4-cli-command-routing-tests.md +0 -162
- package/_bmad-output/implementation-artifacts/bug-bmad-recompile-fails-on-airgapped-network.md +0 -112
- package/_bmad-output/implementation-artifacts/bug-experimentalwarning-about-commonjs-loading-es-module-during-install.md +0 -57
- package/_bmad-output/implementation-artifacts/deferred-work.md +0 -9
- package/_bmad-output/implementation-artifacts/done/1-1-ci-cd-yes-flag.md +0 -200
- package/_bmad-output/implementation-artifacts/done/10-1-ensure-bmad-output-not-gitignored.md +0 -172
- package/_bmad-output/implementation-artifacts/done/10-2-document-bmad-output-policy.md +0 -102
- package/_bmad-output/implementation-artifacts/done/11-1-auto-bug-detection-skill.md +0 -119
- package/_bmad-output/implementation-artifacts/done/11-2-bug-story-extension-workflow.md +0 -132
- package/_bmad-output/implementation-artifacts/done/11-3-integrate-bug-detection-code-review.md +0 -111
- package/_bmad-output/implementation-artifacts/done/12-1-add-sprint-workflow.md +0 -126
- package/_bmad-output/implementation-artifacts/done/12-2-add-to-sprint-workflow.md +0 -137
- package/_bmad-output/implementation-artifacts/done/12-3-modify-sprint-workflow.md +0 -127
- package/_bmad-output/implementation-artifacts/done/12-4-sprint-status-assigned-items.md +0 -129
- package/_bmad-output/implementation-artifacts/done/13-1-project-context-template-and-generator.md +0 -179
- package/_bmad-output/implementation-artifacts/done/13-2-install-pipeline-integration.md +0 -138
- package/_bmad-output/implementation-artifacts/done/13-3-bmad-critical-actions-update.md +0 -150
- package/_bmad-output/implementation-artifacts/done/13-4-retrospective-expansion-trigger.md +0 -128
- package/_bmad-output/implementation-artifacts/done/13-5-document-project-context-generation.md +0 -118
- package/_bmad-output/implementation-artifacts/done/15-1-bump-bmad-method-to-6-2-1.md +0 -132
- package/_bmad-output/implementation-artifacts/done/15-2-restructure-extension-module.md +0 -174
- package/_bmad-output/implementation-artifacts/done/15-3-convert-custom-agents-to-skill-folders.md +0 -183
- package/_bmad-output/implementation-artifacts/done/15-4-convert-mil498-workflows-to-skill-md.md +0 -252
- package/_bmad-output/implementation-artifacts/done/15-5-convert-sre-devops-cyber-workflows.md +0 -232
- package/_bmad-output/implementation-artifacts/done/15-6-separate-built-in-agent-customizations.md +0 -163
- package/_bmad-output/implementation-artifacts/done/15-7-migration-detection-and-upgrade-path.md +0 -133
- package/_bmad-output/implementation-artifacts/done/15-8-validate-migrated-agents-and-workflows.md +0 -172
- package/_bmad-output/implementation-artifacts/done/15-8-validation-report.md +0 -342
- package/_bmad-output/implementation-artifacts/done/16-1-repository-layout-wizard.md +0 -223
- package/_bmad-output/implementation-artifacts/done/16-2-config-storage-and-cross-reference.md +0 -180
- package/_bmad-output/implementation-artifacts/done/16-3-project-context-multi-repo-section.md +0 -136
- package/_bmad-output/implementation-artifacts/done/16-4-validate-cross-repo-path-resolution.md +0 -137
- package/_bmad-output/implementation-artifacts/done/16-4-validation-report.md +0 -79
- package/_bmad-output/implementation-artifacts/done/16-5-fix-config-lost-on-update.md +0 -110
- package/_bmad-output/implementation-artifacts/done/16-6-repo-sync-check-skill.md +0 -116
- package/_bmad-output/implementation-artifacts/done/16-7-portable-path-storage.md +0 -109
- package/_bmad-output/implementation-artifacts/done/16-8-cicd-remote-mode.md +0 -97
- package/_bmad-output/implementation-artifacts/done/16-9-reconfigure-layout-workflow.md +0 -125
- package/_bmad-output/implementation-artifacts/done/17-1-sprint-entity-model.md +0 -322
- package/_bmad-output/implementation-artifacts/done/17-2-flat-backlog-model.md +0 -264
- package/_bmad-output/implementation-artifacts/done/17-3-bug-as-story-type.md +0 -208
- package/_bmad-output/implementation-artifacts/done/17-4-backlog-to-sprint-workflow.md +0 -209
- package/_bmad-output/implementation-artifacts/done/17-5-sprint-to-backlog-workflow.md +0 -221
- package/_bmad-output/implementation-artifacts/done/17-6-done-item-cleanup.md +0 -273
- package/_bmad-output/implementation-artifacts/done/17-7-multi-criteria-prioritization.md +0 -235
- package/_bmad-output/implementation-artifacts/done/17-8-rework-sprint-status-display.md +0 -285
- package/_bmad-output/implementation-artifacts/done/2-1-cpp-coding-standards-skill.md +0 -188
- package/_bmad-output/implementation-artifacts/done/2-2-csharp-coding-standards-skill.md +0 -211
- package/_bmad-output/implementation-artifacts/done/2-3-python-coding-standards-skill.md +0 -189
- package/_bmad-output/implementation-artifacts/done/3-1-skill-scaffolding-tool.md +0 -184
- package/_bmad-output/implementation-artifacts/done/3-2-skill-validation-tool.md +0 -178
- package/_bmad-output/implementation-artifacts/done/3-3-mandatory-skill-designation.md +0 -136
- package/_bmad-output/implementation-artifacts/done/3-4-bmad-persona-customization-tooling.md +0 -141
- package/_bmad-output/implementation-artifacts/done/3-5-specialized-agent-development-tooling.md +0 -145
- package/_bmad-output/implementation-artifacts/done/5-1-bmad-method-direct-dependency.md +0 -188
- package/_bmad-output/implementation-artifacts/done/5-2-bmad-cache-build-script.md +0 -219
- package/_bmad-output/implementation-artifacts/done/5-3-pre-populate-bmad-cache.md +0 -234
- package/_bmad-output/implementation-artifacts/done/5-4-validate-bundled-installation.md +0 -274
- package/_bmad-output/implementation-artifacts/done/6-1-methodology-presentation-bundle.md +0 -173
- package/_bmad-output/implementation-artifacts/done/8-1-move-instruction-injection-to-top.md +0 -131
- package/_bmad-output/implementation-artifacts/done/8-2-agent-aware-injection-strategy.md +0 -124
- package/_bmad-output/implementation-artifacts/done/8-3-create-bmad-extension-module.md +0 -187
- package/_bmad-output/implementation-artifacts/done/8-4-integration-verification.md +0 -102
- package/_bmad-output/implementation-artifacts/done/8-5-per-agent-enforcement-hooks-research.md +0 -126
- package/_bmad-output/implementation-artifacts/done/8-6-context-persistence-research.md +0 -101
- package/_bmad-output/implementation-artifacts/done/9-1-register-opencode-agent.md +0 -73
- package/_bmad-output/implementation-artifacts/done/9-2-json-merge-injection.md +0 -91
- package/_bmad-output/implementation-artifacts/done/9-3-json-merge-existing.md +0 -113
- package/_bmad-output/implementation-artifacts/done/9-4-json-error-handling.md +0 -90
- package/_bmad-output/implementation-artifacts/epic-11-12-shared-guardrails.md +0 -53
- package/_bmad-output/implementation-artifacts/epic-15-adversarial-fixes.md +0 -287
- package/_bmad-output/implementation-artifacts/epic-16-adversarial-review.md +0 -49
- package/_bmad-output/implementation-artifacts/epic-16-edge-case-review.md +0 -230
- package/_bmad-output/implementation-artifacts/epic-17-adversarial-review.md +0 -37
- package/_bmad-output/implementation-artifacts/epic-17-edge-case-review.md +0 -140
- package/_bmad-output/implementation-artifacts/sprint-status.yaml +0 -139
- package/_bmad-output/planning-artifacts/adapter-pattern-spec.md +0 -508
- package/_bmad-output/planning-artifacts/architecture.md +0 -2023
- package/_bmad-output/planning-artifacts/domain-research-roocode-2026-03-31.md +0 -295
- package/_bmad-output/planning-artifacts/epics.md +0 -4232
- package/_bmad-output/planning-artifacts/mil498-workflow-audit.md +0 -290
- package/_bmad-output/planning-artifacts/prd.md +0 -811
- package/_bmad-output/planning-artifacts/product-brief-agents-2026-03-08.md +0 -214
- package/_bmad-output/planning-artifacts/sprint-status-schema.md +0 -506
- package/_bmad-output/planning-artifacts/validation-report-prd-2026-04-07.md +0 -330
- package/_bmad-output/project-context.md +0 -47
- package/agents.code-workspace +0 -11
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-554778ad4e7254827618ebd2497c3f4bce9054a4.idx +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-554778ad4e7254827618ebd2497c3f4bce9054a4.rev +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.idx +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.rev +0 -0
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-brainstorming-coach/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-creative-problem-solver/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-design-thinking-coach/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-innovation-strategist/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-presentation-master/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-storyteller/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/cis/src/skills/bmad-cis-design-thinking/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/cis/src/skills/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/cis/src/skills/bmad-cis-problem-solving/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/cis/src/skills/bmad-cis-storytelling/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.idx +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.rev +0 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-qa/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-scrum-master/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/bmad-skill-manifest.yaml +0 -11
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/bmad-skill-manifest.yaml +0 -9
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/2-design/create-prd/bmad-skill-manifest.yaml +0 -14
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gds-document-project/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev-new-preview/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-spec/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-e75385cd52b693dbb8a3b2afb50058952543b3a2.idx +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-e75385cd52b693dbb8a3b2afb50058952543b3a2.rev +0 -0
- package/lib/bmad-cache/tea/_git_preserved/refs/tags/v1.10.0 +0 -1
- package/lib/bmad-cache/tea/src/agents/bmad-tea/bmad-skill-manifest.yaml +0 -14
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/workflow.md +0 -90
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/workflow.md +0 -41
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/workflow.md +0 -41
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/workflow.md +0 -41
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/workflow.md +0 -41
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow.md +0 -41
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/workflow.md +0 -41
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/workflow.md +0 -41
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.md +0 -41
- package/lib/bmad-customizations/bmm-demerzel.customize.yaml +0 -36
- package/lib/bmad-customizations/demerzel.md +0 -32
- package/lib/bmad-customize/bmm-quick-flow-solo-dev.customize.yaml +0 -8
- package/lib/bmad-extension/module.yaml +0 -5
- package/out.txt +0 -0
- package/test/agent-injection-strategy.test.js +0 -129
- package/test/agents-md.test.js +0 -398
- package/test/bmad-extension.test.js +0 -283
- package/test/bmad-output-policy.test.js +0 -119
- package/test/bmad-persona-phase-prefix.test.js +0 -271
- package/test/bmad-version-bump.test.js +0 -313
- package/test/build-bmad-args.test.js +0 -368
- package/test/cicd-remote-mode.test.js +0 -224
- package/test/clinerules.test.js +0 -339
- package/test/config-layout.test.js +0 -230
- package/test/config-lost-on-update.test.js +0 -363
- package/test/config-storage.test.js +0 -275
- package/test/convert-agents-to-skills.test.js +0 -255
- package/test/create-agent.test.js +0 -232
- package/test/cross-repo-validation.test.js +0 -201
- package/test/enforcement-hooks.test.js +0 -324
- package/test/experimental-warning.test.js +0 -314
- package/test/extension-module-restructure.test.js +0 -407
- package/test/fixtures/README.md +0 -74
- package/test/fixtures/empty-project/README.md +0 -5
- package/test/fixtures/empty-project/package.json +0 -5
- package/test/fixtures/onprem-profile-baseline/.gitkeep +0 -2
- package/test/fixtures/standard-profile-baseline/.gitkeep +0 -2
- package/test/generate-project-context.test.js +0 -483
- package/test/instruction-block.test.js +0 -388
- package/test/instruction-injection.test.js +0 -336
- package/test/integration-verification.test.js +0 -433
- package/test/migration-validation.test.js +0 -506
- package/test/migration.test.js +0 -832
- package/test/offline-recompile.test.js +0 -267
- package/test/onprem-injection.test.js +0 -441
- package/test/onprem-layer.test.js +0 -419
- package/test/opencode-agent.test.js +0 -150
- package/test/opencode-json-error.test.js +0 -260
- package/test/opencode-json-injection.test.js +0 -264
- package/test/opencode-json-merge.test.js +0 -318
- package/test/portable-paths.test.js +0 -268
- package/test/profile.test.js +0 -301
- package/test/reconfigure.test.js +0 -436
- package/test/repo-layout.test.js +0 -246
- package/test/roo-code-agent.test.js +0 -166
- package/test/roo-code-injection.test.js +0 -172
- package/test/roomodes.test.js +0 -343
- package/test/skill-authoring.test.js +0 -272
- package/test/skill-customize-agent.test.js +0 -253
- package/test/skill-mandatory.test.js +0 -235
- package/test/skill-validation.test.js +0 -378
- package/test/story-15-5-workflow-skills.test.js +0 -311
- package/test/uninstall.test.js +0 -402
- package/test/yes-flag.test.js +0 -200
- /package/lib/bmad-cache/gds/src/{gametest → agents/gds-agent-game-dev/gametest}/qa-index.csv +0 -0
- /package/lib/bmad-cache/gds/src/workflows/2-design/{create-prd → gds-create-prd}/data/domain-complexity.csv +0 -0
- /package/lib/bmad-cache/gds/src/workflows/2-design/{create-prd → gds-create-prd}/data/project-types.csv +0 -0
- /package/lib/{bmad-extension/skills/bmad-ma-agent-cyber → bmad-extension-plugin/skills/add-sprint}/.gitkeep +0 -0
- /package/lib/{bmad-extension/skills/bmad-ma-agent-devops → bmad-extension-plugin/skills/add-to-sprint}/.gitkeep +0 -0
- /package/lib/{bmad-extension/skills/bmad-ma-agent-ml → bmad-extension-plugin/skills/bmad-dev-story}/.gitkeep +0 -0
- /package/lib/{bmad-extension/skills/bmad-ma-agent-sqa → bmad-extension-plugin/skills/bmad-sprint-planning}/.gitkeep +0 -0
- /package/lib/{bmad-extension/skills/bmad-ma-agent-sre → bmad-extension-plugin/skills/bmad-sprint-status}/.gitkeep +0 -0
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
# Story 5.1: Add bmad-method as Direct Dependency
|
|
2
|
-
|
|
3
|
-
Status: done
|
|
4
|
-
|
|
5
|
-
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
6
|
-
|
|
7
|
-
## Story
|
|
8
|
-
|
|
9
|
-
As a **DevOps engineer**,
|
|
10
|
-
I want bmad-method included as a direct npm dependency in ma-agents,
|
|
11
|
-
So that BMAD installation does not require fetching bmad-method from the npm registry at runtime.
|
|
12
|
-
|
|
13
|
-
## Acceptance Criteria
|
|
14
|
-
|
|
15
|
-
1. `package.json` includes `"bmad-method": "6.0.4"` as a direct dependency
|
|
16
|
-
2. Running `npm install` or `npm pack` installs bmad-method v6.0.4 into `node_modules/bmad-method/`
|
|
17
|
-
3. `bmad.js` uses `require.resolve('bmad-method/tools/bmad-npx-wrapper.js')` to locate the local copy
|
|
18
|
-
4. All 3 invocation sites invoke via `execSync('node <resolved-path> install ...')` instead of `execSync('npx bmad-method install ...')`
|
|
19
|
-
5. Behavior is identical to the previous `npx bmad-method` invocation (same flags, same output, same side effects)
|
|
20
|
-
6. No npm registry network call is made for bmad-method during install/update/recompile
|
|
21
|
-
7. Existing BMAD installations (from previous `npx bmad-method` versions) are preserved — no corruption, workflows continue to function
|
|
22
|
-
|
|
23
|
-
## Tasks / Subtasks
|
|
24
|
-
|
|
25
|
-
- [x] Task 1: Add bmad-method dependency to package.json (AC: #1, #2)
|
|
26
|
-
- [x] 1.1 Add `"bmad-method": "6.0.4"` to `dependencies` in `package.json`
|
|
27
|
-
- [x] 1.2 Run `npm install` and verify `node_modules/bmad-method/` exists
|
|
28
|
-
- [x] 1.3 Verify `node_modules/bmad-method/tools/bmad-npx-wrapper.js` exists and is resolvable
|
|
29
|
-
|
|
30
|
-
- [x] Task 2: Create helper function to resolve bmad-method path (AC: #3, #6)
|
|
31
|
-
- [x] 2.1 Add a `getBmadCommand(args)` helper at top of `bmad.js` that:
|
|
32
|
-
- Resolves `require.resolve('bmad-method/tools/bmad-npx-wrapper.js')`
|
|
33
|
-
- Constructs `node "<resolved-path>" ${args}` command string
|
|
34
|
-
- Quotes the resolved path in the command string for cross-platform safety (handles Windows backslashes)
|
|
35
|
-
- [x] 2.2 Wrap `require.resolve` in try/catch — if it fails, throw a clear error ("bmad-method not found in node_modules — run npm install first")
|
|
36
|
-
|
|
37
|
-
- [x] Task 3: Update `installBmad()` — line 14 (AC: #4, #5)
|
|
38
|
-
- [x] 3.1 Replace `let command = 'npx bmad-method install --yes'` with `getBmadCommand('install --yes')`
|
|
39
|
-
- [x] 3.2 Preserve all existing flag appending logic (`--modules`, `--tools`)
|
|
40
|
-
- [x] 3.3 Verify `execSync(command, { stdio: 'inherit', cwd: projectRoot })` still works
|
|
41
|
-
|
|
42
|
-
- [x] Task 4: Update `updateBmad()` — line 37 (AC: #4, #5)
|
|
43
|
-
- [x] 4.1 Replace `let command = 'npx bmad-method install --action update --yes'` with `getBmadCommand('install --action update --yes')`
|
|
44
|
-
- [x] 4.2 Preserve all existing flag appending logic
|
|
45
|
-
- [x] 4.3 Verify behavior identical to previous `npx` invocation
|
|
46
|
-
|
|
47
|
-
- [x] Task 5: Update `applyCustomizations()` — line 112 (AC: #4, #5)
|
|
48
|
-
- [x] 5.1 Replace `let command = 'npx bmad-method install --yes'` with `getBmadCommand('install --yes')`
|
|
49
|
-
- [x] 5.2 Preserve all existing flag appending logic
|
|
50
|
-
- [x] 5.3 Verify recompile behavior unchanged
|
|
51
|
-
|
|
52
|
-
- [ ] Task 6: Backward compatibility validation (AC: #7) *(requires human tester)*
|
|
53
|
-
- [ ] 6.1 Test with a project that has an existing `_bmad/` directory from a prior `npx bmad-method` installation
|
|
54
|
-
- [ ] 6.2 Run `npx ma-agents install` and verify `_bmad/` content is preserved
|
|
55
|
-
- [ ] 6.3 Verify BMAD workflows continue to function after upgrade
|
|
56
|
-
|
|
57
|
-
- [ ] Task 7: Manual integration test (AC: #5, #6) *(requires human tester)*
|
|
58
|
-
- [ ] 7.1 Run `installBmad()` and verify complete BMAD installation
|
|
59
|
-
- [ ] 7.2 Run `updateBmad()` and verify BMAD update completes
|
|
60
|
-
- [ ] 7.3 Run `applyCustomizations()` and verify recompile + customization pipeline
|
|
61
|
-
- [x] 7.4 Confirm no `npx bmad-method` string remains in `bmad.js`
|
|
62
|
-
|
|
63
|
-
## Dev Notes
|
|
64
|
-
|
|
65
|
-
### Architecture Compliance
|
|
66
|
-
|
|
67
|
-
- **Decision P2-6** (Bundled BMAD Installation): This story implements step 2 of the 2-step mechanism. Step 1 (cache pre-population) is Story 5.3.
|
|
68
|
-
- **NFR20** (Version Pinning): Pin `bmad-method` to exact version `"6.0.4"` (no caret, no tilde)
|
|
69
|
-
- **NFR21** (Deterministic Installation): Eliminating `npx` removes npm registry lookup, making the bmad-method invocation deterministic
|
|
70
|
-
- **Anti-pattern from architecture**: "Fetching bmad-method via `npx` instead of using the npm dependency copy (breaks air-gap, NFR20 violation)" [Source: architecture.md, Decision P2-6 validation]
|
|
71
|
-
|
|
72
|
-
### Implementation Pattern
|
|
73
|
-
|
|
74
|
-
The invocation pattern change is:
|
|
75
|
-
|
|
76
|
-
**Before (current):**
|
|
77
|
-
```javascript
|
|
78
|
-
let command = 'npx bmad-method install --yes';
|
|
79
|
-
// ... append flags ...
|
|
80
|
-
execSync(command, { stdio: 'inherit', cwd: projectRoot });
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
**After (required):**
|
|
84
|
-
```javascript
|
|
85
|
-
function getBmadCommand(args) {
|
|
86
|
-
try {
|
|
87
|
-
const wrapperPath = require.resolve('bmad-method/tools/bmad-npx-wrapper.js');
|
|
88
|
-
return `node "${wrapperPath}" ${args}`;
|
|
89
|
-
} catch (err) {
|
|
90
|
-
const wrapped = new Error('bmad-method not found in node_modules — run "npm install" first');
|
|
91
|
-
wrapped.cause = err;
|
|
92
|
-
throw wrapped;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Usage in each function:
|
|
97
|
-
let command = getBmadCommand('install --yes');
|
|
98
|
-
// ... append flags (unchanged) ...
|
|
99
|
-
execSync(command, { stdio: 'inherit', cwd: projectRoot });
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
The `getBmadCommand()` helper centralizes the `require.resolve` + command construction + error handling to avoid repeating the pattern 3 times. `require.resolve()` returns an absolute OS-native path — quoting it in the template literal is the cross-platform safety mechanism (no `path.join()` needed here).
|
|
103
|
-
|
|
104
|
-
### Source Tree Components to Touch
|
|
105
|
-
|
|
106
|
-
| File | Change |
|
|
107
|
-
|------|--------|
|
|
108
|
-
| `package.json` | Add `"bmad-method": "6.0.4"` to `dependencies` |
|
|
109
|
-
| `lib/bmad.js` | Replace 3x `npx bmad-method` with `node <resolved-path>`, add helper function |
|
|
110
|
-
|
|
111
|
-
### Critical Constraints
|
|
112
|
-
|
|
113
|
-
- **Cross-platform paths**: `require.resolve()` returns an absolute OS-native path. Quote it in the command string (`"${wrapperPath}"`) — this handles Windows backslash paths safely. Do NOT wrap in `path.join()` (it's already resolved).
|
|
114
|
-
- **Do NOT modify any other logic in bmad.js**: The flag appending (`--modules`, `--tools`), error handling, `chalk` logging, and `applyCustomizations()` steps 1-6 must remain untouched.
|
|
115
|
-
- **Do NOT add `bmad-method` to `devDependencies`**: It must be in `dependencies` so it ships with `npm pack` / `npm publish`.
|
|
116
|
-
- **Exact version pin**: Use `"6.0.4"` not `"^6.0.4"` — this is a deliberate architectural decision for deterministic builds (NFR20).
|
|
117
|
-
- **`require.resolve()` runs at call time**: The resolve happens when `getBmadCommand()` is called, not at module load time. This is correct because `node_modules` must exist when the function runs.
|
|
118
|
-
- **Package size trade-off (by design)**: Adding bmad-method as a dependency increases `npx ma-agents` download size (~555 KB for bmad-method). This is the intended architectural trade-off — deterministic air-gapped installation (NFR20/NFR21) over download size. The ma-agents package must contain bmad-method.
|
|
119
|
-
- **Why version 6.0.4 specifically**: v6.0.4 is the version pinned in the architecture decision (P2-6). v6.1.0 exists but the bundled installation was designed and tested against 6.0.4. Version bumps require: update pin in `package.json`, re-run `npm run build:bmad-cache` (Story 5.2), test, release.
|
|
120
|
-
|
|
121
|
-
### Testing Standards
|
|
122
|
-
|
|
123
|
-
- No automated test suite exists yet (Epic 7). Manual verification is sufficient for this story.
|
|
124
|
-
- Verify by running the full install flow: `npx ma-agents install` selecting BMAD installation.
|
|
125
|
-
- Confirm no `npx bmad-method` strings remain in `lib/bmad.js` after implementation.
|
|
126
|
-
|
|
127
|
-
### Project Structure Notes
|
|
128
|
-
|
|
129
|
-
- `lib/bmad.js` is the only file that invokes `bmad-method`. No other files in the codebase call `npx bmad-method`.
|
|
130
|
-
- `.npmignore` excludes `_bmad/` and `_bmad-output/` but does NOT exclude `lib/` — so the `lib/bmad.js` changes will ship.
|
|
131
|
-
- `package.json` currently has 3 dependencies: `prompts`, `chalk`, `fs-extra`. Adding `bmad-method` makes it 4.
|
|
132
|
-
|
|
133
|
-
### Epic 5 Cross-Story Context
|
|
134
|
-
|
|
135
|
-
This is Story 5.1 of 4 in Epic 5 (Bundled BMAD Installation). Execution order: 5.1 -> 5.2 -> 5.3 -> 5.4.
|
|
136
|
-
|
|
137
|
-
- **Story 5.1** (this): Add bmad-method as npm dependency, replace `npx` invocations
|
|
138
|
-
- **Story 5.2**: Create `npm run build:bmad-cache` script to clone external modules into `lib/bmad-cache/`
|
|
139
|
-
- **Story 5.3**: Pre-populate `~/.bmad/cache/external-modules/` from bundled cache before bmad-method runs
|
|
140
|
-
- **Story 5.4**: Validate the complete bundled installation works end-to-end
|
|
141
|
-
|
|
142
|
-
The `getBmadCommand()` helper created here will be reused by Story 5.3 (which adds cache pre-population logic before the bmad-method invocation).
|
|
143
|
-
|
|
144
|
-
### References
|
|
145
|
-
|
|
146
|
-
- [Source: architecture.md, Decision P2-6] — Bundled BMAD Installation architecture
|
|
147
|
-
- [Source: epics.md, Story 5.1] — Acceptance criteria and technical notes
|
|
148
|
-
- [Source: prd.md, F6] — Bundled BMAD Installation feature description
|
|
149
|
-
- [Source: prd.md, NFR20-NFR21] — Version pinning and deterministic installation requirements
|
|
150
|
-
- [Source: lib/bmad.js:14,37,112] — The 3 `npx bmad-method` invocation sites
|
|
151
|
-
- [Source: package.json] — Current dependency list
|
|
152
|
-
|
|
153
|
-
## Dev Agent Record
|
|
154
|
-
|
|
155
|
-
### Agent Model Used
|
|
156
|
-
|
|
157
|
-
Claude Opus 4.6 (1M context)
|
|
158
|
-
|
|
159
|
-
### Debug Log References
|
|
160
|
-
|
|
161
|
-
No issues encountered during implementation.
|
|
162
|
-
|
|
163
|
-
### Completion Notes List
|
|
164
|
-
|
|
165
|
-
- Added `"bmad-method": "6.0.4"` as exact-version dependency in package.json (NFR20 compliant)
|
|
166
|
-
- Created `getBmadCommand(args)` helper function at top of `lib/bmad.js` with `require.resolve()` and try/catch error handling
|
|
167
|
-
- Replaced all 3 `npx bmad-method` invocations in `installBmad()`, `updateBmad()`, and `applyCustomizations()` with `getBmadCommand()` calls
|
|
168
|
-
- All existing flag appending logic (`--modules`, `--tools`) preserved unchanged
|
|
169
|
-
- Cross-platform path quoting implemented via template literal (`"${wrapperPath}"`)
|
|
170
|
-
- Verified `require.resolve('bmad-method/tools/bmad-npx-wrapper.js')` resolves correctly
|
|
171
|
-
- Confirmed zero `npx bmad-method` strings remain in `lib/bmad.js`
|
|
172
|
-
- Existing `_bmad/` directory preserved — no corruption
|
|
173
|
-
- `npm test` passes (27 skills, 11 agents)
|
|
174
|
-
- No automated test suite exists yet (Epic 7) — manual verification performed per Testing Standards
|
|
175
|
-
|
|
176
|
-
### File List
|
|
177
|
-
|
|
178
|
-
- `package.json` — Added `"bmad-method": "6.0.4"` to dependencies
|
|
179
|
-
- `lib/bmad.js` — Added `getBmadCommand()` helper, replaced 3x `npx bmad-method` invocations
|
|
180
|
-
- `package-lock.json` — Auto-updated by npm install (bmad-method + transitive deps; full regeneration — lockfile was stale from ai-agent-skills@2.17.1)
|
|
181
|
-
- `docs/architecture.md` — Updated stale `npx bmad-method` references to reflect local dependency invocation pattern
|
|
182
|
-
- `docs/source-tree-analysis.md` — Updated stale `npx bmad-method` reference
|
|
183
|
-
- *(deleted)* `_bmad-output/implementation-artifacts/5-1-standalone-binary-packaging.md` — Old Epic 5 story replaced by this story
|
|
184
|
-
|
|
185
|
-
## Change Log
|
|
186
|
-
|
|
187
|
-
- 2026-03-15: Implemented Story 5.1 — Added bmad-method as direct npm dependency and replaced all npx invocations with local node execution via getBmadCommand() helper. Eliminates npm registry network calls for bmad-method (NFR20/NFR21 compliance).
|
|
188
|
-
- 2026-03-15: Code review fixes — (H1) package-lock.json full regeneration documented (was stale from ai-agent-skills@2.17.1); (H2) updated stale `npx bmad-method` references in docs/architecture.md and docs/source-tree-analysis.md; (M1) Tasks 6 & 7 unmarked as [x] — require human tester; (M2) getBmadCommand() catch block now chains original error via `wrapped.cause = err`; (L1) File List updated with deleted old story file and docs changes.
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
# Story 5.2: Create BMAD Cache Build Script
|
|
2
|
-
|
|
3
|
-
Status: done
|
|
4
|
-
|
|
5
|
-
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
6
|
-
|
|
7
|
-
## Story
|
|
8
|
-
|
|
9
|
-
As a **Chief Architect**,
|
|
10
|
-
I want a build script that clones all BMAD external modules and their dependencies into `lib/bmad-cache/`,
|
|
11
|
-
So that the external modules can be bundled inside the ma-agents npm package for deterministic installation.
|
|
12
|
-
|
|
13
|
-
## Acceptance Criteria
|
|
14
|
-
|
|
15
|
-
1. Running `npm run build:bmad-cache` on a connected machine clones each module listed in bmad-method's `external-official-modules.yaml` (bmb, cis, tea, gds) into `lib/bmad-cache/<module-code>/` using `git clone --depth 1`
|
|
16
|
-
2. The script runs `npm install --omit=dev` inside each cloned module directory to install production dependencies
|
|
17
|
-
3. The script removes `.git/` directories from each cloned module to reduce package size
|
|
18
|
-
4. The script creates `lib/bmad-cache/cache-manifest.json` recording module codes, versions (commit SHA), clone date, and source URLs
|
|
19
|
-
5. Running `npm run build:bmad-cache -- --force` when `lib/bmad-cache/` already exists removes the existing cache and rebuilds from scratch
|
|
20
|
-
6. Running `npm run build:bmad-cache` without `--force` when a module's cached version matches the upstream HEAD skips that module (incremental update)
|
|
21
|
-
7. Running `npm pack` produces a tarball that includes `lib/bmad-cache/` and all module directories
|
|
22
|
-
|
|
23
|
-
## Tasks / Subtasks
|
|
24
|
-
|
|
25
|
-
- [x] Task 1: Create the build script file (AC: #1)
|
|
26
|
-
- [x] 1.1 Create `scripts/build-bmad-cache.js` (Node.js script, not shell — cross-platform)
|
|
27
|
-
- [x] 1.2 Add `"build:bmad-cache": "node scripts/build-bmad-cache.js"` to `package.json` scripts section
|
|
28
|
-
- [x] 1.3 Parse `--force` from `process.argv`
|
|
29
|
-
|
|
30
|
-
- [x] Task 2: Read module definitions from bmad-method (AC: #1)
|
|
31
|
-
- [x] 2.1 Locate `external-official-modules.yaml` via `require.resolve('bmad-method/external-official-modules.yaml')` — if not found, try `path.join(require.resolve('bmad-method/package.json'), '..', 'external-official-modules.yaml')`
|
|
32
|
-
- [x] 2.2 Parse the YAML file to extract module list (code, git URL, branch)
|
|
33
|
-
- [x] 2.3 Add a YAML parser — use `js-yaml` (add to devDependencies) OR parse the simple YAML structure manually to avoid adding a dependency
|
|
34
|
-
|
|
35
|
-
- [x] Task 3: Implement clone logic for each module (AC: #1, #3)
|
|
36
|
-
- [x] 3.1 For each module: `git clone --depth 1 --branch <branch> <url> lib/bmad-cache/<code>/`
|
|
37
|
-
- [x] 3.2 After clone: remove `lib/bmad-cache/<code>/.git/` directory recursively
|
|
38
|
-
- [x] 3.3 Use `execSync` for git commands, `fs-extra` for directory operations
|
|
39
|
-
|
|
40
|
-
- [x] Task 4: Install production dependencies per module (AC: #2)
|
|
41
|
-
- [x] 4.1 For each cloned module directory: run `npm install --omit=dev` inside it
|
|
42
|
-
- [x] 4.2 Handle modules that have no `package.json` or no dependencies gracefully (skip npm install)
|
|
43
|
-
|
|
44
|
-
- [x] Task 5: Generate cache-manifest.json (AC: #4)
|
|
45
|
-
- [x] 5.1 Before removing `.git/`, capture the HEAD commit SHA via `git -C lib/bmad-cache/<code> rev-parse HEAD`
|
|
46
|
-
- [x] 5.2 Write `lib/bmad-cache/cache-manifest.json` with structure:
|
|
47
|
-
```json
|
|
48
|
-
{
|
|
49
|
-
"generated": "2026-03-15T...",
|
|
50
|
-
"bmadMethodVersion": "6.0.4",
|
|
51
|
-
"modules": {
|
|
52
|
-
"bmb": { "url": "...", "branch": "main", "commitSha": "abc123", "clonedAt": "..." },
|
|
53
|
-
"cis": { ... },
|
|
54
|
-
"tea": { ... },
|
|
55
|
-
"gds": { ... }
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
- [x] Task 6: Implement --force flag (AC: #5)
|
|
61
|
-
- [x] 6.1 If `--force` passed and `lib/bmad-cache/` exists: remove entire directory before starting
|
|
62
|
-
- [x] 6.2 Use `fs.remove()` (from fs-extra) for safe recursive deletion
|
|
63
|
-
|
|
64
|
-
- [x] Task 7: Implement incremental update (AC: #6)
|
|
65
|
-
- [x] 7.1 If `lib/bmad-cache/<code>/` exists and NOT `--force`: check upstream HEAD via `git ls-remote <url> <branch>`
|
|
66
|
-
- [x] 7.2 Compare remote HEAD SHA with `cache-manifest.json` `commitSha` for that module
|
|
67
|
-
- [x] 7.3 If match: skip module with log message. If different: remove and re-clone.
|
|
68
|
-
|
|
69
|
-
- [x] Task 8: Verify npm pack inclusion (AC: #7)
|
|
70
|
-
- [x] 8.1 Confirm `.npmignore` does NOT exclude `lib/bmad-cache/` (already correct — no change needed)
|
|
71
|
-
- [x] 8.2 Run `npm pack --dry-run` and verify `lib/bmad-cache/` files appear in output
|
|
72
|
-
|
|
73
|
-
## Dev Notes
|
|
74
|
-
|
|
75
|
-
### Architecture Compliance
|
|
76
|
-
|
|
77
|
-
- **Decision P2-6** (Bundled BMAD Installation): This story creates the build-time cache that Story 5.3 will pre-populate at install-time
|
|
78
|
-
- **NFR20** (Version Pinning): Modules are pinned at clone time via `--depth 1`. The `cache-manifest.json` records exact commit SHAs for reproducibility
|
|
79
|
-
- **NFR21** (Deterministic Installation): The cached modules are committed to the repo, making every `npm pack` produce identical BMAD module content
|
|
80
|
-
- **Anti-pattern from architecture**: "Including `.git/` directories in `lib/bmad-cache/` — wastes package size, not needed for installation" [Source: architecture.md, Decision P2-6 validation]
|
|
81
|
-
|
|
82
|
-
### Implementation Pattern
|
|
83
|
-
|
|
84
|
-
```javascript
|
|
85
|
-
#!/usr/bin/env node
|
|
86
|
-
const fs = require('fs-extra');
|
|
87
|
-
const path = require('path');
|
|
88
|
-
const { execSync } = require('child_process');
|
|
89
|
-
|
|
90
|
-
const CACHE_DIR = path.join(__dirname, '..', 'lib', 'bmad-cache');
|
|
91
|
-
const force = process.argv.includes('--force');
|
|
92
|
-
|
|
93
|
-
// 1. Locate external-official-modules.yaml from bmad-method dependency
|
|
94
|
-
const bmadMethodDir = path.dirname(require.resolve('bmad-method/package.json'));
|
|
95
|
-
const modulesYamlPath = path.join(bmadMethodDir, 'external-official-modules.yaml');
|
|
96
|
-
|
|
97
|
-
// 2. Parse YAML, iterate modules, clone, npm install, remove .git, record manifest
|
|
98
|
-
// ... (see tasks for detailed steps)
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### external-official-modules.yaml Format
|
|
102
|
-
|
|
103
|
-
This file is inside `node_modules/bmad-method/` and lists modules like:
|
|
104
|
-
```yaml
|
|
105
|
-
modules:
|
|
106
|
-
- code: bmb
|
|
107
|
-
name: bmad-builder
|
|
108
|
-
url: https://github.com/user/bmad-builder.git
|
|
109
|
-
branch: main
|
|
110
|
-
- code: cis
|
|
111
|
-
...
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
The dev agent MUST read the actual file structure after `npm install` — the exact YAML schema may differ from this example. Parse defensively.
|
|
115
|
-
|
|
116
|
-
### Source Tree Components to Touch
|
|
117
|
-
|
|
118
|
-
| File | Change |
|
|
119
|
-
|------|--------|
|
|
120
|
-
| `scripts/build-bmad-cache.js` | **NEW** — the build script |
|
|
121
|
-
| `package.json` | Add `"build:bmad-cache"` to `scripts` section |
|
|
122
|
-
| `lib/bmad-cache/` | **NEW** directory created by the script (gitignored initially, committed after first build) |
|
|
123
|
-
| `lib/bmad-cache/cache-manifest.json` | **NEW** — generated by the script |
|
|
124
|
-
|
|
125
|
-
### Critical Constraints
|
|
126
|
-
|
|
127
|
-
- **Cross-platform**: Use `execSync` for git/npm commands. Use `fs-extra` (already a dependency) for all file operations. Do NOT use shell-specific syntax (no `rm -rf`, use `fs.remove()`).
|
|
128
|
-
- **No new production dependencies**: The build script uses only `fs-extra` (already in dependencies) and `child_process` (built-in). For YAML parsing, prefer a simple manual parser or use `js-yaml` as a devDependency — do NOT add `js-yaml` to production dependencies.
|
|
129
|
-
- **Prerequisite: Story 5.1 must be completed** — `bmad-method` must be in `package.json` dependencies and `npm install` must have been run so `node_modules/bmad-method/` exists with `external-official-modules.yaml`.
|
|
130
|
-
- **Git must be available**: The build script requires `git` on PATH. This is a build-time tool that runs on a developer's connected machine, not at install-time.
|
|
131
|
-
- **Commit the output**: After running the script, `lib/bmad-cache/` should be committed to the repo so it ships with `npm pack`. The `.gitignore` must NOT exclude `lib/bmad-cache/`.
|
|
132
|
-
- **Script runs OUTSIDE the project's git context**: The `git clone` commands create new repos in `lib/bmad-cache/<code>/`. The `.git/` directories inside those clones are removed. This does not affect the project's own git repository.
|
|
133
|
-
- **Order of operations matters**: Capture commit SHA BEFORE removing `.git/` directory. The sequence per module is: clone → capture SHA → npm install → remove `.git/`.
|
|
134
|
-
|
|
135
|
-
### Testing Standards
|
|
136
|
-
|
|
137
|
-
- No automated test suite exists yet (Epic 7). Manual verification:
|
|
138
|
-
1. Run `npm run build:bmad-cache` — verify 4 modules cloned, `.git/` removed, `cache-manifest.json` created
|
|
139
|
-
2. Run `npm run build:bmad-cache` again without `--force` — verify modules are skipped (incremental)
|
|
140
|
-
3. Run `npm run build:bmad-cache -- --force` — verify full rebuild
|
|
141
|
-
4. Run `npm pack --dry-run` — verify `lib/bmad-cache/` included in tarball
|
|
142
|
-
|
|
143
|
-
### Project Structure Notes
|
|
144
|
-
|
|
145
|
-
- `scripts/` directory does NOT exist yet — create it. This is the first build script in the project.
|
|
146
|
-
- `.npmignore` does NOT exclude `lib/bmad-cache/` — already correct, no change needed.
|
|
147
|
-
- `package.json` has no `files` field — npm includes everything not in `.npmignore`. This means `lib/bmad-cache/` will automatically ship.
|
|
148
|
-
- The `lib/` directory currently contains: `agents.js`, `bmad.js`, `installer.js`, `bmad-customizations/`, `bmad-workflows/`, `mil498-templates/`.
|
|
149
|
-
|
|
150
|
-
### Previous Story Intelligence (5.1)
|
|
151
|
-
|
|
152
|
-
- Story 5.1 established `bmad-method@6.0.4` as a direct dependency in `package.json`
|
|
153
|
-
- Story 5.1 created `getBmadCommand()` helper in `bmad.js` — not directly relevant to this story but confirms bmad-method is available in `node_modules/`
|
|
154
|
-
- Story 5.1 noted: "Version bumps require: update pin in `package.json`, re-run `npm run build:bmad-cache` (Story 5.2), test, release" — this story's script is part of that upgrade workflow
|
|
155
|
-
|
|
156
|
-
### Epic 5 Cross-Story Context
|
|
157
|
-
|
|
158
|
-
This is Story 5.2 of 4 in Epic 5 (Bundled BMAD Installation). Execution order: 5.1 -> 5.2 -> 5.3 -> 5.4.
|
|
159
|
-
|
|
160
|
-
- **Story 5.1** (prerequisite, ready-for-dev): Add bmad-method as npm dependency
|
|
161
|
-
- **Story 5.2** (this): Create build script to clone external modules into `lib/bmad-cache/`
|
|
162
|
-
- **Story 5.3** (depends on this): Pre-populate `~/.bmad/cache/external-modules/` from `lib/bmad-cache/` at install-time
|
|
163
|
-
- **Story 5.4**: Validate the complete bundled installation works end-to-end
|
|
164
|
-
|
|
165
|
-
Story 5.3 depends on the `lib/bmad-cache/` directory structure and `cache-manifest.json` created by this story. The module directory names (bmb, cis, tea, gds) must match what bmad-method expects in `~/.bmad/cache/external-modules/`.
|
|
166
|
-
|
|
167
|
-
### References
|
|
168
|
-
|
|
169
|
-
- [Source: architecture.md, Decision P2-6] — Bundled BMAD Installation architecture, build script mechanism
|
|
170
|
-
- [Source: architecture.md, Decision P2-6 validation] — Anti-pattern: no .git/ in cache
|
|
171
|
-
- [Source: epics.md, Story 5.2] — Acceptance criteria and technical notes
|
|
172
|
-
- [Source: prd.md, FR75] — Build script for bundling external modules
|
|
173
|
-
- [Source: prd.md, NFR20-NFR21] — Version pinning and deterministic installation
|
|
174
|
-
- [Source: package.json] — Current scripts and dependencies
|
|
175
|
-
- [Source: .npmignore] — Current exclusion list (lib/bmad-cache/ NOT excluded)
|
|
176
|
-
- [Source: 5-1-bmad-method-direct-dependency.md] — Previous story establishing bmad-method dependency
|
|
177
|
-
|
|
178
|
-
## Change Log
|
|
179
|
-
|
|
180
|
-
- 2026-03-15: Created build script `scripts/build-bmad-cache.js` and added `build:bmad-cache` npm script. Implemented all 8 tasks: module definition loading from bmad-method, git clone with depth 1, production dependency installation, .git cleanup, cache-manifest.json generation, --force rebuild, incremental update via git ls-remote comparison, and npm pack verification. Used manual YAML parser (no new dependencies). All 4 modules (bmb, cis, gds, tea) successfully cloned and cached.
|
|
181
|
-
- 2026-03-16: Addressed code review findings — 6 items resolved (2 High, 3 Medium, 1 Low). H1: Fixed SHA comparison from substring/startsWith to full equality. H2: Removed unnecessary async from main(). M1: Replaced execSync with execFileSync to prevent command injection. M2: Preserve existing manifest entries for failed modules. M3: Made YAML parser indent-flexible (1-4 for keys, 2-8 for props) with separate quoted/unquoted value handling. L1: Fixed by splitting quoted vs unquoted regex paths.
|
|
182
|
-
|
|
183
|
-
## Dev Agent Record
|
|
184
|
-
|
|
185
|
-
### Agent Model Used
|
|
186
|
-
|
|
187
|
-
Claude Opus 4.6 (1M context)
|
|
188
|
-
|
|
189
|
-
### Debug Log References
|
|
190
|
-
|
|
191
|
-
- YAML path discovery: `external-official-modules.yaml` is at `tools/cli/external-official-modules.yaml` inside bmad-method (not at root as story assumed)
|
|
192
|
-
- YAML format: modules are keyed objects (not array of objects as story example suggested). No `branch` field exists — defaulted to `main`
|
|
193
|
-
- Bug fix: initial incremental skip counter was incorrect — skipped modules inherited `clonedAt` from manifest causing them to count as cloned. Fixed by adding `skipped` flag to return value.
|
|
194
|
-
- Code review fix (H1): SHA comparison used `startsWith(substring(0,7))` — replaced with full `===` equality
|
|
195
|
-
- Code review fix (H2): `async function main()` had no awaits — removed async to avoid unhandled promise rejection
|
|
196
|
-
- Code review fix (M1): All `execSync` calls replaced with `execFileSync` (array args, no shell interpretation) — eliminates command injection risk. `npm` on Windows requires `shell: true` via platform check.
|
|
197
|
-
- Code review fix (M2): Failed modules now preserve their existing manifest entry instead of being dropped
|
|
198
|
-
- Code review fix (M3): YAML parser indent ranges relaxed from exact 2/4 to 1-4/2-8, with separate quoted/unquoted value regex paths (also fixes L1)
|
|
199
|
-
|
|
200
|
-
### Completion Notes List
|
|
201
|
-
|
|
202
|
-
- All 8 tasks completed and verified via manual testing per Testing Standards
|
|
203
|
-
- AC #1: `npm run build:bmad-cache` clones bmb, cis, gds, tea into `lib/bmad-cache/` using `git clone --depth 1`
|
|
204
|
-
- AC #2: Script runs `npm install --omit=dev` in each module (skips if no deps or no package.json)
|
|
205
|
-
- AC #3: `.git/` directories removed from all cloned modules
|
|
206
|
-
- AC #4: `cache-manifest.json` records generated date, bmadMethodVersion, and per-module url/branch/commitSha/clonedAt
|
|
207
|
-
- AC #5: `--force` removes existing cache and rebuilds from scratch
|
|
208
|
-
- AC #6: Incremental update compares cached SHA vs upstream HEAD via `git ls-remote`, skips unchanged modules
|
|
209
|
-
- AC #7: `npm pack --dry-run` confirms `lib/bmad-cache/` files included in tarball
|
|
210
|
-
- No new production dependencies added — used manual YAML parser and existing `fs-extra`
|
|
211
|
-
- Cross-platform: all file operations use `fs-extra`, no shell-specific syntax
|
|
212
|
-
|
|
213
|
-
### File List
|
|
214
|
-
|
|
215
|
-
- `scripts/build-bmad-cache.js` — **NEW** — BMAD cache build script (cross-platform Node.js)
|
|
216
|
-
- `package.json` — **MODIFIED** — added `"build:bmad-cache"` to scripts section
|
|
217
|
-
- `lib/bmad-cache/` — **NEW** directory (generated by script, contains bmb/, cis/, gds/, tea/, cache-manifest.json)
|
|
218
|
-
- `lib/bmad-cache/cache-manifest.json` — **NEW** — generated manifest with module versions
|
|
219
|
-
- `_bmad-output/implementation-artifacts/sprint-status.yaml` — **MODIFIED** — story status updated to in-progress then review
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
# Story 5.3: Pre-populate BMAD External Module Cache
|
|
2
|
-
|
|
3
|
-
Status: done
|
|
4
|
-
|
|
5
|
-
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
6
|
-
|
|
7
|
-
## Story
|
|
8
|
-
|
|
9
|
-
As a **DevOps engineer**,
|
|
10
|
-
I want the installer to pre-populate `~/.bmad/cache/external-modules/` from the bundled cache before invoking bmad-method,
|
|
11
|
-
So that bmad-method finds the external modules locally and skips git clone.
|
|
12
|
-
|
|
13
|
-
## Acceptance Criteria
|
|
14
|
-
|
|
15
|
-
1. Before invoking bmad-method (install or update), the installer copies each module from `lib/bmad-cache/<code>/` to `~/.bmad/cache/external-modules/<code>/` — only if the target directory does not already exist (or `--force` is set)
|
|
16
|
-
2. If the target cache directory `~/.bmad/cache/external-modules/<code>/` already exists and `--force` is NOT set, the existing cache is preserved (no overwrite)
|
|
17
|
-
3. If `--force` is set, the existing cache is replaced with the bundled version
|
|
18
|
-
4. The installer sets `GIT_TERMINAL_PROMPT=0` in the child process environment when invoking bmad-method to prevent interactive git prompts
|
|
19
|
-
5. After cache pre-population, bmad-method's `cloneExternalModule()` detects `fs.pathExists(moduleCacheDir)` is true, skips git clone, and uses the cached copy
|
|
20
|
-
6. On connected machines, bmad-method may `git fetch` on existing cache dirs — this succeeds silently but does not alter the deterministic outcome. In air-gapped environments, `git fetch` fails silently and the pre-populated cache is used as-is
|
|
21
|
-
7. The installation result is deterministic per NFR20/NFR21 — same bmad-method version + same module cache = identical `_bmad/` output regardless of network connectivity
|
|
22
|
-
|
|
23
|
-
## Tasks / Subtasks
|
|
24
|
-
|
|
25
|
-
- [x] Task 1: Create `prePopulateBmadCache()` function in `lib/bmad.js` (AC: #1, #2, #3)
|
|
26
|
-
- [x] 1.1 Add a new exported async function `prePopulateBmadCache(projectRoot, force = false)` in `bmad.js`
|
|
27
|
-
- [x] 1.2 Resolve the bundled cache source: `path.join(__dirname, 'bmad-cache')` — if directory doesn't exist, log warning and return (graceful no-op for packages built without cache)
|
|
28
|
-
- [x] 1.3 Determine target directory: `path.join(os.homedir(), '.bmad', 'cache', 'external-modules')` — use `os.homedir()` (add `const os = require('os')` at top)
|
|
29
|
-
- [x] 1.4 Create target directory structure if it doesn't exist: `fs.ensureDir(targetDir)`
|
|
30
|
-
- [x] 1.5 Read module directories from `lib/bmad-cache/` (exclude `cache-manifest.json`)
|
|
31
|
-
- [x] 1.6 For each module directory:
|
|
32
|
-
- Check if `path.join(targetDir, moduleCode)` exists
|
|
33
|
-
- If exists AND NOT force: skip with log message (`chalk.gray`)
|
|
34
|
-
- If exists AND force: remove existing (`fs.remove`), then copy
|
|
35
|
-
- If not exists: copy (`fs.copy`)
|
|
36
|
-
- [x] 1.7 Log summary of pre-population results (modules copied, skipped, replaced)
|
|
37
|
-
|
|
38
|
-
- [x] Task 2: Integrate cache pre-population into install flow (AC: #1, #5)
|
|
39
|
-
- [x] 2.1 In `installBmad()`: call `await prePopulateBmadCache(projectRoot)` BEFORE the `execSync(command, ...)` line
|
|
40
|
-
- [x] 2.2 In `updateBmad()`: call `await prePopulateBmadCache(projectRoot)` BEFORE the `execSync(command, ...)` line
|
|
41
|
-
- [x] 2.3 In `applyCustomizations()`: call `await prePopulateBmadCache(projectRoot)` BEFORE the recompile `execSync(command, ...)` line (step 3's recompile, around line 133)
|
|
42
|
-
- [x] 2.4 Pass `force` parameter through from caller if available (default false)
|
|
43
|
-
|
|
44
|
-
- [x] Task 3: Set `GIT_TERMINAL_PROMPT=0` on bmad-method invocation (AC: #4)
|
|
45
|
-
- [x] 3.1 In all 3 `execSync` calls that invoke bmad-method, add environment variable: `execSync(command, { stdio: 'inherit', cwd: projectRoot, env: { ...process.env, GIT_TERMINAL_PROMPT: '0' } })`
|
|
46
|
-
- [x] 3.2 This prevents interactive git credential prompts in air-gapped environments where `git fetch` might hang
|
|
47
|
-
|
|
48
|
-
- [x] Task 4: Export new function (AC: #1)
|
|
49
|
-
- [x] 4.1 Add `prePopulateBmadCache` to the `module.exports` block
|
|
50
|
-
|
|
51
|
-
- [ ] Task 5: Manual integration test (AC: #5, #6, #7) *(requires human tester)*
|
|
52
|
-
- [ ] 5.1 Run full install flow with bundled cache present — verify modules appear in `~/.bmad/cache/external-modules/`
|
|
53
|
-
- [ ] 5.2 Run install again without `--force` — verify existing cache is NOT overwritten
|
|
54
|
-
- [ ] 5.3 Run install with `--force` — verify cache is replaced
|
|
55
|
-
- [ ] 5.4 Verify complete BMAD installation succeeds using pre-populated cache
|
|
56
|
-
- [ ] 5.5 Verify no interactive git prompts appear (GIT_TERMINAL_PROMPT=0)
|
|
57
|
-
|
|
58
|
-
## Dev Notes
|
|
59
|
-
|
|
60
|
-
### Architecture Compliance
|
|
61
|
-
|
|
62
|
-
- **Decision P2-6** (Bundled BMAD Installation): This story implements step 1 of the 2-step mechanism. Step 2 (invoke from npm dependency) was completed in Story 5.1.
|
|
63
|
-
- **NFR20** (Version Pinning): Cache modules are pinned at clone time by Story 5.2's build script. This story copies them without modification.
|
|
64
|
-
- **NFR21** (Deterministic Installation): Pre-populating the cache ensures bmad-method's `cloneExternalModule()` finds existing modules and skips `git clone`, producing identical output regardless of network connectivity.
|
|
65
|
-
- **Anti-pattern from architecture**: "Letting bmad-method auto-fetch external modules without pre-populating the cache first (breaks air-gap)" [Source: architecture.md, Decision P2-6 validation]
|
|
66
|
-
|
|
67
|
-
### Implementation Pattern
|
|
68
|
-
|
|
69
|
-
The pre-population function should follow this pattern:
|
|
70
|
-
|
|
71
|
-
```javascript
|
|
72
|
-
const os = require('os');
|
|
73
|
-
|
|
74
|
-
async function prePopulateBmadCache(projectRoot, force = false) {
|
|
75
|
-
const cacheSource = path.join(__dirname, 'bmad-cache');
|
|
76
|
-
if (!fs.existsSync(cacheSource)) {
|
|
77
|
-
console.log(chalk.gray(' No bundled BMAD cache found — skipping pre-population'));
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const targetDir = path.join(os.homedir(), '.bmad', 'cache', 'external-modules');
|
|
82
|
-
await fs.ensureDir(targetDir);
|
|
83
|
-
|
|
84
|
-
const entries = await fs.readdir(cacheSource);
|
|
85
|
-
const modules = entries.filter(e => e !== 'cache-manifest.json');
|
|
86
|
-
|
|
87
|
-
for (const mod of modules) {
|
|
88
|
-
const src = path.join(cacheSource, mod);
|
|
89
|
-
const dst = path.join(targetDir, mod);
|
|
90
|
-
const stat = await fs.stat(src);
|
|
91
|
-
if (!stat.isDirectory()) continue;
|
|
92
|
-
|
|
93
|
-
if (await fs.pathExists(dst)) {
|
|
94
|
-
if (force) {
|
|
95
|
-
await fs.remove(dst);
|
|
96
|
-
await fs.copy(src, dst);
|
|
97
|
-
console.log(chalk.cyan(` + Replaced cached module: ${mod}`));
|
|
98
|
-
} else {
|
|
99
|
-
console.log(chalk.gray(` ~ Cached module exists, skipping: ${mod}`));
|
|
100
|
-
}
|
|
101
|
-
} else {
|
|
102
|
-
await fs.copy(src, dst);
|
|
103
|
-
console.log(chalk.cyan(` + Pre-populated cached module: ${mod}`));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
The `GIT_TERMINAL_PROMPT=0` environment variable is added to the `execSync` options:
|
|
110
|
-
|
|
111
|
-
```javascript
|
|
112
|
-
// In installBmad(), updateBmad(), and applyCustomizations():
|
|
113
|
-
execSync(command, {
|
|
114
|
-
stdio: 'inherit',
|
|
115
|
-
cwd: projectRoot,
|
|
116
|
-
env: { ...process.env, GIT_TERMINAL_PROMPT: '0' }
|
|
117
|
-
});
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Source Tree Components to Touch
|
|
121
|
-
|
|
122
|
-
| File | Change |
|
|
123
|
-
|------|--------|
|
|
124
|
-
| `lib/bmad.js` | Add `os` require, add `prePopulateBmadCache()` function, call it before each bmad-method invocation, add `GIT_TERMINAL_PROMPT=0` to execSync env, export new function |
|
|
125
|
-
|
|
126
|
-
### Critical Constraints
|
|
127
|
-
|
|
128
|
-
- **Call order matters**: `prePopulateBmadCache()` MUST run BEFORE any `execSync` that invokes bmad-method. If it runs after, bmad-method will have already attempted `git clone` and failed in air-gapped environments.
|
|
129
|
-
- **Do NOT modify any other logic in bmad.js**: The `getBmadCommand()` helper, flag appending, `applyCustomizations()` steps 1-6, CSV registry logic — all must remain untouched. Only add the pre-population call and env variable.
|
|
130
|
-
- **Graceful degradation**: If `lib/bmad-cache/` doesn't exist (package built without running `npm run build:bmad-cache`), the function must return silently. It should NOT throw or block installation.
|
|
131
|
-
- **Cross-platform paths**: Use `os.homedir()` for the user's home directory. Use `path.join()` for all path construction. Works on Windows, macOS, and Linux.
|
|
132
|
-
- **No new dependencies**: Uses only `os` (Node.js built-in), `fs-extra` (existing dependency), `path` (built-in), `chalk` (existing dependency).
|
|
133
|
-
- **Module codes must match bmad-method expectations**: The directory names in `lib/bmad-cache/` (bmb, cis, tea, gds) must match exactly what bmad-method's `cloneExternalModule()` looks for in `~/.bmad/cache/external-modules/`. These codes come from `external-official-modules.yaml` and are set by Story 5.2's build script.
|
|
134
|
-
- **`fs.copy()` semantics**: `fs-extra`'s `fs.copy()` copies directory contents recursively. It does NOT require the destination to not exist — but for predictable behavior with `--force`, explicitly `fs.remove()` first.
|
|
135
|
-
- **Three invocation sites**: Pre-population must be called in `installBmad()`, `updateBmad()`, and `applyCustomizations()`. Missing any one creates a gap where bmad-method might attempt network fetches.
|
|
136
|
-
- **Design decision on determinism**: The epics note: "bmad-method's internal git fetch on existing cache directories does a `git fetch` + `git reset --hard origin/main` only if fetch succeeds. To guarantee deterministic output per NFR20/NFR21, the pre-population step should set the cache directories as read-only or the installer should re-copy bundled cache after bmad-method completes." For the initial implementation, rely on the fact that `git fetch` failing silently in air-gapped environments is sufficient. If determinism on connected machines is required, add a post-invocation re-copy step. This can be addressed in Story 5.4 validation.
|
|
137
|
-
|
|
138
|
-
### Testing Standards
|
|
139
|
-
|
|
140
|
-
- No automated test suite exists yet (Epic 7). Manual verification is sufficient for this story.
|
|
141
|
-
- Verify by running the full install flow: `npx ma-agents install` selecting BMAD installation.
|
|
142
|
-
- Confirm modules appear in `~/.bmad/cache/external-modules/` before bmad-method is invoked.
|
|
143
|
-
- Test idempotency: running install twice should skip already-cached modules.
|
|
144
|
-
- Test `--force`: should replace cached modules.
|
|
145
|
-
|
|
146
|
-
### Project Structure Notes
|
|
147
|
-
|
|
148
|
-
- `lib/bmad.js` is the only file that needs changes. It currently has 261 lines.
|
|
149
|
-
- `lib/bmad-cache/` does not exist yet — it will be created by Story 5.2's build script. The pre-population function handles this gracefully.
|
|
150
|
-
- `.npmignore` does NOT exclude `lib/bmad-cache/` — confirmed, it will ship with `npm pack`.
|
|
151
|
-
- The `module.exports` block at line 256-261 currently exports: `isBmadInstalled`, `installBmad`, `updateBmad`, `applyCustomizations`.
|
|
152
|
-
|
|
153
|
-
### Previous Story Intelligence (5.1)
|
|
154
|
-
|
|
155
|
-
- Story 5.1 established `getBmadCommand()` helper in `bmad.js` — this story's pre-population runs BEFORE `getBmadCommand()` output is used in `execSync`
|
|
156
|
-
- Story 5.1 confirmed `bmad-method@6.0.4` is in `package.json` as exact-version dependency
|
|
157
|
-
- Story 5.1 verified `require.resolve('bmad-method/tools/bmad-npx-wrapper.js')` works correctly
|
|
158
|
-
- Story 5.1 noted: "Version bumps require: update pin in `package.json`, re-run `npm run build:bmad-cache` (Story 5.2), test, release" — pre-population uses whatever is in `lib/bmad-cache/`, so version coordination is handled by the build script
|
|
159
|
-
- Story 5.1 code review added `wrapped.cause = err` error chaining — follow same pattern for any new error handling
|
|
160
|
-
- Story 5.1 is currently in `review` status — Tasks 6 & 7 require human tester (backward compatibility and integration)
|
|
161
|
-
|
|
162
|
-
### Previous Story Intelligence (5.2)
|
|
163
|
-
|
|
164
|
-
- Story 5.2 creates the `lib/bmad-cache/` directory with modules (bmb, cis, tea, gds) and `cache-manifest.json`
|
|
165
|
-
- Story 5.2 uses `fs-extra` for all file operations — same approach should be used here
|
|
166
|
-
- Story 5.2 is in `backlog` status — this story's pre-population function gracefully handles the case where `lib/bmad-cache/` doesn't exist yet
|
|
167
|
-
|
|
168
|
-
### Git Intelligence
|
|
169
|
-
|
|
170
|
-
Recent commits show:
|
|
171
|
-
- `476b717` — Added all BMAD planning and implementation artifacts
|
|
172
|
-
- `4fa0596` — Track `_bmad-output/` in git per FR58
|
|
173
|
-
- `c32b7c0` — Fix to prevent BMAD agent files from being overwritten with empty stubs
|
|
174
|
-
- Code patterns: uses `chalk` for colored output (`.cyan` for actions, `.gray` for info, `.red` for errors), `fs-extra` for file ops, `execSync` for shell commands
|
|
175
|
-
|
|
176
|
-
### Epic 5 Cross-Story Context
|
|
177
|
-
|
|
178
|
-
This is Story 5.3 of 4 in Epic 5 (Bundled BMAD Installation). Execution order: 5.1 -> 5.2 -> 5.3 -> 5.4.
|
|
179
|
-
|
|
180
|
-
- **Story 5.1** (review): Add bmad-method as npm dependency, replace `npx` invocations — DONE, in code review
|
|
181
|
-
- **Story 5.2** (backlog): Create `npm run build:bmad-cache` script to clone external modules into `lib/bmad-cache/` — prerequisite for this story's cache to exist
|
|
182
|
-
- **Story 5.3** (this): Pre-populate `~/.bmad/cache/external-modules/` from bundled cache before bmad-method runs
|
|
183
|
-
- **Story 5.4**: Validate the complete bundled installation works end-to-end
|
|
184
|
-
|
|
185
|
-
**Dependency note**: This story can be implemented and tested independently of Story 5.2. The `prePopulateBmadCache()` function gracefully returns if `lib/bmad-cache/` doesn't exist. Once Story 5.2 is completed and the cache is built, this story's code will automatically use it.
|
|
186
|
-
|
|
187
|
-
### References
|
|
188
|
-
|
|
189
|
-
- [Source: architecture.md, Decision P2-6] — Bundled BMAD Installation architecture, pre-population mechanism
|
|
190
|
-
- [Source: architecture.md, Decision P2-6 validation] — Anti-pattern: not pre-populating cache before bmad-method runs
|
|
191
|
-
- [Source: epics.md, Story 5.3] — Acceptance criteria and technical notes
|
|
192
|
-
- [Source: prd.md, FR76] — Cache pre-population for air-gapped installation
|
|
193
|
-
- [Source: prd.md, NFR20-NFR21] — Version pinning and deterministic installation requirements
|
|
194
|
-
- [Source: lib/bmad.js] — Current bmad.js implementation (261 lines, 4 exports, 3 execSync invocation sites)
|
|
195
|
-
- [Source: 5-1-bmad-method-direct-dependency.md] — Previous story establishing bmad-method dependency and getBmadCommand() helper
|
|
196
|
-
- [Source: 5-2-bmad-cache-build-script.md] — Previous story defining lib/bmad-cache/ structure and cache-manifest.json format
|
|
197
|
-
|
|
198
|
-
## Dev Agent Record
|
|
199
|
-
|
|
200
|
-
### Agent Model Used
|
|
201
|
-
|
|
202
|
-
Claude Opus 4.6 (1M context)
|
|
203
|
-
|
|
204
|
-
### Debug Log References
|
|
205
|
-
|
|
206
|
-
- Verified module loads correctly with `node -e "require('./lib/bmad.js')"`
|
|
207
|
-
- Tested graceful no-op: `lib/bmad-cache/` exists (from Story 5.2), function correctly pre-populated 1 new module (gds), skipped 3 existing (bmb, cis, tea)
|
|
208
|
-
- All code paths validated: copy, skip, and summary logging confirmed working
|
|
209
|
-
|
|
210
|
-
### Completion Notes List
|
|
211
|
-
|
|
212
|
-
- Added `const os = require('os')` import at line 3
|
|
213
|
-
- Implemented `prePopulateBmadCache(force = false)` function following the exact pattern from Dev Notes
|
|
214
|
-
- Integrated pre-population call before all 3 `execSync` invocation sites: `installBmad()`, `updateBmad()`, `applyCustomizations()`
|
|
215
|
-
- Added `GIT_TERMINAL_PROMPT: '0'` to env options on all 3 `execSync` calls
|
|
216
|
-
- Exported `prePopulateBmadCache` in `module.exports` block
|
|
217
|
-
- Added summary counters (copied, skipped, replaced) for logging clarity (subtask 1.7)
|
|
218
|
-
- Task 5 (manual integration test) left unchecked — requires human tester per story spec
|
|
219
|
-
- No new dependencies added — uses only existing `fs-extra`, `chalk`, `path`, `os`, `child_process`
|
|
220
|
-
- Resolved review finding [High]: H1 — Wrapped function body in try/catch for graceful degradation per Critical Constraints
|
|
221
|
-
- Resolved review finding [High]: H2 — Threaded `force` parameter through `installBmad()`, `updateBmad()`, `applyCustomizations()` signatures, making AC #3 reachable
|
|
222
|
-
- Resolved review finding [Medium]: M1 — Removed unused `projectRoot` parameter from `prePopulateBmadCache()` signature
|
|
223
|
-
- Resolved review finding [Medium]: M2 — Summary log only prints when actions were taken (copied or replaced > 0), eliminating noise on repeated runs
|
|
224
|
-
- Resolved review finding [Medium]: M3 — Replaced `fs.existsSync()` with `await fs.pathExists()` for consistent async usage
|
|
225
|
-
- Resolved review finding [Low]: L1 — Addressed by M2 fix (suppresses spurious logs from redundant calls)
|
|
226
|
-
|
|
227
|
-
### Change Log
|
|
228
|
-
|
|
229
|
-
- 2026-03-16: Implemented cache pre-population function, integrated into all 3 install flows, added GIT_TERMINAL_PROMPT=0 to all execSync calls, exported new function
|
|
230
|
-
- 2026-03-16: Addressed code review findings — 2 High, 3 Medium, 1 Low items resolved: added try/catch, threaded force param, removed dead param, cleaned up logging, consistent async
|
|
231
|
-
|
|
232
|
-
### File List
|
|
233
|
-
|
|
234
|
-
- `lib/bmad.js` — Added `os` require, `prePopulateBmadCache()` function, pre-population calls in 3 functions, `GIT_TERMINAL_PROMPT=0` env in 3 execSync calls, updated exports
|