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,287 +0,0 @@
|
|
|
1
|
-
# Epic 15: Adversarial Review — Fix Specification
|
|
2
|
-
|
|
3
|
-
**Source:** Epic 15 adversarial review (2026-03-28)
|
|
4
|
-
**Scope:** 9 actionable fixes across test infrastructure, migration safety, code hygiene
|
|
5
|
-
**Priority:** Fixes are ordered by importance — complete them in sequence
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Fix 1: Add missing test file to npm test script
|
|
10
|
-
|
|
11
|
-
**Finding:** `test/story-15-5-workflow-skills.test.js` (157 tests covering all 25 SRE/DevOps/Cyber/extension workflow conversions) is not listed in the `npm test` script in `package.json`. These tests never run in CI.
|
|
12
|
-
|
|
13
|
-
**What to do:**
|
|
14
|
-
1. Open `package.json`
|
|
15
|
-
2. Find the `"test"` script in the `"scripts"` section
|
|
16
|
-
3. Add `node test/story-15-5-workflow-skills.test.js` to the test chain, positioned after the other Epic 15 test files (after `convert-agents-to-skills.test.js` or `migration.test.js`)
|
|
17
|
-
4. Run `npm test` to confirm all tests pass including the newly added file
|
|
18
|
-
|
|
19
|
-
**Acceptance criteria:**
|
|
20
|
-
- `npm test` executes `story-15-5-workflow-skills.test.js` and all 157 tests pass
|
|
21
|
-
- No other test files are removed or reordered
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Fix 2: Fix 3 stale test assertions
|
|
26
|
-
|
|
27
|
-
**Finding:** Epic 15 changed the module structure but left pre-existing test assertions pointing at the old structure. These are documented as discrepancies D2, D3, D4 in `_bmad-output/implementation-artifacts/15-8-validation-report.md`.
|
|
28
|
-
|
|
29
|
-
### Fix 2a: `test/bmad-extension.test.js` — stale module.yaml name assertion (D2)
|
|
30
|
-
|
|
31
|
-
1. Open `test/bmad-extension.test.js`
|
|
32
|
-
2. Find the assertion that checks the `name` field of `lib/bmad-extension/module.yaml`
|
|
33
|
-
3. The old expected value will reference the pre-6.2.1 module name
|
|
34
|
-
4. Update it to match the current value in `lib/bmad-extension/module.yaml`, which is: `"MA-Agents Skills & Agents"`
|
|
35
|
-
5. Run this test file to confirm it passes
|
|
36
|
-
|
|
37
|
-
### Fix 2b: `test/extension-module-restructure.test.js` — stale agents/ directory assertions (D3)
|
|
38
|
-
|
|
39
|
-
1. Open `test/extension-module-restructure.test.js`
|
|
40
|
-
2. Find assertions that expect `lib/bmad-extension/agents/` directory to exist or contain files
|
|
41
|
-
3. This directory was deleted in Story 15.6. Remove or update these assertions:
|
|
42
|
-
- If the assertion checks that `agents/` exists → remove it
|
|
43
|
-
- If it counts files in `agents/` → remove it
|
|
44
|
-
- If it checks that specific `.customize.yaml` files exist in `agents/` → remove those specific checks
|
|
45
|
-
4. Do NOT remove assertions about `skills/` or other directories that still exist
|
|
46
|
-
5. Run this test file to confirm it passes
|
|
47
|
-
|
|
48
|
-
### Fix 2c: `test/yes-flag.test.js` — environment-dependent flakiness (D4)
|
|
49
|
-
|
|
50
|
-
1. Open `test/yes-flag.test.js`
|
|
51
|
-
2. Identify the flaky test (it will be environment-dependent — likely depends on npm/node version, temp directory availability, or network access)
|
|
52
|
-
3. If the test relies on external state (network, specific paths), make it self-contained by:
|
|
53
|
-
- Mocking the external dependency, OR
|
|
54
|
-
- Adding a guard that skips the test with a clear message when the prerequisite is unavailable
|
|
55
|
-
4. Run the test file 3 times to confirm it passes consistently
|
|
56
|
-
|
|
57
|
-
**Acceptance criteria:**
|
|
58
|
-
- All three test files pass cleanly
|
|
59
|
-
- No unrelated assertions were modified
|
|
60
|
-
- `npm test` passes end-to-end
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## Fix 3: Retain migration backup directory until next successful install
|
|
65
|
-
|
|
66
|
-
**Finding:** `cleanupLegacyArtifacts()` in `lib/bmad.js` deletes `.backup-pre-migration/` immediately after `mergeUserCustomizations()` runs. If the merge produced corrupt output (e.g., invalid YAML from user content with special characters), the backup is permanently destroyed. The rollback safety net (NFR29) only covers the update step, not a botched merge.
|
|
67
|
-
|
|
68
|
-
**What to do:**
|
|
69
|
-
1. Open `lib/bmad.js`
|
|
70
|
-
2. Find `cleanupLegacyArtifacts()` — it has three cleanup targets: old XML agents, legacy workflow YAML, and the backup directory
|
|
71
|
-
3. **Remove the backup directory cleanup from `cleanupLegacyArtifacts()`** — specifically, remove or comment out the section that deletes `.backup-pre-migration/`
|
|
72
|
-
4. Instead, move backup directory cleanup to the **beginning** of `backupCustomizations()` — so the old backup is only deleted when a NEW backup is about to be created (i.e., on the next migration/install run)
|
|
73
|
-
5. Add a console log message when deleting a previous backup: `chalk.dim('Removing previous migration backup...')`
|
|
74
|
-
|
|
75
|
-
**Implementation detail:**
|
|
76
|
-
```
|
|
77
|
-
In backupCustomizations():
|
|
78
|
-
1. Check if .backup-pre-migration/ already exists
|
|
79
|
-
2. If yes: log message, delete it
|
|
80
|
-
3. Proceed with creating new backup as before
|
|
81
|
-
|
|
82
|
-
In cleanupLegacyArtifacts():
|
|
83
|
-
1. Keep old XML cleanup
|
|
84
|
-
2. Keep legacy YAML cleanup
|
|
85
|
-
3. REMOVE backup directory cleanup
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
6. Update `test/migration.test.js`:
|
|
89
|
-
- Add a test: after `cleanupLegacyArtifacts()` runs, `.backup-pre-migration/` directory still exists
|
|
90
|
-
- Add a test: `backupCustomizations()` removes a pre-existing `.backup-pre-migration/` before creating a new one
|
|
91
|
-
- Update any existing test that asserts `.backup-pre-migration/` is deleted by cleanup
|
|
92
|
-
|
|
93
|
-
**Acceptance criteria:**
|
|
94
|
-
- After a migration, `.backup-pre-migration/` is preserved on disk
|
|
95
|
-
- On the NEXT migration run, the old backup is replaced with a fresh one
|
|
96
|
-
- All migration tests pass
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## Fix 4: Add output validation to mergeUserCustomizations()
|
|
101
|
-
|
|
102
|
-
**Finding:** After merging user memories, custom critical_actions, and persona overrides into post-migration customize files, the function never validates that the resulting file is still parseable. A user persona containing YAML special characters (`:`, `#`, `{`, `>`, `|`) could produce corrupt output.
|
|
103
|
-
|
|
104
|
-
**What to do:**
|
|
105
|
-
1. Open `lib/bmad.js`, find `mergeUserCustomizations()`
|
|
106
|
-
2. After writing each merged customize file, add a validation step:
|
|
107
|
-
- Re-read the file that was just written
|
|
108
|
-
- Run it through `parseCustomizeYaml()` (the same parser used to read it)
|
|
109
|
-
- If parsing fails or returns unexpected structure, log a warning and restore the pre-merge version from backup
|
|
110
|
-
3. The validation logic should be:
|
|
111
|
-
```
|
|
112
|
-
const merged = fs.readFileSync(targetPath, 'utf8');
|
|
113
|
-
const parsed = parseCustomizeYaml(merged);
|
|
114
|
-
if (!parsed || !parsed.criticalActions || parsed.criticalActions.length === 0) {
|
|
115
|
-
console.warn(chalk.yellow(` ⚠ Merge produced invalid output for ${file}, restoring backup`));
|
|
116
|
-
fs.copyFileSync(backupPath, targetPath);
|
|
117
|
-
skipped.push(file);
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
4. Update `test/migration.test.js`:
|
|
122
|
-
- Add a test: merge with user content containing YAML special characters (`memories:\n - "key: value with colons"`) produces valid output
|
|
123
|
-
- Add a test: if merge produces unparseable output, the backup copy is restored and the file is added to `skipped`
|
|
124
|
-
|
|
125
|
-
**Acceptance criteria:**
|
|
126
|
-
- `mergeUserCustomizations()` validates each merged file before moving on
|
|
127
|
-
- Corrupt merges are caught and the backup is restored for that specific file
|
|
128
|
-
- Migration continues for other files (doesn't abort entirely)
|
|
129
|
-
- New tests cover the happy path and the corrupt-merge path
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Fix 5: Flag dead menu items in agent SKILL.md files
|
|
134
|
-
|
|
135
|
-
**Finding:** Four agent menu items reference skills that were never implemented: `sre-health-check`, `sre-performance-opt`, `devops-optimize-pipelines`, `cyber-threat-modeling`. These are dead links that will confuse users.
|
|
136
|
-
|
|
137
|
-
**What to do:**
|
|
138
|
-
1. Edit `lib/bmad-extension/skills/bmad-ma-agent-sre/SKILL.md`:
|
|
139
|
-
- Find the menu table rows for "Health Check" (referencing `sre-health-check`) and "Performance Optimization" (referencing `sre-performance-opt`)
|
|
140
|
-
- Append ` *(not yet implemented)*` to the description column of each
|
|
141
|
-
|
|
142
|
-
2. Edit `lib/bmad-extension/skills/bmad-ma-agent-devops/SKILL.md`:
|
|
143
|
-
- Find the menu table row for "Optimize Pipelines" (referencing `devops-optimize-pipelines`)
|
|
144
|
-
- Append ` *(not yet implemented)*` to the description column
|
|
145
|
-
|
|
146
|
-
3. Edit `lib/bmad-extension/skills/bmad-ma-agent-cyber/SKILL.md`:
|
|
147
|
-
- Find the menu table row for "Threat Modeling" (referencing `cyber-threat-modeling`)
|
|
148
|
-
- Append ` *(not yet implemented)*` to the description column
|
|
149
|
-
|
|
150
|
-
4. Update `test/migration-validation.test.js` if it has assertions that check these exact description strings — adjust expected values to include the new suffix
|
|
151
|
-
|
|
152
|
-
**Acceptance criteria:**
|
|
153
|
-
- All 4 dead menu items are visibly marked as not yet implemented
|
|
154
|
-
- Agents still render menus correctly (no broken markdown)
|
|
155
|
-
- Tests pass
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## Fix 6: Remove redundant agent source files from lib/bmad-customizations/
|
|
160
|
-
|
|
161
|
-
**Finding:** `lib/bmad-customizations/` still contains the original source files for all 4 migrated agents (`bmm-sre.customize.yaml`, `bmm-cyber.customize.yaml`, `bmm-devops.customize.yaml`, `bmm-mil498.customize.yaml`, plus `sre.md`, `cyber.md`, `devops.md`, `mil498.md`). These are superseded by the skill folders in `lib/bmad-extension/skills/bmad-ma-agent-*/`. No code reads from these paths for the migrated agents.
|
|
162
|
-
|
|
163
|
-
**What to do:**
|
|
164
|
-
1. First, **verify** that no code references these files:
|
|
165
|
-
- Search all `.js` files for `bmad-customizations/bmm-sre`, `bmad-customizations/bmm-cyber`, `bmad-customizations/bmm-devops`, `bmad-customizations/bmm-mil498`
|
|
166
|
-
- Search all `.js` files for `bmad-customizations/sre.md`, `bmad-customizations/cyber.md`, `bmad-customizations/devops.md`, `bmad-customizations/mil498.md`
|
|
167
|
-
- If ANY code still references these files, do NOT delete them — instead add a comment at the top of each: `# DEPRECATED: Canonical source is now lib/bmad-extension/skills/bmad-ma-agent-{name}/SKILL.md`
|
|
168
|
-
|
|
169
|
-
2. If no code references them, delete these 8 files:
|
|
170
|
-
- `lib/bmad-customizations/bmm-sre.customize.yaml`
|
|
171
|
-
- `lib/bmad-customizations/bmm-cyber.customize.yaml`
|
|
172
|
-
- `lib/bmad-customizations/bmm-devops.customize.yaml`
|
|
173
|
-
- `lib/bmad-customizations/bmm-mil498.customize.yaml`
|
|
174
|
-
- `lib/bmad-customizations/sre.md`
|
|
175
|
-
- `lib/bmad-customizations/cyber.md`
|
|
176
|
-
- `lib/bmad-customizations/devops.md`
|
|
177
|
-
- `lib/bmad-customizations/mil498.md`
|
|
178
|
-
|
|
179
|
-
3. Do NOT delete the other files in `lib/bmad-customizations/` (the platform-specific customize files like `claude-code.customize.yaml`, `cursor.customize.yaml`, etc.) — those serve a different purpose
|
|
180
|
-
|
|
181
|
-
4. Update any test that asserts the existence or count of files in `lib/bmad-customizations/`
|
|
182
|
-
|
|
183
|
-
**Acceptance criteria:**
|
|
184
|
-
- No code references the deleted files
|
|
185
|
-
- The 8 agent-specific files are removed (or deprecated if still referenced)
|
|
186
|
-
- Platform-specific customize files are untouched
|
|
187
|
-
- All tests pass
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## Fix 7: Update story artifact statuses to match sprint status
|
|
192
|
-
|
|
193
|
-
**Finding:** Stories 15.1 through 15.5 have `status: review` in their implementation artifact `.md` files, while the sprint status YAML says the entire epic is `done`. This inconsistency creates confusion about which source of truth to trust.
|
|
194
|
-
|
|
195
|
-
**What to do:**
|
|
196
|
-
1. Update the `status:` field in each of these files to `done`:
|
|
197
|
-
- `_bmad-output/implementation-artifacts/15-1-bump-bmad-method-to-6-2-1.md`
|
|
198
|
-
- `_bmad-output/implementation-artifacts/15-2-restructure-extension-module.md`
|
|
199
|
-
- `_bmad-output/implementation-artifacts/15-3-convert-custom-agents-to-skill-folders.md`
|
|
200
|
-
- `_bmad-output/implementation-artifacts/15-4-convert-mil498-workflows-to-skill-md.md`
|
|
201
|
-
- `_bmad-output/implementation-artifacts/15-5-convert-sre-devops-cyber-workflows.md`
|
|
202
|
-
|
|
203
|
-
2. Look for a `status:` key in the YAML frontmatter or a `**Status:**` line in the markdown body — update whichever format the file uses
|
|
204
|
-
|
|
205
|
-
**Acceptance criteria:**
|
|
206
|
-
- All 8 story artifacts show status `done`
|
|
207
|
-
- Sprint status YAML and individual story statuses agree
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## Fix 8: Document compareVersions() limitations
|
|
212
|
-
|
|
213
|
-
**Finding:** `compareVersions()` in `lib/bmad.js` only handles simple `X.Y.Z` numeric semver. It will mishandle pre-release versions, 4+ segments, leading zeros, and non-numeric segments. Since it gates whether migrations run, failures here are silent and consequential.
|
|
214
|
-
|
|
215
|
-
**What to do:**
|
|
216
|
-
1. Open `lib/bmad.js`, find `compareVersions()`
|
|
217
|
-
2. Add a JSDoc comment above the function documenting its constraints:
|
|
218
|
-
```javascript
|
|
219
|
-
/**
|
|
220
|
-
* Compare two semver version strings (X.Y.Z format only).
|
|
221
|
-
* Limitations: Does not support pre-release suffixes (e.g., 6.2.1-beta.1),
|
|
222
|
-
* versions with more than 3 segments, or non-numeric segments.
|
|
223
|
-
* Returns: -1 if a < b, 0 if equal, 1 if a > b.
|
|
224
|
-
*/
|
|
225
|
-
```
|
|
226
|
-
3. Add a guard at the top of the function that logs a warning if either version doesn't match `/^\d+\.\d+\.\d+$/`:
|
|
227
|
-
```javascript
|
|
228
|
-
const semverPattern = /^\d+\.\d+\.\d+$/;
|
|
229
|
-
if (!semverPattern.test(a) || !semverPattern.test(b)) {
|
|
230
|
-
console.warn(chalk.yellow(`Warning: Non-standard version format detected (${a} vs ${b}), comparison may be unreliable`));
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
4. Add a test in `test/migration.test.js`:
|
|
234
|
-
- `compareVersions('6.2.1-beta.1', '6.2.1')` — verify it doesn't crash (behavior can be undefined, but it must not throw)
|
|
235
|
-
- `compareVersions('6.2', '6.2.1')` — same, no crash
|
|
236
|
-
|
|
237
|
-
**Acceptance criteria:**
|
|
238
|
-
- Function has clear documentation of its limitations
|
|
239
|
-
- Non-standard version inputs produce a warning, not a crash
|
|
240
|
-
- Existing version comparisons continue to work identically
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
## Fix 9: Add basic merge integration test with adversarial YAML content
|
|
245
|
-
|
|
246
|
-
**Finding:** No test feeds realistic/adversarial user content through the merge pipeline. The regex-based YAML parsing in `parseCustomizeYaml()` and the merge logic in `mergeUserCustomizations()` are untested against content containing colons, hashes, multi-line strings, and other YAML special characters.
|
|
247
|
-
|
|
248
|
-
**What to do:**
|
|
249
|
-
1. Open `test/migration.test.js`
|
|
250
|
-
2. Add a new test section: `// Adversarial YAML content tests`
|
|
251
|
-
3. Create a mock project where the backed-up customize file contains:
|
|
252
|
-
```yaml
|
|
253
|
-
critical_actions:
|
|
254
|
-
- "Read the skills MANIFEST at {project-root}/skills/MANIFEST.yaml"
|
|
255
|
-
- "Custom action: deploy to prod #important"
|
|
256
|
-
memories:
|
|
257
|
-
- "User prefers dark mode: always"
|
|
258
|
-
- "Last deploy was 2026-03-15 at 14:30"
|
|
259
|
-
- "Note: this has a colon in it"
|
|
260
|
-
persona:
|
|
261
|
-
role: "Senior SRE: Platform Team"
|
|
262
|
-
identity: "Expert in k8s | helm | terraform"
|
|
263
|
-
```
|
|
264
|
-
4. Run `mergeUserCustomizations()` against it
|
|
265
|
-
5. Assert:
|
|
266
|
-
- The custom critical action (`"Custom action: deploy to prod #important"`) appears in the merged output
|
|
267
|
-
- All 3 memories appear in the merged output
|
|
268
|
-
- The persona with colons and pipes is preserved
|
|
269
|
-
- The merged file can be re-parsed by `parseCustomizeYaml()` without error
|
|
270
|
-
6. Add a second test with a truly broken input (e.g., unbalanced quotes, bare `{` characters) to verify the function doesn't crash and handles it gracefully
|
|
271
|
-
|
|
272
|
-
**Acceptance criteria:**
|
|
273
|
-
- Adversarial YAML content survives the merge round-trip
|
|
274
|
-
- Broken input is handled without crashing
|
|
275
|
-
- All existing migration tests still pass
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
## Execution Notes
|
|
280
|
-
|
|
281
|
-
- **Run `npm test` after each fix** to catch regressions early
|
|
282
|
-
- Fixes 1-2 are pure test maintenance — no production code changes
|
|
283
|
-
- Fixes 3-4 modify `lib/bmad.js` — be careful with the migration pipeline; don't break the happy path
|
|
284
|
-
- Fix 5 modifies SKILL.md content files — verify markdown rendering
|
|
285
|
-
- Fix 6 deletes files — the grep verification step is mandatory before deletion
|
|
286
|
-
- Fixes 7-8 are documentation/metadata — lowest risk
|
|
287
|
-
- Fix 9 is test-only — adds coverage without production code changes
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# Epic 16: Multi-Repository Project Layout -- Adversarial Review
|
|
2
|
-
|
|
3
|
-
**Review Date:** 2026-03-28
|
|
4
|
-
**Scope:** Stories 16.1, 16.2, 16.3, 16.4
|
|
5
|
-
**Verdict:** Significant issues found -- not ready for dev without corrections
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Findings
|
|
10
|
-
|
|
11
|
-
### Story 16.1: Repository Layout Wizard
|
|
12
|
-
|
|
13
|
-
1. **Wrong prompt library referenced throughout the story.** The Dev Notes, code sample, and Key Implementation Constraint #1 all reference `inquirer` as the prompt library. The actual codebase uses `prompts` (the `prompts` npm package), not `inquirer`. See `bin/cli.js` line 3: `const prompts = require('prompts');` and `lib/installer.js` line 4. The `inquirer` package is never imported anywhere. The code sample uses `prompt({ type: 'list', ... })` which is `inquirer` syntax; `prompts` uses `type: 'select'` with `choices` as `{ title, value }` objects, not `{ name, value }`. The entire code pattern reference is wrong.
|
|
14
|
-
|
|
15
|
-
2. **Story says to modify `cli.js` (root of project) but the actual file is at `bin/cli.js`.** The Dev Notes state "Primary file to modify: `cli.js` (root of project)" and the code sample says "In cli.js -- new wizard section after agent selection." The file is actually `bin/cli.js`. There is no `cli.js` at the project root. A developer would spend time looking for a file that does not exist at the stated location.
|
|
16
|
-
|
|
17
|
-
3. **No git URL validation whatsoever.** AC #3 and Task 3.1 accept any string as a git URL. There is no validation that the URL is a plausible git remote. There is also no protection against command injection -- the URL is interpolated directly into an `execSync()` shell command. A malicious or mistyped URL containing shell metacharacters (e.g., `; rm -rf /`) would execute arbitrary commands. This is a **security vulnerability**. At minimum, the URL and path should be validated and shell-escaped, not merely quoted.
|
|
18
|
-
|
|
19
|
-
4. **AC #5 (Local path) allows confirming a non-existent path, but consequences are undefined.** Task 2.3-2.4 say if the user confirms a non-existent path, store it anyway. But Story 16.2 will write this path into config.yaml, Story 16.3 stamps it into project-context.md, and Story 16.4 expects BMAD workflows to read from it. What happens when every downstream consumer tries to use a path that does not exist? There is no acceptance criterion for how the system should behave when a configured path is invalid at runtime.
|
|
20
|
-
|
|
21
|
-
5. **No acceptance criterion or task for handling git authentication failures.** Task 3.7 says "Handle clone failure gracefully -- catch error, display message, ask user to retry or skip." But "skip" is undefined. If the user skips a failed clone, what is the state of the layout object? Is the mode still `remote` with no valid local path? Is it silently downgraded to `same`? The skip behavior is not specified and would leave the layout object in an inconsistent state.
|
|
22
|
-
|
|
23
|
-
### Story 16.2: Config Storage and Cross-Reference File
|
|
24
|
-
|
|
25
|
-
6. **Story 16.2 writes to `_bmad/core/config.yaml`, but BMAD workflows read from `_bmad/bmm/config.yaml`.** Every single workflow.yaml in the codebase uses `config_source: "{project-root}/_bmad/bmm/config.yaml"`, and SKILL.md extension files also instruct agents to "Load and read `{project-root}/_bmad/bmm/config.yaml`." The story writes `knowledgebase_path` and `sprint_management_path` to `_bmad/core/config.yaml`, but no workflow or agent reads from that file for operational config. Unless BMAD workflows are modified to also read `_bmad/core/config.yaml` (not specified anywhere in these four stories), the paths written will be invisible to consumers. This is a **fundamental architectural disconnect**.
|
|
26
|
-
|
|
27
|
-
7. **Stale `project-layout.yaml` problem is unaddressed.** Task 3.2 explicitly says "leave it in place (do not delete -- user may switch back)." This means if a user switches from multi-repo to single-repo, a stale `project-layout.yaml` with old paths remains. Agents reading that file (per Story 16.4 AC #4) would use outdated paths. There is no mechanism to mark the file as inactive, no version or validity check, and no AC addressing how consumers should handle the stale-file scenario.
|
|
28
|
-
|
|
29
|
-
8. **String manipulation for YAML merge is fragile and underspecified.** Task 1.5 says "Preserve existing config.yaml content -- append/merge, do not overwrite" and Task 1.6 says use "string manipulation or regex." But there is no specification for what happens when `knowledgebase_path` already exists in the file from a previous run. Append would create duplicates. Find/replace needs a defined regex. The story does not specify whether existing values should be updated in place or appended, nor does it provide the regex pattern.
|
|
30
|
-
|
|
31
|
-
### Story 16.3: Project-Context Multi-Repo Section
|
|
32
|
-
|
|
33
|
-
9. **Contradiction between AC #3 (idempotency) and existing codebase behavior.** AC #3 says "When project-context.md already exists, the file is NOT modified." But the existing codebase in `installer.js` already DOES modify an existing `project-context.md` via `updateProjectContextManifestPaths()` which replaces content between marker comments. The story's blanket "do NOT modify" rule contradicts the established pattern and means users who install multi-repo on an existing project will NEVER get the Repository Layout section unless they manually edit it or regenerate from scratch (losing customizations).
|
|
34
|
-
|
|
35
|
-
10. **Template location uncertainty and missing test updates.** Dev Notes say "Generator function: in `installer.js` or related module (find via Epic 13 implementation)" -- the hedge "or related module" suggests the author was not sure. More critically, Task 3.2 modifies the public API signature of `generateProjectContext()` (an exported function). There is no mention of updating tests in `test/generate-project-context.test.js` or checking for other callers of this function.
|
|
36
|
-
|
|
37
|
-
### Story 16.4: Validate Cross-Repo Path Resolution
|
|
38
|
-
|
|
39
|
-
11. **Story is built on an unverified assumption with no definition of done if it fails.** The Expected Outcome says "Most likely outcome: BMAD workflow path resolution is driven by `config.yaml` values that ma-agents sets." But workflows use `output_folder: "{config_source}:output_folder"` which reads from `_bmad/bmm/config.yaml` -- a completely different key name and config file. There are zero references to `knowledgebase_path` or `sprint_management_path` anywhere in workflow files. This story is framed as "validation" but the gap it will inevitably discover should have been scoped as implementation work, not punted to a validation story that might produce a "gap analysis document" with no timeline for resolution.
|
|
40
|
-
|
|
41
|
-
12. **No acceptance criteria for what constitutes a passing validation.** The ACs describe expected behaviors, but Task 4 says "If BMAD workflows don't natively support configurable output paths, document changes needed." So the story passes even if nothing works? There is no AC that defines the minimum passing bar. A validation story without a pass/fail criterion is a research spike wearing a validation costume.
|
|
42
|
-
|
|
43
|
-
### Cross-Story Issues
|
|
44
|
-
|
|
45
|
-
13. **Three sources of truth, no precedence specification.** Story 16.2 stores paths in `config.yaml`. Story 16.3 stamps paths into `project-context.md`. Story 16.4 says agents discover paths from `project-layout.yaml` OR `config.yaml`. There are now three sources of truth for the same information, and no specification for which takes precedence when they disagree.
|
|
46
|
-
|
|
47
|
-
14. **No CI/CD path for multi-repo configuration.** AC #7 of Story 16.1 says `--yes` mode defaults to single-repo, and Dev Notes say "multi-repo is interactive-only configuration." This means there is no way to configure multi-repo in an automated pipeline -- ever. For a feature targeting DevOps engineers (Story 16.2's persona), making it impossible to automate is a significant gap. There should be environment variables or CLI arguments for headless multi-repo setup.
|
|
48
|
-
|
|
49
|
-
15. **Zero automated test coverage across all four stories.** Stories 16.1-16.3 introduce new functions and modify an existing exported function. There is an existing test file that will break when the function signature changes. None of the three implementation stories include any task for writing or updating unit tests. Story 16.4's tasks are all manual audits. The epic ships with zero automated regression coverage.
|
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
# Edge Case Hunter Review: Epic 16 — Multi-Repository Project Layout
|
|
2
|
-
|
|
3
|
-
**Scope:** Stories 16.1, 16.2, 16.3, 16.4
|
|
4
|
-
**Date:** 2026-03-28
|
|
5
|
-
**Method:** Exhaustive path enumeration across all branching paths and boundary conditions
|
|
6
|
-
|
|
7
|
-
## Findings
|
|
8
|
-
|
|
9
|
-
```json
|
|
10
|
-
[
|
|
11
|
-
{
|
|
12
|
-
"location": "16.1:AC#3/Task3.1",
|
|
13
|
-
"trigger_condition": "User enters empty string or whitespace-only git URL",
|
|
14
|
-
"guard_snippet": "if (!gitUrl || !gitUrl.trim()) { console.log(chalk.red('Git URL cannot be empty')); /* re-prompt */ }",
|
|
15
|
-
"potential_consequence": "execSync runs git clone with empty quoted arg, cryptic git error"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"location": "16.1:AC#3/Task3.2",
|
|
19
|
-
"trigger_condition": "User enters empty string or whitespace-only destination path",
|
|
20
|
-
"guard_snippet": "if (!destPath || !destPath.trim()) { console.log(chalk.red('Destination path cannot be empty')); /* re-prompt */ }",
|
|
21
|
-
"potential_consequence": "git clone writes into current directory unexpectedly"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"location": "16.1:AC#3/Task3.4",
|
|
25
|
-
"trigger_condition": "Git URL contains shell metacharacters like $() or backticks",
|
|
26
|
-
"guard_snippet": "Use execFileSync('git', ['clone', gitUrl, destPath]) instead of execSync with string interpolation",
|
|
27
|
-
"potential_consequence": "Arbitrary command injection via crafted git URL string"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"location": "16.1:AC#5/Task2.2",
|
|
31
|
-
"trigger_condition": "User provides relative path like '../kb' from different CWDs",
|
|
32
|
-
"guard_snippet": "const resolved = path.resolve(process.cwd(), localPath); // resolve relative to install CWD, store absolute",
|
|
33
|
-
"potential_consequence": "Stored relative path resolves differently when agents run later"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"location": "16.1:AC#5/Task2.4",
|
|
37
|
-
"trigger_condition": "User confirms non-existent local path without correction",
|
|
38
|
-
"guard_snippet": "If user confirms non-existent path, log warning that path will need to exist before agents run",
|
|
39
|
-
"potential_consequence": "Config stores path that does not exist; agents fail at runtime"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"location": "16.1:AC#3/Task3.3",
|
|
43
|
-
"trigger_condition": "Destination exists but is a file, not a directory",
|
|
44
|
-
"guard_snippet": "if (fs.existsSync(destPath) && !fs.statSync(destPath).isDirectory()) { /* warn and re-prompt */ }",
|
|
45
|
-
"potential_consequence": "Summary display crashes or git clone fails overwriting a file"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"location": "16.1:AC#3/Task3.7",
|
|
49
|
-
"trigger_condition": "Clone fails and user selects 'skip'; no fallback path stored",
|
|
50
|
-
"guard_snippet": "If skip chosen after clone failure, set mode to 'same' or require valid local path before proceeding",
|
|
51
|
-
"potential_consequence": "Layout object has remote mode but no cloned repo; downstream steps fail"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"location": "16.1:AC#3/Task3.4",
|
|
55
|
-
"trigger_condition": "Git is not installed or not on PATH",
|
|
56
|
-
"guard_snippet": "try { execSync('git --version') } catch { chalk.red('git not found on PATH'); process.exit(1) }",
|
|
57
|
-
"potential_consequence": "Unhelpful ENOENT error from execSync instead of clear message"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"location": "16.1:AC#7/Task1.6",
|
|
61
|
-
"trigger_condition": "User passes --yes with env vars for custom repo paths",
|
|
62
|
-
"guard_snippet": "Document or support env vars (MA_KB_PATH, MA_SPRINT_PATH) that override defaults in --yes mode",
|
|
63
|
-
"potential_consequence": "CI/CD pipelines cannot configure multi-repo without interactive prompts"
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"location": "16.1:AC#3/Task3.5",
|
|
67
|
-
"trigger_condition": "Clone hangs due to SSH key prompt or large repo on slow network",
|
|
68
|
-
"guard_snippet": "execSync('git clone ...', { timeout: 120000, env: { ...process.env, GIT_TERMINAL_PROMPT: '0' } })",
|
|
69
|
-
"potential_consequence": "Installer hangs indefinitely waiting for git credential or transfer"
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"location": "16.2:AC#1/Task1.5",
|
|
73
|
-
"trigger_condition": "config.yaml has no trailing newline or unusual YAML formatting",
|
|
74
|
-
"guard_snippet": "Ensure content ends with newline before appending; use regex anchored to line start for find/replace",
|
|
75
|
-
"potential_consequence": "Appended fields merge into last line, producing invalid YAML"
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"location": "16.2:AC#1/Task1.6",
|
|
79
|
-
"trigger_condition": "config.yaml contains duplicate knowledgebase_path keys after multiple installs",
|
|
80
|
-
"guard_snippet": "Regex replace existing key if found: content.replace(/^knowledgebase_path:.*$/m, newLine) || append",
|
|
81
|
-
"potential_consequence": "YAML has duplicate keys; parsers may use first or last unpredictably"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"location": "16.2:AC#1/Task1.4",
|
|
85
|
-
"trigger_condition": "Absolute path contains YAML-special characters like colons (C:\\path or C:/path)",
|
|
86
|
-
"guard_snippet": "Quote path values in YAML: knowledgebase_path: \"C:/Code/kb-repo\"",
|
|
87
|
-
"potential_consequence": "Unquoted colon in Windows path produces invalid YAML"
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"location": "16.2:AC#2/Task2.4",
|
|
91
|
-
"trigger_condition": "Path contains characters needing YAML escaping (#, %, {, })",
|
|
92
|
-
"guard_snippet": "Always wrap path values in double quotes in project-layout.yaml template strings",
|
|
93
|
-
"potential_consequence": "YAML comment or anchor syntax triggered by special chars in path"
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
"location": "16.2:AC#4/Task2.4",
|
|
97
|
-
"trigger_condition": "Path separator normalization differs between runs on same OS",
|
|
98
|
-
"guard_snippet": "Always normalize with .replace(/\\\\/g, '/') before writing, even on Unix (idempotency)",
|
|
99
|
-
"potential_consequence": "Determinism check fails; file diff shows path separator changes"
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"location": "16.2:AC#1/Task1.2",
|
|
103
|
-
"trigger_condition": "config.yaml does not exist yet (first install before bmad-method completes)",
|
|
104
|
-
"guard_snippet": "if (!fs.existsSync(configPath)) { fs.mkdirSync(path.dirname(configPath), {recursive:true}); fs.writeFileSync(configPath, '') }",
|
|
105
|
-
"potential_consequence": "Read of non-existent file throws ENOENT, installer crashes"
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"location": "16.2:AC#3/Task3.2",
|
|
109
|
-
"trigger_condition": "Previous multi-repo project-layout.yaml is stale but not deleted on mode change",
|
|
110
|
-
"guard_snippet": "Log warning: 'Existing project-layout.yaml found but current config is single-repo — file may be stale'",
|
|
111
|
-
"potential_consequence": "Agents read stale project-layout.yaml and use wrong paths silently"
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"location": "16.3:AC#3/Task4.3",
|
|
115
|
-
"trigger_condition": "project-context.md exists AND single-repo mode configured",
|
|
116
|
-
"guard_snippet": "Only log 'add Repository Layout manually' message when multi-repo is configured AND file exists",
|
|
117
|
-
"potential_consequence": "Confusing log message shown to single-repo users who need no action"
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"location": "16.3:AC#2/Task3.4",
|
|
121
|
-
"trigger_condition": "Template placeholder replaced with empty string leaves double blank lines",
|
|
122
|
-
"guard_snippet": "Replace '{{REPO_LAYOUT_SECTION}}\\n\\n' (placeholder plus surrounding blank lines) as a unit",
|
|
123
|
-
"potential_consequence": "Generated project-context.md has extra blank lines in single-repo mode"
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
"location": "16.3:AC#1/Task2.4",
|
|
127
|
-
"trigger_condition": "Mixed config: knowledgebase is external but sprint is same-repo",
|
|
128
|
-
"guard_snippet": "Section generator should list each concern independently, showing '.' or 'current repository' for same-mode items",
|
|
129
|
-
"potential_consequence": "Section omits same-repo concern or shows incomplete path info to agents"
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
"location": "16.3:AC#1/Task2.2",
|
|
133
|
-
"trigger_condition": "Layout config object is undefined or missing fields when generator is called",
|
|
134
|
-
"guard_snippet": "if (!layout?.knowledgebase || !layout?.sprintManagement) { return ''; }",
|
|
135
|
-
"potential_consequence": "TypeError accessing .mode on undefined; installer crash during generation"
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
"location": "16.4:AC#1/Task1.3",
|
|
139
|
-
"trigger_condition": "BMAD workflows use hardcoded _bmad-output/ instead of config-driven path",
|
|
140
|
-
"guard_snippet": "Audit must check for literal '_bmad-output/' strings in workflow files; document each as requiring change",
|
|
141
|
-
"potential_consequence": "Multi-repo config is stored but never used; artifacts always go to code repo"
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
"location": "16.4:AC#4/Task3.1",
|
|
145
|
-
"trigger_condition": "Both project-layout.yaml and config.yaml exist with conflicting paths",
|
|
146
|
-
"guard_snippet": "Define precedence: config.yaml is source of truth; project-layout.yaml is informational. Document this.",
|
|
147
|
-
"potential_consequence": "Agents read different files and resolve to different paths non-deterministically"
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
"location": "16.4:AC#1/Task2.2",
|
|
151
|
-
"trigger_condition": "Knowledgebase path points to repo that lacks _bmad-output/planning-artifacts/",
|
|
152
|
-
"guard_snippet": "Workflows should check if target directory exists before read/write; create or error clearly",
|
|
153
|
-
"potential_consequence": "Agent crashes or silently creates artifacts in wrong location"
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
"location": "16.1:AC#5/Task2.2",
|
|
157
|
-
"trigger_condition": "Path exists but is a file, not a directory",
|
|
158
|
-
"guard_snippet": "if (fs.existsSync(p) && !fs.statSync(p).isDirectory()) { chalk.yellow('Path exists but is not a directory') }",
|
|
159
|
-
"potential_consequence": "Validation passes but subsequent file operations in that 'directory' fail"
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
"location": "16.2:AC#2/Task2.5",
|
|
163
|
-
"trigger_condition": "_bmad-output/ directory does not exist in fresh code repo",
|
|
164
|
-
"guard_snippet": "fs.mkdirSync('_bmad-output', { recursive: true }) before writing project-layout.yaml",
|
|
165
|
-
"potential_consequence": "ENOENT error writing project-layout.yaml in brand-new repository"
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
"location": "16.1:AC#3/Task3.3",
|
|
169
|
-
"trigger_condition": "Destination directory exists but is empty (not a git repo)",
|
|
170
|
-
"guard_snippet": "Distinguish empty dir from populated dir/git repo in summary; offer to clone into it vs. use as-is",
|
|
171
|
-
"potential_consequence": "User confirms empty directory; agents later find no artifacts and fail"
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
"location": "16.2:AC#1/Task1.5",
|
|
175
|
-
"trigger_condition": "config.yaml is read-only or locked by another process",
|
|
176
|
-
"guard_snippet": "try { fs.writeFileSync(configPath, content) } catch(e) { chalk.red('Cannot write config.yaml: ' + e.message) }",
|
|
177
|
-
"potential_consequence": "Unhandled EACCES or EPERM crashes installer with stack trace"
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
"location": "16.1:AC#4/Task3.4",
|
|
181
|
-
"trigger_condition": "Destination path is inside the current repository (e.g., ./external/kb)",
|
|
182
|
-
"guard_snippet": "Warn if destPath resolves to a subdirectory of process.cwd(); nested repos cause git confusion",
|
|
183
|
-
"potential_consequence": "Nested git repo causes submodule-like issues; commits mix repos"
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
"location": "16.3:AC#4/Task1.2",
|
|
187
|
-
"trigger_condition": "Template file does not contain {{REPO_LAYOUT_SECTION}} after manual edit",
|
|
188
|
-
"guard_snippet": "if (!template.includes('{{REPO_LAYOUT_SECTION}}')) { log warning; append section at end if multi-repo }",
|
|
189
|
-
"potential_consequence": "Multi-repo section silently dropped; agents have no path information"
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
"location": "16.4:AC#4/Task3.3",
|
|
193
|
-
"trigger_condition": "Knowledgebase repo path is valid but user has no read permission",
|
|
194
|
-
"guard_snippet": "Validation should test fs.accessSync(kbPath, fs.constants.R_OK) and report permission error",
|
|
195
|
-
"potential_consequence": "Agent discovers path but cannot read PRD; opaque permission denied error"
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
"location": "16.2:AC#2/Task2.3",
|
|
199
|
-
"trigger_condition": "Mode is 'local' but original source was cloned; no gitUrl stored",
|
|
200
|
-
"guard_snippet": "Only check mode === 'remote' for gitUrl inclusion; 'local' mode must never have gitUrl even if path is a git repo",
|
|
201
|
-
"potential_consequence": "Missing gitUrl for local-mode git repos may confuse future pull/sync features"
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
"location": "16.1:AC#1/Task1.4",
|
|
205
|
-
"trigger_condition": "User selects different modes for KB and sprint pointing to same external path",
|
|
206
|
-
"guard_snippet": "if (kb.path === sprint.path && kb.path !== '.') { log info: 'Both concerns point to same external repo' }",
|
|
207
|
-
"potential_consequence": "No issue per se but user may not realize both share one repo; worth confirming"
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
"location": "16.2:AC#4/Task4.4",
|
|
211
|
-
"trigger_condition": "Second install changes mode from remote to local for same concern",
|
|
212
|
-
"guard_snippet": "When overwriting config.yaml paths, also check if project-layout.yaml needs regeneration with new mode",
|
|
213
|
-
"potential_consequence": "config.yaml updated but project-layout.yaml still shows old remote mode and gitUrl"
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
"location": "16.1:AC#3/Task3.4",
|
|
217
|
-
"trigger_condition": "Disk is full during git clone; partial clone left on filesystem",
|
|
218
|
-
"guard_snippet": "In catch block after clone failure: if destPath was created by clone, rimraf/remove it before retry prompt",
|
|
219
|
-
"potential_consequence": "Partial clone directory passes exists-check on retry; corrupt repo used"
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
"location": "16.3:AC#1/Task2.2",
|
|
223
|
-
"trigger_condition": "Configured path contains backslashes that break markdown rendering",
|
|
224
|
-
"guard_snippet": "Normalize all paths with .replace(/\\\\/g, '/') before injecting into markdown section",
|
|
225
|
-
"potential_consequence": "Markdown renders backslashes as escape chars; agents see mangled paths"
|
|
226
|
-
}
|
|
227
|
-
]
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
**Total findings: 35**
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# Epic 17: Sprint Planning Overhaul -- Adversarial Review
|
|
2
|
-
|
|
3
|
-
**Review Date:** 2026-03-28
|
|
4
|
-
**Scope:** Story 17.1 (Sprint Entity Model)
|
|
5
|
-
**Verdict:** Multiple specification conflicts and gaps -- needs corrections before dev
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Findings
|
|
10
|
-
|
|
11
|
-
1. **Schema mismatch between AC #1 and Task 2.5: `created_date` and `last_modified` are phantom fields.** AC #1 specifies exactly seven fields in the YAML schema: `id`, `name`, `status`, `capacity`, `start`, `end`, `items`. Task 2.5 adds two more fields (`created_date` and `last_modified`) that appear nowhere in the acceptance criteria. Task 6.2 then says "Verify new schema fields match AC #1 exactly" -- which they cannot, because Task 2.5's template has nine fields. A developer literally cannot satisfy both Task 2.5 and Task 6.2 simultaneously. Either the AC needs updating or the task needs to drop the extra fields.
|
|
12
|
-
|
|
13
|
-
2. **The story ignores the SKILL.md file entirely.** Epic 15 already converted `add-sprint` into a skill package. The file `lib/bmad-extension/skills/add-sprint/SKILL.md` exists and contains an identical copy of the workflow. The story's "Files to modify" list mentions only `lib/bmad-extension/workflows/add-sprint/workflow.md`. The `module-help.csv` entry already points to `skill:add-sprint`, which resolves to the SKILL.md, not the workflow.md. If the developer only modifies `workflow.md`, the actual invoked skill will remain unchanged and still emit the old format. This is a **showstopper omission**. The `bmad-skill-manifest.yaml` file may also need updating.
|
|
14
|
-
|
|
15
|
-
3. **No date validation specified.** Task 2.3 says dates must be ISO format `YYYY-MM-DD`, but there is no acceptance criterion, validation step, or error-handling behavior defined for invalid dates. What happens if the user enters `2026-13-45`, `next Tuesday`, or an empty string? The old workflow allowed freeform or empty values. The new schema implies strict ISO dates, but the story specifies no validation logic, no error message, and no retry loop. Compare to the capacity field (Task 2.2), which has explicit validation with an error message and a `goto` loop. Dates get nothing.
|
|
16
|
-
|
|
17
|
-
4. **Start and end dates: required or optional?** The old workflow explicitly made `start_context` and `end_context` optional ("press Enter to skip"). The new schema shows `start` and `end` as always populated. No AC or task states whether dates are required or optional. If optional, what value goes in the YAML -- empty string, `null`, omitted key? If required, the story needs to say so explicitly. Downstream story 17.8 (Sprint Status Display) will need to render these fields, so the contract matters.
|
|
18
|
-
|
|
19
|
-
5. **AC #2 is untestable within this story's scope.** AC #2 says "`items` contains an ordered list of story/bug IDs" and "the count of items never exceeds `capacity`." But the Critical Guardrails state "`items` array MUST be initialized as empty `[]` -- never pre-populated during sprint creation," and the story explicitly forbids touching `add-to-sprint` or `modify-sprint` (the only workflows that would populate `items`). Within this story, `items` will always be `[]`, and the capacity constraint can never be exercised. This AC is testing behavior that is physically impossible to trigger until Story 17.4. It should be moved to 17.4 or clearly marked as a contract specification, not an acceptance criterion for this story.
|
|
20
|
-
|
|
21
|
-
6. **AC #3 is also largely untestable within this story's scope.** AC #3 describes the transition from `planning` to `active`, but Task 3.4 says "activation is a separate action (via modify-sprint or a future activate-sprint step)" and the guardrails say "Do NOT rework modify-sprint." There is no mechanism in this story's add-sprint workflow to set a sprint to `active`, so the single-active-sprint validation (Task 3.1-3.3) cannot be triggered by anything this story delivers. The validation code would be dead code with no way to invoke it.
|
|
22
|
-
|
|
23
|
-
7. **The `name` field has no uniqueness constraint or validation.** Two sprints can have different IDs but identical names. The ID has overwrite protection (Task 2.6), but the name is free text with a default template that could easily collide. If 17.8 (Sprint Status Display) shows sprints by name, this will cause confusion. No AC addresses name uniqueness or name format validation.
|
|
24
|
-
|
|
25
|
-
8. **FR132 specifies "start/end context" but the story silently narrows to strict ISO dates.** The PRD requirement FR132 reads: "each sprint has an iteration identifier, capacity, assigned item list, start/end context, and status." The word "context" implies the old freeform model. This story silently narrows the semantics from freeform context to strict ISO dates without documenting this as a deliberate deviation from FR132 or proposing a PRD amendment.
|
|
26
|
-
|
|
27
|
-
9. **Sprint status transition rules are incomplete.** AC #3 only covers `planning -> active`. The Dev Notes say the state machine is `planning -> active -> closed`. But the story never explicitly forbids: `closed -> active` (reopening), `closed -> planning`, `active -> planning` (deactivation without closing), or creating a sprint directly in `active` or `closed` status. The guardrails document update (Task 5.3) should contain the full transition matrix, but the story only says "Add Sprint Status Transitions section" -- that is a one-line description, not a specification.
|
|
28
|
-
|
|
29
|
-
10. **The `module-help.csv` output-location column is stale.** The current entry's output-location says `_bmad-output/implementation-artifacts` -- but sprint files now go to `_bmad-output/implementation-artifacts/sprints/`. Task 4.2 says "Update description if changed" but does not identify that the output-location is also wrong. The description references "optional start/end context" which no longer applies either.
|
|
30
|
-
|
|
31
|
-
11. **No guidance on sprint ID numbering conflicts or sequencing.** The ID format is `sprint-{number}`, but nothing prevents creating `sprint-5` when only `sprint-1` exists, or creating `sprint-1` after `sprint-3`. There is no auto-increment, no next-available-number suggestion, and no validation that numbers are sequential. Downstream stories that glob and sort by ID will behave unpredictably with non-sequential numbering.
|
|
32
|
-
|
|
33
|
-
12. **The guardrails document name is misleading after this update.** The file is called `epic-11-12-shared-guardrails.md`, but after Task 5 it will contain Epic 17 content (Sprint Status Transitions, new paths, new globs). The filename no longer reflects its scope. No renaming is proposed.
|
|
34
|
-
|
|
35
|
-
13. **Interim breakage of existing workflows has no mitigation.** The story states that after 17.1, the existing `add-to-sprint`, `modify-sprint`, and `sprint-status-view` workflows will be **broken** because they still reference `sprint-plan-*.yaml` paths. The story calls this "expected and acceptable." But there is no feature flag, no deprecation warning, no stub that returns a useful error message, and no documented workaround. A Scrum Master running `/add-to-sprint` after 17.1 lands will get a silent failure or cryptic "no sprint plans found" error with no explanation.
|
|
36
|
-
|
|
37
|
-
14. **The `items` array example in AC #2 uses inconsistent ID formats without defining the contract.** The example shows `["5-5-explicit-parameter-passing", "5-6-fix-space-in-path-bug", "BUG-path-spaces"]`. Story IDs use `{epic}-{story}-{slug}` format but bug IDs use `BUG-{slug}`. This is the only place that defines the item ID format, and it is buried in an example rather than stated as a rule. Story 17.4 will need to write to this array and must know the exact format. The contract should be explicit.
|