bmad-fh 6.0.0-alpha.23
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 +50 -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 +411 -0
- package/src/core/lib/scope/index.js +30 -0
- package/src/core/lib/scope/scope-context.js +307 -0
- package/src/core/lib/scope/scope-initializer.js +458 -0
- package/src/core/lib/scope/scope-manager.js +512 -0
- package/src/core/lib/scope/scope-migrator.js +442 -0
- package/src/core/lib/scope/scope-sync.js +489 -0
- package/src/core/lib/scope/scope-validator.js +299 -0
- package/src/core/lib/scope/state-lock.js +342 -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 +450 -0
- package/test/test-scope-system.js +787 -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 +281 -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,653 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "How to Run Automate with TEA"
|
|
3
|
+
description: Expand test automation coverage after implementation using TEA's automate workflow
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# How to Run Automate with TEA
|
|
7
|
+
|
|
8
|
+
Use TEA's `*automate` workflow to generate comprehensive tests for existing features. Unlike `*atdd`, these tests pass immediately because the feature already exists.
|
|
9
|
+
|
|
10
|
+
## When to Use This
|
|
11
|
+
|
|
12
|
+
- Feature already exists and works
|
|
13
|
+
- Want to add test coverage to existing code
|
|
14
|
+
- Need tests that pass immediately
|
|
15
|
+
- Expanding existing test suite
|
|
16
|
+
- Adding tests to legacy code
|
|
17
|
+
|
|
18
|
+
**Don't use this if:**
|
|
19
|
+
- Feature doesn't exist yet (use `*atdd` instead)
|
|
20
|
+
- Want failing tests to guide development (use `*atdd` for TDD)
|
|
21
|
+
|
|
22
|
+
## Prerequisites
|
|
23
|
+
|
|
24
|
+
- BMad Method installed
|
|
25
|
+
- TEA agent available
|
|
26
|
+
- Test framework setup complete (run `*framework` if needed)
|
|
27
|
+
- Feature implemented and working
|
|
28
|
+
|
|
29
|
+
**Note:** This guide uses Playwright examples. If using Cypress, commands and syntax will differ.
|
|
30
|
+
|
|
31
|
+
## Steps
|
|
32
|
+
|
|
33
|
+
### 1. Load TEA Agent
|
|
34
|
+
|
|
35
|
+
Start a fresh chat and load TEA:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
*tea
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2. Run the Automate Workflow
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
*automate
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 3. Provide Context
|
|
48
|
+
|
|
49
|
+
TEA will ask for context about what you're testing.
|
|
50
|
+
|
|
51
|
+
#### Option A: BMad-Integrated Mode (Recommended)
|
|
52
|
+
|
|
53
|
+
If you have BMad artifacts (stories, test designs, PRDs):
|
|
54
|
+
|
|
55
|
+
**What are you testing?**
|
|
56
|
+
```
|
|
57
|
+
I'm testing the user profile feature we just implemented.
|
|
58
|
+
Story: story-profile-management.md
|
|
59
|
+
Test Design: test-design-epic-1.md
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Reference documents:**
|
|
63
|
+
- Story file with acceptance criteria
|
|
64
|
+
- Test design document (if available)
|
|
65
|
+
- PRD sections relevant to this feature
|
|
66
|
+
- Tech spec (if available)
|
|
67
|
+
|
|
68
|
+
**Existing tests:**
|
|
69
|
+
```
|
|
70
|
+
We have basic tests in tests/e2e/profile-view.spec.ts
|
|
71
|
+
Avoid duplicating that coverage
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
TEA will analyze your artifacts and generate comprehensive tests that:
|
|
75
|
+
- Cover acceptance criteria from the story
|
|
76
|
+
- Follow priorities from test design (P0 → P1 → P2)
|
|
77
|
+
- Avoid duplicating existing tests
|
|
78
|
+
- Include edge cases and error scenarios
|
|
79
|
+
|
|
80
|
+
#### Option B: Standalone Mode
|
|
81
|
+
|
|
82
|
+
If you're using TEA Solo or don't have BMad artifacts:
|
|
83
|
+
|
|
84
|
+
**What are you testing?**
|
|
85
|
+
```
|
|
86
|
+
TodoMVC React application at https://todomvc.com/examples/react/dist/
|
|
87
|
+
Features: Create todos, mark as complete, filter by status, delete todos
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Specific scenarios to cover:**
|
|
91
|
+
```
|
|
92
|
+
- Creating todos (happy path)
|
|
93
|
+
- Marking todos as complete/incomplete
|
|
94
|
+
- Filtering (All, Active, Completed)
|
|
95
|
+
- Deleting todos
|
|
96
|
+
- Edge cases (empty input, long text)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
TEA will analyze the application and generate tests based on your description.
|
|
100
|
+
|
|
101
|
+
### 4. Specify Test Levels
|
|
102
|
+
|
|
103
|
+
TEA will ask which test levels to generate:
|
|
104
|
+
|
|
105
|
+
**Options:**
|
|
106
|
+
- **E2E tests** - Full browser-based user workflows
|
|
107
|
+
- **API tests** - Backend endpoint testing (faster, more reliable)
|
|
108
|
+
- **Component tests** - UI component testing in isolation (framework-dependent)
|
|
109
|
+
- **Mix** - Combination of levels (recommended)
|
|
110
|
+
|
|
111
|
+
**Example response:**
|
|
112
|
+
```
|
|
113
|
+
Generate:
|
|
114
|
+
- API tests for all CRUD operations
|
|
115
|
+
- E2E tests for critical user workflows (P0)
|
|
116
|
+
- Focus on P0 and P1 scenarios
|
|
117
|
+
- Skip P3 (low priority edge cases)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 5. Review Generated Tests
|
|
121
|
+
|
|
122
|
+
TEA generates a comprehensive test suite with multiple test levels.
|
|
123
|
+
|
|
124
|
+
#### API Tests (`tests/api/profile.spec.ts`):
|
|
125
|
+
|
|
126
|
+
**Vanilla Playwright:**
|
|
127
|
+
```typescript
|
|
128
|
+
import { test, expect } from '@playwright/test';
|
|
129
|
+
|
|
130
|
+
test.describe('Profile API', () => {
|
|
131
|
+
let authToken: string;
|
|
132
|
+
|
|
133
|
+
test.beforeAll(async ({ request }) => {
|
|
134
|
+
// Manual auth token fetch
|
|
135
|
+
const response = await request.post('/api/auth/login', {
|
|
136
|
+
data: { email: 'test@example.com', password: 'password123' }
|
|
137
|
+
});
|
|
138
|
+
const { token } = await response.json();
|
|
139
|
+
authToken = token;
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
test('should fetch user profile', async ({ request }) => {
|
|
143
|
+
const response = await request.get('/api/profile', {
|
|
144
|
+
headers: { Authorization: `Bearer ${authToken}` }
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
expect(response.ok()).toBeTruthy();
|
|
148
|
+
const profile = await response.json();
|
|
149
|
+
expect(profile).toMatchObject({
|
|
150
|
+
id: expect.any(String),
|
|
151
|
+
name: expect.any(String),
|
|
152
|
+
email: expect.any(String)
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
test('should update profile successfully', async ({ request }) => {
|
|
157
|
+
const response = await request.patch('/api/profile', {
|
|
158
|
+
headers: { Authorization: `Bearer ${authToken}` },
|
|
159
|
+
data: {
|
|
160
|
+
name: 'Updated Name',
|
|
161
|
+
bio: 'Test bio'
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
expect(response.ok()).toBeTruthy();
|
|
166
|
+
const updated = await response.json();
|
|
167
|
+
expect(updated.name).toBe('Updated Name');
|
|
168
|
+
expect(updated.bio).toBe('Test bio');
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
test('should validate email format', async ({ request }) => {
|
|
172
|
+
const response = await request.patch('/api/profile', {
|
|
173
|
+
headers: { Authorization: `Bearer ${authToken}` },
|
|
174
|
+
data: { email: 'invalid-email' }
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
expect(response.status()).toBe(400);
|
|
178
|
+
const error = await response.json();
|
|
179
|
+
expect(error.message).toContain('Invalid email');
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
test('should require authentication', async ({ request }) => {
|
|
183
|
+
const response = await request.get('/api/profile');
|
|
184
|
+
expect(response.status()).toBe(401);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**With Playwright Utils:**
|
|
190
|
+
```typescript
|
|
191
|
+
import { test as base, expect } from '@playwright/test';
|
|
192
|
+
import { test as apiRequestFixture } from '@seontechnologies/playwright-utils/api-request/fixtures';
|
|
193
|
+
import { createAuthFixtures } from '@seontechnologies/playwright-utils/auth-session';
|
|
194
|
+
import { mergeTests } from '@playwright/test';
|
|
195
|
+
import { z } from 'zod';
|
|
196
|
+
|
|
197
|
+
const ProfileSchema = z.object({
|
|
198
|
+
id: z.string(),
|
|
199
|
+
name: z.string(),
|
|
200
|
+
email: z.string().email()
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
// Merge API and auth fixtures
|
|
204
|
+
const authFixtureTest = base.extend(createAuthFixtures());
|
|
205
|
+
export const testWithAuth = mergeTests(apiRequestFixture, authFixtureTest);
|
|
206
|
+
|
|
207
|
+
testWithAuth.describe('Profile API', () => {
|
|
208
|
+
testWithAuth('should fetch user profile', async ({ apiRequest, authToken }) => {
|
|
209
|
+
const { status, body } = await apiRequest({
|
|
210
|
+
method: 'GET',
|
|
211
|
+
path: '/api/profile',
|
|
212
|
+
headers: { Authorization: `Bearer ${authToken}` }
|
|
213
|
+
}).validateSchema(ProfileSchema); // Chained validation
|
|
214
|
+
|
|
215
|
+
expect(status).toBe(200);
|
|
216
|
+
// Schema already validated, type-safe access
|
|
217
|
+
expect(body.name).toBeDefined();
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
testWithAuth('should update profile successfully', async ({ apiRequest, authToken }) => {
|
|
221
|
+
const { status, body } = await apiRequest({
|
|
222
|
+
method: 'PATCH',
|
|
223
|
+
path: '/api/profile',
|
|
224
|
+
body: { name: 'Updated Name', bio: 'Test bio' },
|
|
225
|
+
headers: { Authorization: `Bearer ${authToken}` }
|
|
226
|
+
}).validateSchema(ProfileSchema); // Chained validation
|
|
227
|
+
|
|
228
|
+
expect(status).toBe(200);
|
|
229
|
+
expect(body.name).toBe('Updated Name');
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
testWithAuth('should validate email format', async ({ apiRequest, authToken }) => {
|
|
233
|
+
const { status, body } = await apiRequest({
|
|
234
|
+
method: 'PATCH',
|
|
235
|
+
path: '/api/profile',
|
|
236
|
+
body: { email: 'invalid-email' },
|
|
237
|
+
headers: { Authorization: `Bearer ${authToken}` }
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
expect(status).toBe(400);
|
|
241
|
+
expect(body.message).toContain('Invalid email');
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Key Differences:**
|
|
247
|
+
- `authToken` fixture (persisted, reused across tests)
|
|
248
|
+
- `apiRequest` returns `{ status, body }` (cleaner)
|
|
249
|
+
- Schema validation with Zod (type-safe)
|
|
250
|
+
- Automatic retry for 5xx errors
|
|
251
|
+
- Less boilerplate (no manual `await response.json()` everywhere)
|
|
252
|
+
|
|
253
|
+
#### E2E Tests (`tests/e2e/profile.spec.ts`):
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
import { test, expect } from '@playwright/test';
|
|
257
|
+
|
|
258
|
+
test('should edit profile', async ({ page }) => {
|
|
259
|
+
// Login
|
|
260
|
+
await page.goto('/login');
|
|
261
|
+
await page.getByLabel('Email').fill('test@example.com');
|
|
262
|
+
await page.getByLabel('Password').fill('password123');
|
|
263
|
+
await page.getByRole('button', { name: 'Sign in' }).click();
|
|
264
|
+
|
|
265
|
+
// Edit profile
|
|
266
|
+
await page.goto('/profile');
|
|
267
|
+
await page.getByRole('button', { name: 'Edit Profile' }).click();
|
|
268
|
+
await page.getByLabel('Name').fill('New Name');
|
|
269
|
+
await page.getByRole('button', { name: 'Save' }).click();
|
|
270
|
+
|
|
271
|
+
// Verify success
|
|
272
|
+
await expect(page.getByText('Profile updated')).toBeVisible();
|
|
273
|
+
});
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
TEA generates additional tests for validation, edge cases, etc. based on priorities.
|
|
277
|
+
|
|
278
|
+
#### Fixtures (`tests/support/fixtures/profile.ts`):
|
|
279
|
+
|
|
280
|
+
**Vanilla Playwright:**
|
|
281
|
+
```typescript
|
|
282
|
+
import { test as base, Page } from '@playwright/test';
|
|
283
|
+
|
|
284
|
+
type ProfileFixtures = {
|
|
285
|
+
authenticatedPage: Page;
|
|
286
|
+
testProfile: {
|
|
287
|
+
name: string;
|
|
288
|
+
email: string;
|
|
289
|
+
bio: string;
|
|
290
|
+
};
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
export const test = base.extend<ProfileFixtures>({
|
|
294
|
+
authenticatedPage: async ({ page }, use) => {
|
|
295
|
+
// Manual login flow
|
|
296
|
+
await page.goto('/login');
|
|
297
|
+
await page.getByLabel('Email').fill('test@example.com');
|
|
298
|
+
await page.getByLabel('Password').fill('password123');
|
|
299
|
+
await page.getByRole('button', { name: 'Sign in' }).click();
|
|
300
|
+
await page.waitForURL(/\/dashboard/);
|
|
301
|
+
|
|
302
|
+
await use(page);
|
|
303
|
+
},
|
|
304
|
+
|
|
305
|
+
testProfile: async ({ request }, use) => {
|
|
306
|
+
// Static test data
|
|
307
|
+
const profile = {
|
|
308
|
+
name: 'Test User',
|
|
309
|
+
email: 'test@example.com',
|
|
310
|
+
bio: 'Test bio'
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
await use(profile);
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**With Playwright Utils:**
|
|
319
|
+
```typescript
|
|
320
|
+
import { test as base } from '@playwright/test';
|
|
321
|
+
import { createAuthFixtures } from '@seontechnologies/playwright-utils/auth-session';
|
|
322
|
+
import { mergeTests } from '@playwright/test';
|
|
323
|
+
import { faker } from '@faker-js/faker';
|
|
324
|
+
|
|
325
|
+
type ProfileFixtures = {
|
|
326
|
+
testProfile: {
|
|
327
|
+
name: string;
|
|
328
|
+
email: string;
|
|
329
|
+
bio: string;
|
|
330
|
+
};
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
// Merge auth fixtures with custom fixtures
|
|
334
|
+
const authTest = base.extend(createAuthFixtures());
|
|
335
|
+
const profileTest = base.extend<ProfileFixtures>({
|
|
336
|
+
testProfile: async ({}, use) => {
|
|
337
|
+
// Dynamic test data with faker
|
|
338
|
+
const profile = {
|
|
339
|
+
name: faker.person.fullName(),
|
|
340
|
+
email: faker.internet.email(),
|
|
341
|
+
bio: faker.person.bio()
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
await use(profile);
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
export const test = mergeTests(authTest, profileTest);
|
|
349
|
+
export { expect } from '@playwright/test';
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Usage:**
|
|
353
|
+
```typescript
|
|
354
|
+
import { test, expect } from '../support/fixtures/profile';
|
|
355
|
+
|
|
356
|
+
test('should update profile', async ({ page, authToken, testProfile }) => {
|
|
357
|
+
// authToken from auth-session (automatic, persisted)
|
|
358
|
+
// testProfile from custom fixture (dynamic data)
|
|
359
|
+
|
|
360
|
+
await page.goto('/profile');
|
|
361
|
+
// Test with dynamic, unique data
|
|
362
|
+
});
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
**Key Benefits:**
|
|
366
|
+
- `authToken` fixture (persisted token, no manual login)
|
|
367
|
+
- Dynamic test data with faker (no conflicts)
|
|
368
|
+
- Fixture composition with mergeTests
|
|
369
|
+
- Reusable across test files
|
|
370
|
+
|
|
371
|
+
### 6. Review Additional Artifacts
|
|
372
|
+
|
|
373
|
+
TEA also generates:
|
|
374
|
+
|
|
375
|
+
#### Updated README (`tests/README.md`):
|
|
376
|
+
|
|
377
|
+
```markdown
|
|
378
|
+
# Test Suite
|
|
379
|
+
|
|
380
|
+
## Running Tests
|
|
381
|
+
|
|
382
|
+
### All Tests
|
|
383
|
+
npm test
|
|
384
|
+
|
|
385
|
+
### Specific Levels
|
|
386
|
+
npm run test:api # API tests only
|
|
387
|
+
npm run test:e2e # E2E tests only
|
|
388
|
+
npm run test:smoke # Smoke tests (@smoke tag)
|
|
389
|
+
|
|
390
|
+
### Single File
|
|
391
|
+
npx playwright test tests/api/profile.spec.ts
|
|
392
|
+
|
|
393
|
+
## Test Structure
|
|
394
|
+
|
|
395
|
+
tests/
|
|
396
|
+
├── api/ # API tests (fast, reliable)
|
|
397
|
+
├── e2e/ # E2E tests (full workflows)
|
|
398
|
+
├── fixtures/ # Shared test utilities
|
|
399
|
+
└── README.md
|
|
400
|
+
|
|
401
|
+
## Writing Tests
|
|
402
|
+
|
|
403
|
+
Follow the patterns in existing tests:
|
|
404
|
+
- Use fixtures for authentication
|
|
405
|
+
- Network-first patterns (no hard waits)
|
|
406
|
+
- Explicit assertions
|
|
407
|
+
- Self-cleaning tests
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
#### Definition of Done Summary:
|
|
411
|
+
|
|
412
|
+
```markdown
|
|
413
|
+
## Test Quality Checklist
|
|
414
|
+
|
|
415
|
+
✅ All tests pass on first run
|
|
416
|
+
✅ No hard waits (waitForTimeout)
|
|
417
|
+
✅ No conditionals for flow control
|
|
418
|
+
✅ Assertions are explicit
|
|
419
|
+
✅ Tests clean up after themselves
|
|
420
|
+
✅ Tests can run in parallel
|
|
421
|
+
✅ Execution time < 1.5 minutes per test
|
|
422
|
+
✅ Test files < 300 lines
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### 7. Run the Tests
|
|
426
|
+
|
|
427
|
+
All tests should pass immediately since the feature exists:
|
|
428
|
+
|
|
429
|
+
**For Playwright:**
|
|
430
|
+
```bash
|
|
431
|
+
npx playwright test
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
**For Cypress:**
|
|
435
|
+
```bash
|
|
436
|
+
npx cypress run
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
Expected output:
|
|
440
|
+
```
|
|
441
|
+
Running 15 tests using 4 workers
|
|
442
|
+
|
|
443
|
+
✓ tests/api/profile.spec.ts (4 tests) - 2.1s
|
|
444
|
+
✓ tests/e2e/profile-workflow.spec.ts (2 tests) - 5.3s
|
|
445
|
+
|
|
446
|
+
15 passed (7.4s)
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
**All green!** Tests pass because feature already exists.
|
|
450
|
+
|
|
451
|
+
### 8. Review Test Coverage
|
|
452
|
+
|
|
453
|
+
Check which scenarios are covered:
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
# View test report
|
|
457
|
+
npx playwright show-report
|
|
458
|
+
|
|
459
|
+
# Check coverage (if configured)
|
|
460
|
+
npm run test:coverage
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
Compare against:
|
|
464
|
+
- Acceptance criteria from story
|
|
465
|
+
- Test priorities from test design
|
|
466
|
+
- Edge cases and error scenarios
|
|
467
|
+
|
|
468
|
+
## What You Get
|
|
469
|
+
|
|
470
|
+
### Comprehensive Test Suite
|
|
471
|
+
- **API tests** - Fast, reliable backend testing
|
|
472
|
+
- **E2E tests** - Critical user workflows
|
|
473
|
+
- **Component tests** - UI component testing (if requested)
|
|
474
|
+
- **Fixtures** - Shared utilities and setup
|
|
475
|
+
|
|
476
|
+
### Component Testing by Framework
|
|
477
|
+
|
|
478
|
+
TEA supports component testing using framework-appropriate tools:
|
|
479
|
+
|
|
480
|
+
| Your Framework | Component Testing Tool | Tests Location |
|
|
481
|
+
| -------------- | ------------------------------ | ----------------------------------------- |
|
|
482
|
+
| **Cypress** | Cypress Component Testing | `tests/component/` |
|
|
483
|
+
| **Playwright** | Vitest + React Testing Library | `tests/component/` or `src/**/*.test.tsx` |
|
|
484
|
+
|
|
485
|
+
**Note:** Component tests use separate tooling from E2E tests:
|
|
486
|
+
- Cypress users: TEA generates Cypress Component Tests
|
|
487
|
+
- Playwright users: TEA generates Vitest + React Testing Library tests
|
|
488
|
+
|
|
489
|
+
### Quality Features
|
|
490
|
+
- **Network-first patterns** - Wait for actual responses, not timeouts
|
|
491
|
+
- **Deterministic tests** - No flakiness, no conditionals
|
|
492
|
+
- **Self-cleaning** - Tests don't leave test data behind
|
|
493
|
+
- **Parallel-safe** - Can run all tests concurrently
|
|
494
|
+
|
|
495
|
+
### Documentation
|
|
496
|
+
- **Updated README** - How to run tests
|
|
497
|
+
- **Test structure explanation** - Where tests live
|
|
498
|
+
- **Definition of Done** - Quality standards
|
|
499
|
+
|
|
500
|
+
## Tips
|
|
501
|
+
|
|
502
|
+
### Start with Test Design
|
|
503
|
+
|
|
504
|
+
Run `*test-design` before `*automate` for better results:
|
|
505
|
+
|
|
506
|
+
```
|
|
507
|
+
*test-design # Risk assessment, priorities
|
|
508
|
+
*automate # Generate tests based on priorities
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
TEA will focus on P0/P1 scenarios and skip low-value tests.
|
|
512
|
+
|
|
513
|
+
### Prioritize Test Levels
|
|
514
|
+
|
|
515
|
+
Not everything needs E2E tests:
|
|
516
|
+
|
|
517
|
+
**Good strategy:**
|
|
518
|
+
```
|
|
519
|
+
- P0 scenarios: API + E2E tests
|
|
520
|
+
- P1 scenarios: API tests only
|
|
521
|
+
- P2 scenarios: API tests (happy path)
|
|
522
|
+
- P3 scenarios: Skip or add later
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
**Why?**
|
|
526
|
+
- API tests are 10x faster than E2E
|
|
527
|
+
- API tests are more reliable (no browser flakiness)
|
|
528
|
+
- E2E tests reserved for critical user journeys
|
|
529
|
+
|
|
530
|
+
### Avoid Duplicate Coverage
|
|
531
|
+
|
|
532
|
+
Tell TEA about existing tests:
|
|
533
|
+
|
|
534
|
+
```
|
|
535
|
+
We already have tests in:
|
|
536
|
+
- tests/e2e/profile-view.spec.ts (viewing profile)
|
|
537
|
+
- tests/api/auth.spec.ts (authentication)
|
|
538
|
+
|
|
539
|
+
Don't duplicate that coverage
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
TEA will analyze existing tests and only generate new scenarios.
|
|
543
|
+
|
|
544
|
+
### MCP Enhancements (Optional)
|
|
545
|
+
|
|
546
|
+
If you have MCP servers configured (`tea_use_mcp_enhancements: true`), TEA can use them during `*automate` for:
|
|
547
|
+
|
|
548
|
+
- **Healing mode:** Fix broken selectors, update assertions, enhance with trace analysis
|
|
549
|
+
- **Recording mode:** Verify selectors with live browser, capture network requests
|
|
550
|
+
|
|
551
|
+
No prompts - TEA uses MCPs automatically when available. See [Enable MCP Enhancements](/docs/how-to/customization/enable-tea-mcp-enhancements.md) for setup.
|
|
552
|
+
|
|
553
|
+
### Generate Tests Incrementally
|
|
554
|
+
|
|
555
|
+
Don't generate all tests at once:
|
|
556
|
+
|
|
557
|
+
**Iteration 1:**
|
|
558
|
+
```
|
|
559
|
+
Generate P0 tests only (critical path)
|
|
560
|
+
Run: *automate
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
**Iteration 2:**
|
|
564
|
+
```
|
|
565
|
+
Generate P1 tests (high value scenarios)
|
|
566
|
+
Run: *automate
|
|
567
|
+
Tell TEA to avoid P0 coverage
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
**Iteration 3:**
|
|
571
|
+
```
|
|
572
|
+
Generate P2 tests (if time permits)
|
|
573
|
+
Run: *automate
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
This iterative approach:
|
|
577
|
+
- Provides fast feedback
|
|
578
|
+
- Allows validation before proceeding
|
|
579
|
+
- Keeps test generation focused
|
|
580
|
+
|
|
581
|
+
## Common Issues
|
|
582
|
+
|
|
583
|
+
### Tests Pass But Coverage Is Incomplete
|
|
584
|
+
|
|
585
|
+
**Problem:** Tests pass but don't cover all scenarios.
|
|
586
|
+
|
|
587
|
+
**Cause:** TEA wasn't given complete context.
|
|
588
|
+
|
|
589
|
+
**Solution:** Provide more details:
|
|
590
|
+
```
|
|
591
|
+
Generate tests for:
|
|
592
|
+
- All acceptance criteria in story-profile.md
|
|
593
|
+
- Error scenarios (validation, authorization)
|
|
594
|
+
- Edge cases (empty fields, long inputs)
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
### Too Many Tests Generated
|
|
598
|
+
|
|
599
|
+
**Problem:** TEA generated 50 tests for a simple feature.
|
|
600
|
+
|
|
601
|
+
**Cause:** Didn't specify priorities or scope.
|
|
602
|
+
|
|
603
|
+
**Solution:** Be specific:
|
|
604
|
+
```
|
|
605
|
+
Generate ONLY:
|
|
606
|
+
- P0 and P1 scenarios
|
|
607
|
+
- API tests for all scenarios
|
|
608
|
+
- E2E tests only for critical workflows
|
|
609
|
+
- Skip P2/P3 for now
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
### Tests Duplicate Existing Coverage
|
|
613
|
+
|
|
614
|
+
**Problem:** New tests cover the same scenarios as existing tests.
|
|
615
|
+
|
|
616
|
+
**Cause:** Didn't tell TEA about existing tests.
|
|
617
|
+
|
|
618
|
+
**Solution:** Specify existing coverage:
|
|
619
|
+
```
|
|
620
|
+
We already have these tests:
|
|
621
|
+
- tests/api/profile.spec.ts (GET /api/profile)
|
|
622
|
+
- tests/e2e/profile-view.spec.ts (viewing profile)
|
|
623
|
+
|
|
624
|
+
Generate tests for scenarios NOT covered by those files
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### MCP Enhancements for Better Selectors
|
|
628
|
+
|
|
629
|
+
If you have MCP servers configured, TEA verifies selectors against live browser. Otherwise, TEA generates accessible selectors (`getByRole`, `getByLabel`) by default.
|
|
630
|
+
|
|
631
|
+
Setup: Answer "Yes" to MCPs in BMad installer + configure MCP servers in your IDE. See [Enable MCP Enhancements](/docs/how-to/customization/enable-tea-mcp-enhancements.md).
|
|
632
|
+
|
|
633
|
+
## Related Guides
|
|
634
|
+
|
|
635
|
+
- [How to Run Test Design](/docs/how-to/workflows/run-test-design.md) - Plan before generating
|
|
636
|
+
- [How to Run ATDD](/docs/how-to/workflows/run-atdd.md) - Failing tests before implementation
|
|
637
|
+
- [How to Run Test Review](/docs/how-to/workflows/run-test-review.md) - Audit generated quality
|
|
638
|
+
|
|
639
|
+
## Understanding the Concepts
|
|
640
|
+
|
|
641
|
+
- [Testing as Engineering](/docs/explanation/philosophy/testing-as-engineering.md) - **Why TEA generates quality tests** (foundational)
|
|
642
|
+
- [Risk-Based Testing](/docs/explanation/tea/risk-based-testing.md) - Why prioritize P0 over P3
|
|
643
|
+
- [Test Quality Standards](/docs/explanation/tea/test-quality-standards.md) - What makes tests good
|
|
644
|
+
- [Fixture Architecture](/docs/explanation/tea/fixture-architecture.md) - Reusable test patterns
|
|
645
|
+
|
|
646
|
+
## Reference
|
|
647
|
+
|
|
648
|
+
- [Command: *automate](/docs/reference/tea/commands.md#automate) - Full command reference
|
|
649
|
+
- [TEA Configuration](/docs/reference/tea/configuration.md) - MCP and Playwright Utils options
|
|
650
|
+
|
|
651
|
+
---
|
|
652
|
+
|
|
653
|
+
Generated with [BMad Method](https://bmad-method.org) - TEA (Test Architect)
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "How to Run a Brainstorming Session"
|
|
3
|
+
description: How to run a brainstorming session using the BMad Method
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the `brainstorm-project` workflow to explore solution approaches through parallel ideation tracks.
|
|
7
|
+
|
|
8
|
+
## When to Use This
|
|
9
|
+
|
|
10
|
+
- Very vague or seed kernel of an idea that needs exploration
|
|
11
|
+
- Consider alternatives or enhancements to an idea
|
|
12
|
+
- See your idea from different angles and viewpoints
|
|
13
|
+
- No idea what you want to build, but want to find some inspiration
|
|
14
|
+
|
|
15
|
+
:::note[Prerequisites]
|
|
16
|
+
- BMad Method installed
|
|
17
|
+
- Analyst agent available
|
|
18
|
+
:::
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
### 1. Load the Analyst Agent
|
|
23
|
+
|
|
24
|
+
Start a fresh chat and load the Analyst agent.
|
|
25
|
+
|
|
26
|
+
### 2. Run the Brainstorm Workflow
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
*brainstorm-project
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 3. Describe Your Idea
|
|
33
|
+
|
|
34
|
+
Tell the agent about your project idea, even if it's vague:
|
|
35
|
+
|
|
36
|
+
- "I want to build something that helps developers manage their context"
|
|
37
|
+
- "I have a game idea about resource management"
|
|
38
|
+
- "I need a tool for my team but I'm not sure what exactly"
|
|
39
|
+
|
|
40
|
+
### 4. Explore the Tracks
|
|
41
|
+
|
|
42
|
+
The workflow generates solution approaches through parallel ideation tracks:
|
|
43
|
+
|
|
44
|
+
- **Architecture track** — Technical approaches and patterns
|
|
45
|
+
- **UX track** — User experience possibilities
|
|
46
|
+
- **Integration track** — How it connects with other systems
|
|
47
|
+
- **Value track** — Business value and differentiation
|
|
48
|
+
|
|
49
|
+
### 5. Evaluate Options
|
|
50
|
+
|
|
51
|
+
Review the generated options with rationale for each approach.
|
|
52
|
+
|
|
53
|
+
## What You Get
|
|
54
|
+
|
|
55
|
+
- Multiple solution approaches with trade-offs
|
|
56
|
+
- Different architectural options
|
|
57
|
+
- UX and integration considerations
|
|
58
|
+
- Clear rationale for each direction
|
|
59
|
+
|
|
60
|
+
## Tips
|
|
61
|
+
|
|
62
|
+
- **Don't worry about having a fully formed idea** — Vague is fine
|
|
63
|
+
- **Let the agent guide exploration** — Follow the prompts
|
|
64
|
+
- **Consider multiple tracks** — Don't settle on the first option
|
|
65
|
+
- **Use outputs as input for product-brief** — Build on brainstorming results
|
|
66
|
+
|
|
67
|
+
## Next Steps
|
|
68
|
+
|
|
69
|
+
After brainstorming:
|
|
70
|
+
|
|
71
|
+
1. **Research** — Validate ideas with market/technical research
|
|
72
|
+
2. **Product Brief** — Capture strategic vision
|
|
73
|
+
3. **PRD** — Move to formal planning
|