agentvibes 2.13.7 → 2.13.9

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 (430) hide show
  1. package/.claude/commands/agent-vibes/bmad.md +16 -14
  2. package/.claude/hooks/play-tts-elevenlabs.sh +3 -1
  3. package/.claude/hooks/provider-manager.sh +112 -23
  4. package/.claude/personalities/rapper.md +1 -1
  5. package/README.md +7 -8
  6. package/RELEASE_NOTES.md +145 -255
  7. package/mcp-server/install-deps.js +7 -6
  8. package/mcp-server/server.py +4 -2
  9. package/package.json +1 -1
  10. package/src/commands/bmad-voices.js +3 -15
  11. package/src/commands/install-mcp.js +15 -9
  12. package/src/installer.js +19 -29
  13. package/test/unit/provider-manager.bats +13 -9
  14. package/.bmad/_cfg/agent-manifest.csv +0 -11
  15. package/.bmad/_cfg/agent-voice-map.csv +0 -11
  16. package/.bmad/_cfg/agents/bmm-analyst.customize.yaml +0 -42
  17. package/.bmad/_cfg/agents/bmm-architect.customize.yaml +0 -42
  18. package/.bmad/_cfg/agents/bmm-dev.customize.yaml +0 -42
  19. package/.bmad/_cfg/agents/bmm-frame-expert.customize.yaml +0 -42
  20. package/.bmad/_cfg/agents/bmm-pm.customize.yaml +0 -42
  21. package/.bmad/_cfg/agents/bmm-sm.customize.yaml +0 -42
  22. package/.bmad/_cfg/agents/bmm-tea.customize.yaml +0 -42
  23. package/.bmad/_cfg/agents/bmm-tech-writer.customize.yaml +0 -42
  24. package/.bmad/_cfg/agents/bmm-ux-designer.customize.yaml +0 -42
  25. package/.bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  26. package/.bmad/_cfg/files-manifest.csv +0 -243
  27. package/.bmad/_cfg/ides/claude-code.yaml +0 -6
  28. package/.bmad/_cfg/manifest.yaml +0 -9
  29. package/.bmad/_cfg/task-manifest.csv +0 -5
  30. package/.bmad/_cfg/tool-manifest.csv +0 -2
  31. package/.bmad/_cfg/workflow-manifest.csv +0 -38
  32. package/.bmad/bmm/README.md +0 -128
  33. package/.bmad/bmm/agents/analyst.md +0 -79
  34. package/.bmad/bmm/agents/analyst.md.backup-pre-tts +0 -75
  35. package/.bmad/bmm/agents/architect.md +0 -80
  36. package/.bmad/bmm/agents/dev.md +0 -70
  37. package/.bmad/bmm/agents/frame-expert.md +0 -72
  38. package/.bmad/bmm/agents/pm.md +0 -84
  39. package/.bmad/bmm/agents/sm.md +0 -93
  40. package/.bmad/bmm/agents/tea.md +0 -80
  41. package/.bmad/bmm/agents/tech-writer.md +0 -84
  42. package/.bmad/bmm/agents/ux-designer.md +0 -79
  43. package/.bmad/bmm/config.yaml +0 -17
  44. package/.bmad/bmm/docs/README.md +0 -236
  45. package/.bmad/bmm/docs/agents-guide.md +0 -1058
  46. package/.bmad/bmm/docs/brownfield-guide.md +0 -762
  47. package/.bmad/bmm/docs/enterprise-agentic-development.md +0 -686
  48. package/.bmad/bmm/docs/faq.md +0 -588
  49. package/.bmad/bmm/docs/glossary.md +0 -320
  50. package/.bmad/bmm/docs/party-mode.md +0 -224
  51. package/.bmad/bmm/docs/quick-spec-flow.md +0 -652
  52. package/.bmad/bmm/docs/quick-start.md +0 -376
  53. package/.bmad/bmm/docs/scale-adaptive-system.md +0 -612
  54. package/.bmad/bmm/docs/test-architecture.md +0 -396
  55. package/.bmad/bmm/docs/workflow-architecture-reference.md +0 -366
  56. package/.bmad/bmm/docs/workflow-document-project-reference.md +0 -489
  57. package/.bmad/bmm/docs/workflows-analysis.md +0 -370
  58. package/.bmad/bmm/docs/workflows-implementation.md +0 -286
  59. package/.bmad/bmm/docs/workflows-planning.md +0 -612
  60. package/.bmad/bmm/docs/workflows-solutioning.md +0 -554
  61. package/.bmad/bmm/teams/default-party.csv +0 -20
  62. package/.bmad/bmm/teams/team-fullstack.yaml +0 -13
  63. package/.bmad/bmm/testarch/knowledge/ci-burn-in.md +0 -675
  64. package/.bmad/bmm/testarch/knowledge/component-tdd.md +0 -486
  65. package/.bmad/bmm/testarch/knowledge/contract-testing.md +0 -957
  66. package/.bmad/bmm/testarch/knowledge/data-factories.md +0 -500
  67. package/.bmad/bmm/testarch/knowledge/email-auth.md +0 -721
  68. package/.bmad/bmm/testarch/knowledge/error-handling.md +0 -725
  69. package/.bmad/bmm/testarch/knowledge/feature-flags.md +0 -750
  70. package/.bmad/bmm/testarch/knowledge/fixture-architecture.md +0 -401
  71. package/.bmad/bmm/testarch/knowledge/network-first.md +0 -486
  72. package/.bmad/bmm/testarch/knowledge/nfr-criteria.md +0 -670
  73. package/.bmad/bmm/testarch/knowledge/playwright-config.md +0 -730
  74. package/.bmad/bmm/testarch/knowledge/probability-impact.md +0 -601
  75. package/.bmad/bmm/testarch/knowledge/risk-governance.md +0 -615
  76. package/.bmad/bmm/testarch/knowledge/selective-testing.md +0 -732
  77. package/.bmad/bmm/testarch/knowledge/selector-resilience.md +0 -527
  78. package/.bmad/bmm/testarch/knowledge/test-healing-patterns.md +0 -644
  79. package/.bmad/bmm/testarch/knowledge/test-levels-framework.md +0 -473
  80. package/.bmad/bmm/testarch/knowledge/test-priorities-matrix.md +0 -373
  81. package/.bmad/bmm/testarch/knowledge/test-quality.md +0 -664
  82. package/.bmad/bmm/testarch/knowledge/timing-debugging.md +0 -372
  83. package/.bmad/bmm/testarch/knowledge/visual-debugging.md +0 -524
  84. package/.bmad/bmm/testarch/tea-index.csv +0 -22
  85. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
  86. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  87. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -26
  88. package/.bmad/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
  89. package/.bmad/bmm/workflows/1-analysis/domain-research/template.md +0 -180
  90. package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -28
  91. package/.bmad/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  92. package/.bmad/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
  93. package/.bmad/bmm/workflows/1-analysis/product-brief/template.md +0 -181
  94. package/.bmad/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -45
  95. package/.bmad/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
  96. package/.bmad/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
  97. package/.bmad/bmm/workflows/1-analysis/research/checklist.md +0 -299
  98. package/.bmad/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  99. package/.bmad/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
  100. package/.bmad/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
  101. package/.bmad/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
  102. package/.bmad/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
  103. package/.bmad/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  104. package/.bmad/bmm/workflows/1-analysis/research/template-market.md +0 -347
  105. package/.bmad/bmm/workflows/1-analysis/research/template-technical.md +0 -245
  106. package/.bmad/bmm/workflows/1-analysis/research/workflow.yaml +0 -44
  107. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md +0 -80
  108. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md +0 -616
  109. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml +0 -53
  110. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  111. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
  112. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -145
  113. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -61
  114. package/.bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
  115. package/.bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -13
  116. package/.bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
  117. package/.bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -204
  118. package/.bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -11
  119. package/.bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -52
  120. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
  121. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
  122. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
  123. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
  124. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
  125. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
  126. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -58
  127. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
  128. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  129. package/.bmad/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
  130. package/.bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
  131. package/.bmad/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
  132. package/.bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
  133. package/.bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -55
  134. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/checklist.md +0 -169
  135. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +0 -332
  136. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/template.md +0 -146
  137. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +0 -62
  138. package/.bmad/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
  139. package/.bmad/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
  140. package/.bmad/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
  141. package/.bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -60
  142. package/.bmad/bmm/workflows/4-implementation/correct-course/checklist.md +0 -279
  143. package/.bmad/bmm/workflows/4-implementation/correct-course/instructions.md +0 -206
  144. package/.bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -56
  145. package/.bmad/bmm/workflows/4-implementation/create-story/checklist.md +0 -240
  146. package/.bmad/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
  147. package/.bmad/bmm/workflows/4-implementation/create-story/template.md +0 -51
  148. package/.bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -71
  149. package/.bmad/bmm/workflows/4-implementation/dev-story/checklist.md +0 -38
  150. package/.bmad/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
  151. package/.bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -56
  152. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  153. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
  154. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  155. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -57
  156. package/.bmad/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1443
  157. package/.bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -56
  158. package/.bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -33
  159. package/.bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -234
  160. package/.bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -55
  161. package/.bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -49
  162. package/.bmad/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  163. package/.bmad/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  164. package/.bmad/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
  165. package/.bmad/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -61
  166. package/.bmad/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  167. package/.bmad/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -26
  168. package/.bmad/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  169. package/.bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -23
  170. package/.bmad/bmm/workflows/document-project/checklist.md +0 -245
  171. package/.bmad/bmm/workflows/document-project/documentation-requirements.csv +0 -12
  172. package/.bmad/bmm/workflows/document-project/instructions.md +0 -222
  173. package/.bmad/bmm/workflows/document-project/templates/deep-dive-template.md +0 -345
  174. package/.bmad/bmm/workflows/document-project/templates/index-template.md +0 -169
  175. package/.bmad/bmm/workflows/document-project/templates/project-overview-template.md +0 -103
  176. package/.bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
  177. package/.bmad/bmm/workflows/document-project/templates/source-tree-template.md +0 -135
  178. package/.bmad/bmm/workflows/document-project/workflow.yaml +0 -29
  179. package/.bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
  180. package/.bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
  181. package/.bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
  182. package/.bmad/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
  183. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-helpers.md +0 -127
  184. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-library.json +0 -90
  185. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-templates.yaml +0 -127
  186. package/.bmad/bmm/workflows/frame-expert/_shared/validate-json-instructions.md +0 -79
  187. package/.bmad/bmm/workflows/frame-expert/create-dataflow/checklist.md +0 -39
  188. package/.bmad/bmm/workflows/frame-expert/create-dataflow/instructions.md +0 -131
  189. package/.bmad/bmm/workflows/frame-expert/create-dataflow/workflow.yaml +0 -23
  190. package/.bmad/bmm/workflows/frame-expert/create-diagram/checklist.md +0 -43
  191. package/.bmad/bmm/workflows/frame-expert/create-diagram/instructions.md +0 -142
  192. package/.bmad/bmm/workflows/frame-expert/create-diagram/workflow.yaml +0 -24
  193. package/.bmad/bmm/workflows/frame-expert/create-flowchart/checklist.md +0 -49
  194. package/.bmad/bmm/workflows/frame-expert/create-flowchart/instructions.md +0 -242
  195. package/.bmad/bmm/workflows/frame-expert/create-flowchart/workflow.yaml +0 -27
  196. package/.bmad/bmm/workflows/frame-expert/create-wireframe/checklist.md +0 -38
  197. package/.bmad/bmm/workflows/frame-expert/create-wireframe/instructions.md +0 -133
  198. package/.bmad/bmm/workflows/frame-expert/create-wireframe/workflow.yaml +0 -23
  199. package/.bmad/bmm/workflows/techdoc/documentation-standards.md +0 -262
  200. package/.bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -363
  201. package/.bmad/bmm/workflows/testarch/atdd/checklist.md +0 -373
  202. package/.bmad/bmm/workflows/testarch/atdd/instructions.md +0 -785
  203. package/.bmad/bmm/workflows/testarch/atdd/workflow.yaml +0 -45
  204. package/.bmad/bmm/workflows/testarch/automate/checklist.md +0 -580
  205. package/.bmad/bmm/workflows/testarch/automate/instructions.md +0 -1303
  206. package/.bmad/bmm/workflows/testarch/automate/workflow.yaml +0 -52
  207. package/.bmad/bmm/workflows/testarch/ci/checklist.md +0 -246
  208. package/.bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -165
  209. package/.bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -128
  210. package/.bmad/bmm/workflows/testarch/ci/instructions.md +0 -517
  211. package/.bmad/bmm/workflows/testarch/ci/workflow.yaml +0 -45
  212. package/.bmad/bmm/workflows/testarch/framework/checklist.md +0 -321
  213. package/.bmad/bmm/workflows/testarch/framework/instructions.md +0 -455
  214. package/.bmad/bmm/workflows/testarch/framework/workflow.yaml +0 -47
  215. package/.bmad/bmm/workflows/testarch/nfr-assess/checklist.md +0 -405
  216. package/.bmad/bmm/workflows/testarch/nfr-assess/instructions.md +0 -722
  217. package/.bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -443
  218. package/.bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +0 -47
  219. package/.bmad/bmm/workflows/testarch/test-design/checklist.md +0 -234
  220. package/.bmad/bmm/workflows/testarch/test-design/instructions.md +0 -782
  221. package/.bmad/bmm/workflows/testarch/test-design/test-design-template.md +0 -285
  222. package/.bmad/bmm/workflows/testarch/test-design/workflow.yaml +0 -48
  223. package/.bmad/bmm/workflows/testarch/test-review/checklist.md +0 -470
  224. package/.bmad/bmm/workflows/testarch/test-review/instructions.md +0 -608
  225. package/.bmad/bmm/workflows/testarch/test-review/test-review-template.md +0 -388
  226. package/.bmad/bmm/workflows/testarch/test-review/workflow.yaml +0 -46
  227. package/.bmad/bmm/workflows/testarch/trace/checklist.md +0 -654
  228. package/.bmad/bmm/workflows/testarch/trace/instructions.md +0 -1045
  229. package/.bmad/bmm/workflows/testarch/trace/trace-template.md +0 -673
  230. package/.bmad/bmm/workflows/testarch/trace/workflow.yaml +0 -55
  231. package/.bmad/bmm/workflows/workflow-status/init/instructions.md +0 -334
  232. package/.bmad/bmm/workflows/workflow-status/init/workflow.yaml +0 -28
  233. package/.bmad/bmm/workflows/workflow-status/instructions.md +0 -388
  234. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +0 -138
  235. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +0 -126
  236. package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +0 -52
  237. package/.bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -122
  238. package/.bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -113
  239. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
  240. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
  241. package/.bmad/bmm/workflows/workflow-status/project-levels.yaml +0 -59
  242. package/.bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -24
  243. package/.bmad/bmm/workflows/workflow-status/workflow.yaml +0 -28
  244. package/.bmad/core/agents/bmad-master.md +0 -72
  245. package/.bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -113
  246. package/.bmad/core/config.yaml +0 -11
  247. package/.bmad/core/tasks/adv-elicit-methods.csv +0 -39
  248. package/.bmad/core/tasks/advanced-elicitation-methods.csv +0 -21
  249. package/.bmad/core/tasks/advanced-elicitation.xml +0 -106
  250. package/.bmad/core/tasks/index-docs.xml +0 -65
  251. package/.bmad/core/tasks/validate-workflow.xml +0 -89
  252. package/.bmad/core/tasks/workflow.xml +0 -270
  253. package/.bmad/core/tools/shard-doc.xml +0 -109
  254. package/.bmad/core/workflows/brainstorming/README.md +0 -261
  255. package/.bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  256. package/.bmad/core/workflows/brainstorming/instructions.md +0 -315
  257. package/.bmad/core/workflows/brainstorming/template.md +0 -106
  258. package/.bmad/core/workflows/brainstorming/workflow.yaml +0 -38
  259. package/.bmad/core/workflows/party-mode/instructions.md +0 -203
  260. package/.bmad/core/workflows/party-mode/workflow.yaml +0 -28
  261. package/.bmad/docs/claude-code-instructions.md +0 -25
  262. package/.claude/commands/BMad/analyst.md +0 -88
  263. package/.claude/commands/BMad/architect.md +0 -89
  264. package/.claude/commands/BMad/bmad-master.md +0 -114
  265. package/.claude/commands/BMad/bmad-orchestrator.md +0 -151
  266. package/.claude/commands/BMad/dev.md +0 -85
  267. package/.claude/commands/BMad/pm.md +0 -88
  268. package/.claude/commands/BMad/po.md +0 -83
  269. package/.claude/commands/BMad/qa.md +0 -91
  270. package/.claude/commands/BMad/sm.md +0 -69
  271. package/.claude/commands/BMad/tasks/advanced-elicitation.md +0 -123
  272. package/.claude/commands/BMad/tasks/apply-qa-fixes.md +0 -154
  273. package/.claude/commands/BMad/tasks/brownfield-create-epic.md +0 -166
  274. package/.claude/commands/BMad/tasks/brownfield-create-story.md +0 -153
  275. package/.claude/commands/BMad/tasks/correct-course.md +0 -76
  276. package/.claude/commands/BMad/tasks/create-brownfield-story.md +0 -318
  277. package/.claude/commands/BMad/tasks/create-deep-research-prompt.md +0 -284
  278. package/.claude/commands/BMad/tasks/create-doc.md +0 -107
  279. package/.claude/commands/BMad/tasks/create-next-story.md +0 -118
  280. package/.claude/commands/BMad/tasks/document-project.md +0 -349
  281. package/.claude/commands/BMad/tasks/execute-checklist.md +0 -92
  282. package/.claude/commands/BMad/tasks/facilitate-brainstorming-session.md +0 -142
  283. package/.claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +0 -57
  284. package/.claude/commands/BMad/tasks/index-docs.md +0 -179
  285. package/.claude/commands/BMad/tasks/kb-mode-interaction.md +0 -81
  286. package/.claude/commands/BMad/tasks/nfr-assess.md +0 -349
  287. package/.claude/commands/BMad/tasks/qa-gate.md +0 -167
  288. package/.claude/commands/BMad/tasks/review-story.md +0 -320
  289. package/.claude/commands/BMad/tasks/risk-profile.md +0 -359
  290. package/.claude/commands/BMad/tasks/shard-doc.md +0 -191
  291. package/.claude/commands/BMad/tasks/test-design.md +0 -180
  292. package/.claude/commands/BMad/tasks/trace-requirements.md +0 -270
  293. package/.claude/commands/BMad/tasks/validate-next-story.md +0 -140
  294. package/.claude/commands/BMad/ux-expert.md +0 -73
  295. package/.claude/commands/bmad/bmm/agents/analyst.md +0 -14
  296. package/.claude/commands/bmad/bmm/agents/architect.md +0 -14
  297. package/.claude/commands/bmad/bmm/agents/dev.md +0 -14
  298. package/.claude/commands/bmad/bmm/agents/frame-expert.md +0 -14
  299. package/.claude/commands/bmad/bmm/agents/pm.md +0 -14
  300. package/.claude/commands/bmad/bmm/agents/sm.md +0 -14
  301. package/.claude/commands/bmad/bmm/agents/tea.md +0 -14
  302. package/.claude/commands/bmad/bmm/agents/tech-writer.md +0 -14
  303. package/.claude/commands/bmad/bmm/agents/ux-designer.md +0 -14
  304. package/.claude/commands/bmad/bmm/workflows/architecture.md +0 -13
  305. package/.claude/commands/bmad/bmm/workflows/brainstorm-project.md +0 -13
  306. package/.claude/commands/bmad/bmm/workflows/code-review.md +0 -13
  307. package/.claude/commands/bmad/bmm/workflows/correct-course.md +0 -13
  308. package/.claude/commands/bmad/bmm/workflows/create-dataflow.md +0 -13
  309. package/.claude/commands/bmad/bmm/workflows/create-diagram.md +0 -13
  310. package/.claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +0 -13
  311. package/.claude/commands/bmad/bmm/workflows/create-flowchart.md +0 -13
  312. package/.claude/commands/bmad/bmm/workflows/create-story.md +0 -13
  313. package/.claude/commands/bmad/bmm/workflows/create-ux-design.md +0 -13
  314. package/.claude/commands/bmad/bmm/workflows/create-wireframe.md +0 -13
  315. package/.claude/commands/bmad/bmm/workflows/dev-story.md +0 -13
  316. package/.claude/commands/bmad/bmm/workflows/document-project.md +0 -13
  317. package/.claude/commands/bmad/bmm/workflows/domain-research.md +0 -13
  318. package/.claude/commands/bmad/bmm/workflows/epic-tech-context.md +0 -13
  319. package/.claude/commands/bmad/bmm/workflows/implementation-readiness.md +0 -13
  320. package/.claude/commands/bmad/bmm/workflows/prd.md +0 -13
  321. package/.claude/commands/bmad/bmm/workflows/product-brief.md +0 -13
  322. package/.claude/commands/bmad/bmm/workflows/research.md +0 -13
  323. package/.claude/commands/bmad/bmm/workflows/retrospective.md +0 -13
  324. package/.claude/commands/bmad/bmm/workflows/sprint-planning.md +0 -13
  325. package/.claude/commands/bmad/bmm/workflows/story-context.md +0 -13
  326. package/.claude/commands/bmad/bmm/workflows/story-done.md +0 -13
  327. package/.claude/commands/bmad/bmm/workflows/story-ready.md +0 -13
  328. package/.claude/commands/bmad/bmm/workflows/tech-spec.md +0 -13
  329. package/.claude/commands/bmad/bmm/workflows/workflow-init.md +0 -13
  330. package/.claude/commands/bmad/bmm/workflows/workflow-status.md +0 -13
  331. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -14
  332. package/.claude/commands/bmad/core/tasks/advanced-elicitation.md +0 -9
  333. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  334. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  335. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -13
  336. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -13
  337. package/.claude/github-star-reminder.txt +0 -1
  338. package/.claude/hooks/bmad-party-manager.sh +0 -225
  339. package/.claude/hooks/stop.sh +0 -221
  340. package/.claude/piper-voices-dir.txt +0 -1
  341. package/.mcp.json +0 -88
  342. package/RELEASE_NOTES_v2.4.0_DRAFT.md +0 -116
  343. package/RELEASE_NOTES_v2.4.1_DRAFT.md +0 -61
  344. package/docs/2025-11-15_15-14-33.snagx +0 -0
  345. package/docs/Screenshot 2025-11-15 151325.png +0 -0
  346. package/docs/Screenshot 2025-11-15 151432.png +0 -0
  347. package/docs/macos-piper-issue.md +0 -172
  348. package/docs/stargazer-cms-prd.md +0 -1918
  349. package/docs/whatsapp-plugin-github-issue.md +0 -393
  350. package/docs/whatsapp-tts-plugin-feasibility.md +0 -418
  351. package/docs/whatsapp-tts-standalone-plugin.md +0 -628
  352. package/github-profile-draft.md +0 -57
  353. package/linkedin/vibe-coding-and-pulseaudio.md +0 -121
  354. package/mcp-server/agentvibes.db +0 -0
  355. package/scripts/audio-tunnel.config +0 -17
  356. package/v4-backup/.bmad-core/agent-teams/team-all.yaml +0 -15
  357. package/v4-backup/.bmad-core/agent-teams/team-fullstack.yaml +0 -19
  358. package/v4-backup/.bmad-core/agent-teams/team-ide-minimal.yaml +0 -11
  359. package/v4-backup/.bmad-core/agent-teams/team-no-ui.yaml +0 -14
  360. package/v4-backup/.bmad-core/agents/analyst.md +0 -84
  361. package/v4-backup/.bmad-core/agents/architect.md +0 -85
  362. package/v4-backup/.bmad-core/agents/bmad-master.md +0 -110
  363. package/v4-backup/.bmad-core/agents/bmad-orchestrator.md +0 -147
  364. package/v4-backup/.bmad-core/agents/dev.md +0 -81
  365. package/v4-backup/.bmad-core/agents/pm.md +0 -84
  366. package/v4-backup/.bmad-core/agents/po.md +0 -79
  367. package/v4-backup/.bmad-core/agents/qa.md +0 -87
  368. package/v4-backup/.bmad-core/agents/sm.md +0 -65
  369. package/v4-backup/.bmad-core/agents/ux-expert.md +0 -69
  370. package/v4-backup/.bmad-core/checklists/architect-checklist.md +0 -440
  371. package/v4-backup/.bmad-core/checklists/change-checklist.md +0 -184
  372. package/v4-backup/.bmad-core/checklists/pm-checklist.md +0 -372
  373. package/v4-backup/.bmad-core/checklists/po-master-checklist.md +0 -434
  374. package/v4-backup/.bmad-core/checklists/story-dod-checklist.md +0 -96
  375. package/v4-backup/.bmad-core/checklists/story-draft-checklist.md +0 -155
  376. package/v4-backup/.bmad-core/core-config.yaml +0 -22
  377. package/v4-backup/.bmad-core/data/bmad-kb.md +0 -809
  378. package/v4-backup/.bmad-core/data/brainstorming-techniques.md +0 -38
  379. package/v4-backup/.bmad-core/data/elicitation-methods.md +0 -156
  380. package/v4-backup/.bmad-core/data/technical-preferences.md +0 -5
  381. package/v4-backup/.bmad-core/data/test-levels-framework.md +0 -148
  382. package/v4-backup/.bmad-core/data/test-priorities-matrix.md +0 -174
  383. package/v4-backup/.bmad-core/enhanced-ide-development-workflow.md +0 -248
  384. package/v4-backup/.bmad-core/install-manifest.yaml +0 -230
  385. package/v4-backup/.bmad-core/tasks/advanced-elicitation.md +0 -119
  386. package/v4-backup/.bmad-core/tasks/apply-qa-fixes.md +0 -150
  387. package/v4-backup/.bmad-core/tasks/brownfield-create-epic.md +0 -162
  388. package/v4-backup/.bmad-core/tasks/brownfield-create-story.md +0 -149
  389. package/v4-backup/.bmad-core/tasks/correct-course.md +0 -72
  390. package/v4-backup/.bmad-core/tasks/create-brownfield-story.md +0 -314
  391. package/v4-backup/.bmad-core/tasks/create-deep-research-prompt.md +0 -280
  392. package/v4-backup/.bmad-core/tasks/create-doc.md +0 -103
  393. package/v4-backup/.bmad-core/tasks/create-next-story.md +0 -114
  394. package/v4-backup/.bmad-core/tasks/document-project.md +0 -345
  395. package/v4-backup/.bmad-core/tasks/execute-checklist.md +0 -88
  396. package/v4-backup/.bmad-core/tasks/facilitate-brainstorming-session.md +0 -138
  397. package/v4-backup/.bmad-core/tasks/generate-ai-frontend-prompt.md +0 -53
  398. package/v4-backup/.bmad-core/tasks/index-docs.md +0 -175
  399. package/v4-backup/.bmad-core/tasks/kb-mode-interaction.md +0 -77
  400. package/v4-backup/.bmad-core/tasks/nfr-assess.md +0 -345
  401. package/v4-backup/.bmad-core/tasks/qa-gate.md +0 -163
  402. package/v4-backup/.bmad-core/tasks/review-story.md +0 -316
  403. package/v4-backup/.bmad-core/tasks/risk-profile.md +0 -355
  404. package/v4-backup/.bmad-core/tasks/shard-doc.md +0 -187
  405. package/v4-backup/.bmad-core/tasks/test-design.md +0 -176
  406. package/v4-backup/.bmad-core/tasks/trace-requirements.md +0 -266
  407. package/v4-backup/.bmad-core/tasks/validate-next-story.md +0 -136
  408. package/v4-backup/.bmad-core/templates/architecture-tmpl.yaml +0 -651
  409. package/v4-backup/.bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
  410. package/v4-backup/.bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -477
  411. package/v4-backup/.bmad-core/templates/brownfield-prd-tmpl.yaml +0 -281
  412. package/v4-backup/.bmad-core/templates/competitor-analysis-tmpl.yaml +0 -307
  413. package/v4-backup/.bmad-core/templates/front-end-architecture-tmpl.yaml +0 -219
  414. package/v4-backup/.bmad-core/templates/front-end-spec-tmpl.yaml +0 -350
  415. package/v4-backup/.bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -824
  416. package/v4-backup/.bmad-core/templates/market-research-tmpl.yaml +0 -253
  417. package/v4-backup/.bmad-core/templates/prd-tmpl.yaml +0 -203
  418. package/v4-backup/.bmad-core/templates/project-brief-tmpl.yaml +0 -222
  419. package/v4-backup/.bmad-core/templates/qa-gate-tmpl.yaml +0 -103
  420. package/v4-backup/.bmad-core/templates/story-tmpl.yaml +0 -138
  421. package/v4-backup/.bmad-core/user-guide.md +0 -577
  422. package/v4-backup/.bmad-core/utils/bmad-doc-template.md +0 -327
  423. package/v4-backup/.bmad-core/utils/workflow-management.md +0 -71
  424. package/v4-backup/.bmad-core/workflows/brownfield-fullstack.yaml +0 -298
  425. package/v4-backup/.bmad-core/workflows/brownfield-service.yaml +0 -188
  426. package/v4-backup/.bmad-core/workflows/brownfield-ui.yaml +0 -198
  427. package/v4-backup/.bmad-core/workflows/greenfield-fullstack.yaml +0 -241
  428. package/v4-backup/.bmad-core/workflows/greenfield-service.yaml +0 -207
  429. package/v4-backup/.bmad-core/workflows/greenfield-ui.yaml +0 -236
  430. package/v4-backup/.bmad-core/working-in-the-brownfield.md +0 -606
