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,605 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "How to Run Test Review with TEA"
|
|
3
|
+
description: Audit test quality using TEA's comprehensive knowledge base and get 0-100 scoring
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# How to Run Test Review with TEA
|
|
7
|
+
|
|
8
|
+
Use TEA's `*test-review` workflow to audit test quality with objective scoring and actionable feedback. TEA reviews tests against its knowledge base of best practices.
|
|
9
|
+
|
|
10
|
+
## When to Use This
|
|
11
|
+
|
|
12
|
+
- Want to validate test quality objectively
|
|
13
|
+
- Need quality metrics for release gates
|
|
14
|
+
- Preparing for production deployment
|
|
15
|
+
- Reviewing team-written tests
|
|
16
|
+
- Auditing AI-generated tests
|
|
17
|
+
- Onboarding new team members (show good patterns)
|
|
18
|
+
|
|
19
|
+
## Prerequisites
|
|
20
|
+
|
|
21
|
+
- BMad Method installed
|
|
22
|
+
- TEA agent available
|
|
23
|
+
- Tests written (to review)
|
|
24
|
+
- Test framework configured
|
|
25
|
+
|
|
26
|
+
## Steps
|
|
27
|
+
|
|
28
|
+
### 1. Load TEA Agent
|
|
29
|
+
|
|
30
|
+
Start a fresh chat and load TEA:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
*tea
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2. Run the Test Review Workflow
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
*test-review
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 3. Specify Review Scope
|
|
43
|
+
|
|
44
|
+
TEA will ask what to review.
|
|
45
|
+
|
|
46
|
+
#### Option A: Single File
|
|
47
|
+
|
|
48
|
+
Review one test file:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
tests/e2e/checkout.spec.ts
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Best for:**
|
|
55
|
+
- Reviewing specific failing tests
|
|
56
|
+
- Quick feedback on new tests
|
|
57
|
+
- Learning from specific examples
|
|
58
|
+
|
|
59
|
+
#### Option B: Directory
|
|
60
|
+
|
|
61
|
+
Review all tests in a directory:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
tests/e2e/
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Best for:**
|
|
68
|
+
- Reviewing E2E test suite
|
|
69
|
+
- Comparing test quality across files
|
|
70
|
+
- Finding patterns of issues
|
|
71
|
+
|
|
72
|
+
#### Option C: Entire Suite
|
|
73
|
+
|
|
74
|
+
Review all tests:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
tests/
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Best for:**
|
|
81
|
+
- Release gate quality check
|
|
82
|
+
- Comprehensive audit
|
|
83
|
+
- Establishing baseline metrics
|
|
84
|
+
|
|
85
|
+
### 4. Review the Quality Report
|
|
86
|
+
|
|
87
|
+
TEA generates a comprehensive quality report with scoring.
|
|
88
|
+
|
|
89
|
+
#### Report Structure (`test-review.md`):
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
# Test Quality Review Report
|
|
93
|
+
|
|
94
|
+
**Date:** 2026-01-13
|
|
95
|
+
**Scope:** tests/e2e/
|
|
96
|
+
**Overall Score:** 76/100
|
|
97
|
+
|
|
98
|
+
## Summary
|
|
99
|
+
|
|
100
|
+
- **Tests Reviewed:** 12
|
|
101
|
+
- **Passing Quality:** 9 tests (75%)
|
|
102
|
+
- **Needs Improvement:** 3 tests (25%)
|
|
103
|
+
- **Critical Issues:** 2
|
|
104
|
+
- **Recommendations:** 6
|
|
105
|
+
|
|
106
|
+
## Critical Issues
|
|
107
|
+
|
|
108
|
+
### 1. Hard Waits Detected
|
|
109
|
+
|
|
110
|
+
**File:** `tests/e2e/checkout.spec.ts:45`
|
|
111
|
+
**Issue:** Using `page.waitForTimeout(3000)`
|
|
112
|
+
**Impact:** Test is flaky and unnecessarily slow
|
|
113
|
+
**Severity:** Critical
|
|
114
|
+
|
|
115
|
+
**Current Code:**
|
|
116
|
+
```typescript
|
|
117
|
+
await page.click('button[type="submit"]');
|
|
118
|
+
await page.waitForTimeout(3000); // ❌ Hard wait
|
|
119
|
+
await expect(page.locator('.success')).toBeVisible();
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Fix:**
|
|
123
|
+
```typescript
|
|
124
|
+
await page.click('button[type="submit"]');
|
|
125
|
+
// Wait for the API response that triggers success message
|
|
126
|
+
await page.waitForResponse(resp =>
|
|
127
|
+
resp.url().includes('/api/checkout') && resp.ok()
|
|
128
|
+
);
|
|
129
|
+
await expect(page.locator('.success')).toBeVisible();
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Why This Matters:**
|
|
133
|
+
- Hard waits are fixed timeouts that don't wait for actual conditions
|
|
134
|
+
- Tests fail intermittently on slower machines
|
|
135
|
+
- Wastes time waiting even when response is fast
|
|
136
|
+
- Network-first patterns are more reliable
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### 2. Conditional Flow Control
|
|
141
|
+
|
|
142
|
+
**File:** `tests/e2e/profile.spec.ts:28`
|
|
143
|
+
**Issue:** Using if/else to handle optional elements
|
|
144
|
+
**Impact:** Non-deterministic test behavior
|
|
145
|
+
**Severity:** Critical
|
|
146
|
+
|
|
147
|
+
**Current Code:**
|
|
148
|
+
```typescript
|
|
149
|
+
if (await page.locator('.banner').isVisible()) {
|
|
150
|
+
await page.click('.dismiss');
|
|
151
|
+
}
|
|
152
|
+
// ❌ Test behavior changes based on banner presence
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Fix:**
|
|
156
|
+
```typescript
|
|
157
|
+
// Option 1: Make banner presence deterministic
|
|
158
|
+
await expect(page.locator('.banner')).toBeVisible();
|
|
159
|
+
await page.click('.dismiss');
|
|
160
|
+
|
|
161
|
+
// Option 2: Test both scenarios separately
|
|
162
|
+
test('should show banner for new users', async ({ page }) => {
|
|
163
|
+
// Test with banner
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
test('should not show banner for returning users', async ({ page }) => {
|
|
167
|
+
// Test without banner
|
|
168
|
+
});
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Why This Matters:**
|
|
172
|
+
- Tests should be deterministic (same result every run)
|
|
173
|
+
- Conditionals hide bugs (what if banner should always show?)
|
|
174
|
+
- Makes debugging harder
|
|
175
|
+
- Violates test isolation principle
|
|
176
|
+
|
|
177
|
+
## Recommendations
|
|
178
|
+
|
|
179
|
+
### 1. Extract Repeated Setup
|
|
180
|
+
|
|
181
|
+
**File:** `tests/e2e/profile.spec.ts`
|
|
182
|
+
**Issue:** Login code duplicated in every test
|
|
183
|
+
**Severity:** Medium
|
|
184
|
+
**Impact:** Maintenance burden, test verbosity
|
|
185
|
+
|
|
186
|
+
**Current:**
|
|
187
|
+
```typescript
|
|
188
|
+
test('test 1', async ({ page }) => {
|
|
189
|
+
await page.goto('/login');
|
|
190
|
+
await page.fill('[name="email"]', 'test@example.com');
|
|
191
|
+
await page.fill('[name="password"]', 'password');
|
|
192
|
+
await page.click('button[type="submit"]');
|
|
193
|
+
// Test logic...
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
test('test 2', async ({ page }) => {
|
|
197
|
+
// Same login code repeated
|
|
198
|
+
});
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Fix (Vanilla Playwright):**
|
|
202
|
+
```typescript
|
|
203
|
+
// Create fixture in tests/support/fixtures/auth.ts
|
|
204
|
+
import { test as base, Page } from '@playwright/test';
|
|
205
|
+
|
|
206
|
+
export const test = base.extend<{ authenticatedPage: Page }>({
|
|
207
|
+
authenticatedPage: async ({ page }, use) => {
|
|
208
|
+
await page.goto('/login');
|
|
209
|
+
await page.getByLabel('Email').fill('test@example.com');
|
|
210
|
+
await page.getByLabel('Password').fill('password');
|
|
211
|
+
await page.getByRole('button', { name: 'Sign in' }).click();
|
|
212
|
+
await page.waitForURL(/\/dashboard/);
|
|
213
|
+
await use(page);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
// Use in tests
|
|
218
|
+
test('test 1', async ({ authenticatedPage }) => {
|
|
219
|
+
// Already logged in
|
|
220
|
+
});
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Better (With Playwright Utils):**
|
|
224
|
+
```typescript
|
|
225
|
+
// Use built-in auth-session fixture
|
|
226
|
+
import { test as base } from '@playwright/test';
|
|
227
|
+
import { createAuthFixtures } from '@seontechnologies/playwright-utils/auth-session';
|
|
228
|
+
|
|
229
|
+
export const test = base.extend(createAuthFixtures());
|
|
230
|
+
|
|
231
|
+
// Use in tests - even simpler
|
|
232
|
+
test('test 1', async ({ page, authToken }) => {
|
|
233
|
+
// authToken already available (persisted, reused)
|
|
234
|
+
await page.goto('/dashboard');
|
|
235
|
+
// Already authenticated via authToken
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Playwright Utils Benefits:**
|
|
240
|
+
- Token persisted to disk (faster subsequent runs)
|
|
241
|
+
- Multi-user support out of the box
|
|
242
|
+
- Automatic token renewal if expired
|
|
243
|
+
- No manual login flow needed
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
### 2. Add Network Assertions
|
|
248
|
+
|
|
249
|
+
**File:** `tests/e2e/api-calls.spec.ts`
|
|
250
|
+
**Issue:** No verification of API responses
|
|
251
|
+
**Severity:** Low
|
|
252
|
+
**Impact:** Tests don't catch API errors
|
|
253
|
+
|
|
254
|
+
**Current:**
|
|
255
|
+
```typescript
|
|
256
|
+
await page.click('button[name="save"]');
|
|
257
|
+
await expect(page.locator('.success')).toBeVisible();
|
|
258
|
+
// ❌ What if API returned 500 but UI shows cached success?
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**Enhancement:**
|
|
262
|
+
```typescript
|
|
263
|
+
const responsePromise = page.waitForResponse(
|
|
264
|
+
resp => resp.url().includes('/api/profile') && resp.status() === 200
|
|
265
|
+
);
|
|
266
|
+
await page.click('button[name="save"]');
|
|
267
|
+
const response = await responsePromise;
|
|
268
|
+
|
|
269
|
+
// Verify API response
|
|
270
|
+
const data = await response.json();
|
|
271
|
+
expect(data.success).toBe(true);
|
|
272
|
+
|
|
273
|
+
// Verify UI
|
|
274
|
+
await expect(page.locator('.success')).toBeVisible();
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
### 3. Improve Test Names
|
|
280
|
+
|
|
281
|
+
**File:** `tests/e2e/checkout.spec.ts`
|
|
282
|
+
**Issue:** Vague test names
|
|
283
|
+
**Severity:** Low
|
|
284
|
+
**Impact:** Hard to understand test purpose
|
|
285
|
+
|
|
286
|
+
**Current:**
|
|
287
|
+
```typescript
|
|
288
|
+
test('should work', async ({ page }) => { });
|
|
289
|
+
test('test checkout', async ({ page }) => { });
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Better:**
|
|
293
|
+
```typescript
|
|
294
|
+
test('should complete checkout with valid credit card', async ({ page }) => { });
|
|
295
|
+
test('should show validation error for expired card', async ({ page }) => { });
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Quality Scores by Category
|
|
299
|
+
|
|
300
|
+
| Category | Score | Target | Status |
|
|
301
|
+
|----------|-------|--------|--------|
|
|
302
|
+
| **Determinism** | 26/35 | 30/35 | ⚠️ Needs Improvement |
|
|
303
|
+
| **Isolation** | 22/25 | 20/25 | ✅ Good |
|
|
304
|
+
| **Assertions** | 18/20 | 16/20 | ✅ Good |
|
|
305
|
+
| **Structure** | 7/10 | 8/10 | ⚠️ Minor Issues |
|
|
306
|
+
| **Performance** | 3/10 | 8/10 | ❌ Critical |
|
|
307
|
+
|
|
308
|
+
### Scoring Breakdown
|
|
309
|
+
|
|
310
|
+
**Determinism (35 points max):**
|
|
311
|
+
- No hard waits: 0/10 ❌ (found 3 instances)
|
|
312
|
+
- No conditionals: 8/10 ⚠️ (found 2 instances)
|
|
313
|
+
- No try-catch flow control: 10/10 ✅
|
|
314
|
+
- Network-first patterns: 8/15 ⚠️ (some tests missing)
|
|
315
|
+
|
|
316
|
+
**Isolation (25 points max):**
|
|
317
|
+
- Self-cleaning: 20/20 ✅
|
|
318
|
+
- No global state: 5/5 ✅
|
|
319
|
+
- Parallel-safe: 0/0 ✅ (not tested)
|
|
320
|
+
|
|
321
|
+
**Assertions (20 points max):**
|
|
322
|
+
- Explicit in test body: 15/15 ✅
|
|
323
|
+
- Specific and meaningful: 3/5 ⚠️ (some weak assertions)
|
|
324
|
+
|
|
325
|
+
**Structure (10 points max):**
|
|
326
|
+
- Test size < 300 lines: 5/5 ✅
|
|
327
|
+
- Clear names: 2/5 ⚠️ (some vague names)
|
|
328
|
+
|
|
329
|
+
**Performance (10 points max):**
|
|
330
|
+
- Execution time < 1.5 min: 3/10 ❌ (3 tests exceed limit)
|
|
331
|
+
|
|
332
|
+
## Files Reviewed
|
|
333
|
+
|
|
334
|
+
| File | Score | Issues | Status |
|
|
335
|
+
|------|-------|--------|--------|
|
|
336
|
+
| `tests/e2e/checkout.spec.ts` | 65/100 | 4 | ❌ Needs Work |
|
|
337
|
+
| `tests/e2e/profile.spec.ts` | 72/100 | 3 | ⚠️ Needs Improvement |
|
|
338
|
+
| `tests/e2e/search.spec.ts` | 88/100 | 1 | ✅ Good |
|
|
339
|
+
| `tests/api/profile.spec.ts` | 92/100 | 0 | ✅ Excellent |
|
|
340
|
+
|
|
341
|
+
## Next Steps
|
|
342
|
+
|
|
343
|
+
### Immediate (Fix Critical Issues)
|
|
344
|
+
1. Remove hard waits in `checkout.spec.ts` (line 45, 67, 89)
|
|
345
|
+
2. Fix conditional in `profile.spec.ts` (line 28)
|
|
346
|
+
3. Optimize slow tests in `checkout.spec.ts`
|
|
347
|
+
|
|
348
|
+
### Short-term (Apply Recommendations)
|
|
349
|
+
4. Extract login fixture from `profile.spec.ts`
|
|
350
|
+
5. Add network assertions to `api-calls.spec.ts`
|
|
351
|
+
6. Improve test names in `checkout.spec.ts`
|
|
352
|
+
|
|
353
|
+
### Long-term (Continuous Improvement)
|
|
354
|
+
7. Re-run `*test-review` after fixes (target: 85/100)
|
|
355
|
+
8. Add performance budgets to CI
|
|
356
|
+
9. Document test patterns for team
|
|
357
|
+
|
|
358
|
+
## Knowledge Base References
|
|
359
|
+
|
|
360
|
+
TEA reviewed against these patterns:
|
|
361
|
+
- [test-quality.md](/docs/reference/tea/knowledge-base.md#test-quality) - Execution limits, isolation
|
|
362
|
+
- [network-first.md](/docs/reference/tea/knowledge-base.md#network-first) - Deterministic waits
|
|
363
|
+
- [timing-debugging.md](/docs/reference/tea/knowledge-base.md#timing-debugging) - Race conditions
|
|
364
|
+
- [selector-resilience.md](/docs/reference/tea/knowledge-base.md#selector-resilience) - Robust selectors
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## Understanding the Scores
|
|
368
|
+
|
|
369
|
+
### What Do Scores Mean?
|
|
370
|
+
|
|
371
|
+
| Score Range | Interpretation | Action |
|
|
372
|
+
|-------------|----------------|--------|
|
|
373
|
+
| **90-100** | Excellent | Minimal changes needed, production-ready |
|
|
374
|
+
| **80-89** | Good | Minor improvements recommended |
|
|
375
|
+
| **70-79** | Acceptable | Address recommendations before release |
|
|
376
|
+
| **60-69** | Needs Improvement | Fix critical issues, apply recommendations |
|
|
377
|
+
| **< 60** | Critical | Significant refactoring needed |
|
|
378
|
+
|
|
379
|
+
### Scoring Criteria
|
|
380
|
+
|
|
381
|
+
**Determinism (35 points):**
|
|
382
|
+
- Tests produce same result every run
|
|
383
|
+
- No random failures (flakiness)
|
|
384
|
+
- No environment-dependent behavior
|
|
385
|
+
|
|
386
|
+
**Isolation (25 points):**
|
|
387
|
+
- Tests don't depend on each other
|
|
388
|
+
- Can run in any order
|
|
389
|
+
- Clean up after themselves
|
|
390
|
+
|
|
391
|
+
**Assertions (20 points):**
|
|
392
|
+
- Verify actual behavior
|
|
393
|
+
- Specific and meaningful
|
|
394
|
+
- Not abstracted away in helpers
|
|
395
|
+
|
|
396
|
+
**Structure (10 points):**
|
|
397
|
+
- Readable and maintainable
|
|
398
|
+
- Appropriate size
|
|
399
|
+
- Clear naming
|
|
400
|
+
|
|
401
|
+
**Performance (10 points):**
|
|
402
|
+
- Fast execution
|
|
403
|
+
- Efficient selectors
|
|
404
|
+
- No unnecessary waits
|
|
405
|
+
|
|
406
|
+
## What You Get
|
|
407
|
+
|
|
408
|
+
### Quality Report
|
|
409
|
+
- Overall score (0-100)
|
|
410
|
+
- Category scores (Determinism, Isolation, etc.)
|
|
411
|
+
- File-by-file breakdown
|
|
412
|
+
|
|
413
|
+
### Critical Issues
|
|
414
|
+
- Specific line numbers
|
|
415
|
+
- Code examples (current vs fixed)
|
|
416
|
+
- Why it matters explanation
|
|
417
|
+
- Impact assessment
|
|
418
|
+
|
|
419
|
+
### Recommendations
|
|
420
|
+
- Actionable improvements
|
|
421
|
+
- Code examples
|
|
422
|
+
- Priority/severity levels
|
|
423
|
+
|
|
424
|
+
### Next Steps
|
|
425
|
+
- Immediate actions (fix critical)
|
|
426
|
+
- Short-term improvements
|
|
427
|
+
- Long-term quality goals
|
|
428
|
+
|
|
429
|
+
## Tips
|
|
430
|
+
|
|
431
|
+
### Review Before Release
|
|
432
|
+
|
|
433
|
+
Make test review part of release checklist:
|
|
434
|
+
|
|
435
|
+
```markdown
|
|
436
|
+
## Release Checklist
|
|
437
|
+
- [ ] All tests passing
|
|
438
|
+
- [ ] Test review score > 80
|
|
439
|
+
- [ ] Critical issues resolved
|
|
440
|
+
- [ ] Performance within budget
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### Review After AI Generation
|
|
444
|
+
|
|
445
|
+
Always review AI-generated tests:
|
|
446
|
+
|
|
447
|
+
```
|
|
448
|
+
1. Run *atdd or *automate
|
|
449
|
+
2. Run *test-review on generated tests
|
|
450
|
+
3. Fix critical issues
|
|
451
|
+
4. Commit tests
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Set Quality Gates
|
|
455
|
+
|
|
456
|
+
Use scores as quality gates:
|
|
457
|
+
|
|
458
|
+
```yaml
|
|
459
|
+
# .github/workflows/test.yml
|
|
460
|
+
- name: Review test quality
|
|
461
|
+
run: |
|
|
462
|
+
# Run test review
|
|
463
|
+
# Parse score from report
|
|
464
|
+
if [ $SCORE -lt 80 ]; then
|
|
465
|
+
echo "Test quality below threshold"
|
|
466
|
+
exit 1
|
|
467
|
+
fi
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### Review Regularly
|
|
471
|
+
|
|
472
|
+
Schedule periodic reviews:
|
|
473
|
+
|
|
474
|
+
- **Per story:** Optional (spot check new tests)
|
|
475
|
+
- **Per epic:** Recommended (ensure consistency)
|
|
476
|
+
- **Per release:** Recommended for quality gates (required if using formal gate process)
|
|
477
|
+
- **Quarterly:** Audit entire suite
|
|
478
|
+
|
|
479
|
+
### Focus Reviews
|
|
480
|
+
|
|
481
|
+
For large suites, review incrementally:
|
|
482
|
+
|
|
483
|
+
**Week 1:** Review E2E tests
|
|
484
|
+
**Week 2:** Review API tests
|
|
485
|
+
**Week 3:** Review component tests (Cypress CT or Vitest)
|
|
486
|
+
**Week 4:** Apply fixes across all suites
|
|
487
|
+
|
|
488
|
+
**Component Testing Note:** TEA reviews component tests using framework-specific knowledge:
|
|
489
|
+
- **Cypress:** Reviews Cypress Component Testing specs (*.cy.tsx)
|
|
490
|
+
- **Playwright:** Reviews Vitest component tests (*.test.tsx)
|
|
491
|
+
|
|
492
|
+
### Use Reviews for Learning
|
|
493
|
+
|
|
494
|
+
Share reports with team:
|
|
495
|
+
|
|
496
|
+
```
|
|
497
|
+
Team Meeting:
|
|
498
|
+
- Review test-review.md
|
|
499
|
+
- Discuss critical issues
|
|
500
|
+
- Agree on patterns
|
|
501
|
+
- Update team guidelines
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
### Compare Over Time
|
|
505
|
+
|
|
506
|
+
Track improvement:
|
|
507
|
+
|
|
508
|
+
```markdown
|
|
509
|
+
## Quality Trend
|
|
510
|
+
|
|
511
|
+
| Date | Score | Critical Issues | Notes |
|
|
512
|
+
|------|-------|-----------------|-------|
|
|
513
|
+
| 2026-01-01 | 65 | 5 | Baseline |
|
|
514
|
+
| 2026-01-15 | 72 | 2 | Fixed hard waits |
|
|
515
|
+
| 2026-02-01 | 84 | 0 | All critical resolved |
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
## Common Issues
|
|
519
|
+
|
|
520
|
+
### Low Determinism Score
|
|
521
|
+
|
|
522
|
+
**Symptoms:**
|
|
523
|
+
- Tests fail randomly
|
|
524
|
+
- "Works on my machine"
|
|
525
|
+
- CI failures that don't reproduce locally
|
|
526
|
+
|
|
527
|
+
**Common Causes:**
|
|
528
|
+
- Hard waits (`waitForTimeout`)
|
|
529
|
+
- Conditional flow control (`if/else`)
|
|
530
|
+
- Try-catch for flow control
|
|
531
|
+
- Missing network-first patterns
|
|
532
|
+
|
|
533
|
+
**Fix:** Review determinism section, apply network-first patterns
|
|
534
|
+
|
|
535
|
+
### Low Performance Score
|
|
536
|
+
|
|
537
|
+
**Symptoms:**
|
|
538
|
+
- Tests take > 1.5 minutes each
|
|
539
|
+
- Test suite takes hours
|
|
540
|
+
- CI times out
|
|
541
|
+
|
|
542
|
+
**Common Causes:**
|
|
543
|
+
- Unnecessary waits (hard timeouts)
|
|
544
|
+
- Inefficient selectors (XPath, complex CSS)
|
|
545
|
+
- Not using parallelization
|
|
546
|
+
- Heavy setup in every test
|
|
547
|
+
|
|
548
|
+
**Fix:** Optimize waits, improve selectors, use fixtures
|
|
549
|
+
|
|
550
|
+
### Low Isolation Score
|
|
551
|
+
|
|
552
|
+
**Symptoms:**
|
|
553
|
+
- Tests fail when run in different order
|
|
554
|
+
- Tests fail in parallel
|
|
555
|
+
- Test data conflicts
|
|
556
|
+
|
|
557
|
+
**Common Causes:**
|
|
558
|
+
- Shared global state
|
|
559
|
+
- Tests don't clean up
|
|
560
|
+
- Hard-coded test data
|
|
561
|
+
- Database not reset between tests
|
|
562
|
+
|
|
563
|
+
**Fix:** Use fixtures, clean up in afterEach, use unique test data
|
|
564
|
+
|
|
565
|
+
### "Too Many Issues to Fix"
|
|
566
|
+
|
|
567
|
+
**Problem:** Report shows 50+ issues, overwhelming.
|
|
568
|
+
|
|
569
|
+
**Solution:** Prioritize:
|
|
570
|
+
1. Fix all critical issues first
|
|
571
|
+
2. Apply top 3 recommendations
|
|
572
|
+
3. Re-run review
|
|
573
|
+
4. Iterate
|
|
574
|
+
|
|
575
|
+
Don't try to fix everything at once.
|
|
576
|
+
|
|
577
|
+
### Reviews Take Too Long
|
|
578
|
+
|
|
579
|
+
**Problem:** Reviewing entire suite takes hours.
|
|
580
|
+
|
|
581
|
+
**Solution:** Review incrementally:
|
|
582
|
+
- Review new tests in PR review
|
|
583
|
+
- Schedule directory reviews weekly
|
|
584
|
+
- Full suite review quarterly
|
|
585
|
+
|
|
586
|
+
## Related Guides
|
|
587
|
+
|
|
588
|
+
- [How to Run ATDD](/docs/how-to/workflows/run-atdd.md) - Generate tests to review
|
|
589
|
+
- [How to Run Automate](/docs/how-to/workflows/run-automate.md) - Expand coverage to review
|
|
590
|
+
- [How to Run Trace](/docs/how-to/workflows/run-trace.md) - Coverage complements quality
|
|
591
|
+
|
|
592
|
+
## Understanding the Concepts
|
|
593
|
+
|
|
594
|
+
- [Test Quality Standards](/docs/explanation/tea/test-quality-standards.md) - What makes tests good
|
|
595
|
+
- [Network-First Patterns](/docs/explanation/tea/network-first-patterns.md) - Avoiding flakiness
|
|
596
|
+
- [Fixture Architecture](/docs/explanation/tea/fixture-architecture.md) - Reusable patterns
|
|
597
|
+
|
|
598
|
+
## Reference
|
|
599
|
+
|
|
600
|
+
- [Command: *test-review](/docs/reference/tea/commands.md#test-review) - Full command reference
|
|
601
|
+
- [Knowledge Base Index](/docs/reference/tea/knowledge-base.md) - Patterns TEA reviews against
|
|
602
|
+
|
|
603
|
+
---
|
|
604
|
+
|
|
605
|
+
Generated with [BMad Method](https://bmad-method.org) - TEA (Test Architect)
|