agentvibes 2.12.4 → 2.12.6

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 (429) hide show
  1. package/.claude/hooks/bmad-voice-manager.sh +21 -5
  2. package/.claude/hooks/play-tts.sh +12 -0
  3. package/.claude/hooks/tts-queue.sh +34 -6
  4. package/README.md +17 -10
  5. package/RELEASE_NOTES.md +320 -697
  6. package/mcp-server/install-deps.js +19 -0
  7. package/mcp-server/server.py +58 -36
  8. package/package.json +1 -1
  9. package/scripts/fix-audio-tunnel.sh +22 -6
  10. package/src/commands/bmad-voices.js +14 -1
  11. package/src/installer.js +157 -72
  12. package/test/unit/play-tts.bats +1 -1
  13. package/.bmad/_cfg/agent-manifest.csv +0 -11
  14. package/.bmad/_cfg/agent-voice-map.csv +0 -11
  15. package/.bmad/_cfg/agents/bmm-analyst.customize.yaml +0 -42
  16. package/.bmad/_cfg/agents/bmm-architect.customize.yaml +0 -42
  17. package/.bmad/_cfg/agents/bmm-dev.customize.yaml +0 -42
  18. package/.bmad/_cfg/agents/bmm-frame-expert.customize.yaml +0 -42
  19. package/.bmad/_cfg/agents/bmm-pm.customize.yaml +0 -42
  20. package/.bmad/_cfg/agents/bmm-sm.customize.yaml +0 -42
  21. package/.bmad/_cfg/agents/bmm-tea.customize.yaml +0 -42
  22. package/.bmad/_cfg/agents/bmm-tech-writer.customize.yaml +0 -42
  23. package/.bmad/_cfg/agents/bmm-ux-designer.customize.yaml +0 -42
  24. package/.bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  25. package/.bmad/_cfg/files-manifest.csv +0 -243
  26. package/.bmad/_cfg/ides/claude-code.yaml +0 -6
  27. package/.bmad/_cfg/manifest.yaml +0 -9
  28. package/.bmad/_cfg/task-manifest.csv +0 -5
  29. package/.bmad/_cfg/tool-manifest.csv +0 -2
  30. package/.bmad/_cfg/workflow-manifest.csv +0 -38
  31. package/.bmad/bmm/README.md +0 -128
  32. package/.bmad/bmm/agents/analyst.md +0 -79
  33. package/.bmad/bmm/agents/analyst.md.backup-pre-tts +0 -75
  34. package/.bmad/bmm/agents/architect.md +0 -80
  35. package/.bmad/bmm/agents/dev.md +0 -70
  36. package/.bmad/bmm/agents/frame-expert.md +0 -72
  37. package/.bmad/bmm/agents/pm.md +0 -84
  38. package/.bmad/bmm/agents/sm.md +0 -93
  39. package/.bmad/bmm/agents/tea.md +0 -80
  40. package/.bmad/bmm/agents/tech-writer.md +0 -84
  41. package/.bmad/bmm/agents/ux-designer.md +0 -79
  42. package/.bmad/bmm/config.yaml +0 -17
  43. package/.bmad/bmm/docs/README.md +0 -236
  44. package/.bmad/bmm/docs/agents-guide.md +0 -1058
  45. package/.bmad/bmm/docs/brownfield-guide.md +0 -762
  46. package/.bmad/bmm/docs/enterprise-agentic-development.md +0 -686
  47. package/.bmad/bmm/docs/faq.md +0 -588
  48. package/.bmad/bmm/docs/glossary.md +0 -320
  49. package/.bmad/bmm/docs/party-mode.md +0 -224
  50. package/.bmad/bmm/docs/quick-spec-flow.md +0 -652
  51. package/.bmad/bmm/docs/quick-start.md +0 -376
  52. package/.bmad/bmm/docs/scale-adaptive-system.md +0 -612
  53. package/.bmad/bmm/docs/test-architecture.md +0 -396
  54. package/.bmad/bmm/docs/workflow-architecture-reference.md +0 -366
  55. package/.bmad/bmm/docs/workflow-document-project-reference.md +0 -489
  56. package/.bmad/bmm/docs/workflows-analysis.md +0 -370
  57. package/.bmad/bmm/docs/workflows-implementation.md +0 -286
  58. package/.bmad/bmm/docs/workflows-planning.md +0 -612
  59. package/.bmad/bmm/docs/workflows-solutioning.md +0 -554
  60. package/.bmad/bmm/teams/default-party.csv +0 -20
  61. package/.bmad/bmm/teams/team-fullstack.yaml +0 -13
  62. package/.bmad/bmm/testarch/knowledge/ci-burn-in.md +0 -675
  63. package/.bmad/bmm/testarch/knowledge/component-tdd.md +0 -486
  64. package/.bmad/bmm/testarch/knowledge/contract-testing.md +0 -957
  65. package/.bmad/bmm/testarch/knowledge/data-factories.md +0 -500
  66. package/.bmad/bmm/testarch/knowledge/email-auth.md +0 -721
  67. package/.bmad/bmm/testarch/knowledge/error-handling.md +0 -725
  68. package/.bmad/bmm/testarch/knowledge/feature-flags.md +0 -750
  69. package/.bmad/bmm/testarch/knowledge/fixture-architecture.md +0 -401
  70. package/.bmad/bmm/testarch/knowledge/network-first.md +0 -486
  71. package/.bmad/bmm/testarch/knowledge/nfr-criteria.md +0 -670
  72. package/.bmad/bmm/testarch/knowledge/playwright-config.md +0 -730
  73. package/.bmad/bmm/testarch/knowledge/probability-impact.md +0 -601
  74. package/.bmad/bmm/testarch/knowledge/risk-governance.md +0 -615
  75. package/.bmad/bmm/testarch/knowledge/selective-testing.md +0 -732
  76. package/.bmad/bmm/testarch/knowledge/selector-resilience.md +0 -527
  77. package/.bmad/bmm/testarch/knowledge/test-healing-patterns.md +0 -644
  78. package/.bmad/bmm/testarch/knowledge/test-levels-framework.md +0 -473
  79. package/.bmad/bmm/testarch/knowledge/test-priorities-matrix.md +0 -373
  80. package/.bmad/bmm/testarch/knowledge/test-quality.md +0 -664
  81. package/.bmad/bmm/testarch/knowledge/timing-debugging.md +0 -372
  82. package/.bmad/bmm/testarch/knowledge/visual-debugging.md +0 -524
  83. package/.bmad/bmm/testarch/tea-index.csv +0 -22
  84. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
  85. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  86. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -26
  87. package/.bmad/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
  88. package/.bmad/bmm/workflows/1-analysis/domain-research/template.md +0 -180
  89. package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -28
  90. package/.bmad/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  91. package/.bmad/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
  92. package/.bmad/bmm/workflows/1-analysis/product-brief/template.md +0 -181
  93. package/.bmad/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -45
  94. package/.bmad/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
  95. package/.bmad/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
  96. package/.bmad/bmm/workflows/1-analysis/research/checklist.md +0 -299
  97. package/.bmad/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  98. package/.bmad/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
  99. package/.bmad/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
  100. package/.bmad/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
  101. package/.bmad/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
  102. package/.bmad/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  103. package/.bmad/bmm/workflows/1-analysis/research/template-market.md +0 -347
  104. package/.bmad/bmm/workflows/1-analysis/research/template-technical.md +0 -245
  105. package/.bmad/bmm/workflows/1-analysis/research/workflow.yaml +0 -44
  106. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/epics-template.md +0 -80
  107. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md +0 -616
  108. package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml +0 -53
  109. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  110. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
  111. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -145
  112. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -61
  113. package/.bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
  114. package/.bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -13
  115. package/.bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
  116. package/.bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -204
  117. package/.bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -11
  118. package/.bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -52
  119. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
  120. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
  121. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
  122. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
  123. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
  124. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
  125. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -58
  126. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
  127. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  128. package/.bmad/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
  129. package/.bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
  130. package/.bmad/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
  131. package/.bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
  132. package/.bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -55
  133. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/checklist.md +0 -169
  134. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +0 -332
  135. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/template.md +0 -146
  136. package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +0 -62
  137. package/.bmad/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
  138. package/.bmad/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
  139. package/.bmad/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
  140. package/.bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -60
  141. package/.bmad/bmm/workflows/4-implementation/correct-course/checklist.md +0 -279
  142. package/.bmad/bmm/workflows/4-implementation/correct-course/instructions.md +0 -206
  143. package/.bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -56
  144. package/.bmad/bmm/workflows/4-implementation/create-story/checklist.md +0 -240
  145. package/.bmad/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
  146. package/.bmad/bmm/workflows/4-implementation/create-story/template.md +0 -51
  147. package/.bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -71
  148. package/.bmad/bmm/workflows/4-implementation/dev-story/checklist.md +0 -38
  149. package/.bmad/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
  150. package/.bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -56
  151. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  152. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
  153. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  154. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -57
  155. package/.bmad/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1443
  156. package/.bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -56
  157. package/.bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -33
  158. package/.bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -234
  159. package/.bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -55
  160. package/.bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -49
  161. package/.bmad/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  162. package/.bmad/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  163. package/.bmad/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
  164. package/.bmad/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -61
  165. package/.bmad/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  166. package/.bmad/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -26
  167. package/.bmad/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  168. package/.bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -23
  169. package/.bmad/bmm/workflows/document-project/checklist.md +0 -245
  170. package/.bmad/bmm/workflows/document-project/documentation-requirements.csv +0 -12
  171. package/.bmad/bmm/workflows/document-project/instructions.md +0 -222
  172. package/.bmad/bmm/workflows/document-project/templates/deep-dive-template.md +0 -345
  173. package/.bmad/bmm/workflows/document-project/templates/index-template.md +0 -169
  174. package/.bmad/bmm/workflows/document-project/templates/project-overview-template.md +0 -103
  175. package/.bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
  176. package/.bmad/bmm/workflows/document-project/templates/source-tree-template.md +0 -135
  177. package/.bmad/bmm/workflows/document-project/workflow.yaml +0 -29
  178. package/.bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
  179. package/.bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
  180. package/.bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
  181. package/.bmad/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
  182. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-helpers.md +0 -127
  183. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-library.json +0 -90
  184. package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-templates.yaml +0 -127
  185. package/.bmad/bmm/workflows/frame-expert/_shared/validate-json-instructions.md +0 -79
  186. package/.bmad/bmm/workflows/frame-expert/create-dataflow/checklist.md +0 -39
  187. package/.bmad/bmm/workflows/frame-expert/create-dataflow/instructions.md +0 -131
  188. package/.bmad/bmm/workflows/frame-expert/create-dataflow/workflow.yaml +0 -23
  189. package/.bmad/bmm/workflows/frame-expert/create-diagram/checklist.md +0 -43
  190. package/.bmad/bmm/workflows/frame-expert/create-diagram/instructions.md +0 -142
  191. package/.bmad/bmm/workflows/frame-expert/create-diagram/workflow.yaml +0 -24
  192. package/.bmad/bmm/workflows/frame-expert/create-flowchart/checklist.md +0 -49
  193. package/.bmad/bmm/workflows/frame-expert/create-flowchart/instructions.md +0 -242
  194. package/.bmad/bmm/workflows/frame-expert/create-flowchart/workflow.yaml +0 -27
  195. package/.bmad/bmm/workflows/frame-expert/create-wireframe/checklist.md +0 -38
  196. package/.bmad/bmm/workflows/frame-expert/create-wireframe/instructions.md +0 -133
  197. package/.bmad/bmm/workflows/frame-expert/create-wireframe/workflow.yaml +0 -23
  198. package/.bmad/bmm/workflows/techdoc/documentation-standards.md +0 -262
  199. package/.bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -363
  200. package/.bmad/bmm/workflows/testarch/atdd/checklist.md +0 -373
  201. package/.bmad/bmm/workflows/testarch/atdd/instructions.md +0 -785
  202. package/.bmad/bmm/workflows/testarch/atdd/workflow.yaml +0 -45
  203. package/.bmad/bmm/workflows/testarch/automate/checklist.md +0 -580
  204. package/.bmad/bmm/workflows/testarch/automate/instructions.md +0 -1303
  205. package/.bmad/bmm/workflows/testarch/automate/workflow.yaml +0 -52
  206. package/.bmad/bmm/workflows/testarch/ci/checklist.md +0 -246
  207. package/.bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -165
  208. package/.bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -128
  209. package/.bmad/bmm/workflows/testarch/ci/instructions.md +0 -517
  210. package/.bmad/bmm/workflows/testarch/ci/workflow.yaml +0 -45
  211. package/.bmad/bmm/workflows/testarch/framework/checklist.md +0 -321
  212. package/.bmad/bmm/workflows/testarch/framework/instructions.md +0 -455
  213. package/.bmad/bmm/workflows/testarch/framework/workflow.yaml +0 -47
  214. package/.bmad/bmm/workflows/testarch/nfr-assess/checklist.md +0 -405
  215. package/.bmad/bmm/workflows/testarch/nfr-assess/instructions.md +0 -722
  216. package/.bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -443
  217. package/.bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +0 -47
  218. package/.bmad/bmm/workflows/testarch/test-design/checklist.md +0 -234
  219. package/.bmad/bmm/workflows/testarch/test-design/instructions.md +0 -782
  220. package/.bmad/bmm/workflows/testarch/test-design/test-design-template.md +0 -285
  221. package/.bmad/bmm/workflows/testarch/test-design/workflow.yaml +0 -48
  222. package/.bmad/bmm/workflows/testarch/test-review/checklist.md +0 -470
  223. package/.bmad/bmm/workflows/testarch/test-review/instructions.md +0 -608
  224. package/.bmad/bmm/workflows/testarch/test-review/test-review-template.md +0 -388
  225. package/.bmad/bmm/workflows/testarch/test-review/workflow.yaml +0 -46
  226. package/.bmad/bmm/workflows/testarch/trace/checklist.md +0 -654
  227. package/.bmad/bmm/workflows/testarch/trace/instructions.md +0 -1045
  228. package/.bmad/bmm/workflows/testarch/trace/trace-template.md +0 -673
  229. package/.bmad/bmm/workflows/testarch/trace/workflow.yaml +0 -55
  230. package/.bmad/bmm/workflows/workflow-status/init/instructions.md +0 -334
  231. package/.bmad/bmm/workflows/workflow-status/init/workflow.yaml +0 -28
  232. package/.bmad/bmm/workflows/workflow-status/instructions.md +0 -388
  233. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +0 -138
  234. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +0 -126
  235. package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +0 -52
  236. package/.bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -122
  237. package/.bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -113
  238. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
  239. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
  240. package/.bmad/bmm/workflows/workflow-status/project-levels.yaml +0 -59
  241. package/.bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -24
  242. package/.bmad/bmm/workflows/workflow-status/workflow.yaml +0 -28
  243. package/.bmad/core/agents/bmad-master.md +0 -72
  244. package/.bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -113
  245. package/.bmad/core/config.yaml +0 -11
  246. package/.bmad/core/tasks/adv-elicit-methods.csv +0 -39
  247. package/.bmad/core/tasks/advanced-elicitation-methods.csv +0 -21
  248. package/.bmad/core/tasks/advanced-elicitation.xml +0 -106
  249. package/.bmad/core/tasks/index-docs.xml +0 -65
  250. package/.bmad/core/tasks/validate-workflow.xml +0 -89
  251. package/.bmad/core/tasks/workflow.xml +0 -270
  252. package/.bmad/core/tools/shard-doc.xml +0 -109
  253. package/.bmad/core/workflows/brainstorming/README.md +0 -261
  254. package/.bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  255. package/.bmad/core/workflows/brainstorming/instructions.md +0 -315
  256. package/.bmad/core/workflows/brainstorming/template.md +0 -106
  257. package/.bmad/core/workflows/brainstorming/workflow.yaml +0 -38
  258. package/.bmad/core/workflows/party-mode/instructions.md +0 -203
  259. package/.bmad/core/workflows/party-mode/workflow.yaml +0 -28
  260. package/.bmad/docs/claude-code-instructions.md +0 -25
  261. package/.claude/commands/BMad/analyst.md +0 -88
  262. package/.claude/commands/BMad/architect.md +0 -89
  263. package/.claude/commands/BMad/bmad-master.md +0 -114
  264. package/.claude/commands/BMad/bmad-orchestrator.md +0 -151
  265. package/.claude/commands/BMad/dev.md +0 -85
  266. package/.claude/commands/BMad/pm.md +0 -88
  267. package/.claude/commands/BMad/po.md +0 -83
  268. package/.claude/commands/BMad/qa.md +0 -91
  269. package/.claude/commands/BMad/sm.md +0 -69
  270. package/.claude/commands/BMad/tasks/advanced-elicitation.md +0 -123
  271. package/.claude/commands/BMad/tasks/apply-qa-fixes.md +0 -154
  272. package/.claude/commands/BMad/tasks/brownfield-create-epic.md +0 -166
  273. package/.claude/commands/BMad/tasks/brownfield-create-story.md +0 -153
  274. package/.claude/commands/BMad/tasks/correct-course.md +0 -76
  275. package/.claude/commands/BMad/tasks/create-brownfield-story.md +0 -318
  276. package/.claude/commands/BMad/tasks/create-deep-research-prompt.md +0 -284
  277. package/.claude/commands/BMad/tasks/create-doc.md +0 -107
  278. package/.claude/commands/BMad/tasks/create-next-story.md +0 -118
  279. package/.claude/commands/BMad/tasks/document-project.md +0 -349
  280. package/.claude/commands/BMad/tasks/execute-checklist.md +0 -92
  281. package/.claude/commands/BMad/tasks/facilitate-brainstorming-session.md +0 -142
  282. package/.claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +0 -57
  283. package/.claude/commands/BMad/tasks/index-docs.md +0 -179
  284. package/.claude/commands/BMad/tasks/kb-mode-interaction.md +0 -81
  285. package/.claude/commands/BMad/tasks/nfr-assess.md +0 -349
  286. package/.claude/commands/BMad/tasks/qa-gate.md +0 -167
  287. package/.claude/commands/BMad/tasks/review-story.md +0 -320
  288. package/.claude/commands/BMad/tasks/risk-profile.md +0 -359
  289. package/.claude/commands/BMad/tasks/shard-doc.md +0 -191
  290. package/.claude/commands/BMad/tasks/test-design.md +0 -180
  291. package/.claude/commands/BMad/tasks/trace-requirements.md +0 -270
  292. package/.claude/commands/BMad/tasks/validate-next-story.md +0 -140
  293. package/.claude/commands/BMad/ux-expert.md +0 -73
  294. package/.claude/commands/bmad/bmm/agents/analyst.md +0 -14
  295. package/.claude/commands/bmad/bmm/agents/architect.md +0 -14
  296. package/.claude/commands/bmad/bmm/agents/dev.md +0 -14
  297. package/.claude/commands/bmad/bmm/agents/frame-expert.md +0 -14
  298. package/.claude/commands/bmad/bmm/agents/pm.md +0 -14
  299. package/.claude/commands/bmad/bmm/agents/sm.md +0 -14
  300. package/.claude/commands/bmad/bmm/agents/tea.md +0 -14
  301. package/.claude/commands/bmad/bmm/agents/tech-writer.md +0 -14
  302. package/.claude/commands/bmad/bmm/agents/ux-designer.md +0 -14
  303. package/.claude/commands/bmad/bmm/workflows/architecture.md +0 -13
  304. package/.claude/commands/bmad/bmm/workflows/brainstorm-project.md +0 -13
  305. package/.claude/commands/bmad/bmm/workflows/code-review.md +0 -13
  306. package/.claude/commands/bmad/bmm/workflows/correct-course.md +0 -13
  307. package/.claude/commands/bmad/bmm/workflows/create-dataflow.md +0 -13
  308. package/.claude/commands/bmad/bmm/workflows/create-diagram.md +0 -13
  309. package/.claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +0 -13
  310. package/.claude/commands/bmad/bmm/workflows/create-flowchart.md +0 -13
  311. package/.claude/commands/bmad/bmm/workflows/create-story.md +0 -13
  312. package/.claude/commands/bmad/bmm/workflows/create-ux-design.md +0 -13
  313. package/.claude/commands/bmad/bmm/workflows/create-wireframe.md +0 -13
  314. package/.claude/commands/bmad/bmm/workflows/dev-story.md +0 -13
  315. package/.claude/commands/bmad/bmm/workflows/document-project.md +0 -13
  316. package/.claude/commands/bmad/bmm/workflows/domain-research.md +0 -13
  317. package/.claude/commands/bmad/bmm/workflows/epic-tech-context.md +0 -13
  318. package/.claude/commands/bmad/bmm/workflows/implementation-readiness.md +0 -13
  319. package/.claude/commands/bmad/bmm/workflows/prd.md +0 -13
  320. package/.claude/commands/bmad/bmm/workflows/product-brief.md +0 -13
  321. package/.claude/commands/bmad/bmm/workflows/research.md +0 -13
  322. package/.claude/commands/bmad/bmm/workflows/retrospective.md +0 -13
  323. package/.claude/commands/bmad/bmm/workflows/sprint-planning.md +0 -13
  324. package/.claude/commands/bmad/bmm/workflows/story-context.md +0 -13
  325. package/.claude/commands/bmad/bmm/workflows/story-done.md +0 -13
  326. package/.claude/commands/bmad/bmm/workflows/story-ready.md +0 -13
  327. package/.claude/commands/bmad/bmm/workflows/tech-spec.md +0 -13
  328. package/.claude/commands/bmad/bmm/workflows/workflow-init.md +0 -13
  329. package/.claude/commands/bmad/bmm/workflows/workflow-status.md +0 -13
  330. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -14
  331. package/.claude/commands/bmad/core/tasks/advanced-elicitation.md +0 -9
  332. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  333. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  334. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -13
  335. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -13
  336. package/.claude/github-star-reminder.txt +0 -1
  337. package/.claude/hooks/bmad-party-manager.sh +0 -225
  338. package/.claude/hooks/stop.sh +0 -221
  339. package/.claude/piper-voices-dir.txt +0 -1
  340. package/.mcp.json +0 -88
  341. package/RELEASE_NOTES_v2.4.0_DRAFT.md +0 -116
  342. package/RELEASE_NOTES_v2.4.1_DRAFT.md +0 -61
  343. package/docs/2025-11-15_15-14-33.snagx +0 -0
  344. package/docs/Screenshot 2025-11-15 151325.png +0 -0
  345. package/docs/Screenshot 2025-11-15 151432.png +0 -0
  346. package/docs/macos-piper-issue.md +0 -172
  347. package/docs/stargazer-cms-prd.md +0 -1918
  348. package/docs/whatsapp-plugin-github-issue.md +0 -393
  349. package/docs/whatsapp-tts-plugin-feasibility.md +0 -418
  350. package/docs/whatsapp-tts-standalone-plugin.md +0 -628
  351. package/github-profile-draft.md +0 -57
  352. package/linkedin/vibe-coding-and-pulseaudio.md +0 -121
  353. package/mcp-server/agentvibes.db +0 -0
  354. package/scripts/audio-tunnel.config +0 -17
  355. package/v4-backup/.bmad-core/agent-teams/team-all.yaml +0 -15
  356. package/v4-backup/.bmad-core/agent-teams/team-fullstack.yaml +0 -19
  357. package/v4-backup/.bmad-core/agent-teams/team-ide-minimal.yaml +0 -11
  358. package/v4-backup/.bmad-core/agent-teams/team-no-ui.yaml +0 -14
  359. package/v4-backup/.bmad-core/agents/analyst.md +0 -84
  360. package/v4-backup/.bmad-core/agents/architect.md +0 -85
  361. package/v4-backup/.bmad-core/agents/bmad-master.md +0 -110
  362. package/v4-backup/.bmad-core/agents/bmad-orchestrator.md +0 -147
  363. package/v4-backup/.bmad-core/agents/dev.md +0 -81
  364. package/v4-backup/.bmad-core/agents/pm.md +0 -84
  365. package/v4-backup/.bmad-core/agents/po.md +0 -79
  366. package/v4-backup/.bmad-core/agents/qa.md +0 -87
  367. package/v4-backup/.bmad-core/agents/sm.md +0 -65
  368. package/v4-backup/.bmad-core/agents/ux-expert.md +0 -69
  369. package/v4-backup/.bmad-core/checklists/architect-checklist.md +0 -440
  370. package/v4-backup/.bmad-core/checklists/change-checklist.md +0 -184
  371. package/v4-backup/.bmad-core/checklists/pm-checklist.md +0 -372
  372. package/v4-backup/.bmad-core/checklists/po-master-checklist.md +0 -434
  373. package/v4-backup/.bmad-core/checklists/story-dod-checklist.md +0 -96
  374. package/v4-backup/.bmad-core/checklists/story-draft-checklist.md +0 -155
  375. package/v4-backup/.bmad-core/core-config.yaml +0 -22
  376. package/v4-backup/.bmad-core/data/bmad-kb.md +0 -809
  377. package/v4-backup/.bmad-core/data/brainstorming-techniques.md +0 -38
  378. package/v4-backup/.bmad-core/data/elicitation-methods.md +0 -156
  379. package/v4-backup/.bmad-core/data/technical-preferences.md +0 -5
  380. package/v4-backup/.bmad-core/data/test-levels-framework.md +0 -148
  381. package/v4-backup/.bmad-core/data/test-priorities-matrix.md +0 -174
  382. package/v4-backup/.bmad-core/enhanced-ide-development-workflow.md +0 -248
  383. package/v4-backup/.bmad-core/install-manifest.yaml +0 -230
  384. package/v4-backup/.bmad-core/tasks/advanced-elicitation.md +0 -119
  385. package/v4-backup/.bmad-core/tasks/apply-qa-fixes.md +0 -150
  386. package/v4-backup/.bmad-core/tasks/brownfield-create-epic.md +0 -162
  387. package/v4-backup/.bmad-core/tasks/brownfield-create-story.md +0 -149
  388. package/v4-backup/.bmad-core/tasks/correct-course.md +0 -72
  389. package/v4-backup/.bmad-core/tasks/create-brownfield-story.md +0 -314
  390. package/v4-backup/.bmad-core/tasks/create-deep-research-prompt.md +0 -280
  391. package/v4-backup/.bmad-core/tasks/create-doc.md +0 -103
  392. package/v4-backup/.bmad-core/tasks/create-next-story.md +0 -114
  393. package/v4-backup/.bmad-core/tasks/document-project.md +0 -345
  394. package/v4-backup/.bmad-core/tasks/execute-checklist.md +0 -88
  395. package/v4-backup/.bmad-core/tasks/facilitate-brainstorming-session.md +0 -138
  396. package/v4-backup/.bmad-core/tasks/generate-ai-frontend-prompt.md +0 -53
  397. package/v4-backup/.bmad-core/tasks/index-docs.md +0 -175
  398. package/v4-backup/.bmad-core/tasks/kb-mode-interaction.md +0 -77
  399. package/v4-backup/.bmad-core/tasks/nfr-assess.md +0 -345
  400. package/v4-backup/.bmad-core/tasks/qa-gate.md +0 -163
  401. package/v4-backup/.bmad-core/tasks/review-story.md +0 -316
  402. package/v4-backup/.bmad-core/tasks/risk-profile.md +0 -355
  403. package/v4-backup/.bmad-core/tasks/shard-doc.md +0 -187
  404. package/v4-backup/.bmad-core/tasks/test-design.md +0 -176
  405. package/v4-backup/.bmad-core/tasks/trace-requirements.md +0 -266
  406. package/v4-backup/.bmad-core/tasks/validate-next-story.md +0 -136
  407. package/v4-backup/.bmad-core/templates/architecture-tmpl.yaml +0 -651
  408. package/v4-backup/.bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
  409. package/v4-backup/.bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -477
  410. package/v4-backup/.bmad-core/templates/brownfield-prd-tmpl.yaml +0 -281
  411. package/v4-backup/.bmad-core/templates/competitor-analysis-tmpl.yaml +0 -307
  412. package/v4-backup/.bmad-core/templates/front-end-architecture-tmpl.yaml +0 -219
  413. package/v4-backup/.bmad-core/templates/front-end-spec-tmpl.yaml +0 -350
  414. package/v4-backup/.bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -824
  415. package/v4-backup/.bmad-core/templates/market-research-tmpl.yaml +0 -253
  416. package/v4-backup/.bmad-core/templates/prd-tmpl.yaml +0 -203
  417. package/v4-backup/.bmad-core/templates/project-brief-tmpl.yaml +0 -222
  418. package/v4-backup/.bmad-core/templates/qa-gate-tmpl.yaml +0 -103
  419. package/v4-backup/.bmad-core/templates/story-tmpl.yaml +0 -138
  420. package/v4-backup/.bmad-core/user-guide.md +0 -577
  421. package/v4-backup/.bmad-core/utils/bmad-doc-template.md +0 -327
  422. package/v4-backup/.bmad-core/utils/workflow-management.md +0 -71
  423. package/v4-backup/.bmad-core/workflows/brownfield-fullstack.yaml +0 -298
  424. package/v4-backup/.bmad-core/workflows/brownfield-service.yaml +0 -188
  425. package/v4-backup/.bmad-core/workflows/brownfield-ui.yaml +0 -198
  426. package/v4-backup/.bmad-core/workflows/greenfield-fullstack.yaml +0 -241
  427. package/v4-backup/.bmad-core/workflows/greenfield-service.yaml +0 -207
  428. package/v4-backup/.bmad-core/workflows/greenfield-ui.yaml +0 -236
  429. 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
- ```