@@ -1,401 +0,0 @@
1
- # Fixture Architecture Playbook
2
-
3
- ## Principle
4
-
5
- Build test helpers as pure functions first, then wrap them in framework-specific fixtures. Compose capabilities using `mergeTests` (Playwright) or layered commands (Cypress) instead of inheritance. Each fixture should solve one isolated concern (auth, API, logs, network).
6
-
7
- ## Rationale
8
-
9
- Traditional Page Object Models create tight coupling through inheritance chains (`BasePage → LoginPage → AdminPage`). When base classes change, all descendants break. Pure functions with fixture wrappers provide:
10
-
11
- - **Testability**: Pure functions run in unit tests without framework overhead
12
- - **Composability**: Mix capabilities freely via `mergeTests`, no inheritance constraints
13
- - **Reusability**: Export fixtures via package subpaths for cross-project sharing
14
- - **Maintainability**: One concern per fixture = clear responsibility boundaries
15
-
16
- ## Pattern Examples
17
-
18
- ### Example 1: Pure Function → Fixture Pattern
19
-
20
- **Context**: When building any test helper, always start with a pure function that accepts all dependencies explicitly. Then wrap it in a Playwright fixture or Cypress command.
21
-
22
- **Implementation**:
23
-
24
- ```typescript
25
- // playwright/support/helpers/api-request.ts
26
- // Step 1: Pure function (ALWAYS FIRST!)
27
- type ApiRequestParams = {
28
- request: APIRequestContext;
29
- method: 'GET' | 'POST' | 'PUT' | 'DELETE';
30
- url: string;
31
- data?: unknown;
32
- headers?: Record<string, string>;
33
- };
34
-
35
- export async function apiRequest({
36
- request,
37
- method,
38
- url,
39
- data,
40
- headers = {}
41
- }: ApiRequestParams) {
42
- const response = await request.fetch(url, {
43
- method,
44
- data,
45
- headers: {
46
- 'Content-Type': 'application/json',
47
- ...headers
48
- }
49
- });
50
-
51
- if (!response.ok()) {
52
- throw new Error(`API request failed: ${response.status()} ${await response.text()}`);
53
- }
54
-
55
- return response.json();
56
- }
57
-
58
- // Step 2: Fixture wrapper
59
- // playwright/support/fixtures/api-request-fixture.ts
60
- import { test as base } from '@playwright/test';
61
- import { apiRequest } from '../helpers/api-request';
62
-
63
- export const test = base.extend<{ apiRequest: typeof apiRequest }>({
64
- apiRequest: async ({ request }, use) => {
65
- // Inject framework dependency, expose pure function
66
- await use((params) => apiRequest({ request, ...params }));
67
- }
68
- });
69
-
70
- // Step 3: Package exports for reusability
71
- // package.json
72
- {
73
- "exports": {
74
- "./api-request": "./playwright/support/helpers/api-request.ts",
75
- "./api-request/fixtures": "./playwright/support/fixtures/api-request-fixture.ts"
76
- }
77
- }
78
- ```
79
-
80
- **Key Points**:
81
-
82
- - Pure function is unit-testable without Playwright running
83
- - Framework dependency (`request`) injected at fixture boundary
84
- - Fixture exposes the pure function to test context
85
- - Package subpath exports enable `import { apiRequest } from 'my-fixtures/api-request'`
86
-
87
- ### Example 2: Composable Fixture System with mergeTests
88
-
89
- **Context**: When building comprehensive test capabilities, compose multiple focused fixtures instead of creating monolithic helper classes. Each fixture provides one capability.
90
-
91
- **Implementation**:
92
-
93
- ```typescript
94
- // playwright/support/fixtures/merged-fixtures.ts
95
- import { test as base, mergeTests } from '@playwright/test';
96
- import { test as apiRequestFixture } from './api-request-fixture';
97
- import { test as networkFixture } from './network-fixture';
98
- import { test as authFixture } from './auth-fixture';
99
- import { test as logFixture } from './log-fixture';
100
-
101
- // Compose all fixtures for comprehensive capabilities
102
- export const test = mergeTests(base, apiRequestFixture, networkFixture, authFixture, logFixture);
103
-
104
- export { expect } from '@playwright/test';
105
-
106
- // Example usage in tests:
107
- // import { test, expect } from './support/fixtures/merged-fixtures';
108
- //
109
- // test('user can create order', async ({ page, apiRequest, auth, network }) => {
110
- // await auth.loginAs('customer@example.com');
111
- // await network.interceptRoute('POST', '**/api/orders', { id: 123 });
112
- // await page.goto('/checkout');
113
- // await page.click('[data-testid="submit-order"]');
114
- // await expect(page.getByText('Order #123')).toBeVisible();
115
- // });
116
- ```
117
-
118
- **Individual Fixture Examples**:
119
-
120
- ```typescript
121
- // network-fixture.ts
122
- export const test = base.extend({
123
- network: async ({ page }, use) => {
124
- const interceptedRoutes = new Map();
125
-
126
- const interceptRoute = async (method: string, url: string, response: unknown) => {
127
- await page.route(url, (route) => {
128
- if (route.request().method() === method) {
129
- route.fulfill({ body: JSON.stringify(response) });
130
- }
131
- });
132
- interceptedRoutes.set(`${method}:${url}`, response);
133
- };
134
-
135
- await use({ interceptRoute });
136
-
137
- // Cleanup
138
- interceptedRoutes.clear();
139
- },
140
- });
141
-
142
- // auth-fixture.ts
143
- export const test = base.extend({
144
- auth: async ({ page, context }, use) => {
145
- const loginAs = async (email: string) => {
146
- // Use API to setup auth (fast!)
147
- const token = await getAuthToken(email);
148
- await context.addCookies([
149
- {
150
- name: 'auth_token',
151
- value: token,
152
- domain: 'localhost',
153
- path: '/',
154
- },
155
- ]);
156
- };
157
-
158
- await use({ loginAs });
159
- },
160
- });
161
- ```
162
-
163
- **Key Points**:
164
-
165
- - `mergeTests` combines fixtures without inheritance
166
- - Each fixture has single responsibility (network, auth, logs)
167
- - Tests import merged fixture and access all capabilities
168
- - No coupling between fixtures—add/remove freely
169
-
170
- ### Example 3: Framework-Agnostic HTTP Helper
171
-
172
- **Context**: When building HTTP helpers, keep them framework-agnostic. Accept all params explicitly so they work in unit tests, Playwright, Cypress, or any context.
173
-
174
- **Implementation**:
175
-
176
- ```typescript
177
- // shared/helpers/http-helper.ts
178
- // Pure, framework-agnostic function
179
- type HttpHelperParams = {
180
- baseUrl: string;
181
- endpoint: string;
182
- method: 'GET' | 'POST' | 'PUT' | 'DELETE';
183
- body?: unknown;
184
- headers?: Record<string, string>;
185
- token?: string;
186
- };
187
-
188
- export async function makeHttpRequest({ baseUrl, endpoint, method, body, headers = {}, token }: HttpHelperParams): Promise<unknown> {
189
- const url = `${baseUrl}${endpoint}`;
190
- const requestHeaders = {
191
- 'Content-Type': 'application/json',
192
- ...(token && { Authorization: `Bearer ${token}` }),
193
- ...headers,
194
- };
195
-
196
- const response = await fetch(url, {
197
- method,
198
- headers: requestHeaders,
199
- body: body ? JSON.stringify(body) : undefined,
200
- });
201
-
202
- if (!response.ok) {
203
- const errorText = await response.text();
204
- throw new Error(`HTTP ${method} ${url} failed: ${response.status} ${errorText}`);
205
- }
206
-
207
- return response.json();
208
- }
209
-
210
- // Playwright fixture wrapper
211
- // playwright/support/fixtures/http-fixture.ts
212
- import { test as base } from '@playwright/test';
213
- import { makeHttpRequest } from '../../shared/helpers/http-helper';
214
-
215
- export const test = base.extend({
216
- httpHelper: async ({}, use) => {
217
- const baseUrl = process.env.API_BASE_URL || 'http://localhost:3000';
218
-
219
- await use((params) => makeHttpRequest({ baseUrl, ...params }));
220
- },
221
- });
222
-
223
- // Cypress command wrapper
224
- // cypress/support/commands.ts
225
- import { makeHttpRequest } from '../../shared/helpers/http-helper';
226
-
227
- Cypress.Commands.add('apiRequest', (params) => {
228
- const baseUrl = Cypress.env('API_BASE_URL') || 'http://localhost:3000';
229
- return cy.wrap(makeHttpRequest({ baseUrl, ...params }));
230
- });
231
- ```
232
-
233
- **Key Points**:
234
-
235
- - Pure function uses only standard `fetch`, no framework dependencies
236
- - Unit tests call `makeHttpRequest` directly with all params
237
- - Playwright and Cypress wrappers inject framework-specific config
238
- - Same logic runs everywhere—zero duplication
239
-
240
- ### Example 4: Fixture Cleanup Pattern
241
-
242
- **Context**: When fixtures create resources (data, files, connections), ensure automatic cleanup in fixture teardown. Tests must not leak state.
243
-
244
- **Implementation**:
245
-
246
- ```typescript
247
- // playwright/support/fixtures/database-fixture.ts
248
- import { test as base } from '@playwright/test';
249
- import { seedDatabase, deleteRecord } from '../helpers/db-helpers';
250
-
251
- type DatabaseFixture = {
252
- seedUser: (userData: Partial<User>) => Promise<User>;
253
- seedOrder: (orderData: Partial<Order>) => Promise<Order>;
254
- };
255
-
256
- export const test = base.extend<DatabaseFixture>({
257
- seedUser: async ({}, use) => {
258
- const createdUsers: string[] = [];
259
-
260
- const seedUser = async (userData: Partial<User>) => {
261
- const user = await seedDatabase('users', userData);
262
- createdUsers.push(user.id);
263
- return user;
264
- };
265
-
266
- await use(seedUser);
267
-
268
- // Auto-cleanup: Delete all users created during test
269
- for (const userId of createdUsers) {
270
- await deleteRecord('users', userId);
271
- }
272
- createdUsers.length = 0;
273
- },
274
-
275
- seedOrder: async ({}, use) => {
276
- const createdOrders: string[] = [];
277
-
278
- const seedOrder = async (orderData: Partial<Order>) => {
279
- const order = await seedDatabase('orders', orderData);
280
- createdOrders.push(order.id);
281
- return order;
282
- };
283
-
284
- await use(seedOrder);
285
-
286
- // Auto-cleanup: Delete all orders
287
- for (const orderId of createdOrders) {
288
- await deleteRecord('orders', orderId);
289
- }
290
- createdOrders.length = 0;
291
- },
292
- });
293
-
294
- // Example usage:
295
- // test('user can place order', async ({ seedUser, seedOrder, page }) => {
296
- // const user = await seedUser({ email: 'test@example.com' });
297
- // const order = await seedOrder({ userId: user.id, total: 100 });
298
- //
299
- // await page.goto(`/orders/${order.id}`);
300
- // await expect(page.getByText('Order Total: $100')).toBeVisible();
301
- //
302
- // // No manual cleanup needed—fixture handles it automatically
303
- // });
304
- ```
305
-
306
- **Key Points**:
307
-
308
- - Track all created resources in array during test execution
309
- - Teardown (after `use()`) deletes all tracked resources
310
- - Tests don't manually clean up—happens automatically
311
- - Prevents test pollution and flakiness from shared state
312
-
313
- ### Anti-Pattern: Inheritance-Based Page Objects
314
-
315
- **Problem**:
316
-
317
- ```typescript
318
- // ❌ BAD: Page Object Model with inheritance
319
- class BasePage {
320
- constructor(public page: Page) {}
321
-
322
- async navigate(url: string) {
323
- await this.page.goto(url);
324
- }
325
-
326
- async clickButton(selector: string) {
327
- await this.page.click(selector);
328
- }
329
- }
330
-
331
- class LoginPage extends BasePage {
332
- async login(email: string, password: string) {
333
- await this.navigate('/login');
334
- await this.page.fill('#email', email);
335
- await this.page.fill('#password', password);
336
- await this.clickButton('#submit');
337
- }
338
- }
339
-
340
- class AdminPage extends LoginPage {
341
- async accessAdminPanel() {
342
- await this.login('admin@example.com', 'admin123');
343
- await this.navigate('/admin');
344
- }
345
- }
346
- ```
347
-
348
- **Why It Fails**:
349
-
350
- - Changes to `BasePage` break all descendants (`LoginPage`, `AdminPage`)
351
- - `AdminPage` inherits unnecessary `login` details—tight coupling
352
- - Cannot compose capabilities (e.g., admin + reporting features require multiple inheritance)
353
- - Hard to test `BasePage` methods in isolation
354
- - Hidden state in class instances leads to unpredictable behavior
355
-
356
- **Better Approach**: Use pure functions + fixtures
357
-
358
- ```typescript
359
- // ✅ GOOD: Pure functions with fixture composition
360
- // helpers/navigation.ts
361
- export async function navigate(page: Page, url: string) {
362
- await page.goto(url);
363
- }
364
-
365
- // helpers/auth.ts
366
- export async function login(page: Page, email: string, password: string) {
367
- await page.fill('[data-testid="email"]', email);
368
- await page.fill('[data-testid="password"]', password);
369
- await page.click('[data-testid="submit"]');
370
- }
371
-
372
- // fixtures/admin-fixture.ts
373
- export const test = base.extend({
374
- adminPage: async ({ page }, use) => {
375
- await login(page, 'admin@example.com', 'admin123');
376
- await navigate(page, '/admin');
377
- await use(page);
378
- },
379
- });
380
-
381
- // Tests import exactly what they need—no inheritance
382
- ```
383
-
384
- ## Integration Points
385
-
386
- - **Used in workflows**: `*atdd` (test generation), `*automate` (test expansion), `*framework` (initial setup)
387
- - **Related fragments**:
388
- - `data-factories.md` - Factory functions for test data
389
- - `network-first.md` - Network interception patterns
390
- - `test-quality.md` - Deterministic test design principles
391
-
392
- ## Helper Function Reuse Guidelines
393
-
394
- When deciding whether to create a fixture, follow these rules:
395
-
396
- - **3+ uses** → Create fixture with subpath export (shared across tests/projects)
397
- - **2-3 uses** → Create utility module (shared within project)
398
- - **1 use** → Keep inline (avoid premature abstraction)
399
- - **Complex logic** → Factory function pattern (dynamic data generation)
400
-
401
- _Source: Murat Testing Philosophy (lines 74-122), SEON production patterns, Playwright fixture docs._