bmad-method 6.0.0-alpha.11 → 6.0.0-alpha.13

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 (491) hide show
  1. package/.github/workflows/bundle-latest.yaml +79 -27
  2. package/CHANGELOG.md +167 -1
  3. package/README.md +3 -1
  4. package/custom/src/agents/commit-poet/commit-poet.agent.yaml +129 -0
  5. package/custom/src/agents/commit-poet/installation-guide.md +36 -0
  6. package/custom/src/agents/toolsmith/installation-guide.md +36 -0
  7. package/custom/src/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
  8. package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
  9. package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
  10. package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
  11. package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
  12. package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
  13. package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
  14. package/custom/src/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
  15. package/custom/src/agents/toolsmith/toolsmith.agent.yaml +108 -0
  16. package/docs/custom-agent-installation.md +31 -17
  17. package/docs/ide-info/rovo-dev.md +388 -0
  18. package/docs/index.md +6 -81
  19. package/docs/installers-bundlers/installers-modules-platforms-reference.md +1 -1
  20. package/package.json +3 -2
  21. package/src/core/agents/bmad-master.agent.yaml +1 -1
  22. package/src/core/agents/bmad-web-orchestrator.agent.xml +1 -1
  23. package/src/core/tasks/advanced-elicitation-methods.csv +51 -21
  24. package/src/core/tasks/advanced-elicitation.xml +18 -8
  25. package/src/core/tasks/workflow.xml +36 -71
  26. package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
  27. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +196 -0
  28. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +121 -0
  29. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +224 -0
  30. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +236 -0
  31. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +208 -0
  32. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +263 -0
  33. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +339 -0
  34. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +302 -0
  35. package/src/core/workflows/brainstorming/template.md +13 -104
  36. package/src/core/workflows/brainstorming/workflow.md +51 -0
  37. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  38. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +203 -0
  39. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +159 -0
  40. package/src/core/workflows/party-mode/workflow.md +207 -0
  41. package/src/modules/bmb/README.md +153 -86
  42. package/src/modules/bmb/_module-installer/install-config.yaml +3 -3
  43. package/src/modules/bmb/agents/bmad-builder.agent.yaml +45 -31
  44. package/src/modules/bmb/docs/{agent-menu-patterns.md → agents/agent-menu-patterns.md} +1 -1
  45. package/src/modules/bmb/docs/agents/kb.csv +0 -0
  46. package/src/modules/bmb/docs/{module-agent-architecture.md → agents/module-agent-architecture.md} +1 -1
  47. package/src/modules/bmb/docs/{simple-agent-architecture.md → agents/simple-agent-architecture.md} +1 -1
  48. package/src/modules/bmb/docs/workflows/architecture.md +220 -0
  49. package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
  50. package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
  51. package/src/modules/bmb/docs/workflows/index.md +45 -0
  52. package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
  53. package/src/modules/bmb/docs/workflows/kb.csv +0 -0
  54. package/src/modules/bmb/docs/workflows/step-template.md +283 -0
  55. package/src/modules/bmb/docs/workflows/terms.md +97 -0
  56. package/src/modules/bmb/docs/workflows/workflow-template.md +152 -0
  57. package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
  58. package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +2 -2
  59. package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +1 -1
  60. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  61. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  62. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  63. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
  64. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
  65. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  66. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
  67. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  68. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  69. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  70. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  71. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  72. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  73. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  74. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  75. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  76. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  77. package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +17 -0
  78. package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
  79. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
  80. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
  81. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
  82. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
  83. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
  84. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
  85. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +50 -0
  86. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
  87. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
  88. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
  89. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
  90. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  91. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  92. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  93. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
  94. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
  95. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  96. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
  97. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  98. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  99. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  100. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  101. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  102. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  103. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  104. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  105. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  106. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  107. package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
  108. package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
  109. package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +210 -0
  110. package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
  111. package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
  112. package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +231 -0
  113. package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +224 -0
  114. package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
  115. package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +179 -0
  116. package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +197 -0
  117. package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +180 -0
  118. package/src/modules/bmb/workflows/create-agent/steps/step-11-celebrate.md +222 -0
  119. package/src/modules/bmb/workflows/create-agent/templates/agent_commands.md +21 -0
  120. package/src/modules/bmb/workflows/create-agent/templates/agent_persona.md +25 -0
  121. package/src/modules/bmb/workflows/create-agent/templates/agent_purpose_and_type.md +23 -0
  122. package/src/modules/bmb/workflows/create-agent/workflow.md +91 -0
  123. package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +168 -0
  124. package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +233 -0
  125. package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-overview.md +127 -0
  126. package/src/modules/bmb/workflows/create-workflow/steps/step-04-core-tools.md +145 -0
  127. package/src/modules/bmb/workflows/create-workflow/steps/step-05-memory-requirements.md +136 -0
  128. package/src/modules/bmb/workflows/create-workflow/steps/step-06-external-tools.md +154 -0
  129. package/src/modules/bmb/workflows/create-workflow/steps/step-07-installation-guidance.md +159 -0
  130. package/src/modules/bmb/workflows/create-workflow/steps/step-08-tools-summary.md +167 -0
  131. package/src/modules/bmb/workflows/create-workflow/steps/step-09-design.md +239 -0
  132. package/src/modules/bmb/workflows/create-workflow/steps/step-10-plan-review.md +215 -0
  133. package/src/modules/bmb/workflows/create-workflow/steps/step-11-build.md +262 -0
  134. package/src/modules/bmb/workflows/create-workflow/steps/step-12-review.md +270 -0
  135. package/src/modules/bmb/workflows/create-workflow/templates/build-summary.md +36 -0
  136. package/src/modules/bmb/workflows/create-workflow/templates/completion-section.md +39 -0
  137. package/src/modules/bmb/workflows/create-workflow/templates/content-template.md +21 -0
  138. package/src/modules/bmb/workflows/create-workflow/templates/design-section.md +53 -0
  139. package/src/modules/bmb/workflows/create-workflow/templates/project-info.md +18 -0
  140. package/src/modules/bmb/workflows/create-workflow/templates/requirements-section.md +47 -0
  141. package/src/modules/bmb/workflows/create-workflow/templates/review-section.md +56 -0
  142. package/src/modules/bmb/workflows/create-workflow/templates/step-file.md +139 -0
  143. package/src/modules/bmb/workflows/create-workflow/templates/workflow-plan.md +54 -0
  144. package/src/modules/bmb/workflows/create-workflow/templates/workflow.md +58 -0
  145. package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
  146. package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
  147. package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
  148. package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
  149. package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
  150. package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
  151. package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
  152. package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +221 -0
  153. package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
  154. package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
  155. package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
  156. package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
  157. package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
  158. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
  159. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
  160. package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
  161. package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
  162. package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
  163. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
  164. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
  165. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
  166. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
  167. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
  168. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
  169. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
  170. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
  171. package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
  172. package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
  173. package/src/modules/bmgd/agents/game-architect.agent.yaml +1 -1
  174. package/src/modules/bmgd/agents/game-designer.agent.yaml +1 -1
  175. package/src/modules/bmgd/agents/game-dev.agent.yaml +1 -1
  176. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +1 -1
  177. package/src/modules/bmm/_module-installer/install-config.yaml +9 -15
  178. package/src/modules/bmm/agents/analyst.agent.yaml +14 -14
  179. package/src/modules/bmm/agents/architect.agent.yaml +12 -10
  180. package/src/modules/bmm/agents/dev.agent.yaml +20 -16
  181. package/src/modules/bmm/agents/pm.agent.yaml +13 -31
  182. package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +36 -0
  183. package/src/modules/bmm/agents/sm.agent.yaml +13 -31
  184. package/src/modules/bmm/agents/tea.agent.yaml +10 -7
  185. package/src/modules/bmm/agents/tech-writer.agent.yaml +7 -20
  186. package/src/modules/bmm/agents/ux-designer.agent.yaml +12 -10
  187. package/src/modules/bmm/data/README.md +29 -0
  188. package/src/modules/bmm/data/project-context-template.md +40 -0
  189. package/src/modules/bmm/docs/README.md +21 -9
  190. package/src/modules/bmm/docs/agents-guide.md +69 -23
  191. package/src/modules/bmm/docs/bmad-quick-flow.md +528 -0
  192. package/src/modules/bmm/docs/brownfield-guide.md +9 -10
  193. package/src/modules/bmm/docs/enterprise-agentic-development.md +1 -1
  194. package/src/modules/bmm/docs/glossary.md +5 -5
  195. package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +909 -1654
  196. package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +2 -2
  197. package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
  198. package/src/modules/bmm/docs/scale-adaptive-system.md +5 -5
  199. package/src/modules/bmm/docs/test-architecture.md +84 -18
  200. package/src/modules/bmm/docs/workflows-analysis.md +36 -140
  201. package/src/modules/bmm/docs/workflows-implementation.md +32 -157
  202. package/src/modules/bmm/docs/workflows-planning.md +51 -212
  203. package/src/modules/bmm/docs/workflows-solutioning.md +24 -69
  204. package/src/modules/bmm/teams/default-party.csv +15 -14
  205. package/src/modules/bmm/teams/team-fullstack.yaml +0 -1
  206. package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
  207. package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
  208. package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
  209. package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
  210. package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  211. package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
  212. package/src/modules/bmm/testarch/knowledge/log.md +294 -0
  213. package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
  214. package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
  215. package/src/modules/bmm/testarch/knowledge/overview.md +284 -0
  216. package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
  217. package/src/modules/bmm/testarch/tea-index.csv +11 -0
  218. package/src/modules/bmm/workflows/1-analysis/product-brief/product-brief.template.md +8 -0
  219. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01-init.md +192 -0
  220. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01b-continue.md +167 -0
  221. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-02-vision.md +203 -0
  222. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-03-users.md +206 -0
  223. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-04-metrics.md +209 -0
  224. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-05-scope.md +223 -0
  225. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-06-complete.md +199 -0
  226. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.md +58 -0
  227. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
  228. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
  229. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
  230. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
  231. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
  232. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
  233. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  234. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +235 -0
  235. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +198 -0
  236. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +247 -0
  237. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +257 -0
  238. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +175 -0
  239. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
  240. package/src/modules/bmm/workflows/1-analysis/research/research.template.md +16 -0
  241. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
  242. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +237 -0
  243. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +246 -0
  244. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +200 -0
  245. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +237 -0
  246. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
  247. package/src/modules/bmm/workflows/1-analysis/research/workflow.md +198 -0
  248. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +159 -0
  249. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
  250. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +209 -0
  251. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
  252. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
  253. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
  254. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
  255. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
  256. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
  257. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
  258. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
  259. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
  260. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
  261. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
  262. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +226 -0
  263. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
  264. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +53 -0
  265. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +5 -200
  266. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +161 -0
  267. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +123 -0
  268. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +275 -0
  269. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +271 -0
  270. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +272 -0
  271. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +249 -0
  272. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +240 -0
  273. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +236 -0
  274. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +280 -0
  275. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +251 -0
  276. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +275 -0
  277. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +210 -0
  278. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
  279. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-decision-template.md +13 -0
  280. package/src/modules/bmm/workflows/3-solutioning/architecture/data/domain-complexity.csv +11 -0
  281. package/src/modules/bmm/workflows/3-solutioning/architecture/data/project-types.csv +7 -0
  282. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01-init.md +194 -0
  283. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01b-continue.md +163 -0
  284. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-02-context.md +223 -0
  285. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-03-starter.md +330 -0
  286. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-04-decisions.md +317 -0
  287. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-05-patterns.md +358 -0
  288. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-06-structure.md +378 -0
  289. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-07-validation.md +358 -0
  290. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-08-complete.md +351 -0
  291. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.md +48 -0
  292. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +247 -476
  293. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +8 -18
  294. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +176 -0
  295. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +4 -11
  296. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
  297. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +324 -0
  298. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +21 -34
  299. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
  300. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +406 -0
  301. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +6 -37
  302. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +4 -3
  303. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -0
  304. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
  305. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +26 -0
  306. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/checklist.md +25 -0
  307. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/instructions.md +105 -0
  308. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +29 -0
  309. package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +20 -0
  310. package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +193 -0
  311. package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
  312. package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
  313. package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
  314. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +23 -3
  315. package/src/modules/bmm/workflows/testarch/automate/instructions.md +23 -2
  316. package/src/modules/bmm/workflows/testarch/ci/instructions.md +18 -1
  317. package/src/modules/bmm/workflows/testarch/framework/instructions.md +27 -1
  318. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +8 -2
  319. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +28 -8
  320. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +66 -54
  321. package/src/modules/bmm/workflows/workflow-status/instructions.md +11 -4
  322. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +3 -2
  323. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +3 -2
  324. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +3 -2
  325. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +3 -2
  326. package/src/modules/cis/agents/README.md +1 -1
  327. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +3 -2
  328. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +2 -1
  329. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +2 -1
  330. package/src/modules/cis/agents/innovation-strategist.agent.yaml +2 -1
  331. package/src/modules/cis/agents/presentation-master.agent.yaml +3 -2
  332. package/src/modules/cis/agents/storyteller.agent.yaml +2 -1
  333. package/src/modules/cis/teams/default-party.csv +6 -5
  334. package/src/utility/models/agent-activation-ide.xml +4 -4
  335. package/src/utility/models/agent-activation-web.xml +1 -11
  336. package/src/utility/models/fragments/activation-rules.xml +5 -6
  337. package/src/utility/models/fragments/handler-exec.xml +6 -5
  338. package/src/utility/models/fragments/handler-multi.xml +14 -0
  339. package/test/README.md +1 -1
  340. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
  341. package/tools/cli/README.md +1 -0
  342. package/tools/cli/bundlers/web-bundler.js +3 -14
  343. package/tools/cli/commands/agent-install.js +8 -8
  344. package/tools/cli/commands/cleanup.js +141 -0
  345. package/tools/cli/commands/install.js +48 -3
  346. package/tools/cli/installers/lib/core/config-collector.js +24 -0
  347. package/tools/cli/installers/lib/core/installer.js +612 -43
  348. package/tools/cli/installers/lib/ide/antigravity.js +51 -7
  349. package/tools/cli/installers/lib/ide/auggie.js +53 -0
  350. package/tools/cli/installers/lib/ide/claude-code.js +1 -6
  351. package/tools/cli/installers/lib/ide/cline.js +49 -0
  352. package/tools/cli/installers/lib/ide/codex.js +2 -2
  353. package/tools/cli/installers/lib/ide/crush.js +47 -0
  354. package/tools/cli/installers/lib/ide/gemini.js +47 -0
  355. package/tools/cli/installers/lib/ide/github-copilot.js +59 -48
  356. package/tools/cli/installers/lib/ide/iflow.js +47 -0
  357. package/tools/cli/installers/lib/ide/kilo.js +74 -0
  358. package/tools/cli/installers/lib/ide/qwen.js +54 -0
  359. package/tools/cli/installers/lib/ide/roo.js +71 -0
  360. package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
  361. package/tools/cli/installers/lib/ide/trae.js +47 -0
  362. package/tools/cli/lib/agent/compiler.js +156 -22
  363. package/tools/cli/lib/agent/installer.js +13 -3
  364. package/tools/cli/lib/agent-analyzer.js +46 -18
  365. package/tools/cli/lib/ui.js +204 -9
  366. package/tools/cli/lib/yaml-xml-builder.js +123 -24
  367. package/tools/platform-codes.yaml +12 -0
  368. package/tools/schema/agent.js +169 -20
  369. package/src/core/tasks/adv-elicit-methods.csv +0 -39
  370. package/src/core/workflows/brainstorming/README.md +0 -261
  371. package/src/core/workflows/brainstorming/instructions.md +0 -315
  372. package/src/core/workflows/brainstorming/workflow.yaml +0 -38
  373. package/src/core/workflows/party-mode/instructions.md +0 -183
  374. package/src/core/workflows/party-mode/workflow.yaml +0 -28
  375. package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -142
  376. package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
  377. package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
  378. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
  379. package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
  380. package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
  381. package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
  382. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -30
  383. package/src/modules/bmb/workflows/create-agent/instructions.md +0 -519
  384. package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -55
  385. package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
  386. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  387. package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
  388. package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -725
  389. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1327
  390. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  391. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -15
  392. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  393. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -61
  394. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -41
  395. package/src/modules/bmb/workflows/edit-agent/README.md +0 -239
  396. package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -654
  397. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -49
  398. package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
  399. package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
  400. package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
  401. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -27
  402. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
  403. package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
  404. package/src/modules/bmm/docs/quick-spec-flow.md +0 -652
  405. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
  406. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  407. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
  408. package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
  409. package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +0 -180
  410. package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -56
  411. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  412. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
  413. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -181
  414. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -61
  415. package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
  416. package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
  417. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -299
  418. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  419. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
  420. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
  421. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
  422. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
  423. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  424. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -347
  425. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -245
  426. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -62
  427. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  428. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
  429. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -93
  430. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
  431. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
  432. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -78
  433. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
  434. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
  435. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
  436. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
  437. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
  438. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
  439. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -60
  440. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
  441. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  442. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
  443. package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
  444. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
  445. package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
  446. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -100
  447. package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
  448. package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
  449. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
  450. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
  451. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
  452. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  453. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
  454. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  455. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -58
  456. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  457. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  458. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
  459. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -63
  460. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  461. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -28
  462. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  463. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -25
  464. package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
  465. package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
  466. /package/src/modules/bmb/docs/{agent-compilation.md → agents/agent-compilation.md} +0 -0
  467. /package/src/modules/bmb/docs/{expert-agent-architecture.md → agents/expert-agent-architecture.md} +0 -0
  468. /package/src/modules/bmb/docs/{index.md → agents/index.md} +0 -0
  469. /package/src/modules/bmb/docs/{understanding-agent-types.md → agents/understanding-agent-types.md} +0 -0
  470. /package/src/modules/bmb/reference/{readme.md → README.md} +0 -0
  471. /package/src/modules/bmb/workflows/create-agent/{agent-validation-checklist.md → data/agent-validation-checklist.md} +0 -0
  472. /package/src/modules/bmb/workflows/create-agent/{brainstorm-context.md → data/brainstorm-context.md} +0 -0
  473. /package/src/modules/bmb/workflows/create-agent/{communication-presets.csv → data/communication-presets.csv} +0 -0
  474. /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/README.md +0 -0
  475. /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/brainstorm-context.md +0 -0
  476. /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/checklist.md +0 -0
  477. /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/installer-templates/install-config.yaml +0 -0
  478. /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/installer-templates/installer.js +0 -0
  479. /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/instructions.md +0 -0
  480. /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/module-structure.md +0 -0
  481. /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/workflow.yaml +0 -0
  482. /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/README.md +0 -0
  483. /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/checklist.md +0 -0
  484. /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/instructions.md +0 -0
  485. /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/workflow.yaml +0 -0
  486. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/README.md +0 -0
  487. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/checklist.md +0 -0
  488. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/instructions.md +0 -0
  489. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/template.md +0 -0
  490. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/workflow.yaml +0 -0
  491. /package/src/modules/bmm/{workflows/techdoc → data}/documentation-standards.md +0 -0
