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,444 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Getting Started with Test Architect"
|
|
3
|
+
description: Learn Test Architect fundamentals by generating and running tests for an existing demo app in 30 minutes
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Welcome! **Test Architect (TEA) Lite** is the simplest way to get started with TEA - just use `*automate` to generate tests for existing features. Perfect for beginners who want to learn TEA fundamentals quickly.
|
|
7
|
+
|
|
8
|
+
## What You'll Build
|
|
9
|
+
|
|
10
|
+
By the end of this 30-minute tutorial, you'll have:
|
|
11
|
+
- A working Playwright test framework
|
|
12
|
+
- Your first risk-based test plan
|
|
13
|
+
- Passing tests for an existing demo app feature
|
|
14
|
+
|
|
15
|
+
:::note[Prerequisites]
|
|
16
|
+
- Node.js installed (v20 or later)
|
|
17
|
+
- 30 minutes of focused time
|
|
18
|
+
- We'll use TodoMVC (<https://todomvc.com/examples/react/>) as our demo app
|
|
19
|
+
:::
|
|
20
|
+
|
|
21
|
+
:::tip[Quick Path]
|
|
22
|
+
Load TEA (`*tea`) → scaffold framework (`*framework`) → create test plan (`*test-design`) → generate tests (`*automate`) → run with `npx playwright test`.
|
|
23
|
+
:::
|
|
24
|
+
|
|
25
|
+
## TEA Approaches Explained
|
|
26
|
+
|
|
27
|
+
Before we start, understand the three ways to use TEA:
|
|
28
|
+
|
|
29
|
+
- **TEA Lite** (this tutorial): Beginner using just `*automate` to test existing features
|
|
30
|
+
- **TEA Solo**: Using TEA standalone without full BMad Method integration
|
|
31
|
+
- **TEA Integrated**: Full BMad Method with all TEA workflows across phases
|
|
32
|
+
|
|
33
|
+
This tutorial focuses on **TEA Lite** - the fastest way to see TEA in action.
|
|
34
|
+
|
|
35
|
+
## Step 0: Setup (2 minutes)
|
|
36
|
+
|
|
37
|
+
We'll test TodoMVC, a standard demo app used across testing documentation.
|
|
38
|
+
|
|
39
|
+
**Demo App:** <https://todomvc.com/examples/react/dist/>
|
|
40
|
+
|
|
41
|
+
No installation needed - TodoMVC runs in your browser. Open the link above and:
|
|
42
|
+
1. Add a few todos (type and press Enter)
|
|
43
|
+
2. Mark some as complete (click checkbox)
|
|
44
|
+
3. Try the "All", "Active", "Completed" filters
|
|
45
|
+
|
|
46
|
+
You've just explored the features we'll test!
|
|
47
|
+
|
|
48
|
+
## Step 1: Install BMad and Scaffold Framework (10 minutes)
|
|
49
|
+
|
|
50
|
+
### Install BMad Method
|
|
51
|
+
|
|
52
|
+
Install BMad (see installation guide for latest command).
|
|
53
|
+
|
|
54
|
+
When prompted:
|
|
55
|
+
- **Select modules:** Choose "BMM: BMad Method" (press Space, then Enter)
|
|
56
|
+
- **Project name:** Keep default or enter your project name
|
|
57
|
+
- **Experience level:** Choose "beginner" for this tutorial
|
|
58
|
+
- **Planning artifacts folder:** Keep default
|
|
59
|
+
- **Implementation artifacts folder:** Keep default
|
|
60
|
+
- **Project knowledge folder:** Keep default
|
|
61
|
+
- **Enable TEA Playwright Model Context Protocol (MCP) enhancements?** Choose "No" for now (we'll explore this later)
|
|
62
|
+
- **Using playwright-utils?** Choose "No" for now (we'll explore this later)
|
|
63
|
+
|
|
64
|
+
BMad is now installed! You'll see a `_bmad/` folder in your project.
|
|
65
|
+
|
|
66
|
+
### Load TEA Agent
|
|
67
|
+
|
|
68
|
+
Start a new chat with your AI assistant (Claude, etc.) and type:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
*tea
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
This loads the Test Architect agent. You'll see TEA's menu with available workflows.
|
|
75
|
+
|
|
76
|
+
### Scaffold Test Framework
|
|
77
|
+
|
|
78
|
+
In your chat, run:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
*framework
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
TEA will ask you questions:
|
|
85
|
+
|
|
86
|
+
**Q: What's your tech stack?**
|
|
87
|
+
A: "We're testing a React web application (TodoMVC)"
|
|
88
|
+
|
|
89
|
+
**Q: Which test framework?**
|
|
90
|
+
A: "Playwright"
|
|
91
|
+
|
|
92
|
+
**Q: Testing scope?**
|
|
93
|
+
A: "End-to-end (E2E) testing for a web application"
|
|
94
|
+
|
|
95
|
+
**Q: Continuous integration/continuous deployment (CI/CD) platform?**
|
|
96
|
+
A: "GitHub Actions" (or your preference)
|
|
97
|
+
|
|
98
|
+
TEA will generate:
|
|
99
|
+
- `tests/` directory with Playwright config
|
|
100
|
+
- `playwright.config.ts` with base configuration
|
|
101
|
+
- Sample test structure
|
|
102
|
+
- `.env.example` for environment variables
|
|
103
|
+
- `.nvmrc` for Node version
|
|
104
|
+
|
|
105
|
+
**Verify the setup:**
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npm install
|
|
109
|
+
npx playwright install
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
You now have a production-ready test framework!
|
|
113
|
+
|
|
114
|
+
## Step 2: Your First Test Design (5 minutes)
|
|
115
|
+
|
|
116
|
+
Test design is where TEA shines - risk-based planning before writing tests.
|
|
117
|
+
|
|
118
|
+
### Run Test Design
|
|
119
|
+
|
|
120
|
+
In your chat with TEA, run:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
*test-design
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Q: System-level or epic-level?**
|
|
127
|
+
A: "Epic-level - I want to test TodoMVC's basic functionality"
|
|
128
|
+
|
|
129
|
+
**Q: What feature are you testing?**
|
|
130
|
+
A: "TodoMVC's core operations - creating, completing, and deleting todos"
|
|
131
|
+
|
|
132
|
+
**Q: Any specific risks or concerns?**
|
|
133
|
+
A: "We want to ensure the filter buttons (All, Active, Completed) work correctly"
|
|
134
|
+
|
|
135
|
+
TEA will analyze and create `test-design-epic-1.md` with:
|
|
136
|
+
|
|
137
|
+
1. **Risk Assessment**
|
|
138
|
+
- Probability × Impact scoring
|
|
139
|
+
- Risk categories (TECH, SEC, PERF, DATA, BUS, OPS)
|
|
140
|
+
- High-risk areas identified
|
|
141
|
+
|
|
142
|
+
2. **Test Priorities**
|
|
143
|
+
- P0: Critical path (creating and displaying todos)
|
|
144
|
+
- P1: High value (completing todos, filters)
|
|
145
|
+
- P2: Medium value (deleting todos)
|
|
146
|
+
- P3: Low value (edge cases)
|
|
147
|
+
|
|
148
|
+
3. **Coverage Strategy**
|
|
149
|
+
- E2E tests for user workflows
|
|
150
|
+
- Which scenarios need testing
|
|
151
|
+
- Suggested test structure
|
|
152
|
+
|
|
153
|
+
**Review the test design file** - notice how TEA provides a systematic approach to what needs testing and why.
|
|
154
|
+
|
|
155
|
+
## Step 3: Generate Tests for Existing Features (5 minutes)
|
|
156
|
+
|
|
157
|
+
Now the magic happens - TEA generates tests based on your test design.
|
|
158
|
+
|
|
159
|
+
### Run Automate
|
|
160
|
+
|
|
161
|
+
In your chat with TEA, run:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
*automate
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Q: What are you testing?**
|
|
168
|
+
A: "TodoMVC React app at <https://todomvc.com/examples/react/dist/> - focus on the test design we just created"
|
|
169
|
+
|
|
170
|
+
**Q: Reference existing docs?**
|
|
171
|
+
A: "Yes, use test-design-epic-1.md"
|
|
172
|
+
|
|
173
|
+
**Q: Any specific test scenarios?**
|
|
174
|
+
A: "Cover the P0 and P1 scenarios from the test design"
|
|
175
|
+
|
|
176
|
+
TEA will generate:
|
|
177
|
+
|
|
178
|
+
**`tests/e2e/todomvc.spec.ts`** with tests like:
|
|
179
|
+
```typescript
|
|
180
|
+
import { test, expect } from '@playwright/test';
|
|
181
|
+
|
|
182
|
+
test.describe('TodoMVC - Core Functionality', () => {
|
|
183
|
+
test.beforeEach(async ({ page }) => {
|
|
184
|
+
await page.goto('https://todomvc.com/examples/react/dist/');
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
test('should create a new todo', async ({ page }) => {
|
|
188
|
+
// TodoMVC uses a simple input without placeholder or test IDs
|
|
189
|
+
const todoInput = page.locator('.new-todo');
|
|
190
|
+
await todoInput.fill('Buy groceries');
|
|
191
|
+
await todoInput.press('Enter');
|
|
192
|
+
|
|
193
|
+
// Verify todo appears in list
|
|
194
|
+
await expect(page.locator('.todo-list li')).toContainText('Buy groceries');
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
test('should mark todo as complete', async ({ page }) => {
|
|
198
|
+
// Create a todo
|
|
199
|
+
const todoInput = page.locator('.new-todo');
|
|
200
|
+
await todoInput.fill('Complete tutorial');
|
|
201
|
+
await todoInput.press('Enter');
|
|
202
|
+
|
|
203
|
+
// Mark as complete using the toggle checkbox
|
|
204
|
+
await page.locator('.todo-list li .toggle').click();
|
|
205
|
+
|
|
206
|
+
// Verify completed state
|
|
207
|
+
await expect(page.locator('.todo-list li')).toHaveClass(/completed/);
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
test('should filter todos by status', async ({ page }) => {
|
|
211
|
+
// Create multiple todos
|
|
212
|
+
const todoInput = page.locator('.new-todo');
|
|
213
|
+
await todoInput.fill('Buy groceries');
|
|
214
|
+
await todoInput.press('Enter');
|
|
215
|
+
await todoInput.fill('Write tests');
|
|
216
|
+
await todoInput.press('Enter');
|
|
217
|
+
|
|
218
|
+
// Complete the first todo ("Buy groceries")
|
|
219
|
+
await page.locator('.todo-list li .toggle').first().click();
|
|
220
|
+
|
|
221
|
+
// Test Active filter (shows only incomplete todos)
|
|
222
|
+
await page.locator('.filters a[href="#/active"]').click();
|
|
223
|
+
await expect(page.locator('.todo-list li')).toHaveCount(1);
|
|
224
|
+
await expect(page.locator('.todo-list li')).toContainText('Write tests');
|
|
225
|
+
|
|
226
|
+
// Test Completed filter (shows only completed todos)
|
|
227
|
+
await page.locator('.filters a[href="#/completed"]').click();
|
|
228
|
+
await expect(page.locator('.todo-list li')).toHaveCount(1);
|
|
229
|
+
await expect(page.locator('.todo-list li')).toContainText('Buy groceries');
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
TEA also creates:
|
|
235
|
+
- **`tests/README.md`** - How to run tests, project conventions
|
|
236
|
+
- **Definition of Done summary** - What makes a test "good"
|
|
237
|
+
|
|
238
|
+
### With Playwright Utils (Optional Enhancement)
|
|
239
|
+
|
|
240
|
+
If you have `tea_use_playwright_utils: true` in your config, TEA generates tests using production-ready utilities:
|
|
241
|
+
|
|
242
|
+
**Vanilla Playwright:**
|
|
243
|
+
```typescript
|
|
244
|
+
test('should mark todo as complete', async ({ page, request }) => {
|
|
245
|
+
// Manual API call
|
|
246
|
+
const response = await request.post('/api/todos', {
|
|
247
|
+
data: { title: 'Complete tutorial' }
|
|
248
|
+
});
|
|
249
|
+
const todo = await response.json();
|
|
250
|
+
|
|
251
|
+
await page.goto('/');
|
|
252
|
+
await page.locator(`.todo-list li:has-text("${todo.title}") .toggle`).click();
|
|
253
|
+
await expect(page.locator('.todo-list li')).toHaveClass(/completed/);
|
|
254
|
+
});
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**With Playwright Utils:**
|
|
258
|
+
```typescript
|
|
259
|
+
import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
|
|
260
|
+
import { expect } from '@playwright/test';
|
|
261
|
+
|
|
262
|
+
test('should mark todo as complete', async ({ page, apiRequest }) => {
|
|
263
|
+
// Typed API call with cleaner syntax
|
|
264
|
+
const { status, body: todo } = await apiRequest({
|
|
265
|
+
method: 'POST',
|
|
266
|
+
path: '/api/todos',
|
|
267
|
+
body: { title: 'Complete tutorial' }
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
expect(status).toBe(201);
|
|
271
|
+
await page.goto('/');
|
|
272
|
+
await page.locator(`.todo-list li:has-text("${todo.title}") .toggle`).click();
|
|
273
|
+
await expect(page.locator('.todo-list li')).toHaveClass(/completed/);
|
|
274
|
+
});
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**Benefits:**
|
|
278
|
+
- Type-safe API responses (`{ status, body }`)
|
|
279
|
+
- Automatic retry for 5xx errors
|
|
280
|
+
- Built-in schema validation
|
|
281
|
+
- Cleaner, more maintainable code
|
|
282
|
+
|
|
283
|
+
See [Integrate Playwright Utils](/docs/how-to/customization/integrate-playwright-utils.md) to enable this.
|
|
284
|
+
|
|
285
|
+
## Step 4: Run and Validate (5 minutes)
|
|
286
|
+
|
|
287
|
+
Time to see your tests in action!
|
|
288
|
+
|
|
289
|
+
### Run the Tests
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
npx playwright test
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
You should see:
|
|
296
|
+
```
|
|
297
|
+
Running 3 tests using 1 worker
|
|
298
|
+
|
|
299
|
+
✓ tests/e2e/todomvc.spec.ts:7:3 › should create a new todo (2s)
|
|
300
|
+
✓ tests/e2e/todomvc.spec.ts:15:3 › should mark todo as complete (2s)
|
|
301
|
+
✓ tests/e2e/todomvc.spec.ts:30:3 › should filter todos by status (3s)
|
|
302
|
+
|
|
303
|
+
3 passed (7s)
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
All green! Your tests are passing against the existing TodoMVC app.
|
|
307
|
+
|
|
308
|
+
### View Test Report
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
npx playwright show-report
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
Opens a beautiful HTML report showing:
|
|
315
|
+
- Test execution timeline
|
|
316
|
+
- Screenshots (if any failures)
|
|
317
|
+
- Trace viewer for debugging
|
|
318
|
+
|
|
319
|
+
### What Just Happened?
|
|
320
|
+
|
|
321
|
+
You used **TEA Lite** to:
|
|
322
|
+
1. Scaffold a production-ready test framework (`*framework`)
|
|
323
|
+
2. Create a risk-based test plan (`*test-design`)
|
|
324
|
+
3. Generate comprehensive tests (`*automate`)
|
|
325
|
+
4. Run tests against an existing application
|
|
326
|
+
|
|
327
|
+
All in 30 minutes!
|
|
328
|
+
|
|
329
|
+
## What You Learned
|
|
330
|
+
|
|
331
|
+
Congratulations! You've completed the TEA Lite tutorial. You learned:
|
|
332
|
+
|
|
333
|
+
### Quick Reference
|
|
334
|
+
|
|
335
|
+
| Command | Purpose |
|
|
336
|
+
| -------------- | ------------------------------------ |
|
|
337
|
+
| `*tea` | Load the TEA agent |
|
|
338
|
+
| `*framework` | Scaffold test infrastructure |
|
|
339
|
+
| `*test-design` | Risk-based test planning |
|
|
340
|
+
| `*automate` | Generate tests for existing features |
|
|
341
|
+
|
|
342
|
+
### TEA Principles
|
|
343
|
+
- **Risk-based testing** - Depth scales with impact (P0 vs P3)
|
|
344
|
+
- **Test design first** - Plan before generating
|
|
345
|
+
- **Network-first patterns** - Tests wait for actual responses (no hard waits)
|
|
346
|
+
- **Production-ready from day one** - Not toy examples
|
|
347
|
+
|
|
348
|
+
:::tip[Key Takeaway]
|
|
349
|
+
TEA Lite (just `*automate`) is perfect for beginners learning TEA fundamentals, testing existing applications, quick test coverage expansion, and teams wanting fast results.
|
|
350
|
+
:::
|
|
351
|
+
|
|
352
|
+
## Understanding ATDD vs Automate
|
|
353
|
+
|
|
354
|
+
This tutorial used `*automate` to generate tests for **existing features** (tests pass immediately).
|
|
355
|
+
|
|
356
|
+
**When to use `*automate`:**
|
|
357
|
+
- Feature already exists
|
|
358
|
+
- Want to add test coverage
|
|
359
|
+
- Tests should pass on first run
|
|
360
|
+
|
|
361
|
+
**When to use `*atdd` (Acceptance Test-Driven Development):**
|
|
362
|
+
- Feature doesn't exist yet (Test-Driven Development workflow)
|
|
363
|
+
- Want failing tests BEFORE implementation
|
|
364
|
+
- Following red → green → refactor cycle
|
|
365
|
+
|
|
366
|
+
See [How to Run ATDD](/docs/how-to/workflows/run-atdd.md) for the test-drive development (TDD) approach.
|
|
367
|
+
|
|
368
|
+
## Next Steps
|
|
369
|
+
|
|
370
|
+
### Level Up Your TEA Skills
|
|
371
|
+
|
|
372
|
+
**How-To Guides** (task-oriented):
|
|
373
|
+
- [How to Run Test Design](/docs/how-to/workflows/run-test-design.md) - Deep dive into risk assessment
|
|
374
|
+
- [How to Run ATDD](/docs/how-to/workflows/run-atdd.md) - Generate failing tests first (TDD)
|
|
375
|
+
- [How to Set Up CI Pipeline](/docs/how-to/workflows/setup-ci.md) - Automate test execution
|
|
376
|
+
- [How to Review Test Quality](/docs/how-to/workflows/run-test-review.md) - Audit test quality
|
|
377
|
+
|
|
378
|
+
**Explanation** (understanding-oriented):
|
|
379
|
+
- [TEA Overview](/docs/explanation/features/tea-overview.md) - Complete TEA capabilities
|
|
380
|
+
- [Testing as Engineering](/docs/explanation/philosophy/testing-as-engineering.md) - **Why TEA exists** (problem + solution)
|
|
381
|
+
- [Risk-Based Testing](/docs/explanation/tea/risk-based-testing.md) - How risk scoring works
|
|
382
|
+
|
|
383
|
+
**Reference** (quick lookup):
|
|
384
|
+
- [TEA Command Reference](/docs/reference/tea/commands.md) - All 8 TEA workflows
|
|
385
|
+
- [TEA Configuration](/docs/reference/tea/configuration.md) - Config options
|
|
386
|
+
- [Glossary](/docs/reference/glossary/index.md) - TEA terminology
|
|
387
|
+
|
|
388
|
+
### Try TEA Solo
|
|
389
|
+
|
|
390
|
+
Ready for standalone usage without full BMad Method? Use TEA Solo:
|
|
391
|
+
- Run any TEA workflow independently
|
|
392
|
+
- Bring your own requirements
|
|
393
|
+
- Use on non-BMad projects
|
|
394
|
+
|
|
395
|
+
See [TEA Overview](/docs/explanation/features/tea-overview.md) for engagement models.
|
|
396
|
+
|
|
397
|
+
### Go Full TEA Integrated
|
|
398
|
+
|
|
399
|
+
Want the complete quality operating model? Try TEA Integrated with BMad Method:
|
|
400
|
+
- Phase 2: Planning with non-functional requirements (NFR) assessment
|
|
401
|
+
- Phase 3: Architecture testability review
|
|
402
|
+
- Phase 4: Per-epic test design → ATDD → automate
|
|
403
|
+
- Release Gate: Coverage traceability and gate decisions
|
|
404
|
+
|
|
405
|
+
See [BMad Method Documentation](/) for the full workflow.
|
|
406
|
+
|
|
407
|
+
## Common Questions
|
|
408
|
+
|
|
409
|
+
- [Why can't my tests find elements?](#why-cant-my-tests-find-elements)
|
|
410
|
+
- [How do I fix network timeouts?](#how-do-i-fix-network-timeouts)
|
|
411
|
+
|
|
412
|
+
### Why can't my tests find elements?
|
|
413
|
+
|
|
414
|
+
TodoMVC doesn't use test IDs or accessible roles consistently. The selectors in this tutorial use CSS classes that match TodoMVC's actual structure:
|
|
415
|
+
|
|
416
|
+
```typescript
|
|
417
|
+
// TodoMVC uses these CSS classes:
|
|
418
|
+
page.locator('.new-todo') // Input field
|
|
419
|
+
page.locator('.todo-list li') // Todo items
|
|
420
|
+
page.locator('.toggle') // Checkbox
|
|
421
|
+
|
|
422
|
+
// If testing your own app, prefer accessible selectors:
|
|
423
|
+
page.getByRole('textbox')
|
|
424
|
+
page.getByRole('listitem')
|
|
425
|
+
page.getByRole('checkbox')
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
In production code, use accessible selectors (`getByRole`, `getByLabel`, `getByText`) for better resilience. TodoMVC is used here for learning, not as a selector best practice example.
|
|
429
|
+
|
|
430
|
+
### How do I fix network timeouts?
|
|
431
|
+
|
|
432
|
+
Increase timeout in `playwright.config.ts`:
|
|
433
|
+
|
|
434
|
+
```typescript
|
|
435
|
+
use: {
|
|
436
|
+
timeout: 30000, // 30 seconds
|
|
437
|
+
}
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
## Getting Help
|
|
441
|
+
|
|
442
|
+
- **Documentation:** <https://docs.bmad-method.org>
|
|
443
|
+
- **GitHub Issues:** <https://github.com/bmad-code-org/bmad-method/issues>
|
|
444
|
+
- **Discord:** Join the BMAD community
|
|
Binary file
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import js from '@eslint/js';
|
|
2
|
+
import eslintConfigPrettier from 'eslint-config-prettier/flat';
|
|
3
|
+
import nodePlugin from 'eslint-plugin-n';
|
|
4
|
+
import unicorn from 'eslint-plugin-unicorn';
|
|
5
|
+
import yml from 'eslint-plugin-yml';
|
|
6
|
+
|
|
7
|
+
export default [
|
|
8
|
+
// Global ignores for files/folders that should not be linted
|
|
9
|
+
{
|
|
10
|
+
ignores: [
|
|
11
|
+
'dist/**',
|
|
12
|
+
'coverage/**',
|
|
13
|
+
'**/*.min.js',
|
|
14
|
+
'test/template-test-generator/**',
|
|
15
|
+
'test/template-test-generator/**/*.js',
|
|
16
|
+
'test/template-test-generator/**/*.md',
|
|
17
|
+
'test/fixtures/**',
|
|
18
|
+
'test/fixtures/**/*.yaml',
|
|
19
|
+
'_bmad/**',
|
|
20
|
+
'_bmad*/**',
|
|
21
|
+
// Build output
|
|
22
|
+
'build/**',
|
|
23
|
+
// Website uses ESM/Astro - separate linting ecosystem
|
|
24
|
+
'website/**',
|
|
25
|
+
// Gitignored patterns
|
|
26
|
+
'z*/**', // z-samples, z1, z2, etc.
|
|
27
|
+
'.claude/**',
|
|
28
|
+
'.codex/**',
|
|
29
|
+
'.github/chatmodes/**',
|
|
30
|
+
'.agent/**',
|
|
31
|
+
'.agentvibes/**',
|
|
32
|
+
'.kiro/**',
|
|
33
|
+
'.roo/**',
|
|
34
|
+
'test-project-install/**',
|
|
35
|
+
'sample-project/**',
|
|
36
|
+
'tools/template-test-generator/test-scenarios/**',
|
|
37
|
+
'src/modules/*/sub-modules/**',
|
|
38
|
+
'.bundler-temp/**',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
// Base JavaScript recommended rules
|
|
43
|
+
js.configs.recommended,
|
|
44
|
+
|
|
45
|
+
// Node.js rules
|
|
46
|
+
...nodePlugin.configs['flat/mixed-esm-and-cjs'],
|
|
47
|
+
|
|
48
|
+
// Unicorn rules (modern best practices)
|
|
49
|
+
unicorn.configs.recommended,
|
|
50
|
+
|
|
51
|
+
// YAML linting
|
|
52
|
+
...yml.configs['flat/recommended'],
|
|
53
|
+
|
|
54
|
+
// Place Prettier last to disable conflicting stylistic rules
|
|
55
|
+
eslintConfigPrettier,
|
|
56
|
+
|
|
57
|
+
// Project-specific tweaks
|
|
58
|
+
{
|
|
59
|
+
rules: {
|
|
60
|
+
// Allow console for CLI tools in this repo
|
|
61
|
+
'no-console': 'off',
|
|
62
|
+
// Enforce .yaml file extension for consistency
|
|
63
|
+
'yml/file-extension': [
|
|
64
|
+
'error',
|
|
65
|
+
{
|
|
66
|
+
extension: 'yaml',
|
|
67
|
+
caseSensitive: true,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
// Prefer double quotes in YAML wherever quoting is used, but allow the other to avoid escapes
|
|
71
|
+
'yml/quotes': [
|
|
72
|
+
'error',
|
|
73
|
+
{
|
|
74
|
+
prefer: 'double',
|
|
75
|
+
avoidEscape: true,
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
// Relax some Unicorn rules that are too opinionated for this codebase
|
|
79
|
+
'unicorn/prevent-abbreviations': 'off',
|
|
80
|
+
'unicorn/no-null': 'off',
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
// CLI scripts under tools/**, test/**, and src/core/lib/**
|
|
85
|
+
{
|
|
86
|
+
files: ['tools/**/*.js', 'tools/**/*.mjs', 'test/**/*.js', 'src/core/lib/**/*.js'],
|
|
87
|
+
rules: {
|
|
88
|
+
// Allow CommonJS patterns for Node CLI scripts
|
|
89
|
+
'unicorn/prefer-module': 'off',
|
|
90
|
+
'unicorn/import-style': 'off',
|
|
91
|
+
'unicorn/no-process-exit': 'off',
|
|
92
|
+
'n/no-process-exit': 'off',
|
|
93
|
+
'unicorn/no-await-expression-member': 'off',
|
|
94
|
+
'unicorn/prefer-top-level-await': 'off',
|
|
95
|
+
// Avoid failing CI on incidental unused vars in internal scripts
|
|
96
|
+
'no-unused-vars': 'off',
|
|
97
|
+
// Reduce style-only churn in internal tools
|
|
98
|
+
'unicorn/prefer-ternary': 'off',
|
|
99
|
+
'unicorn/filename-case': 'off',
|
|
100
|
+
'unicorn/no-array-reduce': 'off',
|
|
101
|
+
'unicorn/no-array-callback-reference': 'off',
|
|
102
|
+
'unicorn/consistent-function-scoping': 'off',
|
|
103
|
+
'n/no-extraneous-require': 'off',
|
|
104
|
+
'n/no-extraneous-import': 'off',
|
|
105
|
+
'n/no-unpublished-require': 'off',
|
|
106
|
+
'n/no-unpublished-import': 'off',
|
|
107
|
+
// Some scripts intentionally use globals provided at runtime
|
|
108
|
+
'no-undef': 'off',
|
|
109
|
+
// Additional relaxed rules for legacy/internal scripts
|
|
110
|
+
'no-useless-catch': 'off',
|
|
111
|
+
'unicorn/prefer-number-properties': 'off',
|
|
112
|
+
'no-unreachable': 'off',
|
|
113
|
+
'unicorn/text-encoding-identifier-case': 'off',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
// Module installer scripts use CommonJS for compatibility
|
|
118
|
+
{
|
|
119
|
+
files: ['**/_module-installer/**/*.js'],
|
|
120
|
+
rules: {
|
|
121
|
+
// Allow CommonJS patterns for installer scripts
|
|
122
|
+
'unicorn/prefer-module': 'off',
|
|
123
|
+
'n/no-missing-require': 'off',
|
|
124
|
+
'n/no-unpublished-require': 'off',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
|
|
128
|
+
// ESLint config file should not be checked for publish-related Node rules
|
|
129
|
+
{
|
|
130
|
+
files: ['eslint.config.mjs'],
|
|
131
|
+
rules: {
|
|
132
|
+
'n/no-unpublished-import': 'off',
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
// GitHub workflow files in this repo may use empty mapping values
|
|
137
|
+
{
|
|
138
|
+
files: ['.github/workflows/**/*.yaml'],
|
|
139
|
+
rules: {
|
|
140
|
+
'yml/no-empty-mapping-value': 'off',
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
// Other GitHub YAML files may intentionally use empty values and reserved filenames
|
|
145
|
+
{
|
|
146
|
+
files: ['.github/**/*.yaml'],
|
|
147
|
+
rules: {
|
|
148
|
+
'yml/no-empty-mapping-value': 'off',
|
|
149
|
+
'unicorn/filename-case': 'off',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
];
|