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.
Files changed (626) hide show
  1. package/.coderabbit.yaml +40 -0
  2. package/.githooks/post-checkout +129 -0
  3. package/.githooks/pre-commit +63 -0
  4. package/.githooks/pre-push +135 -0
  5. package/.github/CODE_OF_CONDUCT.md +128 -0
  6. package/.github/FUNDING.yaml +15 -0
  7. package/.github/ISSUE_TEMPLATE/config.yaml +8 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  9. package/.github/ISSUE_TEMPLATE/issue.md +32 -0
  10. package/.github/scripts/discord-helpers.sh +34 -0
  11. package/.github/workflows/bundle-latest.yaml +330 -0
  12. package/.github/workflows/discord.yaml +90 -0
  13. package/.github/workflows/docs.yaml +63 -0
  14. package/.github/workflows/manual-release.yaml +190 -0
  15. package/.github/workflows/publish-multi-artifact.yaml +54 -0
  16. package/.github/workflows/quality.yaml +115 -0
  17. package/.husky/pre-commit +20 -0
  18. package/.markdownlint-cli2.yaml +41 -0
  19. package/.nvmrc +1 -0
  20. package/.prettierignore +9 -0
  21. package/.vscode/settings.json +97 -0
  22. package/CHANGELOG.md +1394 -0
  23. package/CNAME +1 -0
  24. package/CONTRIBUTING.md +306 -0
  25. package/CONTRIBUTORS.md +32 -0
  26. package/LICENSE +30 -0
  27. package/README.md +126 -0
  28. package/SECURITY.md +85 -0
  29. package/TRADEMARK.md +55 -0
  30. package/Wordmark.png +0 -0
  31. package/banner-bmad-method.png +0 -0
  32. package/docs/404.md +9 -0
  33. package/docs/_README_WORKFLOW_DIAGRAMS.md +40 -0
  34. package/docs/_STYLE_GUIDE.md +367 -0
  35. package/docs/_archive/customize-workflows.md +30 -0
  36. package/docs/_archive/getting-started-bmadv4.md +247 -0
  37. package/docs/_archive/vendor-workflows.md +52 -0
  38. package/docs/downloads.md +72 -0
  39. package/docs/explanation/agents/barry-quick-flow.md +328 -0
  40. package/docs/explanation/agents/index.md +19 -0
  41. package/docs/explanation/architecture/four-phases.md +107 -0
  42. package/docs/explanation/architecture/preventing-agent-conflicts.md +111 -0
  43. package/docs/explanation/architecture/why-solutioning-matters.md +75 -0
  44. package/docs/explanation/bmm/index.md +131 -0
  45. package/docs/explanation/core/index.md +18 -0
  46. package/docs/explanation/core-concepts/agent-roles.md +179 -0
  47. package/docs/explanation/core-concepts/index.md +35 -0
  48. package/docs/explanation/core-concepts/what-are-agents.md +97 -0
  49. package/docs/explanation/core-concepts/what-are-modules.md +85 -0
  50. package/docs/explanation/core-concepts/what-are-workflows.md +204 -0
  51. package/docs/explanation/faq/brownfield-faq.md +73 -0
  52. package/docs/explanation/faq/getting-started-faq.md +67 -0
  53. package/docs/explanation/faq/implementation-faq.md +52 -0
  54. package/docs/explanation/faq/index.md +16 -0
  55. package/docs/explanation/faq/levels-and-tracks-faq.md +52 -0
  56. package/docs/explanation/faq/planning-faq.md +41 -0
  57. package/docs/explanation/faq/tools-faq.md +277 -0
  58. package/docs/explanation/faq/workflows-faq.md +61 -0
  59. package/docs/explanation/features/advanced-elicitation.md +95 -0
  60. package/docs/explanation/features/brainstorming-techniques.md +92 -0
  61. package/docs/explanation/features/party-mode.md +95 -0
  62. package/docs/explanation/features/quick-flow.md +149 -0
  63. package/docs/explanation/features/tea-overview.md +410 -0
  64. package/docs/explanation/features/web-bundles.md +34 -0
  65. package/docs/explanation/philosophy/facilitation-over-generation.md +333 -0
  66. package/docs/explanation/philosophy/testing-as-engineering.md +112 -0
  67. package/docs/explanation/tea/engagement-models.md +710 -0
  68. package/docs/explanation/tea/fixture-architecture.md +457 -0
  69. package/docs/explanation/tea/knowledge-base-system.md +554 -0
  70. package/docs/explanation/tea/network-first-patterns.md +853 -0
  71. package/docs/explanation/tea/risk-based-testing.md +586 -0
  72. package/docs/explanation/tea/test-quality-standards.md +907 -0
  73. package/docs/how-to/brownfield/add-feature-to-existing.md +74 -0
  74. package/docs/how-to/brownfield/document-existing-project.md +66 -0
  75. package/docs/how-to/brownfield/index.md +84 -0
  76. package/docs/how-to/brownfield/quick-fix-in-brownfield.md +77 -0
  77. package/docs/how-to/brownfield/use-tea-for-enterprise.md +526 -0
  78. package/docs/how-to/brownfield/use-tea-with-existing-tests.md +577 -0
  79. package/docs/how-to/customization/customize-agents.md +212 -0
  80. package/docs/how-to/customization/enable-tea-mcp-enhancements.md +424 -0
  81. package/docs/how-to/customization/index.md +23 -0
  82. package/docs/how-to/customization/integrate-playwright-utils.md +813 -0
  83. package/docs/how-to/customization/shard-large-documents.md +101 -0
  84. package/docs/how-to/get-answers-about-bmad.md +102 -0
  85. package/docs/how-to/installation/index.md +12 -0
  86. package/docs/how-to/installation/install-bmad.md +111 -0
  87. package/docs/how-to/installation/install-custom-modules.md +118 -0
  88. package/docs/how-to/installation/upgrade-to-v6.md +131 -0
  89. package/docs/how-to/workflows/bmgd-quick-flow.md +156 -0
  90. package/docs/how-to/workflows/conduct-research.md +97 -0
  91. package/docs/how-to/workflows/create-architecture.md +119 -0
  92. package/docs/how-to/workflows/create-epics-and-stories.md +109 -0
  93. package/docs/how-to/workflows/create-prd.md +91 -0
  94. package/docs/how-to/workflows/create-product-brief.md +94 -0
  95. package/docs/how-to/workflows/create-story.md +102 -0
  96. package/docs/how-to/workflows/create-ux-design.md +100 -0
  97. package/docs/how-to/workflows/implement-story.md +97 -0
  98. package/docs/how-to/workflows/quick-spec.md +122 -0
  99. package/docs/how-to/workflows/run-atdd.md +436 -0
  100. package/docs/how-to/workflows/run-automate.md +653 -0
  101. package/docs/how-to/workflows/run-brainstorming-session.md +73 -0
  102. package/docs/how-to/workflows/run-code-review.md +89 -0
  103. package/docs/how-to/workflows/run-implementation-readiness.md +125 -0
  104. package/docs/how-to/workflows/run-nfr-assess.md +679 -0
  105. package/docs/how-to/workflows/run-sprint-planning.md +94 -0
  106. package/docs/how-to/workflows/run-test-design.md +98 -0
  107. package/docs/how-to/workflows/run-test-review.md +605 -0
  108. package/docs/how-to/workflows/run-trace.md +883 -0
  109. package/docs/how-to/workflows/setup-ci.md +712 -0
  110. package/docs/how-to/workflows/setup-party-mode.md +89 -0
  111. package/docs/how-to/workflows/setup-test-framework.md +98 -0
  112. package/docs/index.md +63 -0
  113. package/docs/migration-guide.md +365 -0
  114. package/docs/multi-scope-guide.md +379 -0
  115. package/docs/plans/multi-scope-parallel-artifacts-plan.md +695 -0
  116. package/docs/reference/agents/index.md +109 -0
  117. package/docs/reference/configuration/core-tasks.md +67 -0
  118. package/docs/reference/configuration/global-config.md +28 -0
  119. package/docs/reference/glossary/index.md +159 -0
  120. package/docs/reference/tea/commands.md +254 -0
  121. package/docs/reference/tea/configuration.md +678 -0
  122. package/docs/reference/tea/knowledge-base.md +340 -0
  123. package/docs/reference/workflows/core-workflows.md +32 -0
  124. package/docs/reference/workflows/document-project.md +73 -0
  125. package/docs/reference/workflows/index.md +12 -0
  126. package/docs/tutorials/getting-started/getting-started-bmadv6.md +246 -0
  127. package/docs/tutorials/getting-started/images/workflow-method-greenfield.excalidraw +5034 -0
  128. package/docs/tutorials/getting-started/images/workflow-method-greenfield.svg +4 -0
  129. package/docs/tutorials/getting-started/images/workflow-overview.jpg +0 -0
  130. package/docs/tutorials/getting-started/tea-lite-quickstart.md +444 -0
  131. package/docs/tutorials/getting-started/workflow-overview.jpg +0 -0
  132. package/eslint.config.mjs +152 -0
  133. package/package.json +117 -0
  134. package/prettier.config.mjs +32 -0
  135. package/src/bmm/_module-installer/installer.js +48 -0
  136. package/src/bmm/_module-installer/platform-specifics/claude-code.js +35 -0
  137. package/src/bmm/_module-installer/platform-specifics/windsurf.js +32 -0
  138. package/src/bmm/agents/analyst.agent.yaml +41 -0
  139. package/src/bmm/agents/architect.agent.yaml +33 -0
  140. package/src/bmm/agents/dev.agent.yaml +38 -0
  141. package/src/bmm/agents/pm.agent.yaml +51 -0
  142. package/src/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
  143. package/src/bmm/agents/sm.agent.yaml +47 -0
  144. package/src/bmm/agents/tea.agent.yaml +68 -0
  145. package/src/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
  146. package/src/bmm/agents/tech-writer/tech-writer.agent.yaml +49 -0
  147. package/src/bmm/agents/ux-designer.agent.yaml +30 -0
  148. package/src/bmm/data/README.md +29 -0
  149. package/src/bmm/data/project-context-template.md +40 -0
  150. package/src/bmm/module.yaml +64 -0
  151. package/src/bmm/sub-modules/claude-code/config.yaml +4 -0
  152. package/src/bmm/sub-modules/claude-code/injections.yaml +242 -0
  153. package/src/bmm/sub-modules/claude-code/readme.md +87 -0
  154. package/src/bmm/teams/default-party.csv +21 -0
  155. package/src/bmm/teams/team-fullstack.yaml +12 -0
  156. package/src/bmm/testarch/knowledge/api-request.md +442 -0
  157. package/src/bmm/testarch/knowledge/api-testing-patterns.md +843 -0
  158. package/src/bmm/testarch/knowledge/auth-session.md +552 -0
  159. package/src/bmm/testarch/knowledge/burn-in.md +273 -0
  160. package/src/bmm/testarch/knowledge/ci-burn-in.md +675 -0
  161. package/src/bmm/testarch/knowledge/component-tdd.md +486 -0
  162. package/src/bmm/testarch/knowledge/contract-testing.md +957 -0
  163. package/src/bmm/testarch/knowledge/data-factories.md +500 -0
  164. package/src/bmm/testarch/knowledge/email-auth.md +721 -0
  165. package/src/bmm/testarch/knowledge/error-handling.md +725 -0
  166. package/src/bmm/testarch/knowledge/feature-flags.md +750 -0
  167. package/src/bmm/testarch/knowledge/file-utils.md +463 -0
  168. package/src/bmm/testarch/knowledge/fixture-architecture.md +401 -0
  169. package/src/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  170. package/src/bmm/testarch/knowledge/intercept-network-call.md +430 -0
  171. package/src/bmm/testarch/knowledge/log.md +429 -0
  172. package/src/bmm/testarch/knowledge/network-error-monitor.md +405 -0
  173. package/src/bmm/testarch/knowledge/network-first.md +486 -0
  174. package/src/bmm/testarch/knowledge/network-recorder.md +527 -0
  175. package/src/bmm/testarch/knowledge/nfr-criteria.md +670 -0
  176. package/src/bmm/testarch/knowledge/overview.md +286 -0
  177. package/src/bmm/testarch/knowledge/playwright-config.md +730 -0
  178. package/src/bmm/testarch/knowledge/probability-impact.md +601 -0
  179. package/src/bmm/testarch/knowledge/recurse.md +421 -0
  180. package/src/bmm/testarch/knowledge/risk-governance.md +615 -0
  181. package/src/bmm/testarch/knowledge/selective-testing.md +732 -0
  182. package/src/bmm/testarch/knowledge/selector-resilience.md +527 -0
  183. package/src/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
  184. package/src/bmm/testarch/knowledge/test-levels-framework.md +473 -0
  185. package/src/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
  186. package/src/bmm/testarch/knowledge/test-quality.md +664 -0
  187. package/src/bmm/testarch/knowledge/timing-debugging.md +372 -0
  188. package/src/bmm/testarch/knowledge/visual-debugging.md +524 -0
  189. package/src/bmm/testarch/tea-index.csv +34 -0
  190. package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  191. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
  192. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
  193. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
  194. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
  195. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
  196. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
  197. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +194 -0
  198. package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  199. package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
  200. package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
  201. package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
  202. package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
  203. package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
  204. package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
  205. package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  206. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  207. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
  208. package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  209. package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  210. package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  211. package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
  212. package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
  213. package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
  214. package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
  215. package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
  216. package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
  217. package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
  218. package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
  219. package/src/bmm/workflows/1-analysis/research/workflow.md +173 -0
  220. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
  221. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
  222. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
  223. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
  224. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
  225. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
  226. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
  227. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
  228. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  229. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
  230. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
  231. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
  232. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  233. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  234. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +228 -0
  235. package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
  236. package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
  237. package/src/bmm/workflows/2-plan-workflows/prd/data/domain-complexity.csv +13 -0
  238. package/src/bmm/workflows/2-plan-workflows/prd/data/prd-purpose.md +197 -0
  239. package/src/bmm/workflows/2-plan-workflows/prd/data/project-types.csv +11 -0
  240. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-01-init.md +191 -0
  241. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-01b-continue.md +153 -0
  242. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-02-discovery.md +224 -0
  243. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-03-success.md +226 -0
  244. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-04-journeys.md +213 -0
  245. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-05-domain.md +207 -0
  246. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-06-innovation.md +226 -0
  247. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-07-project-type.md +237 -0
  248. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-08-scoping.md +228 -0
  249. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-09-functional.md +231 -0
  250. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-10-nonfunctional.md +242 -0
  251. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-11-polish.md +217 -0
  252. package/src/bmm/workflows/2-plan-workflows/prd/steps-c/step-12-complete.md +180 -0
  253. package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-01-discovery.md +247 -0
  254. package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  255. package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-02-review.md +249 -0
  256. package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-03-edit.md +253 -0
  257. package/src/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-04-complete.md +168 -0
  258. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-01-discovery.md +218 -0
  259. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-02-format-detection.md +191 -0
  260. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-02b-parity-check.md +209 -0
  261. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-03-density-validation.md +174 -0
  262. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  263. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-05-measurability-validation.md +228 -0
  264. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-06-traceability-validation.md +217 -0
  265. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  266. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  267. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-09-project-type-validation.md +263 -0
  268. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-10-smart-validation.md +209 -0
  269. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  270. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-12-completeness-validation.md +242 -0
  271. package/src/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-13-report-complete.md +232 -0
  272. package/src/bmm/workflows/2-plan-workflows/prd/templates/prd-template.md +10 -0
  273. package/src/bmm/workflows/2-plan-workflows/prd/validation-report-prd-workflow.md +433 -0
  274. package/src/bmm/workflows/2-plan-workflows/prd/workflow.md +150 -0
  275. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
  276. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
  277. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
  278. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
  279. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
  280. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +133 -0
  281. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  282. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
  283. package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  284. package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  285. package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  286. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  287. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
  288. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
  289. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
  290. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
  291. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
  292. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
  293. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
  294. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +352 -0
  295. package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
  296. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
  297. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
  298. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
  299. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +145 -0
  300. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  301. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
  302. package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
  303. package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
  304. package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +51 -0
  305. package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
  306. package/src/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
  307. package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +60 -0
  308. package/src/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
  309. package/src/bmm/workflows/4-implementation/create-story/instructions.xml +345 -0
  310. package/src/bmm/workflows/4-implementation/create-story/template.md +49 -0
  311. package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +61 -0
  312. package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
  313. package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
  314. package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +27 -0
  315. package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
  316. package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +58 -0
  317. package/src/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
  318. package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
  319. package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  320. package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +54 -0
  321. package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  322. package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -0
  323. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
  324. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  325. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
  326. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  327. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  328. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
  329. package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +52 -0
  330. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +189 -0
  331. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +144 -0
  332. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
  333. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +191 -0
  334. package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
  335. package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
  336. package/src/bmm/workflows/document-project/checklist.md +245 -0
  337. package/src/bmm/workflows/document-project/documentation-requirements.csv +12 -0
  338. package/src/bmm/workflows/document-project/instructions.md +221 -0
  339. package/src/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
  340. package/src/bmm/workflows/document-project/templates/index-template.md +169 -0
  341. package/src/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
  342. package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  343. package/src/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
  344. package/src/bmm/workflows/document-project/workflow.yaml +30 -0
  345. package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  346. package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  347. package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  348. package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  349. package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  350. package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  351. package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  352. package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  353. package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
  354. package/src/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  355. package/src/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  356. package/src/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
  357. package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  358. package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  359. package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
  360. package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  361. package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  362. package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
  363. package/src/bmm/workflows/generate-project-context/project-context-template.md +21 -0
  364. package/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
  365. package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
  366. package/src/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
  367. package/src/bmm/workflows/generate-project-context/workflow.md +49 -0
  368. package/src/bmm/workflows/testarch/atdd/atdd-checklist-template.md +364 -0
  369. package/src/bmm/workflows/testarch/atdd/checklist.md +374 -0
  370. package/src/bmm/workflows/testarch/atdd/instructions.md +806 -0
  371. package/src/bmm/workflows/testarch/atdd/workflow.yaml +47 -0
  372. package/src/bmm/workflows/testarch/automate/checklist.md +582 -0
  373. package/src/bmm/workflows/testarch/automate/instructions.md +1324 -0
  374. package/src/bmm/workflows/testarch/automate/workflow.yaml +54 -0
  375. package/src/bmm/workflows/testarch/ci/checklist.md +248 -0
  376. package/src/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
  377. package/src/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
  378. package/src/bmm/workflows/testarch/ci/instructions.md +536 -0
  379. package/src/bmm/workflows/testarch/ci/workflow.yaml +47 -0
  380. package/src/bmm/workflows/testarch/framework/checklist.md +321 -0
  381. package/src/bmm/workflows/testarch/framework/instructions.md +481 -0
  382. package/src/bmm/workflows/testarch/framework/workflow.yaml +49 -0
  383. package/src/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
  384. package/src/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
  385. package/src/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +445 -0
  386. package/src/bmm/workflows/testarch/nfr-assess/workflow.yaml +49 -0
  387. package/src/bmm/workflows/testarch/test-design/checklist.md +235 -0
  388. package/src/bmm/workflows/testarch/test-design/instructions.md +788 -0
  389. package/src/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
  390. package/src/bmm/workflows/testarch/test-design/workflow.yaml +56 -0
  391. package/src/bmm/workflows/testarch/test-review/checklist.md +472 -0
  392. package/src/bmm/workflows/testarch/test-review/instructions.md +628 -0
  393. package/src/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
  394. package/src/bmm/workflows/testarch/test-review/workflow.yaml +48 -0
  395. package/src/bmm/workflows/testarch/trace/checklist.md +655 -0
  396. package/src/bmm/workflows/testarch/trace/instructions.md +1047 -0
  397. package/src/bmm/workflows/testarch/trace/trace-template.md +675 -0
  398. package/src/bmm/workflows/testarch/trace/workflow.yaml +57 -0
  399. package/src/bmm/workflows/workflow-status/init/instructions.md +346 -0
  400. package/src/bmm/workflows/workflow-status/init/workflow.yaml +30 -0
  401. package/src/bmm/workflows/workflow-status/instructions.md +397 -0
  402. package/src/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +103 -0
  403. package/src/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +100 -0
  404. package/src/bmm/workflows/workflow-status/paths/method-brownfield.yaml +103 -0
  405. package/src/bmm/workflows/workflow-status/paths/method-greenfield.yaml +100 -0
  406. package/src/bmm/workflows/workflow-status/project-levels.yaml +59 -0
  407. package/src/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
  408. package/src/bmm/workflows/workflow-status/workflow.yaml +32 -0
  409. package/src/core/_module-installer/installer.js +60 -0
  410. package/src/core/agents/bmad-master.agent.yaml +30 -0
  411. package/src/core/lib/scope/artifact-resolver.js +298 -0
  412. package/src/core/lib/scope/event-logger.js +400 -0
  413. package/src/core/lib/scope/index.js +30 -0
  414. package/src/core/lib/scope/scope-context.js +301 -0
  415. package/src/core/lib/scope/scope-initializer.js +456 -0
  416. package/src/core/lib/scope/scope-manager.js +512 -0
  417. package/src/core/lib/scope/scope-migrator.js +434 -0
  418. package/src/core/lib/scope/scope-sync.js +483 -0
  419. package/src/core/lib/scope/scope-validator.js +294 -0
  420. package/src/core/lib/scope/state-lock.js +336 -0
  421. package/src/core/module.yaml +53 -0
  422. package/src/core/resources/excalidraw/README.md +160 -0
  423. package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
  424. package/src/core/resources/excalidraw/library-loader.md +50 -0
  425. package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
  426. package/src/core/tasks/editorial-review-prose.xml +91 -0
  427. package/src/core/tasks/editorial-review-structure.xml +198 -0
  428. package/src/core/tasks/index-docs.xml +65 -0
  429. package/src/core/tasks/review-adversarial-general.xml +46 -0
  430. package/src/core/tasks/shard-doc.xml +109 -0
  431. package/src/core/tasks/workflow.xml +277 -0
  432. package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
  433. package/src/core/workflows/advanced-elicitation/workflow.xml +117 -0
  434. package/src/core/workflows/brainstorming/brain-methods.csv +62 -0
  435. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
  436. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
  437. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
  438. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
  439. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
  440. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
  441. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
  442. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
  443. package/src/core/workflows/brainstorming/template.md +15 -0
  444. package/src/core/workflows/brainstorming/workflow.md +58 -0
  445. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  446. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
  447. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +157 -0
  448. package/src/core/workflows/party-mode/workflow.md +194 -0
  449. package/src/utility/agent-components/activation-rules.txt +6 -0
  450. package/src/utility/agent-components/activation-steps.txt +28 -0
  451. package/src/utility/agent-components/agent-command-header.md +1 -0
  452. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  453. package/src/utility/agent-components/handler-action.txt +4 -0
  454. package/src/utility/agent-components/handler-data.txt +5 -0
  455. package/src/utility/agent-components/handler-exec.txt +19 -0
  456. package/src/utility/agent-components/handler-multi.txt +14 -0
  457. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  458. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  459. package/src/utility/agent-components/handler-workflow.txt +10 -0
  460. package/src/utility/agent-components/menu-handlers.txt +6 -0
  461. package/test/README.md +295 -0
  462. package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +27 -0
  463. package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +30 -0
  464. package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +22 -0
  465. package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +20 -0
  466. package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +25 -0
  467. package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +24 -0
  468. package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +25 -0
  469. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
  470. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
  471. package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +31 -0
  472. package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +25 -0
  473. package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +25 -0
  474. package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +25 -0
  475. package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +25 -0
  476. package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
  477. package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
  478. package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +27 -0
  479. package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
  480. package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +24 -0
  481. package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +27 -0
  482. package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +27 -0
  483. package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +24 -0
  484. package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +29 -0
  485. package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +31 -0
  486. package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +28 -0
  487. package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +28 -0
  488. package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
  489. package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +28 -0
  490. package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
  491. package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
  492. package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
  493. package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +24 -0
  494. package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +22 -0
  495. package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +27 -0
  496. package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +31 -0
  497. package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +22 -0
  498. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +38 -0
  499. package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +24 -0
  500. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
  501. package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +34 -0
  502. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
  503. package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +24 -0
  504. package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +24 -0
  505. package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +24 -0
  506. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
  507. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
  508. package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +24 -0
  509. package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +24 -0
  510. package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +22 -0
  511. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +28 -0
  512. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +30 -0
  513. package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +24 -0
  514. package/test/test-agent-schema.js +387 -0
  515. package/test/test-cli-integration.sh +159 -0
  516. package/test/test-installation-components.js +214 -0
  517. package/test/test-scope-e2e.js +439 -0
  518. package/test/test-scope-system.js +781 -0
  519. package/test/unit-test-schema.js +133 -0
  520. package/tools/bmad-npx-wrapper.js +38 -0
  521. package/tools/build-docs.js +577 -0
  522. package/tools/cli/README.md +7 -0
  523. package/tools/cli/bmad-cli.js +58 -0
  524. package/tools/cli/commands/install.js +87 -0
  525. package/tools/cli/commands/scope.js +474 -0
  526. package/tools/cli/external-official-modules.yaml +41 -0
  527. package/tools/cli/installers/install-messages.yaml +58 -0
  528. package/tools/cli/installers/lib/core/config-collector.js +1079 -0
  529. package/tools/cli/installers/lib/core/custom-module-cache.js +259 -0
  530. package/tools/cli/installers/lib/core/dependency-resolver.js +739 -0
  531. package/tools/cli/installers/lib/core/detector.js +223 -0
  532. package/tools/cli/installers/lib/core/ide-config-manager.js +156 -0
  533. package/tools/cli/installers/lib/core/installer.js +2585 -0
  534. package/tools/cli/installers/lib/core/manifest-generator.js +963 -0
  535. package/tools/cli/installers/lib/core/manifest.js +590 -0
  536. package/tools/cli/installers/lib/custom/handler.js +363 -0
  537. package/tools/cli/installers/lib/ide/_base-ide.js +654 -0
  538. package/tools/cli/installers/lib/ide/antigravity.js +486 -0
  539. package/tools/cli/installers/lib/ide/auggie.js +244 -0
  540. package/tools/cli/installers/lib/ide/claude-code.js +487 -0
  541. package/tools/cli/installers/lib/ide/cline.js +269 -0
  542. package/tools/cli/installers/lib/ide/codex.js +375 -0
  543. package/tools/cli/installers/lib/ide/crush.js +300 -0
  544. package/tools/cli/installers/lib/ide/cursor.js +169 -0
  545. package/tools/cli/installers/lib/ide/gemini.js +301 -0
  546. package/tools/cli/installers/lib/ide/github-copilot.js +383 -0
  547. package/tools/cli/installers/lib/ide/iflow.js +191 -0
  548. package/tools/cli/installers/lib/ide/kilo.js +250 -0
  549. package/tools/cli/installers/lib/ide/kiro-cli.js +326 -0
  550. package/tools/cli/installers/lib/ide/manager.js +244 -0
  551. package/tools/cli/installers/lib/ide/opencode.js +257 -0
  552. package/tools/cli/installers/lib/ide/qwen.js +372 -0
  553. package/tools/cli/installers/lib/ide/roo.js +270 -0
  554. package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
  555. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +96 -0
  556. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +158 -0
  557. package/tools/cli/installers/lib/ide/shared/module-injections.js +136 -0
  558. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +119 -0
  559. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +242 -0
  560. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +29 -0
  561. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
  562. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
  563. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +30 -0
  564. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +45 -0
  565. package/tools/cli/installers/lib/ide/trae.js +313 -0
  566. package/tools/cli/installers/lib/ide/windsurf.js +258 -0
  567. package/tools/cli/installers/lib/message-loader.js +85 -0
  568. package/tools/cli/installers/lib/modules/external-manager.js +133 -0
  569. package/tools/cli/installers/lib/modules/manager.js +1362 -0
  570. package/tools/cli/lib/activation-builder.js +163 -0
  571. package/tools/cli/lib/agent/compiler.js +522 -0
  572. package/tools/cli/lib/agent/installer.js +716 -0
  573. package/tools/cli/lib/agent/template-engine.js +152 -0
  574. package/tools/cli/lib/agent-analyzer.js +109 -0
  575. package/tools/cli/lib/agent-party-generator.js +194 -0
  576. package/tools/cli/lib/cli-utils.js +227 -0
  577. package/tools/cli/lib/config.js +213 -0
  578. package/tools/cli/lib/file-ops.js +204 -0
  579. package/tools/cli/lib/platform-codes.js +116 -0
  580. package/tools/cli/lib/project-root.js +77 -0
  581. package/tools/cli/lib/prompts.js +433 -0
  582. package/tools/cli/lib/ui.js +1591 -0
  583. package/tools/cli/lib/xml-handler.js +177 -0
  584. package/tools/cli/lib/xml-to-markdown.js +82 -0
  585. package/tools/cli/lib/yaml-format.js +245 -0
  586. package/tools/cli/lib/yaml-xml-builder.js +587 -0
  587. package/tools/cli/scripts/migrate-workflows.js +273 -0
  588. package/tools/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
  589. package/tools/docs/index.md +2 -0
  590. package/tools/fix-doc-links.js +288 -0
  591. package/tools/flattener/aggregate.js +76 -0
  592. package/tools/flattener/binary.js +80 -0
  593. package/tools/flattener/discovery.js +71 -0
  594. package/tools/flattener/files.js +35 -0
  595. package/tools/flattener/ignoreRules.js +172 -0
  596. package/tools/flattener/main.js +483 -0
  597. package/tools/flattener/projectRoot.js +201 -0
  598. package/tools/flattener/prompts.js +44 -0
  599. package/tools/flattener/stats.helpers.js +368 -0
  600. package/tools/flattener/stats.js +75 -0
  601. package/tools/flattener/test-matrix.js +409 -0
  602. package/tools/flattener/xml.js +82 -0
  603. package/tools/format-workflow-md.js +263 -0
  604. package/tools/lib/xml-utils.js +13 -0
  605. package/tools/maintainer/review-pr-README.md +55 -0
  606. package/tools/maintainer/review-pr.md +242 -0
  607. package/tools/migrate-custom-module-paths.js +124 -0
  608. package/tools/platform-codes.yaml +157 -0
  609. package/tools/schema/agent.js +493 -0
  610. package/tools/validate-agent-schema.js +110 -0
  611. package/tools/validate-doc-links.js +363 -0
  612. package/tools/validate-svg-changes.sh +356 -0
  613. package/website/README.md +76 -0
  614. package/website/astro.config.mjs +228 -0
  615. package/website/public/favicon.ico +0 -0
  616. package/website/public/img/bmad-dark.png +0 -0
  617. package/website/public/img/bmad-light.png +0 -0
  618. package/website/public/img/logo.svg +4 -0
  619. package/website/public/robots.txt +37 -0
  620. package/website/src/components/Banner.astro +59 -0
  621. package/website/src/components/Header.astro +121 -0
  622. package/website/src/components/MobileMenuFooter.astro +53 -0
  623. package/website/src/content/config.ts +6 -0
  624. package/website/src/lib/site-url.js +25 -0
  625. package/website/src/rehype-markdown-links.js +102 -0
  626. package/website/src/styles/custom.css +485 -0