@@ -0,0 +1,303 @@
1
+ # API Request Utility
2
+
3
+ ## Principle
4
+
5
+ Use typed HTTP client with built-in schema validation and automatic retry for server errors. The utility handles URL resolution, header management, response parsing, and single-line response validation with proper TypeScript support.
6
+
7
+ ## Rationale
8
+
9
+ Vanilla Playwright's request API requires boilerplate for common patterns:
10
+
11
+ - Manual JSON parsing (`await response.json()`)
12
+ - Repetitive status code checking
13
+ - No built-in retry logic for transient failures
14
+ - No schema validation
15
+ - Complex URL construction
16
+
17
+ The `apiRequest` utility provides:
18
+
19
+ - **Automatic JSON parsing**: Response body pre-parsed
20
+ - **Built-in retry**: 5xx errors retry with exponential backoff
21
+ - **Schema validation**: Single-line validation (JSON Schema, Zod, OpenAPI)
22
+ - **URL resolution**: Four-tier strategy (explicit > config > Playwright > direct)
23
+ - **TypeScript generics**: Type-safe response bodies
24
+
25
+ ## Pattern Examples
26
+
27
+ ### Example 1: Basic API Request
28
+
29
+ **Context**: Making authenticated API requests with automatic retry and type safety.
30
+
31
+ **Implementation**:
32
+
33
+ ```typescript
34
+ import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
35
+
36
+ test('should fetch user data', async ({ apiRequest }) => {
37
+ const { status, body } = await apiRequest<User>({
38
+ method: 'GET',
39
+ path: '/api/users/123',
40
+ headers: { Authorization: 'Bearer token' },
41
+ });
42
+
43
+ expect(status).toBe(200);
44
+ expect(body.name).toBe('John Doe'); // TypeScript knows body is User
45
+ });
46
+ ```
47
+
48
+ **Key Points**:
49
+
50
+ - Generic type `<User>` provides TypeScript autocomplete for `body`
51
+ - Status and body destructured from response
52
+ - Headers passed as object
53
+ - Automatic retry for 5xx errors (configurable)
54
+
55
+ ### Example 2: Schema Validation (Single Line)
56
+
57
+ **Context**: Validate API responses match expected schema with single-line syntax.
58
+
59
+ **Implementation**:
60
+
61
+ ```typescript
62
+ import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
63
+
64
+ test('should validate response schema', async ({ apiRequest }) => {
65
+ // JSON Schema validation
66
+ const response = await apiRequest({
67
+ method: 'GET',
68
+ path: '/api/users/123',
69
+ validateSchema: {
70
+ type: 'object',
71
+ required: ['id', 'name', 'email'],
72
+ properties: {
73
+ id: { type: 'string' },
74
+ name: { type: 'string' },
75
+ email: { type: 'string', format: 'email' },
76
+ },
77
+ },
78
+ });
79
+ // Throws if schema validation fails
80
+
81
+ // Zod schema validation
82
+ import { z } from 'zod';
83
+
84
+ const UserSchema = z.object({
85
+ id: z.string(),
86
+ name: z.string(),
87
+ email: z.string().email(),
88
+ });
89
+
90
+ const response = await apiRequest({
91
+ method: 'GET',
92
+ path: '/api/users/123',
93
+ validateSchema: UserSchema,
94
+ });
95
+ // Response body is type-safe AND validated
96
+ });
97
+ ```
98
+
99
+ **Key Points**:
100
+
101
+ - Single `validateSchema` parameter
102
+ - Supports JSON Schema, Zod, YAML files, OpenAPI specs
103
+ - Throws on validation failure with detailed errors
104
+ - Zero boilerplate validation code
105
+
106
+ ### Example 3: POST with Body and Retry Configuration
107
+
108
+ **Context**: Creating resources with custom retry behavior for error testing.
109
+
110
+ **Implementation**:
111
+
112
+ ```typescript
113
+ test('should create user', async ({ apiRequest }) => {
114
+ const newUser = {
115
+ name: 'Jane Doe',
116
+ email: 'jane@example.com',
117
+ };
118
+
119
+ const { status, body } = await apiRequest({
120
+ method: 'POST',
121
+ path: '/api/users',
122
+ body: newUser, // Automatically sent as JSON
123
+ headers: { Authorization: 'Bearer token' },
124
+ });
125
+
126
+ expect(status).toBe(201);
127
+ expect(body.id).toBeDefined();
128
+ });
129
+
130
+ // Disable retry for error testing
131
+ test('should handle 500 errors', async ({ apiRequest }) => {
132
+ await expect(
133
+ apiRequest({
134
+ method: 'GET',
135
+ path: '/api/error',
136
+ retryConfig: { maxRetries: 0 }, // Disable retry
137
+ }),
138
+ ).rejects.toThrow('Request failed with status 500');
139
+ });
140
+ ```
141
+
142
+ **Key Points**:
143
+
144
+ - `body` parameter auto-serializes to JSON
145
+ - Default retry: 5xx errors, 3 retries, exponential backoff
146
+ - Disable retry with `retryConfig: { maxRetries: 0 }`
147
+ - Only 5xx errors retry (4xx errors fail immediately)
148
+
149
+ ### Example 4: URL Resolution Strategy
150
+
151
+ **Context**: Flexible URL handling for different environments and test contexts.
152
+
153
+ **Implementation**:
154
+
155
+ ```typescript
156
+ // Strategy 1: Explicit baseUrl (highest priority)
157
+ await apiRequest({
158
+ method: 'GET',
159
+ path: '/users',
160
+ baseUrl: 'https://api.example.com', // Uses https://api.example.com/users
161
+ });
162
+
163
+ // Strategy 2: Config baseURL (from fixture)
164
+ import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
165
+
166
+ test.use({ configBaseUrl: 'https://staging-api.example.com' });
167
+
168
+ test('uses config baseURL', async ({ apiRequest }) => {
169
+ await apiRequest({
170
+ method: 'GET',
171
+ path: '/users', // Uses https://staging-api.example.com/users
172
+ });
173
+ });
174
+
175
+ // Strategy 3: Playwright baseURL (from playwright.config.ts)
176
+ // playwright.config.ts
177
+ export default defineConfig({
178
+ use: {
179
+ baseURL: 'https://api.example.com',
180
+ },
181
+ });
182
+
183
+ test('uses Playwright baseURL', async ({ apiRequest }) => {
184
+ await apiRequest({
185
+ method: 'GET',
186
+ path: '/users', // Uses https://api.example.com/users
187
+ });
188
+ });
189
+
190
+ // Strategy 4: Direct path (full URL)
191
+ await apiRequest({
192
+ method: 'GET',
193
+ path: 'https://api.example.com/users', // Full URL works too
194
+ });
195
+ ```
196
+
197
+ **Key Points**:
198
+
199
+ - Four-tier resolution: explicit > config > Playwright > direct
200
+ - Trailing slashes normalized automatically
201
+ - Environment-specific baseUrl easy to configure
202
+
203
+ ### Example 5: Integration with Recurse (Polling)
204
+
205
+ **Context**: Waiting for async operations to complete (background jobs, eventual consistency).
206
+
207
+ **Implementation**:
208
+
209
+ ```typescript
210
+ import { test } from '@seontechnologies/playwright-utils/fixtures';
211
+
212
+ test('should poll until job completes', async ({ apiRequest, recurse }) => {
213
+ // Create job
214
+ const { body } = await apiRequest({
215
+ method: 'POST',
216
+ path: '/api/jobs',
217
+ body: { type: 'export' },
218
+ });
219
+
220
+ const jobId = body.id;
221
+
222
+ // Poll until ready
223
+ const completedJob = await recurse(
224
+ () => apiRequest({ method: 'GET', path: `/api/jobs/${jobId}` }),
225
+ (response) => response.body.status === 'completed',
226
+ { timeout: 60000, interval: 2000 },
227
+ );
228
+
229
+ expect(completedJob.body.result).toBeDefined();
230
+ });
231
+ ```
232
+
233
+ **Key Points**:
234
+
235
+ - `apiRequest` returns full response object
236
+ - `recurse` polls until predicate returns true
237
+ - Composable utilities work together seamlessly
238
+
239
+ ## Comparison with Vanilla Playwright
240
+
241
+ | Vanilla Playwright | playwright-utils apiRequest |
242
+ | ---------------------------------------------- | ---------------------------------------------------------------------------------- |
243
+ | `const resp = await request.get('/api/users')` | `const { status, body } = await apiRequest({ method: 'GET', path: '/api/users' })` |
244
+ | `const body = await resp.json()` | Response already parsed |
245
+ | `expect(resp.ok()).toBeTruthy()` | Status code directly accessible |
246
+ | No retry logic | Auto-retry 5xx errors with backoff |
247
+ | No schema validation | Built-in multi-format validation |
248
+ | Manual error handling | Descriptive error messages |
249
+
250
+ ## When to Use
251
+
252
+ **Use apiRequest for:**
253
+
254
+ - ✅ API endpoint testing
255
+ - ✅ Background API calls in UI tests
256
+ - ✅ Schema validation needs
257
+ - ✅ Tests requiring retry logic
258
+ - ✅ Typed API responses
259
+
260
+ **Stick with vanilla Playwright for:**
261
+
262
+ - Simple one-off requests where utility overhead isn't worth it
263
+ - Testing Playwright's native features specifically
264
+ - Legacy tests where migration isn't justified
265
+
266
+ ## Related Fragments
267
+
268
+ - `overview.md` - Installation and design principles
269
+ - `auth-session.md` - Authentication token management
270
+ - `recurse.md` - Polling for async operations
271
+ - `fixtures-composition.md` - Combining utilities with mergeTests
272
+ - `log.md` - Logging API requests
273
+
274
+ ## Anti-Patterns
275
+
276
+ **❌ Ignoring retry failures:**
277
+
278
+ ```typescript
279
+ try {
280
+ await apiRequest({ method: 'GET', path: '/api/unstable' });
281
+ } catch {
282
+ // Silent failure - loses retry information
283
+ }
284
+ ```
285
+
286
+ **✅ Let retries happen, handle final failure:**
287
+
288
+ ```typescript
289
+ await expect(apiRequest({ method: 'GET', path: '/api/unstable' })).rejects.toThrow(); // Retries happen automatically, then final error caught
290
+ ```
291
+
292
+ **❌ Disabling TypeScript benefits:**
293
+
294
+ ```typescript
295
+ const response: any = await apiRequest({ method: 'GET', path: '/users' });
296
+ ```
297
+
298
+ **✅ Use generic types:**
299
+
300
+ ```typescript
301
+ const { body } = await apiRequest<User[]>({ method: 'GET', path: '/users' });
302
+ // body is typed as User[]
303
+ ```
@@ -0,0 +1,356 @@
1
+ # Auth Session Utility
2
+
3
+ ## Principle
4
+
5
+ Persist authentication tokens to disk and reuse across test runs. Support multiple user identifiers, ephemeral authentication, and worker-specific accounts for parallel execution. Fetch tokens once, use everywhere.
6
+
7
+ ## Rationale
8
+
9
+ Playwright's built-in authentication works but has limitations:
10
+
11
+ - Re-authenticates for every test run (slow)
12
+ - Single user per project setup
13
+ - No token expiration handling
14
+ - Manual session management
15
+ - Complex setup for multi-user scenarios
16
+
17
+ The `auth-session` utility provides:
18
+
19
+ - **Token persistence**: Authenticate once, reuse across runs
20
+ - **Multi-user support**: Different user identifiers in same test suite
21
+ - **Ephemeral auth**: On-the-fly user authentication without disk persistence
22
+ - **Worker-specific accounts**: Parallel execution with isolated user accounts
23
+ - **Automatic token management**: Checks validity, renews if expired
24
+ - **Flexible provider pattern**: Adapt to any auth system (OAuth2, JWT, custom)
25
+
26
+ ## Pattern Examples
27
+
28
+ ### Example 1: Basic Auth Session Setup
29
+
30
+ **Context**: Configure global authentication that persists across test runs.
31
+
32
+ **Implementation**:
33
+
34
+ ```typescript
35
+ // Step 1: Configure in global-setup.ts
36
+ import { authStorageInit, setAuthProvider, configureAuthSession, authGlobalInit } from '@seontechnologies/playwright-utils/auth-session';
37
+ import myCustomProvider from './auth/custom-auth-provider';
38
+
39
+ async function globalSetup() {
40
+ // Ensure storage directories exist
41
+ authStorageInit();
42
+
43
+ // Configure storage path
44
+ configureAuthSession({
45
+ authStoragePath: process.cwd() + '/playwright/auth-sessions',
46
+ debug: true,
47
+ });
48
+
49
+ // Set custom provider (HOW to authenticate)
50
+ setAuthProvider(myCustomProvider);
51
+
52
+ // Optional: pre-fetch token for default user
53
+ await authGlobalInit();
54
+ }
55
+
56
+ export default globalSetup;
57
+
58
+ // Step 2: Create auth fixture
59
+ import { test as base } from '@playwright/test';
60
+ import { createAuthFixtures, setAuthProvider } from '@seontechnologies/playwright-utils/auth-session';
61
+ import myCustomProvider from './custom-auth-provider';
62
+
63
+ // Register provider early
64
+ setAuthProvider(myCustomProvider);
65
+
66
+ export const test = base.extend(createAuthFixtures());
67
+
68
+ // Step 3: Use in tests
69
+ test('authenticated request', async ({ authToken, request }) => {
70
+ const response = await request.get('/api/protected', {
71
+ headers: { Authorization: `Bearer ${authToken}` },
72
+ });
73
+
74
+ expect(response.ok()).toBeTruthy();
75
+ });
76
+ ```
77
+
78
+ **Key Points**:
79
+
80
+ - Global setup runs once before all tests
81
+ - Token fetched once, reused across all tests
82
+ - Custom provider defines your auth mechanism
83
+ - Order matters: configure, then setProvider, then init
84
+
85
+ ### Example 2: Multi-User Authentication
86
+
87
+ **Context**: Testing with different user roles (admin, regular user, guest) in same test suite.
88
+
89
+ **Implementation**:
90
+
91
+ ```typescript
92
+ import { test } from '../support/auth/auth-fixture';
93
+
94
+ // Option 1: Per-test user override
95
+ test('admin actions', async ({ authToken, authOptions }) => {
96
+ // Override default user
97
+ authOptions.userIdentifier = 'admin';
98
+
99
+ const { authToken: adminToken } = await test.step('Get admin token', async () => {
100
+ return { authToken }; // Re-fetches with new identifier
101
+ });
102
+
103
+ // Use admin token
104
+ const response = await request.get('/api/admin/users', {
105
+ headers: { Authorization: `Bearer ${adminToken}` },
106
+ });
107
+ });
108
+
109
+ // Option 2: Parallel execution with different users
110
+ test.describe.parallel('multi-user tests', () => {
111
+ test('user 1 actions', async ({ authToken }) => {
112
+ // Uses default user (e.g., 'user1')
113
+ });
114
+
115
+ test('user 2 actions', async ({ authToken, authOptions }) => {
116
+ authOptions.userIdentifier = 'user2';
117
+ // Uses different token for user2
118
+ });
119
+ });
120
+ ```
121
+
122
+ **Key Points**:
123
+
124
+ - Override `authOptions.userIdentifier` per test
125
+ - Tokens cached separately per user identifier
126
+ - Parallel tests isolated with different users
127
+ - Worker-specific accounts possible
128
+
129
+ ### Example 3: Ephemeral User Authentication
130
+
131
+ **Context**: Create temporary test users that don't persist to disk (e.g., testing user creation flow).
132
+
133
+ **Implementation**:
134
+
135
+ ```typescript
136
+ import { applyUserCookiesToBrowserContext } from '@seontechnologies/playwright-utils/auth-session';
137
+ import { createTestUser } from '../utils/user-factory';
138
+
139
+ test('ephemeral user test', async ({ context, page }) => {
140
+ // Create temporary user (not persisted)
141
+ const ephemeralUser = await createTestUser({
142
+ role: 'admin',
143
+ permissions: ['delete-users'],
144
+ });
145
+
146
+ // Apply auth directly to browser context
147
+ await applyUserCookiesToBrowserContext(context, ephemeralUser);
148
+
149
+ // Page now authenticated as ephemeral user
150
+ await page.goto('/admin/users');
151
+
152
+ await expect(page.getByTestId('delete-user-btn')).toBeVisible();
153
+
154
+ // User and token cleaned up after test
155
+ });
156
+ ```
157
+
158
+ **Key Points**:
159
+
160
+ - No disk persistence (ephemeral)
161
+ - Apply cookies directly to context
162
+ - Useful for testing user lifecycle
163
+ - Clean up automatic when test ends
164
+
165
+ ### Example 4: Testing Multiple Users in Single Test
166
+
167
+ **Context**: Testing interactions between users (messaging, sharing, collaboration features).
168
+
169
+ **Implementation**:
170
+
171
+ ```typescript
172
+ test('user interaction', async ({ browser }) => {
173
+ // User 1 context
174
+ const user1Context = await browser.newContext({
175
+ storageState: './auth-sessions/local/user1/storage-state.json',
176
+ });
177
+ const user1Page = await user1Context.newPage();
178
+
179
+ // User 2 context
180
+ const user2Context = await browser.newContext({
181
+ storageState: './auth-sessions/local/user2/storage-state.json',
182
+ });
183
+ const user2Page = await user2Context.newPage();
184
+
185
+ // User 1 sends message
186
+ await user1Page.goto('/messages');
187
+ await user1Page.fill('#message', 'Hello from user 1');
188
+ await user1Page.click('#send');
189
+
190
+ // User 2 receives message
191
+ await user2Page.goto('/messages');
192
+ await expect(user2Page.getByText('Hello from user 1')).toBeVisible();
193
+
194
+ // Cleanup
195
+ await user1Context.close();
196
+ await user2Context.close();
197
+ });
198
+ ```
199
+
200
+ **Key Points**:
201
+
202
+ - Each user has separate browser context
203
+ - Reference storage state files directly
204
+ - Test real-time interactions
205
+ - Clean up contexts after test
206
+
207
+ ### Example 5: Worker-Specific Accounts (Parallel Testing)
208
+
209
+ **Context**: Running tests in parallel with isolated user accounts per worker to avoid conflicts.
210
+
211
+ **Implementation**:
212
+
213
+ ```typescript
214
+ // playwright.config.ts
215
+ export default defineConfig({
216
+ workers: 4, // 4 parallel workers
217
+ use: {
218
+ // Each worker uses different user
219
+ storageState: async ({}, use, testInfo) => {
220
+ const workerIndex = testInfo.workerIndex;
221
+ const userIdentifier = `worker-${workerIndex}`;
222
+
223
+ await use(`./auth-sessions/local/${userIdentifier}/storage-state.json`);
224
+ },
225
+ },
226
+ });
227
+
228
+ // Tests run in parallel, each worker with its own user
229
+ test('parallel test 1', async ({ page }) => {
230
+ // Worker 0 uses worker-0 account
231
+ await page.goto('/dashboard');
232
+ });
233
+
234
+ test('parallel test 2', async ({ page }) => {
235
+ // Worker 1 uses worker-1 account
236
+ await page.goto('/dashboard');
237
+ });
238
+ ```
239
+
240
+ **Key Points**:
241
+
242
+ - Each worker has isolated user account
243
+ - No conflicts in parallel execution
244
+ - Token management automatic per worker
245
+ - Scales to any number of workers
246
+
247
+ ## Custom Auth Provider Pattern
248
+
249
+ **Context**: Adapt auth-session to your authentication system (OAuth2, JWT, SAML, custom).
250
+
251
+ **Minimal provider structure**:
252
+
253
+ ```typescript
254
+ import { type AuthProvider } from '@seontechnologies/playwright-utils/auth-session';
255
+
256
+ const myCustomProvider: AuthProvider = {
257
+ getEnvironment: (options) => options.environment || 'local',
258
+
259
+ getUserIdentifier: (options) => options.userIdentifier || 'default-user',
260
+
261
+ extractToken: (storageState) => {
262
+ // Extract token from your storage format
263
+ return storageState.cookies.find((c) => c.name === 'auth_token')?.value;
264
+ },
265
+
266
+ extractCookies: (tokenData) => {
267
+ // Convert token to cookies for browser context
268
+ return [
269
+ {
270
+ name: 'auth_token',
271
+ value: tokenData,
272
+ domain: 'example.com',
273
+ path: '/',
274
+ httpOnly: true,
275
+ secure: true,
276
+ },
277
+ ];
278
+ },
279
+
280
+ isTokenExpired: (storageState) => {
281
+ // Check if token is expired
282
+ const expiresAt = storageState.cookies.find((c) => c.name === 'expires_at');
283
+ return Date.now() > parseInt(expiresAt?.value || '0');
284
+ },
285
+
286
+ manageAuthToken: async (request, options) => {
287
+ // Main token acquisition logic
288
+ // Return storage state with cookies/localStorage
289
+ },
290
+ };
291
+
292
+ export default myCustomProvider;
293
+ ```
294
+
295
+ ## Integration with API Request
296
+
297
+ ```typescript
298
+ import { test } from '@seontechnologies/playwright-utils/fixtures';
299
+
300
+ test('authenticated API call', async ({ apiRequest, authToken }) => {
301
+ const { status, body } = await apiRequest({
302
+ method: 'GET',
303
+ path: '/api/protected',
304
+ headers: { Authorization: `Bearer ${authToken}` },
305
+ });
306
+
307
+ expect(status).toBe(200);
308
+ });
309
+ ```
310
+
311
+ ## Related Fragments
312
+
313
+ - `overview.md` - Installation and fixture composition
314
+ - `api-request.md` - Authenticated API requests
315
+ - `fixtures-composition.md` - Merging auth with other utilities
316
+
317
+ ## Anti-Patterns
318
+
319
+ **❌ Calling setAuthProvider after globalSetup:**
320
+
321
+ ```typescript
322
+ async function globalSetup() {
323
+ configureAuthSession(...)
324
+ await authGlobalInit() // Provider not set yet!
325
+ setAuthProvider(provider) // Too late
326
+ }
327
+ ```
328
+
329
+ **✅ Register provider before init:**
330
+
331
+ ```typescript
332
+ async function globalSetup() {
333
+ authStorageInit()
334
+ configureAuthSession(...)
335
+ setAuthProvider(provider) // First
336
+ await authGlobalInit() // Then init
337
+ }
338
+ ```
339
+
340
+ **❌ Hardcoding storage paths:**
341
+
342
+ ```typescript
343
+ const storageState = './auth-sessions/local/user1/storage-state.json'; // Brittle
344
+ ```
345
+
346
+ **✅ Use helper functions:**
347
+
348
+ ```typescript
349
+ import { getTokenFilePath } from '@seontechnologies/playwright-utils/auth-session';
350
+
351
+ const tokenPath = getTokenFilePath({
352
+ environment: 'local',
353
+ userIdentifier: 'user1',
354
+ tokenFileName: 'storage-state.json',
355
+ });
356
+ ```