agentvibes 2.9.7 → 2.12.0

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 (441) hide show
  1. package/.claude/commands/agent-vibes/agent-vibes.md +1 -1
  2. package/.claude/commands/agent-vibes/bmad.md +3 -3
  3. package/.claude/commands/agent-vibes/set-pretext.md +2 -2
  4. package/.claude/commands/agent-vibes-bmad-voices.md +5 -5
  5. package/.claude/hooks/bmad-speak.sh +1 -1
  6. package/.claude/hooks/bmad-voice-manager.sh +1 -1
  7. package/.claude/hooks/migrate-to-agentvibes.sh +161 -0
  8. package/.claude/hooks/play-tts-elevenlabs.sh +1 -1
  9. package/.claude/output-styles/agent-vibes.md +3 -3
  10. package/README.md +9 -6
  11. package/RELEASE_NOTES.md +341 -0
  12. package/docs/architecture/provider-system.md +3 -3
  13. package/docs/bmad-v6-support.md +1 -1
  14. package/docs/technical-deep-dive.md +1 -1
  15. package/docs/voice-mapping-format.md +1 -1
  16. package/package.json +1 -1
  17. package/src/installer.js +93 -21
  18. package/test-migration.sh +539 -0
  19. package/.bmad/_cfg/agent-manifest.csv +0 -11
  20. package/.bmad/_cfg/agent-voice-map.csv +0 -11
  21. package/.bmad/_cfg/agents/bmm-analyst.customize.yaml +0 -42
  22. package/.bmad/_cfg/agents/bmm-architect.customize.yaml +0 -42
  23. package/.bmad/_cfg/agents/bmm-dev.customize.yaml +0 -42
  24. package/.bmad/_cfg/agents/bmm-frame-expert.customize.yaml +0 -42
  25. package/.bmad/_cfg/agents/bmm-pm.customize.yaml +0 -42
  26. package/.bmad/_cfg/agents/bmm-sm.customize.yaml +0 -42
  27. package/.bmad/_cfg/agents/bmm-tea.customize.yaml +0 -42
  28. package/.bmad/_cfg/agents/bmm-tech-writer.customize.yaml +0 -42
  29. package/.bmad/_cfg/agents/bmm-ux-designer.customize.yaml +0 -42
  30. package/.bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  31. package/.bmad/_cfg/files-manifest.csv +0 -243
  32. package/.bmad/_cfg/ides/claude-code.yaml +0 -6
  33. package/.bmad/_cfg/manifest.yaml +0 -9
  34. package/.bmad/_cfg/task-manifest.csv +0 -5
  35. package/.bmad/_cfg/tool-manifest.csv +0 -2
  36. package/.bmad/_cfg/workflow-manifest.csv +0 -38
  37. package/.bmad/bmm/README.md +0 -128
  38. package/.bmad/bmm/agents/analyst.md +0 -79
  39. package/.bmad/bmm/agents/analyst.md.backup-pre-tts +0 -75
  40. package/.bmad/bmm/agents/architect.md +0 -80
  41. package/.bmad/bmm/agents/dev.md +0 -70
  42. package/.bmad/bmm/agents/frame-expert.md +0 -72
  43. package/.bmad/bmm/agents/pm.md +0 -84
  44. package/.bmad/bmm/agents/sm.md +0 -93
  45. package/.bmad/bmm/agents/tea.md +0 -80
  46. package/.bmad/bmm/agents/tech-writer.md +0 -84
  47. package/.bmad/bmm/agents/ux-designer.md +0 -79
  48. package/.bmad/bmm/config.yaml +0 -17
  49. package/.bmad/bmm/docs/README.md +0 -236
  50. package/.bmad/bmm/docs/agents-guide.md +0 -1058
  51. package/.bmad/bmm/docs/brownfield-guide.md +0 -762
  52. package/.bmad/bmm/docs/enterprise-agentic-development.md +0 -686
  53. package/.bmad/bmm/docs/faq.md +0 -588
  54. package/.bmad/bmm/docs/glossary.md +0 -320
  55. package/.bmad/bmm/docs/party-mode.md +0 -224
  56. package/.bmad/bmm/docs/quick-spec-flow.md +0 -652
  57. package/.bmad/bmm/docs/quick-start.md +0 -376
  58. package/.bmad/bmm/docs/scale-adaptive-system.md +0 -612
  59. package/.bmad/bmm/docs/test-architecture.md +0 -396
  60. package/.bmad/bmm/docs/workflow-architecture-reference.md +0 -366
  61. package/.bmad/bmm/docs/workflow-document-project-reference.md +0 -489
  62. package/.bmad/bmm/docs/workflows-analysis.md +0 -370
  63. package/.bmad/bmm/docs/workflows-implementation.md +0 -286
  64. package/.bmad/bmm/docs/workflows-planning.md +0 -612
  65. package/.bmad/bmm/docs/workflows-solutioning.md +0 -554
  66. package/.bmad/bmm/teams/default-party.csv +0 -20
  67. package/.bmad/bmm/teams/team-fullstack.yaml +0 -13
  68. package/.bmad/bmm/testarch/knowledge/ci-burn-in.md +0 -675
  69. package/.bmad/bmm/testarch/knowledge/component-tdd.md +0 -486
  70. package/.bmad/bmm/testarch/knowledge/contract-testing.md +0 -957
  71. package/.bmad/bmm/testarch/knowledge/data-factories.md +0 -500
  72. package/.bmad/bmm/testarch/knowledge/email-auth.md +0 -721
  73. package/.bmad/bmm/testarch/knowledge/error-handling.md +0 -725
  74. package/.bmad/bmm/testarch/knowledge/feature-flags.md +0 -750
  75. package/.bmad/bmm/testarch/knowledge/fixture-architecture.md +0 -401
  76. package/.bmad/bmm/testarch/knowledge/network-first.md +0 -486
  77. package/.bmad/bmm/testarch/knowledge/nfr-criteria.md +0 -670
  78. package/.bmad/bmm/testarch/knowledge/playwright-config.md +0 -730
  79. package/.bmad/bmm/testarch/knowledge/probability-impact.md +0 -601
  80. package/.bmad/bmm/testarch/knowledge/risk-governance.md +0 -615
  81. package/.bmad/bmm/testarch/knowledge/selective-testing.md +0 -732
  82. package/.bmad/bmm/testarch/knowledge/selector-resilience.md +0 -527
  83. package/.bmad/bmm/testarch/knowledge/test-healing-patterns.md +0 -644
  84. package/.bmad/bmm/testarch/knowledge/test-levels-framework.md +0 -473
  85. package/.bmad/bmm/testarch/knowledge/test-priorities-matrix.md +0 -373
  86. package/.bmad/bmm/testarch/knowledge/test-quality.md +0 -664
  87. package/.bmad/bmm/testarch/knowledge/timing-debugging.md +0 -372
  88. package/.bmad/bmm/testarch/knowledge/visual-debugging.md +0 -524
  89. package/.bmad/bmm/testarch/tea-index.csv +0 -22
  90. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
  91. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  92. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -26
  93. package/.bmad/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
  94. package/.bmad/bmm/workflows/1-analysis/domain-research/template.md +0 -180
  95. package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -28
  96. package/.bmad/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  97. package/.bmad/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
  98. package/.bmad/bmm/workflows/1-analysis/product-brief/template.md +0 -181
  99. package/.bmad/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -45
  100. package/.bmad/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
  101. package/.bmad/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
  102. package/.bmad/bmm/workflows/1-analysis/research/checklist.md +0 -299
  103. package/.bmad/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  104. package/.bmad/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
  105. package/.bmad/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
  106. package/.bmad/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
  107. package/.bmad/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
  108. package/.bmad/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  109. package/.bmad/bmm/workflows/1-analysis/research/template-market.md +0 -347
  110. package/.bmad/bmm/workflows/1-analysis/research/template-technical.md +0 -245
  111. package/.bmad/bmm/workflows/1-analysis/research/workflow.yaml +0 -44
  112. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md +0 -80
  113. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md +0 -616
  114. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml +0 -53
  115. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  116. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
  117. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -145
  118. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -61
  119. package/.bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
  120. package/.bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -13
  121. package/.bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
  122. package/.bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -204
  123. package/.bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -11
  124. package/.bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -52
  125. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
  126. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
  127. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
  128. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
  129. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
  130. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
  131. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -58
  132. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
  133. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  134. package/.bmad/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
  135. package/.bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
  136. package/.bmad/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
  137. package/.bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
  138. package/.bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -55
  139. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/checklist.md +0 -169
  140. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +0 -332
  141. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/template.md +0 -146
  142. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +0 -62
  143. package/.bmad/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
  144. package/.bmad/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
  145. package/.bmad/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
  146. package/.bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -60
  147. package/.bmad/bmm/workflows/4-implementation/correct-course/checklist.md +0 -279
  148. package/.bmad/bmm/workflows/4-implementation/correct-course/instructions.md +0 -206
  149. package/.bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -56
  150. package/.bmad/bmm/workflows/4-implementation/create-story/checklist.md +0 -240
  151. package/.bmad/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
  152. package/.bmad/bmm/workflows/4-implementation/create-story/template.md +0 -51
  153. package/.bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -71
  154. package/.bmad/bmm/workflows/4-implementation/dev-story/checklist.md +0 -38
  155. package/.bmad/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
  156. package/.bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -56
  157. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  158. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
  159. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  160. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -57
  161. package/.bmad/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1443
  162. package/.bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -56
  163. package/.bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -33
  164. package/.bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -234
  165. package/.bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -55
  166. package/.bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -49
  167. package/.bmad/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  168. package/.bmad/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  169. package/.bmad/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
  170. package/.bmad/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -61
  171. package/.bmad/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  172. package/.bmad/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -26
  173. package/.bmad/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  174. package/.bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -23
  175. package/.bmad/bmm/workflows/document-project/checklist.md +0 -245
  176. package/.bmad/bmm/workflows/document-project/documentation-requirements.csv +0 -12
  177. package/.bmad/bmm/workflows/document-project/instructions.md +0 -222
  178. package/.bmad/bmm/workflows/document-project/templates/deep-dive-template.md +0 -345
  179. package/.bmad/bmm/workflows/document-project/templates/index-template.md +0 -169
  180. package/.bmad/bmm/workflows/document-project/templates/project-overview-template.md +0 -103
  181. package/.bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
  182. package/.bmad/bmm/workflows/document-project/templates/source-tree-template.md +0 -135
  183. package/.bmad/bmm/workflows/document-project/workflow.yaml +0 -29
  184. package/.bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
  185. package/.bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
  186. package/.bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
  187. package/.bmad/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
  188. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-helpers.md +0 -127
  189. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-library.json +0 -90
  190. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-templates.yaml +0 -127
  191. package/.bmad/bmm/workflows/frame-expert/_shared/validate-json-instructions.md +0 -79
  192. package/.bmad/bmm/workflows/frame-expert/create-dataflow/checklist.md +0 -39
  193. package/.bmad/bmm/workflows/frame-expert/create-dataflow/instructions.md +0 -131
  194. package/.bmad/bmm/workflows/frame-expert/create-dataflow/workflow.yaml +0 -23
  195. package/.bmad/bmm/workflows/frame-expert/create-diagram/checklist.md +0 -43
  196. package/.bmad/bmm/workflows/frame-expert/create-diagram/instructions.md +0 -142
  197. package/.bmad/bmm/workflows/frame-expert/create-diagram/workflow.yaml +0 -24
  198. package/.bmad/bmm/workflows/frame-expert/create-flowchart/checklist.md +0 -49
  199. package/.bmad/bmm/workflows/frame-expert/create-flowchart/instructions.md +0 -242
  200. package/.bmad/bmm/workflows/frame-expert/create-flowchart/workflow.yaml +0 -27
  201. package/.bmad/bmm/workflows/frame-expert/create-wireframe/checklist.md +0 -38
  202. package/.bmad/bmm/workflows/frame-expert/create-wireframe/instructions.md +0 -133
  203. package/.bmad/bmm/workflows/frame-expert/create-wireframe/workflow.yaml +0 -23
  204. package/.bmad/bmm/workflows/techdoc/documentation-standards.md +0 -262
  205. package/.bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -363
  206. package/.bmad/bmm/workflows/testarch/atdd/checklist.md +0 -373
  207. package/.bmad/bmm/workflows/testarch/atdd/instructions.md +0 -785
  208. package/.bmad/bmm/workflows/testarch/atdd/workflow.yaml +0 -45
  209. package/.bmad/bmm/workflows/testarch/automate/checklist.md +0 -580
  210. package/.bmad/bmm/workflows/testarch/automate/instructions.md +0 -1303
  211. package/.bmad/bmm/workflows/testarch/automate/workflow.yaml +0 -52
  212. package/.bmad/bmm/workflows/testarch/ci/checklist.md +0 -246
  213. package/.bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -165
  214. package/.bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -128
  215. package/.bmad/bmm/workflows/testarch/ci/instructions.md +0 -517
  216. package/.bmad/bmm/workflows/testarch/ci/workflow.yaml +0 -45
  217. package/.bmad/bmm/workflows/testarch/framework/checklist.md +0 -321
  218. package/.bmad/bmm/workflows/testarch/framework/instructions.md +0 -455
  219. package/.bmad/bmm/workflows/testarch/framework/workflow.yaml +0 -47
  220. package/.bmad/bmm/workflows/testarch/nfr-assess/checklist.md +0 -405
  221. package/.bmad/bmm/workflows/testarch/nfr-assess/instructions.md +0 -722
  222. package/.bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -443
  223. package/.bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +0 -47
  224. package/.bmad/bmm/workflows/testarch/test-design/checklist.md +0 -234
  225. package/.bmad/bmm/workflows/testarch/test-design/instructions.md +0 -782
  226. package/.bmad/bmm/workflows/testarch/test-design/test-design-template.md +0 -285
  227. package/.bmad/bmm/workflows/testarch/test-design/workflow.yaml +0 -48
  228. package/.bmad/bmm/workflows/testarch/test-review/checklist.md +0 -470
  229. package/.bmad/bmm/workflows/testarch/test-review/instructions.md +0 -608
  230. package/.bmad/bmm/workflows/testarch/test-review/test-review-template.md +0 -388
  231. package/.bmad/bmm/workflows/testarch/test-review/workflow.yaml +0 -46
  232. package/.bmad/bmm/workflows/testarch/trace/checklist.md +0 -654
  233. package/.bmad/bmm/workflows/testarch/trace/instructions.md +0 -1045
  234. package/.bmad/bmm/workflows/testarch/trace/trace-template.md +0 -673
  235. package/.bmad/bmm/workflows/testarch/trace/workflow.yaml +0 -55
  236. package/.bmad/bmm/workflows/workflow-status/init/instructions.md +0 -334
  237. package/.bmad/bmm/workflows/workflow-status/init/workflow.yaml +0 -28
  238. package/.bmad/bmm/workflows/workflow-status/instructions.md +0 -388
  239. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +0 -138
  240. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +0 -126
  241. package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +0 -52
  242. package/.bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -122
  243. package/.bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -113
  244. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
  245. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
  246. package/.bmad/bmm/workflows/workflow-status/project-levels.yaml +0 -59
  247. package/.bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -24
  248. package/.bmad/bmm/workflows/workflow-status/workflow.yaml +0 -28
  249. package/.bmad/core/agents/bmad-master.md +0 -72
  250. package/.bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -113
  251. package/.bmad/core/config.yaml +0 -11
  252. package/.bmad/core/tasks/adv-elicit-methods.csv +0 -39
  253. package/.bmad/core/tasks/advanced-elicitation-methods.csv +0 -21
  254. package/.bmad/core/tasks/advanced-elicitation.xml +0 -106
  255. package/.bmad/core/tasks/index-docs.xml +0 -65
  256. package/.bmad/core/tasks/validate-workflow.xml +0 -89
  257. package/.bmad/core/tasks/workflow.xml +0 -270
  258. package/.bmad/core/tools/shard-doc.xml +0 -109
  259. package/.bmad/core/workflows/brainstorming/README.md +0 -261
  260. package/.bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  261. package/.bmad/core/workflows/brainstorming/instructions.md +0 -315
  262. package/.bmad/core/workflows/brainstorming/template.md +0 -106
  263. package/.bmad/core/workflows/brainstorming/workflow.yaml +0 -38
  264. package/.bmad/core/workflows/party-mode/instructions.md +0 -203
  265. package/.bmad/core/workflows/party-mode/workflow.yaml +0 -28
  266. package/.bmad/docs/claude-code-instructions.md +0 -25
  267. package/.claude/commands/BMad/analyst.md +0 -88
  268. package/.claude/commands/BMad/architect.md +0 -89
  269. package/.claude/commands/BMad/bmad-master.md +0 -114
  270. package/.claude/commands/BMad/bmad-orchestrator.md +0 -151
  271. package/.claude/commands/BMad/dev.md +0 -85
  272. package/.claude/commands/BMad/pm.md +0 -88
  273. package/.claude/commands/BMad/po.md +0 -83
  274. package/.claude/commands/BMad/qa.md +0 -91
  275. package/.claude/commands/BMad/sm.md +0 -69
  276. package/.claude/commands/BMad/tasks/advanced-elicitation.md +0 -123
  277. package/.claude/commands/BMad/tasks/apply-qa-fixes.md +0 -154
  278. package/.claude/commands/BMad/tasks/brownfield-create-epic.md +0 -166
  279. package/.claude/commands/BMad/tasks/brownfield-create-story.md +0 -153
  280. package/.claude/commands/BMad/tasks/correct-course.md +0 -76
  281. package/.claude/commands/BMad/tasks/create-brownfield-story.md +0 -318
  282. package/.claude/commands/BMad/tasks/create-deep-research-prompt.md +0 -284
  283. package/.claude/commands/BMad/tasks/create-doc.md +0 -107
  284. package/.claude/commands/BMad/tasks/create-next-story.md +0 -118
  285. package/.claude/commands/BMad/tasks/document-project.md +0 -349
  286. package/.claude/commands/BMad/tasks/execute-checklist.md +0 -92
  287. package/.claude/commands/BMad/tasks/facilitate-brainstorming-session.md +0 -142
  288. package/.claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +0 -57
  289. package/.claude/commands/BMad/tasks/index-docs.md +0 -179
  290. package/.claude/commands/BMad/tasks/kb-mode-interaction.md +0 -81
  291. package/.claude/commands/BMad/tasks/nfr-assess.md +0 -349
  292. package/.claude/commands/BMad/tasks/qa-gate.md +0 -167
  293. package/.claude/commands/BMad/tasks/review-story.md +0 -320
  294. package/.claude/commands/BMad/tasks/risk-profile.md +0 -359
  295. package/.claude/commands/BMad/tasks/shard-doc.md +0 -191
  296. package/.claude/commands/BMad/tasks/test-design.md +0 -180
  297. package/.claude/commands/BMad/tasks/trace-requirements.md +0 -270
  298. package/.claude/commands/BMad/tasks/validate-next-story.md +0 -140
  299. package/.claude/commands/BMad/ux-expert.md +0 -73
  300. package/.claude/commands/bmad/bmm/agents/analyst.md +0 -14
  301. package/.claude/commands/bmad/bmm/agents/architect.md +0 -14
  302. package/.claude/commands/bmad/bmm/agents/dev.md +0 -14
  303. package/.claude/commands/bmad/bmm/agents/frame-expert.md +0 -14
  304. package/.claude/commands/bmad/bmm/agents/pm.md +0 -14
  305. package/.claude/commands/bmad/bmm/agents/sm.md +0 -14
  306. package/.claude/commands/bmad/bmm/agents/tea.md +0 -14
  307. package/.claude/commands/bmad/bmm/agents/tech-writer.md +0 -14
  308. package/.claude/commands/bmad/bmm/agents/ux-designer.md +0 -14
  309. package/.claude/commands/bmad/bmm/workflows/architecture.md +0 -13
  310. package/.claude/commands/bmad/bmm/workflows/brainstorm-project.md +0 -13
  311. package/.claude/commands/bmad/bmm/workflows/code-review.md +0 -13
  312. package/.claude/commands/bmad/bmm/workflows/correct-course.md +0 -13
  313. package/.claude/commands/bmad/bmm/workflows/create-dataflow.md +0 -13
  314. package/.claude/commands/bmad/bmm/workflows/create-diagram.md +0 -13
  315. package/.claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +0 -13
  316. package/.claude/commands/bmad/bmm/workflows/create-flowchart.md +0 -13
  317. package/.claude/commands/bmad/bmm/workflows/create-story.md +0 -13
  318. package/.claude/commands/bmad/bmm/workflows/create-ux-design.md +0 -13
  319. package/.claude/commands/bmad/bmm/workflows/create-wireframe.md +0 -13
  320. package/.claude/commands/bmad/bmm/workflows/dev-story.md +0 -13
  321. package/.claude/commands/bmad/bmm/workflows/document-project.md +0 -13
  322. package/.claude/commands/bmad/bmm/workflows/domain-research.md +0 -13
  323. package/.claude/commands/bmad/bmm/workflows/epic-tech-context.md +0 -13
  324. package/.claude/commands/bmad/bmm/workflows/implementation-readiness.md +0 -13
  325. package/.claude/commands/bmad/bmm/workflows/prd.md +0 -13
  326. package/.claude/commands/bmad/bmm/workflows/product-brief.md +0 -13
  327. package/.claude/commands/bmad/bmm/workflows/research.md +0 -13
  328. package/.claude/commands/bmad/bmm/workflows/retrospective.md +0 -13
  329. package/.claude/commands/bmad/bmm/workflows/sprint-planning.md +0 -13
  330. package/.claude/commands/bmad/bmm/workflows/story-context.md +0 -13
  331. package/.claude/commands/bmad/bmm/workflows/story-done.md +0 -13
  332. package/.claude/commands/bmad/bmm/workflows/story-ready.md +0 -13
  333. package/.claude/commands/bmad/bmm/workflows/tech-spec.md +0 -13
  334. package/.claude/commands/bmad/bmm/workflows/workflow-init.md +0 -13
  335. package/.claude/commands/bmad/bmm/workflows/workflow-status.md +0 -13
  336. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -14
  337. package/.claude/commands/bmad/core/tasks/advanced-elicitation.md +0 -9
  338. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  339. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  340. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -13
  341. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -13
  342. package/.claude/config/README-personality-defaults.md +0 -162
  343. package/.claude/config/agentvibes.json +0 -1
  344. package/.claude/config/bmad-voices-enabled.flag +0 -0
  345. package/.claude/config/bmad-voices.md +0 -68
  346. package/.claude/config/personality-voice-defaults.default.json +0 -21
  347. package/.claude/github-star-reminder.txt +0 -1
  348. package/.claude/hooks/bmad-party-manager.sh +0 -225
  349. package/.claude/hooks/stop.sh +0 -221
  350. package/.claude/piper-voices-dir.txt +0 -1
  351. package/.claude/plugins/bmad-voices-enabled.flag +0 -0
  352. package/.mcp.json +0 -88
  353. package/RELEASE_NOTES_v2.4.0_DRAFT.md +0 -116
  354. package/RELEASE_NOTES_v2.4.1_DRAFT.md +0 -61
  355. package/docs/2025-11-15_15-14-33.snagx +0 -0
  356. package/docs/Screenshot 2025-11-15 151325.png +0 -0
  357. package/docs/Screenshot 2025-11-15 151432.png +0 -0
  358. package/docs/macos-piper-issue.md +0 -172
  359. package/docs/stargazer-cms-prd.md +0 -1918
  360. package/docs/whatsapp-plugin-github-issue.md +0 -393
  361. package/docs/whatsapp-tts-plugin-feasibility.md +0 -418
  362. package/docs/whatsapp-tts-standalone-plugin.md +0 -628
  363. package/github-profile-draft.md +0 -57
  364. package/linkedin/vibe-coding-and-pulseaudio.md +0 -121
  365. package/mcp-server/agentvibes.db +0 -0
  366. package/scripts/audio-tunnel.config +0 -17
  367. package/v4-backup/.bmad-core/agent-teams/team-all.yaml +0 -15
  368. package/v4-backup/.bmad-core/agent-teams/team-fullstack.yaml +0 -19
  369. package/v4-backup/.bmad-core/agent-teams/team-ide-minimal.yaml +0 -11
  370. package/v4-backup/.bmad-core/agent-teams/team-no-ui.yaml +0 -14
  371. package/v4-backup/.bmad-core/agents/analyst.md +0 -84
  372. package/v4-backup/.bmad-core/agents/architect.md +0 -85
  373. package/v4-backup/.bmad-core/agents/bmad-master.md +0 -110
  374. package/v4-backup/.bmad-core/agents/bmad-orchestrator.md +0 -147
  375. package/v4-backup/.bmad-core/agents/dev.md +0 -81
  376. package/v4-backup/.bmad-core/agents/pm.md +0 -84
  377. package/v4-backup/.bmad-core/agents/po.md +0 -79
  378. package/v4-backup/.bmad-core/agents/qa.md +0 -87
  379. package/v4-backup/.bmad-core/agents/sm.md +0 -65
  380. package/v4-backup/.bmad-core/agents/ux-expert.md +0 -69
  381. package/v4-backup/.bmad-core/checklists/architect-checklist.md +0 -440
  382. package/v4-backup/.bmad-core/checklists/change-checklist.md +0 -184
  383. package/v4-backup/.bmad-core/checklists/pm-checklist.md +0 -372
  384. package/v4-backup/.bmad-core/checklists/po-master-checklist.md +0 -434
  385. package/v4-backup/.bmad-core/checklists/story-dod-checklist.md +0 -96
  386. package/v4-backup/.bmad-core/checklists/story-draft-checklist.md +0 -155
  387. package/v4-backup/.bmad-core/core-config.yaml +0 -22
  388. package/v4-backup/.bmad-core/data/bmad-kb.md +0 -809
  389. package/v4-backup/.bmad-core/data/brainstorming-techniques.md +0 -38
  390. package/v4-backup/.bmad-core/data/elicitation-methods.md +0 -156
  391. package/v4-backup/.bmad-core/data/technical-preferences.md +0 -5
  392. package/v4-backup/.bmad-core/data/test-levels-framework.md +0 -148
  393. package/v4-backup/.bmad-core/data/test-priorities-matrix.md +0 -174
  394. package/v4-backup/.bmad-core/enhanced-ide-development-workflow.md +0 -248
  395. package/v4-backup/.bmad-core/install-manifest.yaml +0 -230
  396. package/v4-backup/.bmad-core/tasks/advanced-elicitation.md +0 -119
  397. package/v4-backup/.bmad-core/tasks/apply-qa-fixes.md +0 -150
  398. package/v4-backup/.bmad-core/tasks/brownfield-create-epic.md +0 -162
  399. package/v4-backup/.bmad-core/tasks/brownfield-create-story.md +0 -149
  400. package/v4-backup/.bmad-core/tasks/correct-course.md +0 -72
  401. package/v4-backup/.bmad-core/tasks/create-brownfield-story.md +0 -314
  402. package/v4-backup/.bmad-core/tasks/create-deep-research-prompt.md +0 -280
  403. package/v4-backup/.bmad-core/tasks/create-doc.md +0 -103
  404. package/v4-backup/.bmad-core/tasks/create-next-story.md +0 -114
  405. package/v4-backup/.bmad-core/tasks/document-project.md +0 -345
  406. package/v4-backup/.bmad-core/tasks/execute-checklist.md +0 -88
  407. package/v4-backup/.bmad-core/tasks/facilitate-brainstorming-session.md +0 -138
  408. package/v4-backup/.bmad-core/tasks/generate-ai-frontend-prompt.md +0 -53
  409. package/v4-backup/.bmad-core/tasks/index-docs.md +0 -175
  410. package/v4-backup/.bmad-core/tasks/kb-mode-interaction.md +0 -77
  411. package/v4-backup/.bmad-core/tasks/nfr-assess.md +0 -345
  412. package/v4-backup/.bmad-core/tasks/qa-gate.md +0 -163
  413. package/v4-backup/.bmad-core/tasks/review-story.md +0 -316
  414. package/v4-backup/.bmad-core/tasks/risk-profile.md +0 -355
  415. package/v4-backup/.bmad-core/tasks/shard-doc.md +0 -187
  416. package/v4-backup/.bmad-core/tasks/test-design.md +0 -176
  417. package/v4-backup/.bmad-core/tasks/trace-requirements.md +0 -266
  418. package/v4-backup/.bmad-core/tasks/validate-next-story.md +0 -136
  419. package/v4-backup/.bmad-core/templates/architecture-tmpl.yaml +0 -651
  420. package/v4-backup/.bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
  421. package/v4-backup/.bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -477
  422. package/v4-backup/.bmad-core/templates/brownfield-prd-tmpl.yaml +0 -281
  423. package/v4-backup/.bmad-core/templates/competitor-analysis-tmpl.yaml +0 -307
  424. package/v4-backup/.bmad-core/templates/front-end-architecture-tmpl.yaml +0 -219
  425. package/v4-backup/.bmad-core/templates/front-end-spec-tmpl.yaml +0 -350
  426. package/v4-backup/.bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -824
  427. package/v4-backup/.bmad-core/templates/market-research-tmpl.yaml +0 -253
  428. package/v4-backup/.bmad-core/templates/prd-tmpl.yaml +0 -203
  429. package/v4-backup/.bmad-core/templates/project-brief-tmpl.yaml +0 -222
  430. package/v4-backup/.bmad-core/templates/qa-gate-tmpl.yaml +0 -103
  431. package/v4-backup/.bmad-core/templates/story-tmpl.yaml +0 -138
  432. package/v4-backup/.bmad-core/user-guide.md +0 -577
  433. package/v4-backup/.bmad-core/utils/bmad-doc-template.md +0 -327
  434. package/v4-backup/.bmad-core/utils/workflow-management.md +0 -71
  435. package/v4-backup/.bmad-core/workflows/brownfield-fullstack.yaml +0 -298
  436. package/v4-backup/.bmad-core/workflows/brownfield-service.yaml +0 -188
  437. package/v4-backup/.bmad-core/workflows/brownfield-ui.yaml +0 -198
  438. package/v4-backup/.bmad-core/workflows/greenfield-fullstack.yaml +0 -241
  439. package/v4-backup/.bmad-core/workflows/greenfield-service.yaml +0 -207
  440. package/v4-backup/.bmad-core/workflows/greenfield-ui.yaml +0 -236
  441. package/v4-backup/.bmad-core/working-in-the-brownfield.md +0 -606
