bmad-fh 6.0.0-alpha.052779ef
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/.coderabbit.yaml +40 -0
- package/.githooks/post-checkout +129 -0
- package/.githooks/pre-commit +63 -0
- package/.githooks/pre-push +135 -0
- package/.github/CODE_OF_CONDUCT.md +128 -0
- package/.github/FUNDING.yaml +15 -0
- package/.github/ISSUE_TEMPLATE/config.yaml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
- package/.github/ISSUE_TEMPLATE/issue.md +32 -0
- package/.github/scripts/discord-helpers.sh +34 -0
- package/.github/workflows/bundle-latest.yaml +330 -0
- package/.github/workflows/discord.yaml +90 -0
- package/.github/workflows/docs.yaml +63 -0
- package/.github/workflows/manual-release.yaml +190 -0
- package/.github/workflows/publish-multi-artifact.yaml +54 -0
- package/.github/workflows/quality.yaml +115 -0
- package/.husky/pre-commit +20 -0
- package/.markdownlint-cli2.yaml +41 -0
- package/.nvmrc +1 -0
- package/.prettierignore +9 -0
- package/.vscode/settings.json +97 -0
- package/CHANGELOG.md +1394 -0
- package/CNAME +1 -0
- package/CONTRIBUTING.md +306 -0
- package/CONTRIBUTORS.md +32 -0
- package/LICENSE +30 -0
- package/README.md +126 -0
- package/SECURITY.md +85 -0
- package/TRADEMARK.md +55 -0
- package/Wordmark.png +0 -0
- package/banner-bmad-method.png +0 -0
- package/docs/404.md +9 -0
- package/docs/_README_WORKFLOW_DIAGRAMS.md +40 -0
- package/docs/_STYLE_GUIDE.md +367 -0
- package/docs/_archive/customize-workflows.md +30 -0
- package/docs/_archive/getting-started-bmadv4.md +247 -0
- package/docs/_archive/vendor-workflows.md +52 -0
- package/docs/downloads.md +72 -0
- package/docs/explanation/agents/barry-quick-flow.md +328 -0
- package/docs/explanation/agents/index.md +19 -0
- package/docs/explanation/architecture/four-phases.md +107 -0
- package/docs/explanation/architecture/preventing-agent-conflicts.md +111 -0
- package/docs/explanation/architecture/why-solutioning-matters.md +75 -0
- package/docs/explanation/bmm/index.md +131 -0
- package/docs/explanation/core/index.md +18 -0
- package/docs/explanation/core-concepts/agent-roles.md +179 -0
- package/docs/explanation/core-concepts/index.md +35 -0
- package/docs/explanation/core-concepts/what-are-agents.md +97 -0
- package/docs/explanation/core-concepts/what-are-modules.md +85 -0
- package/docs/explanation/core-concepts/what-are-workflows.md +204 -0
- package/docs/explanation/faq/brownfield-faq.md +73 -0
- package/docs/explanation/faq/getting-started-faq.md +67 -0
- package/docs/explanation/faq/implementation-faq.md +52 -0
- package/docs/explanation/faq/index.md +16 -0
- package/docs/explanation/faq/levels-and-tracks-faq.md +52 -0
- package/docs/explanation/faq/planning-faq.md +41 -0
- package/docs/explanation/faq/tools-faq.md +277 -0
- package/docs/explanation/faq/workflows-faq.md +61 -0
- package/docs/explanation/features/advanced-elicitation.md +95 -0
- package/docs/explanation/features/brainstorming-techniques.md +92 -0
- package/docs/explanation/features/party-mode.md +95 -0
- package/docs/explanation/features/quick-flow.md +149 -0
- package/docs/explanation/features/tea-overview.md +410 -0
- package/docs/explanation/features/web-bundles.md +34 -0
- package/docs/explanation/philosophy/facilitation-over-generation.md +333 -0
- package/docs/explanation/philosophy/testing-as-engineering.md +112 -0
- package/docs/explanation/tea/engagement-models.md +710 -0
- package/docs/explanation/tea/fixture-architecture.md +457 -0
- package/docs/explanation/tea/knowledge-base-system.md +554 -0
- package/docs/explanation/tea/network-first-patterns.md +853 -0
- package/docs/explanation/tea/risk-based-testing.md +586 -0
- package/docs/explanation/tea/test-quality-standards.md +907 -0
- package/docs/how-to/brownfield/add-feature-to-existing.md +74 -0
- package/docs/how-to/brownfield/document-existing-project.md +66 -0
- package/docs/how-to/brownfield/index.md +84 -0
- package/docs/how-to/brownfield/quick-fix-in-brownfield.md +77 -0
- package/docs/how-to/brownfield/use-tea-for-enterprise.md +526 -0
- package/docs/how-to/brownfield/use-tea-with-existing-tests.md +577 -0
- package/docs/how-to/customization/customize-agents.md +212 -0
- package/docs/how-to/customization/enable-tea-mcp-enhancements.md +424 -0
- package/docs/how-to/customization/index.md +23 -0
- package/docs/how-to/customization/integrate-playwright-utils.md +813 -0
- package/docs/how-to/customization/shard-large-documents.md +101 -0
- package/docs/how-to/get-answers-about-bmad.md +102 -0
- package/docs/how-to/installation/index.md +12 -0
- package/docs/how-to/installation/install-bmad.md +111 -0
- package/docs/how-to/installation/install-custom-modules.md +118 -0
- package/docs/how-to/installation/upgrade-to-v6.md +131 -0
- package/docs/how-to/workflows/bmgd-quick-flow.md +156 -0
- package/docs/how-to/workflows/conduct-research.md +97 -0
- package/docs/how-to/workflows/create-architecture.md +119 -0
- package/docs/how-to/workflows/create-epics-and-stories.md +109 -0
- package/docs/how-to/workflows/create-prd.md +91 -0
- package/docs/how-to/workflows/create-product-brief.md +94 -0
- package/docs/how-to/workflows/create-story.md +102 -0
- package/docs/how-to/workflows/create-ux-design.md +100 -0
- package/docs/how-to/workflows/implement-story.md +97 -0
- package/docs/how-to/workflows/quick-spec.md +122 -0
- package/docs/how-to/workflows/run-atdd.md +436 -0
- package/docs/how-to/workflows/run-automate.md +653 -0
- package/docs/how-to/workflows/run-brainstorming-session.md +73 -0
- package/docs/how-to/workflows/run-code-review.md +89 -0
- package/docs/how-to/workflows/run-implementation-readiness.md +125 -0
- package/docs/how-to/workflows/run-nfr-assess.md +679 -0
- package/docs/how-to/workflows/run-sprint-planning.md +94 -0
- package/docs/how-to/workflows/run-test-design.md +98 -0
- package/docs/how-to/workflows/run-test-review.md +605 -0
- package/docs/how-to/workflows/run-trace.md +883 -0
- package/docs/how-to/workflows/setup-ci.md +712 -0
- package/docs/how-to/workflows/setup-party-mode.md +89 -0
- package/docs/how-to/workflows/setup-test-framework.md +98 -0
- package/docs/index.md +63 -0
- package/docs/migration-guide.md +365 -0
- package/docs/multi-scope-guide.md +379 -0
- package/docs/plans/multi-scope-parallel-artifacts-plan.md +695 -0
- package/docs/reference/agents/index.md +109 -0
- package/docs/reference/configuration/core-tasks.md +67 -0
- package/docs/reference/configuration/global-config.md +28 -0
- package/docs/reference/glossary/index.md +159 -0
- package/docs/reference/tea/commands.md +254 -0
- package/docs/reference/tea/configuration.md +678 -0
- package/docs/reference/tea/knowledge-base.md +340 -0
- package/docs/reference/workflows/core-workflows.md +32 -0
- package/docs/reference/workflows/document-project.md +73 -0
- package/docs/reference/workflows/index.md +12 -0
- package/docs/tutorials/getting-started/getting-started-bmadv6.md +246 -0
- package/docs/tutorials/getting-started/images/workflow-method-greenfield.excalidraw +5034 -0
- package/docs/tutorials/getting-started/images/workflow-method-greenfield.svg +4 -0
- package/docs/tutorials/getting-started/images/workflow-overview.jpg +0 -0
- package/docs/tutorials/getting-started/tea-lite-quickstart.md +444 -0
- package/docs/tutorials/getting-started/workflow-overview.jpg +0 -0
- package/eslint.config.mjs +152 -0
- package/package.json +117 -0
- package/prettier.config.mjs +32 -0
- package/src/bmm/_module-installer/installer.js +48 -0
- package/src/bmm/_module-installer/platform-specifics/claude-code.js +35 -0
- package/src/bmm/_module-installer/platform-specifics/windsurf.js +32 -0
- package/src/bmm/agents/analyst.agent.yaml +41 -0
- package/src/bmm/agents/architect.agent.yaml +33 -0
- package/src/bmm/agents/dev.agent.yaml +38 -0
- package/src/bmm/agents/pm.agent.yaml +51 -0
- package/src/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
- package/src/bmm/agents/sm.agent.yaml +47 -0
- package/src/bmm/agents/tea.agent.yaml +68 -0
- package/src/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
- package/src/bmm/agents/tech-writer/tech-writer.agent.yaml +49 -0
- package/src/bmm/agents/ux-designer.agent.yaml +30 -0
- package/src/bmm/data/README.md +29 -0
- package/src/bmm/data/project-context-template.md +40 -0
- package/src/bmm/module.yaml +64 -0
- package/src/bmm/sub-modules/claude-code/config.yaml +4 -0
- package/src/bmm/sub-modules/claude-code/injections.yaml +242 -0
- package/src/bmm/sub-modules/claude-code/readme.md +87 -0
- package/src/bmm/teams/default-party.csv +21 -0
- package/src/bmm/teams/team-fullstack.yaml +12 -0
- package/src/bmm/testarch/knowledge/api-request.md +442 -0
- package/src/bmm/testarch/knowledge/api-testing-patterns.md +843 -0
- package/src/bmm/testarch/knowledge/auth-session.md +552 -0
- package/src/bmm/testarch/knowledge/burn-in.md +273 -0
- package/src/bmm/testarch/knowledge/ci-burn-in.md +675 -0
- package/src/bmm/testarch/knowledge/component-tdd.md +486 -0
- package/src/bmm/testarch/knowledge/contract-testing.md +957 -0
- package/src/bmm/testarch/knowledge/data-factories.md +500 -0
- package/src/bmm/testarch/knowledge/email-auth.md +721 -0
- package/src/bmm/testarch/knowledge/error-handling.md +725 -0
- package/src/bmm/testarch/knowledge/feature-flags.md +750 -0
- package/src/bmm/testarch/knowledge/file-utils.md +463 -0
- package/src/bmm/testarch/knowledge/fixture-architecture.md +401 -0
- package/src/bmm/testarch/knowledge/fixtures-composition.md +382 -0
- package/src/bmm/testarch/knowledge/intercept-network-call.md +430 -0
- package/src/bmm/testarch/knowledge/log.md +429 -0
- package/src/bmm/testarch/knowledge/network-error-monitor.md +405 -0
- package/src/bmm/testarch/knowledge/network-first.md +486 -0
- package/src/bmm/testarch/knowledge/network-recorder.md +527 -0
- package/src/bmm/testarch/knowledge/nfr-criteria.md +670 -0
- package/src/bmm/testarch/knowledge/overview.md +286 -0
- package/src/bmm/testarch/knowledge/playwright-config.md +730 -0
- package/src/bmm/testarch/knowledge/probability-impact.md +601 -0
- package/src/bmm/testarch/knowledge/recurse.md +421 -0
- package/src/bmm/testarch/knowledge/risk-governance.md +615 -0
- package/src/bmm/testarch/knowledge/selective-testing.md +732 -0
- package/src/bmm/testarch/knowledge/selector-resilience.md +527 -0
- package/src/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
- package/src/bmm/testarch/knowledge/test-levels-framework.md +473 -0
- package/src/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/src/bmm/testarch/knowledge/test-quality.md +664 -0
- package/src/bmm/testarch/knowledge/timing-debugging.md +372 -0
- package/src/bmm/testarch/knowledge/visual-debugging.md +524 -0
- package/src/bmm/testarch/tea-index.csv +34 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +194 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/src/bmm/workflows/1-analysis/research/workflow.md +173 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +228 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
- package/src/bmm/workflows/2-plan-workflows/prd/data/domain-complexity.csv +13 -0
- package/src/bmm/workflows/2-plan-workflows/prd/data/prd-purpose.md +197 -0
- package/src/bmm/workflows/2-plan-workflows/prd/data/project-types.csv +11 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-01-init.md +191 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-01b-continue.md +153 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-02-discovery.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-03-success.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-04-journeys.md +213 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-05-domain.md +207 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-06-innovation.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-07-project-type.md +237 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-08-scoping.md +228 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-09-functional.md +231 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-10-nonfunctional.md +242 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-11-polish.md +217 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-12-complete.md +180 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-01-discovery.md +247 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-02-review.md +249 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-03-edit.md +253 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-04-complete.md +168 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-01-discovery.md +218 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-02-format-detection.md +191 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-03-density-validation.md +174 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-13-report-complete.md +232 -0
- package/src/bmm/workflows/2-plan-workflows/prd/templates/prd-template.md +10 -0
- package/src/bmm/workflows/2-plan-workflows/prd/validation-report-prd-workflow.md +433 -0
- package/src/bmm/workflows/2-plan-workflows/prd/workflow.md +150 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +133 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +352 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +145 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
- package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
- package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +51 -0
- package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
- package/src/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
- package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +60 -0
- package/src/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
- package/src/bmm/workflows/4-implementation/create-story/instructions.xml +345 -0
- package/src/bmm/workflows/4-implementation/create-story/template.md +49 -0
- package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +61 -0
- package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
- package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +27 -0
- package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
- package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +58 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +54 -0
- package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
- package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +52 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +189 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +144 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +191 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
- package/src/bmm/workflows/document-project/checklist.md +245 -0
- package/src/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/src/bmm/workflows/document-project/instructions.md +221 -0
- package/src/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/src/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/src/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/src/bmm/workflows/document-project/workflow.yaml +30 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
- package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
- package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
- package/src/bmm/workflows/generate-project-context/project-context-template.md +21 -0
- package/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
- package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
- package/src/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
- package/src/bmm/workflows/generate-project-context/workflow.md +49 -0
- package/src/bmm/workflows/testarch/atdd/atdd-checklist-template.md +364 -0
- package/src/bmm/workflows/testarch/atdd/checklist.md +374 -0
- package/src/bmm/workflows/testarch/atdd/instructions.md +806 -0
- package/src/bmm/workflows/testarch/atdd/workflow.yaml +47 -0
- package/src/bmm/workflows/testarch/automate/checklist.md +582 -0
- package/src/bmm/workflows/testarch/automate/instructions.md +1324 -0
- package/src/bmm/workflows/testarch/automate/workflow.yaml +54 -0
- package/src/bmm/workflows/testarch/ci/checklist.md +248 -0
- package/src/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
- package/src/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
- package/src/bmm/workflows/testarch/ci/instructions.md +536 -0
- package/src/bmm/workflows/testarch/ci/workflow.yaml +47 -0
- package/src/bmm/workflows/testarch/framework/checklist.md +321 -0
- package/src/bmm/workflows/testarch/framework/instructions.md +481 -0
- package/src/bmm/workflows/testarch/framework/workflow.yaml +49 -0
- package/src/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
- package/src/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
- package/src/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +445 -0
- package/src/bmm/workflows/testarch/nfr-assess/workflow.yaml +49 -0
- package/src/bmm/workflows/testarch/test-design/checklist.md +235 -0
- package/src/bmm/workflows/testarch/test-design/instructions.md +788 -0
- package/src/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
- package/src/bmm/workflows/testarch/test-design/workflow.yaml +56 -0
- package/src/bmm/workflows/testarch/test-review/checklist.md +472 -0
- package/src/bmm/workflows/testarch/test-review/instructions.md +628 -0
- package/src/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
- package/src/bmm/workflows/testarch/test-review/workflow.yaml +48 -0
- package/src/bmm/workflows/testarch/trace/checklist.md +655 -0
- package/src/bmm/workflows/testarch/trace/instructions.md +1047 -0
- package/src/bmm/workflows/testarch/trace/trace-template.md +675 -0
- package/src/bmm/workflows/testarch/trace/workflow.yaml +57 -0
- package/src/bmm/workflows/workflow-status/init/instructions.md +346 -0
- package/src/bmm/workflows/workflow-status/init/workflow.yaml +30 -0
- package/src/bmm/workflows/workflow-status/instructions.md +397 -0
- package/src/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +103 -0
- package/src/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +100 -0
- package/src/bmm/workflows/workflow-status/paths/method-brownfield.yaml +103 -0
- package/src/bmm/workflows/workflow-status/paths/method-greenfield.yaml +100 -0
- package/src/bmm/workflows/workflow-status/project-levels.yaml +59 -0
- package/src/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/src/bmm/workflows/workflow-status/workflow.yaml +32 -0
- package/src/core/_module-installer/installer.js +60 -0
- package/src/core/agents/bmad-master.agent.yaml +30 -0
- package/src/core/lib/scope/artifact-resolver.js +298 -0
- package/src/core/lib/scope/event-logger.js +400 -0
- package/src/core/lib/scope/index.js +30 -0
- package/src/core/lib/scope/scope-context.js +301 -0
- package/src/core/lib/scope/scope-initializer.js +456 -0
- package/src/core/lib/scope/scope-manager.js +512 -0
- package/src/core/lib/scope/scope-migrator.js +434 -0
- package/src/core/lib/scope/scope-sync.js +483 -0
- package/src/core/lib/scope/scope-validator.js +294 -0
- package/src/core/lib/scope/state-lock.js +336 -0
- package/src/core/module.yaml +53 -0
- package/src/core/resources/excalidraw/README.md +160 -0
- package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
- package/src/core/resources/excalidraw/library-loader.md +50 -0
- package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
- package/src/core/tasks/editorial-review-prose.xml +91 -0
- package/src/core/tasks/editorial-review-structure.xml +198 -0
- package/src/core/tasks/index-docs.xml +65 -0
- package/src/core/tasks/review-adversarial-general.xml +46 -0
- package/src/core/tasks/shard-doc.xml +109 -0
- package/src/core/tasks/workflow.xml +277 -0
- package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
- package/src/core/workflows/advanced-elicitation/workflow.xml +117 -0
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -0
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
- package/src/core/workflows/brainstorming/template.md +15 -0
- package/src/core/workflows/brainstorming/workflow.md +58 -0
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +157 -0
- package/src/core/workflows/party-mode/workflow.md +194 -0
- package/src/utility/agent-components/activation-rules.txt +6 -0
- package/src/utility/agent-components/activation-steps.txt +28 -0
- package/src/utility/agent-components/agent-command-header.md +1 -0
- package/src/utility/agent-components/agent.customize.template.yaml +41 -0
- package/src/utility/agent-components/handler-action.txt +4 -0
- package/src/utility/agent-components/handler-data.txt +5 -0
- package/src/utility/agent-components/handler-exec.txt +19 -0
- package/src/utility/agent-components/handler-multi.txt +14 -0
- package/src/utility/agent-components/handler-tmpl.txt +5 -0
- package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
- package/src/utility/agent-components/handler-workflow.txt +10 -0
- package/src/utility/agent-components/menu-handlers.txt +6 -0
- package/test/README.md +295 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +22 -0
- package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +20 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +31 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +29 -0
- package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +31 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
- package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
- package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +27 -0
- package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +31 -0
- package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +38 -0
- package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +34 -0
- package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +28 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +30 -0
- package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +24 -0
- package/test/test-agent-schema.js +387 -0
- package/test/test-cli-integration.sh +159 -0
- package/test/test-installation-components.js +214 -0
- package/test/test-scope-e2e.js +439 -0
- package/test/test-scope-system.js +781 -0
- package/test/unit-test-schema.js +133 -0
- package/tools/bmad-npx-wrapper.js +38 -0
- package/tools/build-docs.js +577 -0
- package/tools/cli/README.md +7 -0
- package/tools/cli/bmad-cli.js +58 -0
- package/tools/cli/commands/install.js +87 -0
- package/tools/cli/commands/scope.js +474 -0
- package/tools/cli/external-official-modules.yaml +41 -0
- package/tools/cli/installers/install-messages.yaml +58 -0
- package/tools/cli/installers/lib/core/config-collector.js +1079 -0
- package/tools/cli/installers/lib/core/custom-module-cache.js +259 -0
- package/tools/cli/installers/lib/core/dependency-resolver.js +739 -0
- package/tools/cli/installers/lib/core/detector.js +223 -0
- package/tools/cli/installers/lib/core/ide-config-manager.js +156 -0
- package/tools/cli/installers/lib/core/installer.js +2585 -0
- package/tools/cli/installers/lib/core/manifest-generator.js +963 -0
- package/tools/cli/installers/lib/core/manifest.js +590 -0
- package/tools/cli/installers/lib/custom/handler.js +363 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +654 -0
- package/tools/cli/installers/lib/ide/antigravity.js +486 -0
- package/tools/cli/installers/lib/ide/auggie.js +244 -0
- package/tools/cli/installers/lib/ide/claude-code.js +487 -0
- package/tools/cli/installers/lib/ide/cline.js +269 -0
- package/tools/cli/installers/lib/ide/codex.js +375 -0
- package/tools/cli/installers/lib/ide/crush.js +300 -0
- package/tools/cli/installers/lib/ide/cursor.js +169 -0
- package/tools/cli/installers/lib/ide/gemini.js +301 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +383 -0
- package/tools/cli/installers/lib/ide/iflow.js +191 -0
- package/tools/cli/installers/lib/ide/kilo.js +250 -0
- package/tools/cli/installers/lib/ide/kiro-cli.js +326 -0
- package/tools/cli/installers/lib/ide/manager.js +244 -0
- package/tools/cli/installers/lib/ide/opencode.js +257 -0
- package/tools/cli/installers/lib/ide/qwen.js +372 -0
- package/tools/cli/installers/lib/ide/roo.js +270 -0
- package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +96 -0
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +158 -0
- package/tools/cli/installers/lib/ide/shared/module-injections.js +136 -0
- package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +119 -0
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +242 -0
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +29 -0
- package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +30 -0
- package/tools/cli/installers/lib/ide/templates/workflow-commander.md +45 -0
- package/tools/cli/installers/lib/ide/trae.js +313 -0
- package/tools/cli/installers/lib/ide/windsurf.js +258 -0
- package/tools/cli/installers/lib/message-loader.js +85 -0
- package/tools/cli/installers/lib/modules/external-manager.js +133 -0
- package/tools/cli/installers/lib/modules/manager.js +1362 -0
- package/tools/cli/lib/activation-builder.js +163 -0
- package/tools/cli/lib/agent/compiler.js +522 -0
- package/tools/cli/lib/agent/installer.js +716 -0
- package/tools/cli/lib/agent/template-engine.js +152 -0
- package/tools/cli/lib/agent-analyzer.js +109 -0
- package/tools/cli/lib/agent-party-generator.js +194 -0
- package/tools/cli/lib/cli-utils.js +227 -0
- package/tools/cli/lib/config.js +213 -0
- package/tools/cli/lib/file-ops.js +204 -0
- package/tools/cli/lib/platform-codes.js +116 -0
- package/tools/cli/lib/project-root.js +77 -0
- package/tools/cli/lib/prompts.js +433 -0
- package/tools/cli/lib/ui.js +1591 -0
- package/tools/cli/lib/xml-handler.js +177 -0
- package/tools/cli/lib/xml-to-markdown.js +82 -0
- package/tools/cli/lib/yaml-format.js +245 -0
- package/tools/cli/lib/yaml-xml-builder.js +587 -0
- package/tools/cli/scripts/migrate-workflows.js +273 -0
- package/tools/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
- package/tools/docs/index.md +2 -0
- package/tools/fix-doc-links.js +288 -0
- package/tools/flattener/aggregate.js +76 -0
- package/tools/flattener/binary.js +80 -0
- package/tools/flattener/discovery.js +71 -0
- package/tools/flattener/files.js +35 -0
- package/tools/flattener/ignoreRules.js +172 -0
- package/tools/flattener/main.js +483 -0
- package/tools/flattener/projectRoot.js +201 -0
- package/tools/flattener/prompts.js +44 -0
- package/tools/flattener/stats.helpers.js +368 -0
- package/tools/flattener/stats.js +75 -0
- package/tools/flattener/test-matrix.js +409 -0
- package/tools/flattener/xml.js +82 -0
- package/tools/format-workflow-md.js +263 -0
- package/tools/lib/xml-utils.js +13 -0
- package/tools/maintainer/review-pr-README.md +55 -0
- package/tools/maintainer/review-pr.md +242 -0
- package/tools/migrate-custom-module-paths.js +124 -0
- package/tools/platform-codes.yaml +157 -0
- package/tools/schema/agent.js +493 -0
- package/tools/validate-agent-schema.js +110 -0
- package/tools/validate-doc-links.js +363 -0
- package/tools/validate-svg-changes.sh +356 -0
- package/website/README.md +76 -0
- package/website/astro.config.mjs +228 -0
- package/website/public/favicon.ico +0 -0
- package/website/public/img/bmad-dark.png +0 -0
- package/website/public/img/bmad-light.png +0 -0
- package/website/public/img/logo.svg +4 -0
- package/website/public/robots.txt +37 -0
- package/website/src/components/Banner.astro +59 -0
- package/website/src/components/Header.astro +121 -0
- package/website/src/components/MobileMenuFooter.astro +53 -0
- package/website/src/content/config.ts +6 -0
- package/website/src/lib/site-url.js +25 -0
- package/website/src/rehype-markdown-links.js +102 -0
- package/website/src/styles/custom.css +485 -0
|
@@ -0,0 +1,883 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "How to Run Trace with TEA"
|
|
3
|
+
description: Map requirements to tests and make quality gate decisions using TEA's trace workflow
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# How to Run Trace with TEA
|
|
7
|
+
|
|
8
|
+
Use TEA's `*trace` workflow for requirements traceability and quality gate decisions. This is a two-phase workflow: Phase 1 analyzes coverage, Phase 2 makes the go/no-go decision.
|
|
9
|
+
|
|
10
|
+
## When to Use This
|
|
11
|
+
|
|
12
|
+
### Phase 1: Requirements Traceability
|
|
13
|
+
- Map acceptance criteria to implemented tests
|
|
14
|
+
- Identify coverage gaps
|
|
15
|
+
- Prioritize missing tests
|
|
16
|
+
- Refresh coverage after each story/epic
|
|
17
|
+
|
|
18
|
+
### Phase 2: Quality Gate Decision
|
|
19
|
+
- Make go/no-go decision for release
|
|
20
|
+
- Validate coverage meets thresholds
|
|
21
|
+
- Document gate decision with evidence
|
|
22
|
+
- Support business-approved waivers
|
|
23
|
+
|
|
24
|
+
## Prerequisites
|
|
25
|
+
|
|
26
|
+
- BMad Method installed
|
|
27
|
+
- TEA agent available
|
|
28
|
+
- Requirements defined (stories, acceptance criteria, test design)
|
|
29
|
+
- Tests implemented
|
|
30
|
+
- For brownfield: Existing codebase with tests
|
|
31
|
+
|
|
32
|
+
## Steps
|
|
33
|
+
|
|
34
|
+
### 1. Run the Trace Workflow
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
*trace
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 2. Specify Phase
|
|
41
|
+
|
|
42
|
+
TEA will ask which phase you're running.
|
|
43
|
+
|
|
44
|
+
**Phase 1: Requirements Traceability**
|
|
45
|
+
- Analyze coverage
|
|
46
|
+
- Identify gaps
|
|
47
|
+
- Generate recommendations
|
|
48
|
+
|
|
49
|
+
**Phase 2: Quality Gate Decision**
|
|
50
|
+
- Make PASS/CONCERNS/FAIL/WAIVED decision
|
|
51
|
+
- Requires Phase 1 complete
|
|
52
|
+
|
|
53
|
+
**Typical flow:** Run Phase 1 first, review gaps, then run Phase 2 for gate decision.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Phase 1: Requirements Traceability
|
|
58
|
+
|
|
59
|
+
### 3. Provide Requirements Source
|
|
60
|
+
|
|
61
|
+
TEA will ask where requirements are defined.
|
|
62
|
+
|
|
63
|
+
**Options:**
|
|
64
|
+
|
|
65
|
+
| Source | Example | Best For |
|
|
66
|
+
| --------------- | ----------------------------- | ---------------------- |
|
|
67
|
+
| **Story file** | `story-profile-management.md` | Single story coverage |
|
|
68
|
+
| **Test design** | `test-design-epic-1.md` | Epic coverage |
|
|
69
|
+
| **PRD** | `PRD.md` | System-level coverage |
|
|
70
|
+
| **Multiple** | All of the above | Comprehensive analysis |
|
|
71
|
+
|
|
72
|
+
**Example Response:**
|
|
73
|
+
```
|
|
74
|
+
Requirements:
|
|
75
|
+
- story-profile-management.md (acceptance criteria)
|
|
76
|
+
- test-design-epic-1.md (test priorities)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 4. Specify Test Location
|
|
80
|
+
|
|
81
|
+
TEA will ask where tests are located.
|
|
82
|
+
|
|
83
|
+
**Example:**
|
|
84
|
+
```
|
|
85
|
+
Test location: tests/
|
|
86
|
+
Include:
|
|
87
|
+
- tests/api/
|
|
88
|
+
- tests/e2e/
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 5. Specify Focus Areas (Optional)
|
|
92
|
+
|
|
93
|
+
**Example:**
|
|
94
|
+
```
|
|
95
|
+
Focus on:
|
|
96
|
+
- Profile CRUD operations
|
|
97
|
+
- Validation scenarios
|
|
98
|
+
- Authorization checks
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 6. Review Coverage Matrix
|
|
102
|
+
|
|
103
|
+
TEA generates a comprehensive traceability matrix.
|
|
104
|
+
|
|
105
|
+
#### Traceability Matrix (`traceability-matrix.md`):
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
# Requirements Traceability Matrix
|
|
109
|
+
|
|
110
|
+
**Date:** 2026-01-13
|
|
111
|
+
**Scope:** Epic 1 - User Profile Management
|
|
112
|
+
**Phase:** Phase 1 (Traceability Analysis)
|
|
113
|
+
|
|
114
|
+
## Coverage Summary
|
|
115
|
+
|
|
116
|
+
| Metric | Count | Percentage |
|
|
117
|
+
| ---------------------- | ----- | ---------- |
|
|
118
|
+
| **Total Requirements** | 15 | 100% |
|
|
119
|
+
| **Full Coverage** | 11 | 73% |
|
|
120
|
+
| **Partial Coverage** | 3 | 20% |
|
|
121
|
+
| **No Coverage** | 1 | 7% |
|
|
122
|
+
|
|
123
|
+
### By Priority
|
|
124
|
+
|
|
125
|
+
| Priority | Total | Covered | Percentage |
|
|
126
|
+
| -------- | ----- | ------- | ----------------- |
|
|
127
|
+
| **P0** | 5 | 5 | 100% ✅ |
|
|
128
|
+
| **P1** | 6 | 5 | 83% ⚠️ |
|
|
129
|
+
| **P2** | 3 | 1 | 33% ⚠️ |
|
|
130
|
+
| **P3** | 1 | 0 | 0% ✅ (acceptable) |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Detailed Traceability
|
|
135
|
+
|
|
136
|
+
### ✅ Requirement 1: User can view their profile (P0)
|
|
137
|
+
|
|
138
|
+
**Acceptance Criteria:**
|
|
139
|
+
- User navigates to /profile
|
|
140
|
+
- Profile displays name, email, avatar
|
|
141
|
+
- Data is current (not cached)
|
|
142
|
+
|
|
143
|
+
**Test Coverage:** FULL ✅
|
|
144
|
+
|
|
145
|
+
**Tests:**
|
|
146
|
+
- `tests/e2e/profile-view.spec.ts:15` - "should display profile page with current data"
|
|
147
|
+
- ✅ Navigates to /profile
|
|
148
|
+
- ✅ Verifies name, email visible
|
|
149
|
+
- ✅ Verifies avatar displayed
|
|
150
|
+
- ✅ Validates data freshness via API assertion
|
|
151
|
+
|
|
152
|
+
- `tests/api/profile.spec.ts:8` - "should fetch user profile via API"
|
|
153
|
+
- ✅ Calls GET /api/profile
|
|
154
|
+
- ✅ Validates response schema
|
|
155
|
+
- ✅ Confirms all fields present
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
### ⚠️ Requirement 2: User can edit profile (P0)
|
|
160
|
+
|
|
161
|
+
**Acceptance Criteria:**
|
|
162
|
+
- User clicks "Edit Profile"
|
|
163
|
+
- Can modify name, email, bio
|
|
164
|
+
- Can upload avatar
|
|
165
|
+
- Changes are persisted
|
|
166
|
+
- Success message shown
|
|
167
|
+
|
|
168
|
+
**Test Coverage:** PARTIAL ⚠️
|
|
169
|
+
|
|
170
|
+
**Tests:**
|
|
171
|
+
- `tests/e2e/profile-edit.spec.ts:22` - "should edit and save profile"
|
|
172
|
+
- ✅ Clicks edit button
|
|
173
|
+
- ✅ Modifies name and email
|
|
174
|
+
- ⚠️ **Does NOT test bio field**
|
|
175
|
+
- ❌ **Does NOT test avatar upload**
|
|
176
|
+
- ✅ Verifies persistence
|
|
177
|
+
- ✅ Verifies success message
|
|
178
|
+
|
|
179
|
+
- `tests/api/profile.spec.ts:25` - "should update profile via PATCH"
|
|
180
|
+
- ✅ Calls PATCH /api/profile
|
|
181
|
+
- ✅ Validates update response
|
|
182
|
+
- ⚠️ **Only tests name/email, not bio/avatar**
|
|
183
|
+
|
|
184
|
+
**Missing Coverage:**
|
|
185
|
+
- Bio field not tested in E2E or API
|
|
186
|
+
- Avatar upload not tested
|
|
187
|
+
|
|
188
|
+
**Gap Severity:** HIGH (P0 requirement, critical path)
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
### ✅ Requirement 3: Invalid email shows validation error (P1)
|
|
193
|
+
|
|
194
|
+
**Acceptance Criteria:**
|
|
195
|
+
- Enter invalid email format
|
|
196
|
+
- See error message
|
|
197
|
+
- Cannot save changes
|
|
198
|
+
|
|
199
|
+
**Test Coverage:** FULL ✅
|
|
200
|
+
|
|
201
|
+
**Tests:**
|
|
202
|
+
- `tests/e2e/profile-edit.spec.ts:45` - "should show validation error for invalid email"
|
|
203
|
+
- `tests/api/profile.spec.ts:50` - "should return 400 for invalid email"
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
### ❌ Requirement 15: Profile export as PDF (P2)
|
|
208
|
+
|
|
209
|
+
**Acceptance Criteria:**
|
|
210
|
+
- User clicks "Export Profile"
|
|
211
|
+
- PDF downloads with profile data
|
|
212
|
+
|
|
213
|
+
**Test Coverage:** NONE ❌
|
|
214
|
+
|
|
215
|
+
**Gap Analysis:**
|
|
216
|
+
- **Priority:** P2 (medium)
|
|
217
|
+
- **Risk:** Low (non-critical feature)
|
|
218
|
+
- **Recommendation:** Add in next iteration (not blocking for release)
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Gap Prioritization
|
|
223
|
+
|
|
224
|
+
### Critical Gaps (Must Fix Before Release)
|
|
225
|
+
|
|
226
|
+
| Gap | Requirement | Priority | Risk | Recommendation |
|
|
227
|
+
| --- | ------------------------ | -------- | ---- | ------------------- |
|
|
228
|
+
| 1 | Bio field not tested | P0 | High | Add E2E + API tests |
|
|
229
|
+
| 2 | Avatar upload not tested | P0 | High | Add E2E + API tests |
|
|
230
|
+
|
|
231
|
+
**Estimated Effort:** 3 hours
|
|
232
|
+
**Owner:** QA team
|
|
233
|
+
**Deadline:** Before release
|
|
234
|
+
|
|
235
|
+
### Non-Critical Gaps (Can Defer)
|
|
236
|
+
|
|
237
|
+
| Gap | Requirement | Priority | Risk | Recommendation |
|
|
238
|
+
| --- | ------------------------- | -------- | ---- | ------------------- |
|
|
239
|
+
| 3 | Profile export not tested | P2 | Low | Add in v1.3 release |
|
|
240
|
+
|
|
241
|
+
**Estimated Effort:** 2 hours
|
|
242
|
+
**Owner:** QA team
|
|
243
|
+
**Deadline:** Next release (February)
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Recommendations
|
|
248
|
+
|
|
249
|
+
### 1. Add Bio Field Tests
|
|
250
|
+
|
|
251
|
+
**Tests Needed (Vanilla Playwright):**
|
|
252
|
+
```typescript
|
|
253
|
+
// tests/e2e/profile-edit.spec.ts
|
|
254
|
+
test('should edit bio field', async ({ page }) => {
|
|
255
|
+
await page.goto('/profile');
|
|
256
|
+
await page.getByRole('button', { name: 'Edit' }).click();
|
|
257
|
+
await page.getByLabel('Bio').fill('New bio text');
|
|
258
|
+
await page.getByRole('button', { name: 'Save' }).click();
|
|
259
|
+
await expect(page.getByText('New bio text')).toBeVisible();
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
// tests/api/profile.spec.ts
|
|
263
|
+
test('should update bio via API', async ({ request }) => {
|
|
264
|
+
const response = await request.patch('/api/profile', {
|
|
265
|
+
data: { bio: 'Updated bio' }
|
|
266
|
+
});
|
|
267
|
+
expect(response.ok()).toBeTruthy();
|
|
268
|
+
const { bio } = await response.json();
|
|
269
|
+
expect(bio).toBe('Updated bio');
|
|
270
|
+
});
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**With Playwright Utils:**
|
|
274
|
+
```typescript
|
|
275
|
+
// tests/e2e/profile-edit.spec.ts
|
|
276
|
+
import { test } from '../support/fixtures'; // Composed with authToken
|
|
277
|
+
|
|
278
|
+
test('should edit bio field', async ({ page, authToken }) => {
|
|
279
|
+
await page.goto('/profile');
|
|
280
|
+
await page.getByRole('button', { name: 'Edit' }).click();
|
|
281
|
+
await page.getByLabel('Bio').fill('New bio text');
|
|
282
|
+
await page.getByRole('button', { name: 'Save' }).click();
|
|
283
|
+
await expect(page.getByText('New bio text')).toBeVisible();
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
// tests/api/profile.spec.ts
|
|
287
|
+
import { test as base, expect } from '@playwright/test';
|
|
288
|
+
import { test as apiRequestFixture } from '@seontechnologies/playwright-utils/api-request/fixtures';
|
|
289
|
+
import { createAuthFixtures } from '@seontechnologies/playwright-utils/auth-session';
|
|
290
|
+
import { mergeTests } from '@playwright/test';
|
|
291
|
+
|
|
292
|
+
// Merge API request + auth fixtures
|
|
293
|
+
const authFixtureTest = base.extend(createAuthFixtures());
|
|
294
|
+
const test = mergeTests(apiRequestFixture, authFixtureTest);
|
|
295
|
+
|
|
296
|
+
test('should update bio via API', async ({ apiRequest, authToken }) => {
|
|
297
|
+
const { status, body } = await apiRequest({
|
|
298
|
+
method: 'PATCH',
|
|
299
|
+
path: '/api/profile',
|
|
300
|
+
body: { bio: 'Updated bio' },
|
|
301
|
+
headers: { Authorization: `Bearer ${authToken}` }
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
expect(status).toBe(200);
|
|
305
|
+
expect(body.bio).toBe('Updated bio');
|
|
306
|
+
});
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
**Note:** `authToken` requires auth-session fixture setup. See [Integrate Playwright Utils](/docs/how-to/customization/integrate-playwright-utils.md#auth-session).
|
|
310
|
+
|
|
311
|
+
### 2. Add Avatar Upload Tests
|
|
312
|
+
|
|
313
|
+
**Tests Needed:**
|
|
314
|
+
```typescript
|
|
315
|
+
// tests/e2e/profile-edit.spec.ts
|
|
316
|
+
test('should upload avatar image', async ({ page }) => {
|
|
317
|
+
await page.goto('/profile');
|
|
318
|
+
await page.getByRole('button', { name: 'Edit' }).click();
|
|
319
|
+
|
|
320
|
+
// Upload file
|
|
321
|
+
await page.setInputFiles('[type="file"]', 'fixtures/avatar.png');
|
|
322
|
+
await page.getByRole('button', { name: 'Save' }).click();
|
|
323
|
+
|
|
324
|
+
// Verify uploaded image displays
|
|
325
|
+
await expect(page.locator('img[alt="Profile avatar"]')).toBeVisible();
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
// tests/api/profile.spec.ts
|
|
329
|
+
import { test, expect } from '@playwright/test';
|
|
330
|
+
import fs from 'fs/promises';
|
|
331
|
+
|
|
332
|
+
test('should accept valid image upload', async ({ request }) => {
|
|
333
|
+
const response = await request.post('/api/profile/avatar', {
|
|
334
|
+
multipart: {
|
|
335
|
+
file: {
|
|
336
|
+
name: 'avatar.png',
|
|
337
|
+
mimeType: 'image/png',
|
|
338
|
+
buffer: await fs.readFile('fixtures/avatar.png')
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
expect(response.ok()).toBeTruthy();
|
|
343
|
+
});
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## Next Steps
|
|
349
|
+
|
|
350
|
+
After reviewing traceability:
|
|
351
|
+
|
|
352
|
+
1. **Fix critical gaps** - Add tests for P0/P1 requirements
|
|
353
|
+
2. **Run *test-review** - Ensure new tests meet quality standards
|
|
354
|
+
3. **Run Phase 2** - Make gate decision after gaps addressed
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## Phase 2: Quality Gate Decision
|
|
360
|
+
|
|
361
|
+
After Phase 1 coverage analysis is complete, run Phase 2 for the gate decision.
|
|
362
|
+
|
|
363
|
+
**Prerequisites:**
|
|
364
|
+
- Phase 1 traceability matrix complete
|
|
365
|
+
- Test execution results available (must have test results)
|
|
366
|
+
|
|
367
|
+
**Note:** Phase 2 will skip if test execution results aren't provided. The workflow requires actual test run results to make gate decisions.
|
|
368
|
+
|
|
369
|
+
### 7. Run Phase 2
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
*trace
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Select "Phase 2: Quality Gate Decision"
|
|
376
|
+
|
|
377
|
+
### 8. Provide Additional Context
|
|
378
|
+
|
|
379
|
+
TEA will ask for:
|
|
380
|
+
|
|
381
|
+
**Gate Type:**
|
|
382
|
+
- Story gate (small release)
|
|
383
|
+
- Epic gate (larger release)
|
|
384
|
+
- Release gate (production deployment)
|
|
385
|
+
- Hotfix gate (emergency fix)
|
|
386
|
+
|
|
387
|
+
**Decision Mode:**
|
|
388
|
+
- **Deterministic** - Rule-based (coverage %, quality scores)
|
|
389
|
+
- **Manual** - Team decision with TEA guidance
|
|
390
|
+
|
|
391
|
+
**Example:**
|
|
392
|
+
```
|
|
393
|
+
Gate type: Epic gate
|
|
394
|
+
Decision mode: Deterministic
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### 9. Provide Supporting Evidence
|
|
398
|
+
|
|
399
|
+
TEA will request:
|
|
400
|
+
|
|
401
|
+
**Phase 1 Results:**
|
|
402
|
+
```
|
|
403
|
+
traceability-matrix.md (from Phase 1)
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
**Test Quality (Optional):**
|
|
407
|
+
```
|
|
408
|
+
test-review.md (from *test-review)
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
**NFR Assessment (Optional):**
|
|
412
|
+
```
|
|
413
|
+
nfr-assessment.md (from *nfr-assess)
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### 10. Review Gate Decision
|
|
417
|
+
|
|
418
|
+
TEA makes evidence-based gate decision and writes to separate file.
|
|
419
|
+
|
|
420
|
+
#### Gate Decision (`gate-decision-{gate_type}-{story_id}.md`):
|
|
421
|
+
|
|
422
|
+
```markdown
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
# Phase 2: Quality Gate Decision
|
|
426
|
+
|
|
427
|
+
**Gate Type:** Epic Gate
|
|
428
|
+
**Decision:** PASS ✅
|
|
429
|
+
**Date:** 2026-01-13
|
|
430
|
+
**Approvers:** Product Manager, Tech Lead, QA Lead
|
|
431
|
+
|
|
432
|
+
## Decision Summary
|
|
433
|
+
|
|
434
|
+
**Verdict:** Ready to release
|
|
435
|
+
|
|
436
|
+
**Evidence:**
|
|
437
|
+
- P0 coverage: 100% (5/5 requirements)
|
|
438
|
+
- P1 coverage: 100% (6/6 requirements)
|
|
439
|
+
- P2 coverage: 33% (1/3 requirements) - acceptable
|
|
440
|
+
- Test quality score: 84/100
|
|
441
|
+
- NFR assessment: PASS
|
|
442
|
+
|
|
443
|
+
## Coverage Analysis
|
|
444
|
+
|
|
445
|
+
| Priority | Required Coverage | Actual Coverage | Status |
|
|
446
|
+
| -------- | ----------------- | --------------- | --------------------- |
|
|
447
|
+
| **P0** | 100% | 100% | ✅ PASS |
|
|
448
|
+
| **P1** | 90% | 100% | ✅ PASS |
|
|
449
|
+
| **P2** | 50% | 33% | ⚠️ Below (acceptable) |
|
|
450
|
+
| **P3** | 20% | 0% | ✅ PASS (low priority) |
|
|
451
|
+
|
|
452
|
+
**Rationale:**
|
|
453
|
+
- All critical path (P0) requirements fully tested
|
|
454
|
+
- All high-value (P1) requirements fully tested
|
|
455
|
+
- P2 gap (profile export) is low risk and deferred to next release
|
|
456
|
+
|
|
457
|
+
## Quality Metrics
|
|
458
|
+
|
|
459
|
+
| Metric | Threshold | Actual | Status |
|
|
460
|
+
| ------------------ | --------- | ------ | ------ |
|
|
461
|
+
| P0/P1 Coverage | >95% | 100% | ✅ |
|
|
462
|
+
| Test Quality Score | >80 | 84 | ✅ |
|
|
463
|
+
| NFR Status | PASS | PASS | ✅ |
|
|
464
|
+
|
|
465
|
+
## Risks and Mitigations
|
|
466
|
+
|
|
467
|
+
### Accepted Risks
|
|
468
|
+
|
|
469
|
+
**Risk 1: Profile export not tested (P2)**
|
|
470
|
+
- **Impact:** Medium (users can't export profile)
|
|
471
|
+
- **Mitigation:** Feature flag disabled by default
|
|
472
|
+
- **Plan:** Add tests in v1.3 release (February)
|
|
473
|
+
- **Monitoring:** Track feature flag usage
|
|
474
|
+
|
|
475
|
+
## Approvals
|
|
476
|
+
|
|
477
|
+
- [x] **Product Manager** - Business requirements met (Approved: 2026-01-13)
|
|
478
|
+
- [x] **Tech Lead** - Technical quality acceptable (Approved: 2026-01-13)
|
|
479
|
+
- [x] **QA Lead** - Test coverage sufficient (Approved: 2026-01-13)
|
|
480
|
+
|
|
481
|
+
## Next Steps
|
|
482
|
+
|
|
483
|
+
### Deployment
|
|
484
|
+
1. Merge to main branch
|
|
485
|
+
2. Deploy to staging
|
|
486
|
+
3. Run smoke tests in staging
|
|
487
|
+
4. Deploy to production
|
|
488
|
+
5. Monitor for 24 hours
|
|
489
|
+
|
|
490
|
+
### Monitoring
|
|
491
|
+
- Set alerts for profile endpoint (P99 > 200ms)
|
|
492
|
+
- Track error rates (target: <0.1%)
|
|
493
|
+
- Monitor profile export feature flag usage
|
|
494
|
+
|
|
495
|
+
### Future Work
|
|
496
|
+
- Add profile export tests (v1.3)
|
|
497
|
+
- Expand P2 coverage to 50%
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
### Gate Decision Rules
|
|
501
|
+
|
|
502
|
+
TEA uses deterministic rules when decision_mode = "deterministic":
|
|
503
|
+
|
|
504
|
+
| P0 Coverage | P1 Coverage | Overall Coverage | Decision |
|
|
505
|
+
| ----------- | ----------- | ---------------- | ---------------------------- |
|
|
506
|
+
| 100% | ≥90% | ≥80% | **PASS** ✅ |
|
|
507
|
+
| 100% | 80-89% | ≥80% | **CONCERNS** ⚠️ |
|
|
508
|
+
| <100% | Any | Any | **FAIL** ❌ |
|
|
509
|
+
| Any | <80% | Any | **FAIL** ❌ |
|
|
510
|
+
| Any | Any | <80% | **FAIL** ❌ |
|
|
511
|
+
| Any | Any | Any | **WAIVED** ⏭️ (with approval) |
|
|
512
|
+
|
|
513
|
+
**Detailed Rules:**
|
|
514
|
+
- **PASS:** P0=100%, P1≥90%, Overall≥80%
|
|
515
|
+
- **CONCERNS:** P0=100%, P1 80-89%, Overall≥80% (below threshold but not critical)
|
|
516
|
+
- **FAIL:** P0<100% OR P1<80% OR Overall<80% (critical gaps)
|
|
517
|
+
|
|
518
|
+
**PASS** ✅: All criteria met, ready to release
|
|
519
|
+
|
|
520
|
+
**CONCERNS** ⚠️: Some criteria not met, but:
|
|
521
|
+
- Mitigation plan exists
|
|
522
|
+
- Risk is acceptable
|
|
523
|
+
- Team approves proceeding
|
|
524
|
+
- Monitoring in place
|
|
525
|
+
|
|
526
|
+
**FAIL** ❌: Critical criteria not met:
|
|
527
|
+
- P0 requirements not tested
|
|
528
|
+
- Critical security vulnerabilities
|
|
529
|
+
- System is broken
|
|
530
|
+
- Cannot deploy
|
|
531
|
+
|
|
532
|
+
**WAIVED** ⏭️: Business approves proceeding despite concerns:
|
|
533
|
+
- Documented business justification
|
|
534
|
+
- Accepted risks quantified
|
|
535
|
+
- Approver signatures
|
|
536
|
+
- Future plans documented
|
|
537
|
+
|
|
538
|
+
### Example CONCERNS Decision
|
|
539
|
+
|
|
540
|
+
```markdown
|
|
541
|
+
## Decision Summary
|
|
542
|
+
|
|
543
|
+
**Verdict:** CONCERNS ⚠️ - Proceed with monitoring
|
|
544
|
+
|
|
545
|
+
**Evidence:**
|
|
546
|
+
- P0 coverage: 100%
|
|
547
|
+
- P1 coverage: 85% (below 90% target)
|
|
548
|
+
- Test quality: 78/100 (below 80 target)
|
|
549
|
+
|
|
550
|
+
**Gaps:**
|
|
551
|
+
- 1 P1 requirement not tested (avatar upload)
|
|
552
|
+
- Test quality score slightly below threshold
|
|
553
|
+
|
|
554
|
+
**Mitigation:**
|
|
555
|
+
- Avatar upload not critical for v1.2 launch
|
|
556
|
+
- Test quality issues are minor (no flakiness)
|
|
557
|
+
- Monitoring alerts configured
|
|
558
|
+
|
|
559
|
+
**Approvals:**
|
|
560
|
+
- Product Manager: APPROVED (business priority to launch)
|
|
561
|
+
- Tech Lead: APPROVED (technical risk acceptable)
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
### Example FAIL Decision
|
|
565
|
+
|
|
566
|
+
```markdown
|
|
567
|
+
## Decision Summary
|
|
568
|
+
|
|
569
|
+
**Verdict:** FAIL ❌ - Cannot release
|
|
570
|
+
|
|
571
|
+
**Evidence:**
|
|
572
|
+
- P0 coverage: 60% (below 95% threshold)
|
|
573
|
+
- Critical security vulnerability (CVE-2024-12345)
|
|
574
|
+
- Test quality: 55/100
|
|
575
|
+
|
|
576
|
+
**Blockers:**
|
|
577
|
+
1. **Login flow not tested** (P0 requirement)
|
|
578
|
+
- Critical path completely untested
|
|
579
|
+
- Must add E2E and API tests
|
|
580
|
+
|
|
581
|
+
2. **SQL injection vulnerability**
|
|
582
|
+
- Critical security issue
|
|
583
|
+
- Must fix before deployment
|
|
584
|
+
|
|
585
|
+
**Actions Required:**
|
|
586
|
+
1. Add login tests (QA team, 2 days)
|
|
587
|
+
2. Fix SQL injection (backend team, 1 day)
|
|
588
|
+
3. Re-run security scan (DevOps, 1 hour)
|
|
589
|
+
4. Re-run *trace after fixes
|
|
590
|
+
|
|
591
|
+
**Cannot proceed until all blockers resolved.**
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
## What You Get
|
|
595
|
+
|
|
596
|
+
### Phase 1: Traceability Matrix
|
|
597
|
+
- Requirement-to-test mapping
|
|
598
|
+
- Coverage classification (FULL/PARTIAL/NONE)
|
|
599
|
+
- Gap identification with priorities
|
|
600
|
+
- Actionable recommendations
|
|
601
|
+
|
|
602
|
+
### Phase 2: Gate Decision
|
|
603
|
+
- Go/no-go verdict (PASS/CONCERNS/FAIL/WAIVED)
|
|
604
|
+
- Evidence summary
|
|
605
|
+
- Approval signatures
|
|
606
|
+
- Next steps and monitoring plan
|
|
607
|
+
|
|
608
|
+
## Usage Patterns
|
|
609
|
+
|
|
610
|
+
### Greenfield Projects
|
|
611
|
+
|
|
612
|
+
**Phase 3:**
|
|
613
|
+
```
|
|
614
|
+
After architecture complete:
|
|
615
|
+
1. Run *test-design (system-level)
|
|
616
|
+
2. Run *trace Phase 1 (baseline)
|
|
617
|
+
3. Use for implementation-readiness gate
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
**Phase 4:**
|
|
621
|
+
```
|
|
622
|
+
After each epic/story:
|
|
623
|
+
1. Run *trace Phase 1 (refresh coverage)
|
|
624
|
+
2. Identify gaps
|
|
625
|
+
3. Add missing tests
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
**Release Gate:**
|
|
629
|
+
```
|
|
630
|
+
Before deployment:
|
|
631
|
+
1. Run *trace Phase 1 (final coverage check)
|
|
632
|
+
2. Run *trace Phase 2 (make gate decision)
|
|
633
|
+
3. Get approvals
|
|
634
|
+
4. Deploy (if PASS or WAIVED)
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
### Brownfield Projects
|
|
638
|
+
|
|
639
|
+
**Phase 2:**
|
|
640
|
+
```
|
|
641
|
+
Before planning new work:
|
|
642
|
+
1. Run *trace Phase 1 (establish baseline)
|
|
643
|
+
2. Understand existing coverage
|
|
644
|
+
3. Plan testing strategy
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
**Phase 4:**
|
|
648
|
+
```
|
|
649
|
+
After each epic/story:
|
|
650
|
+
1. Run *trace Phase 1 (refresh)
|
|
651
|
+
2. Compare to baseline
|
|
652
|
+
3. Track coverage improvement
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
**Release Gate:**
|
|
656
|
+
```
|
|
657
|
+
Before deployment:
|
|
658
|
+
1. Run *trace Phase 1 (final check)
|
|
659
|
+
2. Run *trace Phase 2 (gate decision)
|
|
660
|
+
3. Compare to baseline
|
|
661
|
+
4. Deploy if coverage maintained or improved
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
## Tips
|
|
665
|
+
|
|
666
|
+
### Run Phase 1 Frequently
|
|
667
|
+
|
|
668
|
+
Don't wait until release gate:
|
|
669
|
+
|
|
670
|
+
```
|
|
671
|
+
After Story 1: *trace Phase 1 (identify gaps early)
|
|
672
|
+
After Story 2: *trace Phase 1 (refresh)
|
|
673
|
+
After Story 3: *trace Phase 1 (refresh)
|
|
674
|
+
Before Release: *trace Phase 1 + Phase 2 (final gate)
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
**Benefit:** Catch gaps early when they're cheap to fix.
|
|
678
|
+
|
|
679
|
+
### Use Coverage Trends
|
|
680
|
+
|
|
681
|
+
Track improvement over time:
|
|
682
|
+
|
|
683
|
+
```markdown
|
|
684
|
+
## Coverage Trend
|
|
685
|
+
|
|
686
|
+
| Date | Epic | P0/P1 Coverage | Quality Score | Status |
|
|
687
|
+
| ---------- | -------- | -------------- | ------------- | -------------- |
|
|
688
|
+
| 2026-01-01 | Baseline | 45% | - | Starting point |
|
|
689
|
+
| 2026-01-08 | Epic 1 | 78% | 72 | Improving |
|
|
690
|
+
| 2026-01-15 | Epic 2 | 92% | 84 | Near target |
|
|
691
|
+
| 2026-01-20 | Epic 3 | 100% | 88 | Ready! |
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
### Set Coverage Targets by Priority
|
|
695
|
+
|
|
696
|
+
Don't aim for 100% across all priorities:
|
|
697
|
+
|
|
698
|
+
**Recommended Targets:**
|
|
699
|
+
- **P0:** 100% (critical path must be tested)
|
|
700
|
+
- **P1:** 90% (high-value scenarios)
|
|
701
|
+
- **P2:** 50% (nice-to-have features)
|
|
702
|
+
- **P3:** 20% (low-value edge cases)
|
|
703
|
+
|
|
704
|
+
### Use Classification Strategically
|
|
705
|
+
|
|
706
|
+
**FULL** ✅: Requirement completely tested
|
|
707
|
+
- E2E test covers full user workflow
|
|
708
|
+
- API test validates backend behavior
|
|
709
|
+
- All acceptance criteria covered
|
|
710
|
+
|
|
711
|
+
**PARTIAL** ⚠️: Some aspects tested
|
|
712
|
+
- E2E test exists but missing scenarios
|
|
713
|
+
- API test exists but incomplete
|
|
714
|
+
- Some acceptance criteria not covered
|
|
715
|
+
|
|
716
|
+
**NONE** ❌: No tests exist
|
|
717
|
+
- Requirement identified but not tested
|
|
718
|
+
- May be intentional (low priority) or oversight
|
|
719
|
+
|
|
720
|
+
**Classification helps prioritize:**
|
|
721
|
+
- Fix NONE coverage for P0/P1 requirements first
|
|
722
|
+
- Enhance PARTIAL coverage for P0 requirements
|
|
723
|
+
- Accept PARTIAL or NONE for P2/P3 if time-constrained
|
|
724
|
+
|
|
725
|
+
### Automate Gate Decisions
|
|
726
|
+
|
|
727
|
+
Use traceability in CI:
|
|
728
|
+
|
|
729
|
+
```yaml
|
|
730
|
+
# .github/workflows/gate-check.yml
|
|
731
|
+
- name: Check coverage
|
|
732
|
+
run: |
|
|
733
|
+
# Run trace Phase 1
|
|
734
|
+
# Parse coverage percentages
|
|
735
|
+
if [ $P0_COVERAGE -lt 95 ]; then
|
|
736
|
+
echo "P0 coverage below 95%"
|
|
737
|
+
exit 1
|
|
738
|
+
fi
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
### Document Waivers Clearly
|
|
742
|
+
|
|
743
|
+
If proceeding with WAIVED:
|
|
744
|
+
|
|
745
|
+
**Required:**
|
|
746
|
+
```markdown
|
|
747
|
+
## Waiver Documentation
|
|
748
|
+
|
|
749
|
+
**Waived By:** VP Engineering, Product Lead
|
|
750
|
+
**Date:** 2026-01-15
|
|
751
|
+
**Gate Type:** Release Gate v1.2
|
|
752
|
+
|
|
753
|
+
**Justification:**
|
|
754
|
+
Business critical to launch by Q1 for investor demo.
|
|
755
|
+
Performance concerns acceptable for initial user base.
|
|
756
|
+
|
|
757
|
+
**Conditions:**
|
|
758
|
+
- Set monitoring alerts for P99 > 300ms
|
|
759
|
+
- Plan optimization for v1.3 (due February 28)
|
|
760
|
+
- Monitor user feedback closely
|
|
761
|
+
|
|
762
|
+
**Accepted Risks:**
|
|
763
|
+
- 1% of users may experience 350ms latency
|
|
764
|
+
- Avatar upload feature incomplete
|
|
765
|
+
- Profile export deferred to next release
|
|
766
|
+
|
|
767
|
+
**Quantified Impact:**
|
|
768
|
+
- Affects <100 users at current scale
|
|
769
|
+
- Workaround exists (manual export)
|
|
770
|
+
- Monitoring will catch issues early
|
|
771
|
+
|
|
772
|
+
**Approvals:**
|
|
773
|
+
- VP Engineering: [Signature] Date: 2026-01-15
|
|
774
|
+
- Product Lead: [Signature] Date: 2026-01-15
|
|
775
|
+
- QA Lead: [Signature] Date: 2026-01-15
|
|
776
|
+
```
|
|
777
|
+
|
|
778
|
+
## Common Issues
|
|
779
|
+
|
|
780
|
+
### Too Many Gaps to Fix
|
|
781
|
+
|
|
782
|
+
**Problem:** Phase 1 shows 50 uncovered requirements.
|
|
783
|
+
|
|
784
|
+
**Solution:** Prioritize ruthlessly:
|
|
785
|
+
1. Fix all P0 gaps (critical path)
|
|
786
|
+
2. Fix high-risk P1 gaps
|
|
787
|
+
3. Accept low-risk P1 gaps with mitigation
|
|
788
|
+
4. Defer all P2/P3 gaps
|
|
789
|
+
|
|
790
|
+
**Don't try to fix everything** - focus on what matters for release.
|
|
791
|
+
|
|
792
|
+
### Can't Find Test Coverage
|
|
793
|
+
|
|
794
|
+
**Problem:** Tests exist but TEA can't map them to requirements.
|
|
795
|
+
|
|
796
|
+
**Cause:** Tests don't reference requirements.
|
|
797
|
+
|
|
798
|
+
**Solution:** Add traceability comments:
|
|
799
|
+
```typescript
|
|
800
|
+
test('should display profile', async ({ page }) => {
|
|
801
|
+
// Covers: Requirement 1 - User can view profile
|
|
802
|
+
// Acceptance criteria: Navigate to /profile, see name/email
|
|
803
|
+
await page.goto('/profile');
|
|
804
|
+
await expect(page.getByText('Test User')).toBeVisible();
|
|
805
|
+
});
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
Or use test IDs:
|
|
809
|
+
```typescript
|
|
810
|
+
test('[REQ-1] should display profile', async ({ page }) => {
|
|
811
|
+
// Test code...
|
|
812
|
+
});
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
### Unclear What "FULL" vs "PARTIAL" Means
|
|
816
|
+
|
|
817
|
+
**FULL** ✅: All acceptance criteria tested
|
|
818
|
+
```
|
|
819
|
+
Requirement: User can edit profile
|
|
820
|
+
Acceptance criteria:
|
|
821
|
+
- Can modify name ✅ Tested
|
|
822
|
+
- Can modify email ✅ Tested
|
|
823
|
+
- Can upload avatar ✅ Tested
|
|
824
|
+
- Changes persist ✅ Tested
|
|
825
|
+
Result: FULL coverage
|
|
826
|
+
```
|
|
827
|
+
|
|
828
|
+
**PARTIAL** ⚠️: Some criteria tested, some not
|
|
829
|
+
```
|
|
830
|
+
Requirement: User can edit profile
|
|
831
|
+
Acceptance criteria:
|
|
832
|
+
- Can modify name ✅ Tested
|
|
833
|
+
- Can modify email ✅ Tested
|
|
834
|
+
- Can upload avatar ❌ Not tested
|
|
835
|
+
- Changes persist ✅ Tested
|
|
836
|
+
Result: PARTIAL coverage (3/4 criteria)
|
|
837
|
+
```
|
|
838
|
+
|
|
839
|
+
### Gate Decision Unclear
|
|
840
|
+
|
|
841
|
+
**Problem:** Not sure if PASS or CONCERNS is appropriate.
|
|
842
|
+
|
|
843
|
+
**Guideline:**
|
|
844
|
+
|
|
845
|
+
**Use PASS** ✅ if:
|
|
846
|
+
- All P0 requirements 100% covered
|
|
847
|
+
- P1 requirements >90% covered
|
|
848
|
+
- No critical issues
|
|
849
|
+
- NFRs met
|
|
850
|
+
|
|
851
|
+
**Use CONCERNS** ⚠️ if:
|
|
852
|
+
- P1 coverage 85-90% (close to threshold)
|
|
853
|
+
- Minor quality issues (score 70-79)
|
|
854
|
+
- NFRs have mitigation plans
|
|
855
|
+
- Team agrees risk is acceptable
|
|
856
|
+
|
|
857
|
+
**Use FAIL** ❌ if:
|
|
858
|
+
- P0 coverage <100% (critical path gaps)
|
|
859
|
+
- P1 coverage <85%
|
|
860
|
+
- Critical security/performance issues
|
|
861
|
+
- No mitigation possible
|
|
862
|
+
|
|
863
|
+
**When in doubt, use CONCERNS** and document the risk.
|
|
864
|
+
|
|
865
|
+
## Related Guides
|
|
866
|
+
|
|
867
|
+
- [How to Run Test Design](/docs/how-to/workflows/run-test-design.md) - Provides requirements for traceability
|
|
868
|
+
- [How to Run Test Review](/docs/how-to/workflows/run-test-review.md) - Quality scores feed gate
|
|
869
|
+
- [How to Run NFR Assessment](/docs/how-to/workflows/run-nfr-assess.md) - NFR status feeds gate
|
|
870
|
+
|
|
871
|
+
## Understanding the Concepts
|
|
872
|
+
|
|
873
|
+
- [Risk-Based Testing](/docs/explanation/tea/risk-based-testing.md) - Why P0 vs P3 matters
|
|
874
|
+
- [TEA Overview](/docs/explanation/features/tea-overview.md) - Gate decisions in context
|
|
875
|
+
|
|
876
|
+
## Reference
|
|
877
|
+
|
|
878
|
+
- [Command: *trace](/docs/reference/tea/commands.md#trace) - Full command reference
|
|
879
|
+
- [TEA Configuration](/docs/reference/tea/configuration.md) - Config options
|
|
880
|
+
|
|
881
|
+
---
|
|
882
|
+
|
|
883
|
+
Generated with [BMad Method](https://bmad-method.org) - TEA (Test Architect)
|