@@ -0,0 +1,813 @@
1
+ ---
2
+ title: "Integrate Playwright Utils with TEA"
3
+ description: Add production-ready fixtures and utilities to your TEA-generated tests
4
+ ---
5
+
6
+ # Integrate Playwright Utils with TEA
7
+
8
+ Integrate `@seontechnologies/playwright-utils` with TEA to get production-ready fixtures, utilities, and patterns in your test suite.
9
+
10
+ ## What is Playwright Utils?
11
+
12
+ A production-ready utility library that provides:
13
+ - Typed API request helper
14
+ - Authentication session management
15
+ - Network recording and replay (HAR)
16
+ - Network request interception
17
+ - Async polling (recurse)
18
+ - Structured logging
19
+ - File validation (CSV, PDF, XLSX, ZIP)
20
+ - Burn-in testing utilities
21
+ - Network error monitoring
22
+
23
+ **Repository:** [https://github.com/seontechnologies/playwright-utils](https://github.com/seontechnologies/playwright-utils)
24
+
25
+ **npm Package:** `@seontechnologies/playwright-utils`
26
+
27
+ ## When to Use This
28
+
29
+ - You want production-ready fixtures (not DIY)
30
+ - Your team benefits from standardized patterns
31
+ - You need utilities like API testing, auth handling, network mocking
32
+ - You want TEA to generate tests using these utilities
33
+ - You're building reusable test infrastructure
34
+
35
+ **Don't use if:**
36
+ - You're just learning testing (keep it simple first)
37
+ - You have your own fixture library
38
+ - You don't need the utilities
39
+
40
+ ## Prerequisites
41
+
42
+ - BMad Method installed
43
+ - TEA agent available
44
+ - Test framework setup complete (Playwright)
45
+ - Node.js v18 or later
46
+
47
+ **Note:** Playwright Utils is for Playwright only (not Cypress).
48
+
49
+ ## Installation
50
+
51
+ ### Step 1: Install Package
52
+
53
+ ```bash
54
+ npm install -D @seontechnologies/playwright-utils
55
+ ```
56
+
57
+ ### Step 2: Enable in TEA Config
58
+
59
+ Edit `_bmad/bmm/config.yaml`:
60
+
61
+ ```yaml
62
+ tea_use_playwright_utils: true
63
+ ```
64
+
65
+ **Note:** If you enabled this during BMad installation, it's already set.
66
+
67
+ ### Step 3: Verify Installation
68
+
69
+ ```bash
70
+ # Check package installed
71
+ npm list @seontechnologies/playwright-utils
72
+
73
+ # Check TEA config
74
+ grep tea_use_playwright_utils _bmad/bmm/config.yaml
75
+ ```
76
+
77
+ Should show:
78
+ ```
79
+ @seontechnologies/playwright-utils@2.x.x
80
+ tea_use_playwright_utils: true
81
+ ```
82
+
83
+ ## What Changes When Enabled
84
+
85
+ ### *framework Workflow
86
+
87
+ **Vanilla Playwright:**
88
+ ```typescript
89
+ // Basic Playwright fixtures only
90
+ import { test, expect } from '@playwright/test';
91
+
92
+ test('api test', async ({ request }) => {
93
+ const response = await request.get('/api/users');
94
+ const users = await response.json();
95
+ expect(response.status()).toBe(200);
96
+ });
97
+ ```
98
+
99
+ **With Playwright Utils (Combined Fixtures):**
100
+ ```typescript
101
+ // All utilities available via single import
102
+ import { test } from '@seontechnologies/playwright-utils/fixtures';
103
+ import { expect } from '@playwright/test';
104
+
105
+ test('api test', async ({ apiRequest, authToken, log }) => {
106
+ const { status, body } = await apiRequest({
107
+ method: 'GET',
108
+ path: '/api/users',
109
+ headers: { Authorization: `Bearer ${authToken}` }
110
+ });
111
+
112
+ log.info('Fetched users', body);
113
+ expect(status).toBe(200);
114
+ });
115
+ ```
116
+
117
+ **With Playwright Utils (Selective Merge):**
118
+ ```typescript
119
+ import { mergeTests } from '@playwright/test';
120
+ import { test as apiRequestFixture } from '@seontechnologies/playwright-utils/api-request/fixtures';
121
+ import { test as logFixture } from '@seontechnologies/playwright-utils/log/fixtures';
122
+
123
+ export const test = mergeTests(apiRequestFixture, logFixture);
124
+ export { expect } from '@playwright/test';
125
+
126
+ test('api test', async ({ apiRequest, log }) => {
127
+ log.info('Fetching users');
128
+ const { status, body } = await apiRequest({
129
+ method: 'GET',
130
+ path: '/api/users'
131
+ });
132
+ expect(status).toBe(200);
133
+ });
134
+ ```
135
+
136
+ ### `*atdd` and `*automate` Workflows
137
+
138
+ **Without Playwright Utils:**
139
+ ```typescript
140
+ // Manual API calls
141
+ test('should fetch profile', async ({ page, request }) => {
142
+ const response = await request.get('/api/profile');
143
+ const profile = await response.json();
144
+ // Manual parsing and validation
145
+ });
146
+ ```
147
+
148
+ **With Playwright Utils:**
149
+ ```typescript
150
+ import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
151
+
152
+ test('should fetch profile', async ({ apiRequest }) => {
153
+ const { status, body } = await apiRequest({
154
+ method: 'GET',
155
+ path: '/api/profile' // 'path' not 'url'
156
+ }).validateSchema(ProfileSchema); // Chained validation
157
+
158
+ expect(status).toBe(200);
159
+ // body is type-safe: { id: string, name: string, email: string }
160
+ });
161
+ ```
162
+
163
+ ### *test-review Workflow
164
+
165
+ **Without Playwright Utils:**
166
+ Reviews against generic Playwright patterns
167
+
168
+ **With Playwright Utils:**
169
+ Reviews against playwright-utils best practices:
170
+ - Fixture composition patterns
171
+ - Utility usage (apiRequest, authSession, etc.)
172
+ - Network-first patterns
173
+ - Structured logging
174
+
175
+ ### *ci Workflow
176
+
177
+ **Without Playwright Utils:**
178
+ - Parallel sharding
179
+ - Burn-in loops (basic shell scripts)
180
+ - CI triggers (PR, push, schedule)
181
+ - Artifact collection
182
+
183
+ **With Playwright Utils:**
184
+ Enhanced with smart testing:
185
+ - Burn-in utility (git diff-based, volume control)
186
+ - Selective testing (skip config/docs/types changes)
187
+ - Test prioritization by file changes
188
+
189
+ ## Available Utilities
190
+
191
+ ### api-request
192
+
193
+ Typed HTTP client with schema validation.
194
+
195
+ **Official Docs:** <https://seontechnologies.github.io/playwright-utils/api-request.html>
196
+
197
+ **Why Use This?**
198
+
199
+ | Vanilla Playwright | api-request Utility |
200
+ |-------------------|---------------------|
201
+ | Manual `await response.json()` | Automatic JSON parsing |
202
+ | `response.status()` + separate body parsing | Returns `{ status, body }` structure |
203
+ | No built-in retry | Automatic retry for 5xx errors |
204
+ | No schema validation | Single-line `.validateSchema()` |
205
+ | Verbose status checking | Clean destructuring |
206
+
207
+ **Usage:**
208
+ ```typescript
209
+ import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
210
+ import { expect } from '@playwright/test';
211
+ import { z } from 'zod';
212
+
213
+ const UserSchema = z.object({
214
+ id: z.string(),
215
+ name: z.string(),
216
+ email: z.string().email()
217
+ });
218
+
219
+ test('should create user', async ({ apiRequest }) => {
220
+ const { status, body } = await apiRequest({
221
+ method: 'POST',
222
+ path: '/api/users', // Note: 'path' not 'url'
223
+ body: { name: 'Test User', email: 'test@example.com' } // Note: 'body' not 'data'
224
+ }).validateSchema(UserSchema); // Chained method (can await separately if needed)
225
+
226
+ expect(status).toBe(201);
227
+ expect(body.id).toBeDefined();
228
+ expect(body.email).toBe('test@example.com');
229
+ });
230
+ ```
231
+
232
+ **Benefits:**
233
+ - Returns `{ status, body }` structure
234
+ - Schema validation with `.validateSchema()` chained method
235
+ - Automatic retry for 5xx errors
236
+ - Type-safe response body
237
+
238
+ ### auth-session
239
+
240
+ Authentication session management with token persistence.
241
+
242
+ **Official Docs:** <https://seontechnologies.github.io/playwright-utils/auth-session.html>
243
+
244
+ **Why Use This?**
245
+
246
+ | Vanilla Playwright Auth | auth-session |
247
+ |------------------------|--------------|
248
+ | Re-authenticate every test run (slow) | Authenticate once, persist to disk |
249
+ | Single user per setup | Multi-user support (roles, accounts) |
250
+ | No token expiration handling | Automatic token renewal |
251
+ | Manual session management | Provider pattern (flexible auth) |
252
+
253
+ **Usage:**
254
+ ```typescript
255
+ import { test } from '@seontechnologies/playwright-utils/auth-session/fixtures';
256
+ import { expect } from '@playwright/test';
257
+
258
+ test('should access protected route', async ({ page, authToken }) => {
259
+ // authToken automatically fetched and persisted
260
+ // No manual login needed - handled by fixture
261
+
262
+ await page.goto('/dashboard');
263
+ await expect(page).toHaveURL('/dashboard');
264
+
265
+ // Token is reused across tests (persisted to disk)
266
+ });
267
+ ```
268
+
269
+ **Configuration required** (see auth-session docs for provider setup):
270
+ ```typescript
271
+ // global-setup.ts
272
+ import { authStorageInit, setAuthProvider, authGlobalInit } from '@seontechnologies/playwright-utils/auth-session';
273
+
274
+ async function globalSetup() {
275
+ authStorageInit();
276
+ setAuthProvider(myCustomProvider); // Define your auth mechanism
277
+ await authGlobalInit(); // Fetch token once
278
+ }
279
+ ```
280
+
281
+ **Benefits:**
282
+ - Token fetched once, reused across all tests
283
+ - Persisted to disk (faster subsequent runs)
284
+ - Multi-user support via `authOptions.userIdentifier`
285
+ - Automatic token renewal if expired
286
+
287
+ ### network-recorder
288
+
289
+ Record and replay network traffic (HAR) for offline testing.
290
+
291
+ **Official Docs:** <https://seontechnologies.github.io/playwright-utils/network-recorder.html>
292
+
293
+ **Why Use This?**
294
+
295
+ | Vanilla Playwright HAR | network-recorder |
296
+ |------------------------|------------------|
297
+ | Manual `routeFromHAR()` configuration | Automatic HAR management with `PW_NET_MODE` |
298
+ | Separate record/playback test files | Same test, switch env var |
299
+ | No CRUD detection | Stateful mocking (POST/PUT/DELETE work) |
300
+ | Manual HAR file paths | Auto-organized by test name |
301
+
302
+ **Usage:**
303
+ ```typescript
304
+ import { test } from '@seontechnologies/playwright-utils/network-recorder/fixtures';
305
+
306
+ // Record mode: Set environment variable
307
+ process.env.PW_NET_MODE = 'record';
308
+
309
+ test('should work with recorded traffic', async ({ page, context, networkRecorder }) => {
310
+ // Setup recorder (records or replays based on PW_NET_MODE)
311
+ await networkRecorder.setup(context);
312
+
313
+ // Your normal test code
314
+ await page.goto('/dashboard');
315
+ await page.click('#add-item');
316
+
317
+ // First run (record): Saves traffic to HAR file
318
+ // Subsequent runs (playback): Uses HAR file, no backend needed
319
+ });
320
+ ```
321
+
322
+ **Switch modes:**
323
+ ```bash
324
+ # Record traffic
325
+ PW_NET_MODE=record npx playwright test
326
+
327
+ # Playback traffic (offline)
328
+ PW_NET_MODE=playback npx playwright test
329
+ ```
330
+
331
+ **Benefits:**
332
+ - Offline testing (no backend needed)
333
+ - Deterministic responses (same every time)
334
+ - Faster execution (no network latency)
335
+ - Stateful mocking (CRUD operations work)
336
+
337
+ ### intercept-network-call
338
+
339
+ Spy or stub network requests with automatic JSON parsing.
340
+
341
+ **Official Docs:** <https://seontechnologies.github.io/playwright-utils/intercept-network-call.html>
342
+
343
+ **Why Use This?**
344
+
345
+ | Vanilla Playwright | interceptNetworkCall |
346
+ |-------------------|----------------------|
347
+ | Route setup + response waiting (separate steps) | Single declarative call |
348
+ | Manual `await response.json()` | Automatic JSON parsing (`responseJson`) |
349
+ | Complex filter predicates | Simple glob patterns (`**/api/**`) |
350
+ | Verbose syntax | Concise, readable API |
351
+
352
+ **Usage:**
353
+ ```typescript
354
+ import { test } from '@seontechnologies/playwright-utils/fixtures';
355
+
356
+ test('should handle API errors', async ({ page, interceptNetworkCall }) => {
357
+ // Stub API to return error (set up BEFORE navigation)
358
+ const profileCall = interceptNetworkCall({
359
+ method: 'GET',
360
+ url: '**/api/profile',
361
+ fulfillResponse: {
362
+ status: 500,
363
+ body: { error: 'Server error' }
364
+ }
365
+ });
366
+
367
+ await page.goto('/profile');
368
+
369
+ // Wait for the intercepted response
370
+ const { status, responseJson } = await profileCall;
371
+
372
+ expect(status).toBe(500);
373
+ expect(responseJson.error).toBe('Server error');
374
+ await expect(page.getByText('Server error occurred')).toBeVisible();
375
+ });
376
+ ```
377
+
378
+ **Benefits:**
379
+ - Automatic JSON parsing (`responseJson` ready to use)
380
+ - Spy mode (observe real traffic) or stub mode (mock responses)
381
+ - Glob pattern URL matching
382
+ - Returns promise with `{ status, responseJson, requestJson }`
383
+
384
+ ### recurse
385
+
386
+ Async polling for eventual consistency (Cypress-style).
387
+
388
+ **Official Docs:** <https://seontechnologies.github.io/playwright-utils/recurse.html>
389
+
390
+ **Why Use This?**
391
+
392
+ | Manual Polling | recurse Utility |
393
+ |----------------|-----------------|
394
+ | `while` loops with `waitForTimeout` | Smart polling with exponential backoff |
395
+ | Hard-coded retry logic | Configurable timeout/interval |
396
+ | No logging visibility | Optional logging with custom messages |
397
+ | Verbose, error-prone | Clean, readable API |
398
+
399
+ **Usage:**
400
+ ```typescript
401
+ import { test } from '@seontechnologies/playwright-utils/fixtures';
402
+
403
+ test('should wait for async job completion', async ({ apiRequest, recurse }) => {
404
+ // Start async job
405
+ const { body: job } = await apiRequest({
406
+ method: 'POST',
407
+ path: '/api/jobs'
408
+ });
409
+
410
+ // Poll until complete (smart waiting)
411
+ const completed = await recurse(
412
+ () => apiRequest({ method: 'GET', path: `/api/jobs/${job.id}` }),
413
+ (result) => result.body.status === 'completed',
414
+ {
415
+ timeout: 30000,
416
+ interval: 2000,
417
+ log: 'Waiting for job to complete'
418
+ }
419
+ });
420
+
421
+ expect(completed.body.status).toBe('completed');
422
+ });
423
+ ```
424
+
425
+ **Benefits:**
426
+ - Smart polling with configurable interval
427
+ - Handles async jobs, background tasks
428
+ - Optional logging for debugging
429
+ - Better than hard waits or manual polling loops
430
+
431
+ ### log
432
+
433
+ Structured logging that integrates with Playwright reports.
434
+
435
+ **Official Docs:** <https://seontechnologies.github.io/playwright-utils/log.html>
436
+
437
+ **Why Use This?**
438
+
439
+ | Console.log / print | log Utility |
440
+ |--------------------|-------------|
441
+ | Not in test reports | Integrated with Playwright reports |
442
+ | No step visualization | `.step()` shows in Playwright UI |
443
+ | Manual object formatting | Logs objects seamlessly |
444
+ | No structured output | JSON artifacts for debugging |
445
+
446
+ **Usage:**
447
+ ```typescript
448
+ import { log } from '@seontechnologies/playwright-utils';
449
+ import { test, expect } from '@playwright/test';
450
+
451
+ test('should login', async ({ page }) => {
452
+ await log.info('Starting login test');
453
+
454
+ await page.goto('/login');
455
+ await log.step('Navigated to login page'); // Shows in Playwright UI
456
+
457
+ await page.getByLabel('Email').fill('test@example.com');
458
+ await log.debug('Filled email field');
459
+
460
+ await log.success('Login completed');
461
+ // Logs appear in test output and Playwright reports
462
+ });
463
+ ```
464
+
465
+ **Benefits:**
466
+ - Direct import (no fixture needed for basic usage)
467
+ - Structured logs in test reports
468
+ - `.step()` shows in Playwright UI
469
+ - Logs objects seamlessly (no special handling needed)
470
+ - Trace test execution
471
+
472
+ ### file-utils
473
+
474
+ Read and validate CSV, PDF, XLSX, ZIP files.
475
+
476
+ **Official Docs:** <https://seontechnologies.github.io/playwright-utils/file-utils.html>
477
+
478
+ **Why Use This?**
479
+
480
+ | Vanilla Playwright | file-utils |
481
+ |-------------------|------------|
482
+ | ~80 lines per CSV flow | ~10 lines end-to-end |
483
+ | Manual download event handling | `handleDownload()` encapsulates all |
484
+ | External parsing libraries | Auto-parsing (CSV, XLSX, PDF, ZIP) |
485
+ | No validation helpers | Built-in validation (headers, row count) |
486
+
487
+ **Usage:**
488
+ ```typescript
489
+ import { handleDownload, readCSV } from '@seontechnologies/playwright-utils/file-utils';
490
+ import { expect } from '@playwright/test';
491
+ import path from 'node:path';
492
+
493
+ const DOWNLOAD_DIR = path.join(__dirname, '../downloads');
494
+
495
+ test('should export valid CSV', async ({ page }) => {
496
+ // Handle download and get file path
497
+ const downloadPath = await handleDownload({
498
+ page,
499
+ downloadDir: DOWNLOAD_DIR,
500
+ trigger: () => page.click('button:has-text("Export")')
501
+ });
502
+
503
+ // Read and parse CSV
504
+ const csvResult = await readCSV({ filePath: downloadPath });
505
+ const { data, headers } = csvResult.content;
506
+
507
+ // Validate structure
508
+ expect(headers).toEqual(['Name', 'Email', 'Status']);
509
+ expect(data.length).toBeGreaterThan(0);
510
+ expect(data[0]).toMatchObject({
511
+ Name: expect.any(String),
512
+ Email: expect.any(String),
513
+ Status: expect.any(String)
514
+ });
515
+ });
516
+ ```
517
+
518
+ **Benefits:**
519
+ - Handles downloads automatically
520
+ - Auto-parses CSV, XLSX, PDF, ZIP
521
+ - Type-safe access to parsed data
522
+ - Returns structured `{ headers, data }`
523
+
524
+ ### burn-in
525
+
526
+ Smart test selection with git diff analysis for CI optimization.
527
+
528
+ **Official Docs:** <https://seontechnologies.github.io/playwright-utils/burn-in.html>
529
+
530
+ **Why Use This?**
531
+
532
+ | Playwright `--only-changed` | burn-in Utility |
533
+ |-----------------------------|-----------------|
534
+ | Config changes trigger all tests | Smart filtering (skip configs, types, docs) |
535
+ | All or nothing | Volume control (run percentage) |
536
+ | No customization | Custom dependency analysis |
537
+ | Slow CI on minor changes | Fast CI with intelligent selection |
538
+
539
+ **Usage:**
540
+ ```typescript
541
+ // scripts/burn-in-changed.ts
542
+ import { runBurnIn } from '@seontechnologies/playwright-utils/burn-in';
543
+
544
+ async function main() {
545
+ await runBurnIn({
546
+ configPath: 'playwright.burn-in.config.ts',
547
+ baseBranch: 'main'
548
+ });
549
+ }
550
+
551
+ main().catch(console.error);
552
+ ```
553
+
554
+ **Config:**
555
+ ```typescript
556
+ // playwright.burn-in.config.ts
557
+ import type { BurnInConfig } from '@seontechnologies/playwright-utils/burn-in';
558
+
559
+ const config: BurnInConfig = {
560
+ skipBurnInPatterns: [
561
+ '**/config/**',
562
+ '**/*.md',
563
+ '**/*types*'
564
+ ],
565
+ burnInTestPercentage: 0.3,
566
+ burnIn: {
567
+ repeatEach: 3,
568
+ retries: 1
569
+ }
570
+ };
571
+
572
+ export default config;
573
+ ```
574
+
575
+ **Package script:**
576
+ ```json
577
+ {
578
+ "scripts": {
579
+ "test:burn-in": "tsx scripts/burn-in-changed.ts"
580
+ }
581
+ }
582
+ ```
583
+
584
+ **Benefits:**
585
+ - **Ensure flake-free tests upfront** - Never deal with test flake again
586
+ - Smart filtering (skip config, types, docs changes)
587
+ - Volume control (run percentage of affected tests)
588
+ - Git diff-based test selection
589
+ - Faster CI feedback
590
+
591
+ ### network-error-monitor
592
+
593
+ Automatically detect HTTP 4xx/5xx errors during tests.
594
+
595
+ **Official Docs:** <https://seontechnologies.github.io/playwright-utils/network-error-monitor.html>
596
+
597
+ **Why Use This?**
598
+
599
+ | Vanilla Playwright | network-error-monitor |
600
+ |-------------------|----------------------|
601
+ | UI passes, backend 500 ignored | Auto-fails on any 4xx/5xx |
602
+ | Manual error checking | Zero boilerplate (auto-enabled) |
603
+ | Silent failures slip through | Acts like Sentry for tests |
604
+ | No domino effect prevention | Limits cascading failures |
605
+
606
+ **Usage:**
607
+ ```typescript
608
+ import { test } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
609
+
610
+ // That's it! Network monitoring is automatically enabled
611
+ test('should not have API errors', async ({ page }) => {
612
+ await page.goto('/dashboard');
613
+ await page.click('button');
614
+
615
+ // Test fails automatically if any HTTP 4xx/5xx errors occur
616
+ // Error message shows: "Network errors detected: 2 request(s) failed"
617
+ // GET 500 https://api.example.com/users
618
+ // POST 503 https://api.example.com/metrics
619
+ });
620
+ ```
621
+
622
+ **Opt-out for validation tests:**
623
+ ```typescript
624
+ // When testing error scenarios, opt-out with annotation
625
+ test('should show error message on 404',
626
+ { annotation: [{ type: 'skipNetworkMonitoring' }] }, // Array format
627
+ async ({ page }) => {
628
+ await page.goto('/invalid-page'); // Will 404
629
+ await expect(page.getByText('Page not found')).toBeVisible();
630
+ // Test won't fail on 404 because of annotation
631
+ }
632
+ );
633
+
634
+ // Or opt-out entire describe block
635
+ test.describe('error handling',
636
+ { annotation: [{ type: 'skipNetworkMonitoring' }] },
637
+ () => {
638
+ test('handles 404', async ({ page }) => {
639
+ // Monitoring disabled for all tests in block
640
+ });
641
+ }
642
+ );
643
+ ```
644
+
645
+ **Benefits:**
646
+ - Auto-enabled (zero setup)
647
+ - Catches silent backend failures (500, 503, 504)
648
+ - **Prevents domino effect** (limits cascading failures from one bad endpoint)
649
+ - Opt-out with annotations for validation tests
650
+ - Structured error reporting (JSON artifacts)
651
+
652
+ ## Fixture Composition
653
+
654
+ **Option 1: Use Package's Combined Fixtures (Simplest)**
655
+
656
+ ```typescript
657
+ // Import all utilities at once
658
+ import { test } from '@seontechnologies/playwright-utils/fixtures';
659
+ import { log } from '@seontechnologies/playwright-utils';
660
+ import { expect } from '@playwright/test';
661
+
662
+ test('api test', async ({ apiRequest, interceptNetworkCall }) => {
663
+ await log.info('Fetching users');
664
+
665
+ const { status, body } = await apiRequest({
666
+ method: 'GET',
667
+ path: '/api/users'
668
+ });
669
+
670
+ expect(status).toBe(200);
671
+ });
672
+ ```
673
+
674
+ **Option 2: Create Custom Merged Fixtures (Selective)**
675
+
676
+ **File 1: support/merged-fixtures.ts**
677
+ ```typescript
678
+ import { test as base, mergeTests } from '@playwright/test';
679
+ import { test as apiRequest } from '@seontechnologies/playwright-utils/api-request/fixtures';
680
+ import { test as interceptNetworkCall } from '@seontechnologies/playwright-utils/intercept-network-call/fixtures';
681
+ import { test as networkErrorMonitor } from '@seontechnologies/playwright-utils/network-error-monitor/fixtures';
682
+ import { log } from '@seontechnologies/playwright-utils';
683
+
684
+ // Merge only what you need
685
+ export const test = mergeTests(
686
+ base,
687
+ apiRequest,
688
+ interceptNetworkCall,
689
+ networkErrorMonitor
690
+ );
691
+
692
+ export const expect = base.expect;
693
+ export { log };
694
+ ```
695
+
696
+ **File 2: tests/api/users.spec.ts**
697
+ ```typescript
698
+ import { test, expect, log } from '../support/merged-fixtures';
699
+
700
+ test('api test', async ({ apiRequest, interceptNetworkCall }) => {
701
+ await log.info('Fetching users');
702
+
703
+ const { status, body } = await apiRequest({
704
+ method: 'GET',
705
+ path: '/api/users'
706
+ });
707
+
708
+ expect(status).toBe(200);
709
+ });
710
+ ```
711
+
712
+ **Contrast:**
713
+ - Option 1: All utilities available, zero setup
714
+ - Option 2: Pick utilities you need, one central file
715
+
716
+ **See working examples:** <https://github.com/seontechnologies/playwright-utils/tree/main/playwright/support>
717
+
718
+ ## Troubleshooting
719
+
720
+ ### Import Errors
721
+
722
+ **Problem:** Cannot find module '@seontechnologies/playwright-utils/api-request'
723
+
724
+ **Solution:**
725
+ ```bash
726
+ # Verify package installed
727
+ npm list @seontechnologies/playwright-utils
728
+
729
+ # Check package.json has correct version
730
+ "@seontechnologies/playwright-utils": "^2.0.0"
731
+
732
+ # Reinstall if needed
733
+ npm install -D @seontechnologies/playwright-utils
734
+ ```
735
+
736
+ ### TEA Not Using Utilities
737
+
738
+ **Problem:** TEA generates tests without playwright-utils.
739
+
740
+ **Causes:**
741
+ 1. Config not set: `tea_use_playwright_utils: false`
742
+ 2. Workflow run before config change
743
+ 3. Package not installed
744
+
745
+ **Solution:**
746
+ ```bash
747
+ # Check config
748
+ grep tea_use_playwright_utils _bmad/bmm/config.yaml
749
+
750
+ # Should show: tea_use_playwright_utils: true
751
+
752
+ # Start fresh chat (TEA loads config at start)
753
+ ```
754
+
755
+ ### Type Errors with apiRequest
756
+
757
+ **Problem:** TypeScript errors on apiRequest response.
758
+
759
+ **Cause:** No schema validation.
760
+
761
+ **Solution:**
762
+ ```typescript
763
+ // Add Zod schema for type safety
764
+ import { z } from 'zod';
765
+
766
+ const ProfileSchema = z.object({
767
+ id: z.string(),
768
+ name: z.string(),
769
+ email: z.string().email()
770
+ });
771
+
772
+ const { status, body } = await apiRequest({
773
+ method: 'GET',
774
+ path: '/api/profile' // 'path' not 'url'
775
+ }).validateSchema(ProfileSchema); // Chained method
776
+
777
+ expect(status).toBe(200);
778
+ // body is typed as { id: string, name: string, email: string }
779
+ ```
780
+
781
+ ## Migration Guide
782
+
783
+ ## Related Guides
784
+
785
+ **Getting Started:**
786
+ - [TEA Lite Quickstart Tutorial](/docs/tutorials/getting-started/tea-lite-quickstart.md) - Learn TEA basics
787
+ - [How to Set Up Test Framework](/docs/how-to/workflows/setup-test-framework.md) - Initial framework setup
788
+
789
+ **Workflow Guides:**
790
+ - [How to Run ATDD](/docs/how-to/workflows/run-atdd.md) - Generate tests with utilities
791
+ - [How to Run Automate](/docs/how-to/workflows/run-automate.md) - Expand coverage with utilities
792
+ - [How to Run Test Review](/docs/how-to/workflows/run-test-review.md) - Review against PW-Utils patterns
793
+
794
+ **Other Customization:**
795
+ - [Enable MCP Enhancements](/docs/how-to/customization/enable-tea-mcp-enhancements.md) - Live browser verification
796
+
797
+ ## Understanding the Concepts
798
+
799
+ - [Testing as Engineering](/docs/explanation/philosophy/testing-as-engineering.md) - **Why Playwright Utils matters** (part of TEA's three-part solution)
800
+ - [Fixture Architecture](/docs/explanation/tea/fixture-architecture.md) - Pure function → fixture pattern
801
+ - [Network-First Patterns](/docs/explanation/tea/network-first-patterns.md) - Network utilities explained
802
+ - [Test Quality Standards](/docs/explanation/tea/test-quality-standards.md) - Patterns PW-Utils enforces
803
+
804
+ ## Reference
805
+
806
+ - [TEA Configuration](/docs/reference/tea/configuration.md) - tea_use_playwright_utils option
807
+ - [Knowledge Base Index](/docs/reference/tea/knowledge-base.md) - Playwright Utils fragments
808
+ - [Glossary](/docs/reference/glossary/index.md#test-architect-tea-concepts) - Playwright Utils term
809
+ - [Official PW-Utils Docs](https://seontechnologies.github.io/playwright-utils/) - Complete API reference
810
+
811
+ ---
812
+
813
+ Generated with [BMad Method](https://bmad-method.org) - TEA (Test Architect)