@@ -1,732 +0,0 @@
1
- # Selective and Targeted Test Execution
2
-
3
- ## Principle
4
-
5
- Run only the tests you need, when you need them. Use tags/grep to slice suites by risk priority (not directory structure), filter by spec patterns or git diff to focus on impacted areas, and combine priority metadata (P0-P3) with change detection to optimize pre-commit vs. CI execution. Document the selection strategy clearly so teams understand when full regression is mandatory.
6
-
7
- ## Rationale
8
-
9
- Running the entire test suite on every commit wastes time and resources. Smart test selection provides fast feedback (smoke tests in minutes, full regression in hours) while maintaining confidence. The "32+ ways of selective testing" philosophy balances speed with coverage: quick loops for developers, comprehensive validation before deployment. Poorly documented selection leads to confusion about when tests run and why.
10
-
11
- ## Pattern Examples
12
-
13
- ### Example 1: Tag-Based Execution with Priority Levels
14
-
15
- **Context**: Organize tests by risk priority and execution stage using grep/tag patterns.
16
-
17
- **Implementation**:
18
-
19
- ```typescript
20
- // tests/e2e/checkout.spec.ts
21
- import { test, expect } from '@playwright/test';
22
-
23
- /**
24
- * Tag-based test organization
25
- * - @smoke: Critical path tests (run on every commit, < 5 min)
26
- * - @regression: Full test suite (run pre-merge, < 30 min)
27
- * - @p0: Critical business functions (payment, auth, data integrity)
28
- * - @p1: Core features (primary user journeys)
29
- * - @p2: Secondary features (supporting functionality)
30
- * - @p3: Nice-to-have (cosmetic, non-critical)
31
- */
32
-
33
- test.describe('Checkout Flow', () => {
34
- // P0 + Smoke: Must run on every commit
35
- test('@smoke @p0 should complete purchase with valid payment', async ({ page }) => {
36
- await page.goto('/checkout');
37
- await page.getByTestId('card-number').fill('4242424242424242');
38
- await page.getByTestId('submit-payment').click();
39
-
40
- await expect(page.getByTestId('order-confirmation')).toBeVisible();
41
- });
42
-
43
- // P0 but not smoke: Run pre-merge
44
- test('@regression @p0 should handle payment decline gracefully', async ({ page }) => {
45
- await page.goto('/checkout');
46
- await page.getByTestId('card-number').fill('4000000000000002'); // Decline card
47
- await page.getByTestId('submit-payment').click();
48
-
49
- await expect(page.getByTestId('payment-error')).toBeVisible();
50
- await expect(page.getByTestId('payment-error')).toContainText('declined');
51
- });
52
-
53
- // P1 + Smoke: Important but not critical
54
- test('@smoke @p1 should apply discount code', async ({ page }) => {
55
- await page.goto('/checkout');
56
- await page.getByTestId('promo-code').fill('SAVE10');
57
- await page.getByTestId('apply-promo').click();
58
-
59
- await expect(page.getByTestId('discount-applied')).toBeVisible();
60
- });
61
-
62
- // P2: Run in full regression only
63
- test('@regression @p2 should remember saved payment methods', async ({ page }) => {
64
- await page.goto('/checkout');
65
- await expect(page.getByTestId('saved-cards')).toBeVisible();
66
- });
67
-
68
- // P3: Low priority, run nightly or weekly
69
- test('@nightly @p3 should display checkout page analytics', async ({ page }) => {
70
- await page.goto('/checkout');
71
- const analyticsEvents = await page.evaluate(() => (window as any).__ANALYTICS__);
72
- expect(analyticsEvents).toBeDefined();
73
- });
74
- });
75
- ```
76
-
77
- **package.json scripts**:
78
-
79
- ```json
80
- {
81
- "scripts": {
82
- "test": "playwright test",
83
- "test:smoke": "playwright test --grep '@smoke'",
84
- "test:p0": "playwright test --grep '@p0'",
85
- "test:p0-p1": "playwright test --grep '@p0|@p1'",
86
- "test:regression": "playwright test --grep '@regression'",
87
- "test:nightly": "playwright test --grep '@nightly'",
88
- "test:not-slow": "playwright test --grep-invert '@slow'",
89
- "test:critical-smoke": "playwright test --grep '@smoke.*@p0'"
90
- }
91
- }
92
- ```
93
-
94
- **Cypress equivalent**:
95
-
96
- ```javascript
97
- // cypress/e2e/checkout.cy.ts
98
- describe('Checkout Flow', { tags: ['@checkout'] }, () => {
99
- it('should complete purchase', { tags: ['@smoke', '@p0'] }, () => {
100
- cy.visit('/checkout');
101
- cy.get('[data-cy="card-number"]').type('4242424242424242');
102
- cy.get('[data-cy="submit-payment"]').click();
103
- cy.get('[data-cy="order-confirmation"]').should('be.visible');
104
- });
105
-
106
- it('should handle decline', { tags: ['@regression', '@p0'] }, () => {
107
- cy.visit('/checkout');
108
- cy.get('[data-cy="card-number"]').type('4000000000000002');
109
- cy.get('[data-cy="submit-payment"]').click();
110
- cy.get('[data-cy="payment-error"]').should('be.visible');
111
- });
112
- });
113
-
114
- // cypress.config.ts
115
- export default defineConfig({
116
- e2e: {
117
- env: {
118
- grepTags: process.env.GREP_TAGS || '',
119
- grepFilterSpecs: true,
120
- },
121
- setupNodeEvents(on, config) {
122
- require('@cypress/grep/src/plugin')(config);
123
- return config;
124
- },
125
- },
126
- });
127
- ```
128
-
129
- **Usage**:
130
-
131
- ```bash
132
- # Playwright
133
- npm run test:smoke # Run all @smoke tests
134
- npm run test:p0 # Run all P0 tests
135
- npm run test -- --grep "@smoke.*@p0" # Run tests with BOTH tags
136
-
137
- # Cypress (with @cypress/grep plugin)
138
- npx cypress run --env grepTags="@smoke"
139
- npx cypress run --env grepTags="@p0+@smoke" # AND logic
140
- npx cypress run --env grepTags="@p0 @p1" # OR logic
141
- ```
142
-
143
- **Key Points**:
144
-
145
- - **Multiple tags per test**: Combine priority (@p0) with stage (@smoke)
146
- - **AND/OR logic**: Grep supports complex filtering
147
- - **Clear naming**: Tags document test importance
148
- - **Fast feedback**: @smoke runs < 5 min, full suite < 30 min
149
- - **CI integration**: Different jobs run different tag combinations
150
-
151
- ---
152
-
153
- ### Example 2: Spec Filter Pattern (File-Based Selection)
154
-
155
- **Context**: Run tests by file path pattern or directory for targeted execution.
156
-
157
- **Implementation**:
158
-
159
- ```bash
160
- #!/bin/bash
161
- # scripts/selective-spec-runner.sh
162
- # Run tests based on spec file patterns
163
-
164
- set -e
165
-
166
- PATTERN=${1:-"**/*.spec.ts"}
167
- TEST_ENV=${TEST_ENV:-local}
168
-
169
- echo "🎯 Selective Spec Runner"
170
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
171
- echo "Pattern: $PATTERN"
172
- echo "Environment: $TEST_ENV"
173
- echo ""
174
-
175
- # Pattern examples and their use cases
176
- case "$PATTERN" in
177
- "**/checkout*")
178
- echo "📦 Running checkout-related tests"
179
- npx playwright test --grep-files="**/checkout*"
180
- ;;
181
- "**/auth*"|"**/login*"|"**/signup*")
182
- echo "🔐 Running authentication tests"
183
- npx playwright test --grep-files="**/auth*|**/login*|**/signup*"
184
- ;;
185
- "tests/e2e/**")
186
- echo "🌐 Running all E2E tests"
187
- npx playwright test tests/e2e/
188
- ;;
189
- "tests/integration/**")
190
- echo "🔌 Running all integration tests"
191
- npx playwright test tests/integration/
192
- ;;
193
- "tests/component/**")
194
- echo "🧩 Running all component tests"
195
- npx playwright test tests/component/
196
- ;;
197
- *)
198
- echo "🔍 Running tests matching pattern: $PATTERN"
199
- npx playwright test "$PATTERN"
200
- ;;
201
- esac
202
- ```
203
-
204
- **Playwright config for file filtering**:
205
-
206
- ```typescript
207
- // playwright.config.ts
208
- import { defineConfig, devices } from '@playwright/test';
209
-
210
- export default defineConfig({
211
- // ... other config
212
-
213
- // Project-based organization
214
- projects: [
215
- {
216
- name: 'smoke',
217
- testMatch: /.*smoke.*\.spec\.ts/,
218
- retries: 0,
219
- },
220
- {
221
- name: 'e2e',
222
- testMatch: /tests\/e2e\/.*\.spec\.ts/,
223
- retries: 2,
224
- },
225
- {
226
- name: 'integration',
227
- testMatch: /tests\/integration\/.*\.spec\.ts/,
228
- retries: 1,
229
- },
230
- {
231
- name: 'component',
232
- testMatch: /tests\/component\/.*\.spec\.ts/,
233
- use: { ...devices['Desktop Chrome'] },
234
- },
235
- ],
236
- });
237
- ```
238
-
239
- **Advanced pattern matching**:
240
-
241
- ```typescript
242
- // scripts/run-by-component.ts
243
- /**
244
- * Run tests related to specific component(s)
245
- * Usage: npm run test:component UserProfile,Settings
246
- */
247
-
248
- import { execSync } from 'child_process';
249
-
250
- const components = process.argv[2]?.split(',') || [];
251
-
252
- if (components.length === 0) {
253
- console.error('❌ No components specified');
254
- console.log('Usage: npm run test:component UserProfile,Settings');
255
- process.exit(1);
256
- }
257
-
258
- // Convert component names to glob patterns
259
- const patterns = components.map((comp) => `**/*${comp}*.spec.ts`).join(' ');
260
-
261
- console.log(`🧩 Running tests for components: ${components.join(', ')}`);
262
- console.log(`Patterns: ${patterns}`);
263
-
264
- try {
265
- execSync(`npx playwright test ${patterns}`, {
266
- stdio: 'inherit',
267
- env: { ...process.env, CI: 'false' },
268
- });
269
- } catch (error) {
270
- process.exit(1);
271
- }
272
- ```
273
-
274
- **package.json scripts**:
275
-
276
- ```json
277
- {
278
- "scripts": {
279
- "test:checkout": "playwright test **/checkout*.spec.ts",
280
- "test:auth": "playwright test **/auth*.spec.ts **/login*.spec.ts",
281
- "test:e2e": "playwright test tests/e2e/",
282
- "test:integration": "playwright test tests/integration/",
283
- "test:component": "ts-node scripts/run-by-component.ts",
284
- "test:project": "playwright test --project",
285
- "test:smoke-project": "playwright test --project smoke"
286
- }
287
- }
288
- ```
289
-
290
- **Key Points**:
291
-
292
- - **Glob patterns**: Wildcards match file paths flexibly
293
- - **Project isolation**: Separate projects have different configs
294
- - **Component targeting**: Run tests for specific features
295
- - **Directory-based**: Organize tests by type (e2e, integration, component)
296
- - **CI optimization**: Run subsets in parallel CI jobs
297
-
298
- ---
299
-
300
- ### Example 3: Diff-Based Test Selection (Changed Files Only)
301
-
302
- **Context**: Run only tests affected by code changes for maximum speed.
303
-
304
- **Implementation**:
305
-
306
- ```bash
307
- #!/bin/bash
308
- # scripts/test-changed-files.sh
309
- # Intelligent test selection based on git diff
310
-
311
- set -e
312
-
313
- BASE_BRANCH=${BASE_BRANCH:-main}
314
- TEST_ENV=${TEST_ENV:-local}
315
-
316
- echo "🔍 Changed File Test Selector"
317
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
318
- echo "Base branch: $BASE_BRANCH"
319
- echo "Environment: $TEST_ENV"
320
- echo ""
321
-
322
- # Get changed files
323
- CHANGED_FILES=$(git diff --name-only $BASE_BRANCH...HEAD)
324
-
325
- if [ -z "$CHANGED_FILES" ]; then
326
- echo "✅ No files changed. Skipping tests."
327
- exit 0
328
- fi
329
-
330
- echo "Changed files:"
331
- echo "$CHANGED_FILES" | sed 's/^/ - /'
332
- echo ""
333
-
334
- # Arrays to collect test specs
335
- DIRECT_TEST_FILES=()
336
- RELATED_TEST_FILES=()
337
- RUN_ALL_TESTS=false
338
-
339
- # Process each changed file
340
- while IFS= read -r file; do
341
- case "$file" in
342
- # Changed test files: run them directly
343
- *.spec.ts|*.spec.js|*.test.ts|*.test.js|*.cy.ts|*.cy.js)
344
- DIRECT_TEST_FILES+=("$file")
345
- ;;
346
-
347
- # Critical config changes: run ALL tests
348
- package.json|package-lock.json|playwright.config.ts|cypress.config.ts|tsconfig.json|.github/workflows/*)
349
- echo "⚠️ Critical file changed: $file"
350
- RUN_ALL_TESTS=true
351
- break
352
- ;;
353
-
354
- # Component changes: find related tests
355
- src/components/*.tsx|src/components/*.jsx)
356
- COMPONENT_NAME=$(basename "$file" | sed 's/\.[^.]*$//')
357
- echo "🧩 Component changed: $COMPONENT_NAME"
358
-
359
- # Find tests matching component name
360
- FOUND_TESTS=$(find tests -name "*${COMPONENT_NAME}*.spec.ts" -o -name "*${COMPONENT_NAME}*.cy.ts" 2>/dev/null || true)
361
- if [ -n "$FOUND_TESTS" ]; then
362
- while IFS= read -r test_file; do
363
- RELATED_TEST_FILES+=("$test_file")
364
- done <<< "$FOUND_TESTS"
365
- fi
366
- ;;
367
-
368
- # Utility/lib changes: run integration + unit tests
369
- src/utils/*|src/lib/*|src/helpers/*)
370
- echo "⚙️ Utility file changed: $file"
371
- RELATED_TEST_FILES+=($(find tests/unit tests/integration -name "*.spec.ts" 2>/dev/null || true))
372
- ;;
373
-
374
- # API changes: run integration + e2e tests
375
- src/api/*|src/services/*|src/controllers/*)
376
- echo "🔌 API file changed: $file"
377
- RELATED_TEST_FILES+=($(find tests/integration tests/e2e -name "*.spec.ts" 2>/dev/null || true))
378
- ;;
379
-
380
- # Type changes: run all TypeScript tests
381
- *.d.ts|src/types/*)
382
- echo "📝 Type definition changed: $file"
383
- RUN_ALL_TESTS=true
384
- break
385
- ;;
386
-
387
- # Documentation only: skip tests
388
- *.md|docs/*|README*)
389
- echo "📄 Documentation changed: $file (no tests needed)"
390
- ;;
391
-
392
- *)
393
- echo "❓ Unclassified change: $file (running smoke tests)"
394
- RELATED_TEST_FILES+=($(find tests -name "*smoke*.spec.ts" 2>/dev/null || true))
395
- ;;
396
- esac
397
- done <<< "$CHANGED_FILES"
398
-
399
- # Execute tests based on analysis
400
- if [ "$RUN_ALL_TESTS" = true ]; then
401
- echo ""
402
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
403
- echo "🚨 Running FULL test suite (critical changes detected)"
404
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
405
- npm run test
406
- exit $?
407
- fi
408
-
409
- # Combine and deduplicate test files
410
- ALL_TEST_FILES=(${DIRECT_TEST_FILES[@]} ${RELATED_TEST_FILES[@]})
411
- UNIQUE_TEST_FILES=($(echo "${ALL_TEST_FILES[@]}" | tr ' ' '\n' | sort -u))
412
-
413
- if [ ${#UNIQUE_TEST_FILES[@]} -eq 0 ]; then
414
- echo ""
415
- echo "✅ No tests found for changed files. Running smoke tests."
416
- npm run test:smoke
417
- exit $?
418
- fi
419
-
420
- echo ""
421
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
422
- echo "🎯 Running ${#UNIQUE_TEST_FILES[@]} test file(s)"
423
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
424
-
425
- for test_file in "${UNIQUE_TEST_FILES[@]}"; do
426
- echo " - $test_file"
427
- done
428
-
429
- echo ""
430
- npm run test -- "${UNIQUE_TEST_FILES[@]}"
431
- ```
432
-
433
- **GitHub Actions integration**:
434
-
435
- ```yaml
436
- # .github/workflows/test-changed.yml
437
- name: Test Changed Files
438
- on:
439
- pull_request:
440
- types: [opened, synchronize, reopened]
441
-
442
- jobs:
443
- detect-and-test:
444
- runs-on: ubuntu-latest
445
- steps:
446
- - uses: actions/checkout@v4
447
- with:
448
- fetch-depth: 0 # Full history for accurate diff
449
-
450
- - name: Get changed files
451
- id: changed-files
452
- uses: tj-actions/changed-files@v40
453
- with:
454
- files: |
455
- src/**
456
- tests/**
457
- *.config.ts
458
- files_ignore: |
459
- **/*.md
460
- docs/**
461
-
462
- - name: Run tests for changed files
463
- if: steps.changed-files.outputs.any_changed == 'true'
464
- run: |
465
- echo "Changed files: ${{ steps.changed-files.outputs.all_changed_files }}"
466
- bash scripts/test-changed-files.sh
467
- env:
468
- BASE_BRANCH: ${{ github.base_ref }}
469
- TEST_ENV: staging
470
- ```
471
-
472
- **Key Points**:
473
-
474
- - **Intelligent mapping**: Code changes → related tests
475
- - **Critical file detection**: Config changes = full suite
476
- - **Component mapping**: UI changes → component + E2E tests
477
- - **Fast feedback**: Run only what's needed (< 2 min typical)
478
- - **Safety net**: Unrecognized changes run smoke tests
479
-
480
- ---
481
-
482
- ### Example 4: Promotion Rules (Pre-Commit → CI → Staging → Production)
483
-
484
- **Context**: Progressive test execution strategy across deployment stages.
485
-
486
- **Implementation**:
487
-
488
- ```typescript
489
- // scripts/test-promotion-strategy.ts
490
- /**
491
- * Test Promotion Strategy
492
- * Defines which tests run at each stage of the development lifecycle
493
- */
494
-
495
- export type TestStage = 'pre-commit' | 'ci-pr' | 'ci-merge' | 'staging' | 'production';
496
-
497
- export type TestPromotion = {
498
- stage: TestStage;
499
- description: string;
500
- testCommand: string;
501
- timebudget: string; // minutes
502
- required: boolean;
503
- failureAction: 'block' | 'warn' | 'alert';
504
- };
505
-
506
- export const TEST_PROMOTION_RULES: Record<TestStage, TestPromotion> = {
507
- 'pre-commit': {
508
- stage: 'pre-commit',
509
- description: 'Local developer checks before git commit',
510
- testCommand: 'npm run test:smoke',
511
- timebudget: '2',
512
- required: true,
513
- failureAction: 'block',
514
- },
515
- 'ci-pr': {
516
- stage: 'ci-pr',
517
- description: 'CI checks on pull request creation/update',
518
- testCommand: 'npm run test:changed && npm run test:p0-p1',
519
- timebudget: '10',
520
- required: true,
521
- failureAction: 'block',
522
- },
523
- 'ci-merge': {
524
- stage: 'ci-merge',
525
- description: 'Full regression before merge to main',
526
- testCommand: 'npm run test:regression',
527
- timebudget: '30',
528
- required: true,
529
- failureAction: 'block',
530
- },
531
- staging: {
532
- stage: 'staging',
533
- description: 'Post-deployment validation in staging environment',
534
- testCommand: 'npm run test:e2e -- --grep "@smoke"',
535
- timebudget: '15',
536
- required: true,
537
- failureAction: 'block',
538
- },
539
- production: {
540
- stage: 'production',
541
- description: 'Production smoke tests post-deployment',
542
- testCommand: 'npm run test:e2e:prod -- --grep "@smoke.*@p0"',
543
- timebudget: '5',
544
- required: false,
545
- failureAction: 'alert',
546
- },
547
- };
548
-
549
- /**
550
- * Get tests to run for a specific stage
551
- */
552
- export function getTestsForStage(stage: TestStage): TestPromotion {
553
- return TEST_PROMOTION_RULES[stage];
554
- }
555
-
556
- /**
557
- * Validate if tests can be promoted to next stage
558
- */
559
- export function canPromote(currentStage: TestStage, testsPassed: boolean): boolean {
560
- const promotion = TEST_PROMOTION_RULES[currentStage];
561
-
562
- if (!promotion.required) {
563
- return true; // Non-required tests don't block promotion
564
- }
565
-
566
- return testsPassed;
567
- }
568
- ```
569
-
570
- **Husky pre-commit hook**:
571
-
572
- ```bash
573
- #!/bin/bash
574
- # .husky/pre-commit
575
- # Run smoke tests before allowing commit
576
-
577
- echo "🔍 Running pre-commit tests..."
578
-
579
- npm run test:smoke
580
-
581
- if [ $? -ne 0 ]; then
582
- echo ""
583
- echo "❌ Pre-commit tests failed!"
584
- echo "Please fix failures before committing."
585
- echo ""
586
- echo "To skip (NOT recommended): git commit --no-verify"
587
- exit 1
588
- fi
589
-
590
- echo "✅ Pre-commit tests passed"
591
- ```
592
-
593
- **GitHub Actions workflow**:
594
-
595
- ```yaml
596
- # .github/workflows/test-promotion.yml
597
- name: Test Promotion Strategy
598
- on:
599
- pull_request:
600
- push:
601
- branches: [main]
602
- workflow_dispatch:
603
-
604
- jobs:
605
- # Stage 1: PR tests (changed + P0-P1)
606
- pr-tests:
607
- if: github.event_name == 'pull_request'
608
- runs-on: ubuntu-latest
609
- timeout-minutes: 10
610
- steps:
611
- - uses: actions/checkout@v4
612
- - name: Run PR-level tests
613
- run: |
614
- npm run test:changed
615
- npm run test:p0-p1
616
-
617
- # Stage 2: Full regression (pre-merge)
618
- regression-tests:
619
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
620
- runs-on: ubuntu-latest
621
- timeout-minutes: 30
622
- steps:
623
- - uses: actions/checkout@v4
624
- - name: Run full regression
625
- run: npm run test:regression
626
-
627
- # Stage 3: Staging validation (post-deploy)
628
- staging-smoke:
629
- if: github.event_name == 'workflow_dispatch'
630
- runs-on: ubuntu-latest
631
- timeout-minutes: 15
632
- steps:
633
- - uses: actions/checkout@v4
634
- - name: Run staging smoke tests
635
- run: npm run test:e2e -- --grep "@smoke"
636
- env:
637
- TEST_ENV: staging
638
-
639
- # Stage 4: Production smoke (post-deploy, non-blocking)
640
- production-smoke:
641
- if: github.event_name == 'workflow_dispatch'
642
- runs-on: ubuntu-latest
643
- timeout-minutes: 5
644
- continue-on-error: true # Don't fail deployment if smoke tests fail
645
- steps:
646
- - uses: actions/checkout@v4
647
- - name: Run production smoke tests
648
- run: npm run test:e2e:prod -- --grep "@smoke.*@p0"
649
- env:
650
- TEST_ENV: production
651
-
652
- - name: Alert on failure
653
- if: failure()
654
- uses: 8398a7/action-slack@v3
655
- with:
656
- status: ${{ job.status }}
657
- text: '🚨 Production smoke tests failed!'
658
- webhook_url: ${{ secrets.SLACK_WEBHOOK }}
659
- ```
660
-
661
- **Selection strategy documentation**:
662
-
663
- ````markdown
664
- # Test Selection Strategy
665
-
666
- ## Test Promotion Stages
667
-
668
- | Stage | Tests Run | Time Budget | Blocks Deploy | Failure Action |
669
- | ---------- | ------------------- | ----------- | ------------- | -------------- |
670
- | Pre-Commit | Smoke (@smoke) | 2 min | ✅ Yes | Block commit |
671
- | CI PR | Changed + P0-P1 | 10 min | ✅ Yes | Block merge |
672
- | CI Merge | Full regression | 30 min | ✅ Yes | Block deploy |
673
- | Staging | E2E smoke | 15 min | ✅ Yes | Rollback |
674
- | Production | Critical smoke only | 5 min | ❌ No | Alert team |
675
-
676
- ## When Full Regression Runs
677
-
678
- Full regression suite (`npm run test:regression`) runs in these scenarios:
679
-
680
- - ✅ Before merging to `main` (CI Merge stage)
681
- - ✅ Nightly builds (scheduled workflow)
682
- - ✅ Manual trigger (workflow_dispatch)
683
- - ✅ Release candidate testing
684
-
685
- Full regression does NOT run on:
686
-
687
- - ❌ Every PR commit (too slow)
688
- - ❌ Pre-commit hooks (too slow)
689
- - ❌ Production deployments (deploy-blocking)
690
-
691
- ## Override Scenarios
692
-
693
- Skip tests (emergency only):
694
-
695
- ```bash
696
- git commit --no-verify # Skip pre-commit hook
697
- gh pr merge --admin # Force merge (requires admin)
698
- ```
699
- ````
700
-
701
- ```
702
-
703
- **Key Points**:
704
- - **Progressive validation**: More tests at each stage
705
- - **Time budgets**: Clear expectations per stage
706
- - **Blocking vs. alerting**: Production tests don't block deploy
707
- - **Documentation**: Team knows when full regression runs
708
- - **Emergency overrides**: Documented but discouraged
709
-
710
- ---
711
-
712
- ## Test Selection Strategy Checklist
713
-
714
- Before implementing selective testing, verify:
715
-
716
- - [ ] **Tag strategy defined**: @smoke, @p0-p3, @regression documented
717
- - [ ] **Time budgets set**: Each stage has clear timeout (smoke < 5 min, full < 30 min)
718
- - [ ] **Changed file mapping**: Code changes → test selection logic implemented
719
- - [ ] **Promotion rules documented**: README explains when full regression runs
720
- - [ ] **CI integration**: GitHub Actions uses selective strategy
721
- - [ ] **Local parity**: Developers can run same selections locally
722
- - [ ] **Emergency overrides**: Skip mechanisms documented (--no-verify, admin merge)
723
- - [ ] **Metrics tracked**: Monitor test execution time and selection accuracy
724
-
725
- ## Integration Points
726
-
727
- - Used in workflows: `*ci` (CI/CD setup), `*automate` (test generation with tags)
728
- - Related fragments: `ci-burn-in.md`, `test-priorities-matrix.md`, `test-quality.md`
729
- - Selection tools: Playwright --grep, Cypress @cypress/grep, git diff
730
-
731
- _Source: 32+ selective testing strategies blog, Murat testing philosophy, SEON CI optimization_
732
- ```