bmad-method 6.0.0-alpha.0 → 6.0.0-alpha.2

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 (788) hide show
  1. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +70 -0
  2. package/.claude/commands/bmad/bmb/workflows/README.md +67 -0
  3. package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +15 -0
  4. package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +15 -0
  5. package/.claude/commands/bmad/bmb/workflows/create-agent.md +15 -0
  6. package/.claude/commands/bmad/bmb/workflows/create-module.md +15 -0
  7. package/.claude/commands/bmad/bmb/workflows/create-workflow.md +15 -0
  8. package/.claude/commands/bmad/bmb/workflows/edit-agent.md +15 -0
  9. package/.claude/commands/bmad/bmb/workflows/edit-module.md +15 -0
  10. package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +15 -0
  11. package/.claude/commands/bmad/bmb/workflows/module-brief.md +15 -0
  12. package/.claude/commands/bmad/bmb/workflows/redoc.md +15 -0
  13. package/.claude/commands/bmad/bmd/agents/cli-chief.md +108 -0
  14. package/.claude/commands/bmad/bmd/agents/doc-keeper.md +115 -0
  15. package/.claude/commands/bmad/bmd/agents/release-chief.md +109 -0
  16. package/.claude/commands/bmad/core/agents/bmad-master.md +71 -0
  17. package/.claude/commands/bmad/core/tasks/index-docs.md +9 -0
  18. package/.claude/commands/bmad/core/tools/shard-doc.md +9 -0
  19. package/.claude/commands/bmad/core/workflows/README.md +27 -0
  20. package/.claude/commands/bmad/core/workflows/brainstorming.md +15 -0
  21. package/.claude/commands/bmad/core/workflows/party-mode.md +15 -0
  22. package/.claude/hooks/bmad-tts-injector.sh +415 -0
  23. package/.claude/hooks/bmad-voice-manager.sh +511 -0
  24. package/.claude/hooks/check-output-style.sh +112 -0
  25. package/.claude/hooks/download-extra-voices.sh +244 -0
  26. package/.claude/hooks/github-star-reminder.sh +154 -0
  27. package/.claude/hooks/language-manager.sh +392 -0
  28. package/.claude/hooks/learn-manager.sh +475 -0
  29. package/.claude/hooks/personality-manager.sh +438 -0
  30. package/.claude/hooks/piper-download-voices.sh +165 -0
  31. package/.claude/hooks/piper-installer.sh +178 -0
  32. package/.claude/hooks/piper-multispeaker-registry.sh +165 -0
  33. package/.claude/hooks/piper-voice-manager.sh +293 -0
  34. package/.claude/hooks/play-tts-elevenlabs.sh +404 -0
  35. package/.claude/hooks/play-tts-piper.sh +338 -0
  36. package/.claude/hooks/play-tts.sh +100 -0
  37. package/.claude/hooks/provider-commands.sh +540 -0
  38. package/.claude/hooks/provider-manager.sh +298 -0
  39. package/.claude/hooks/replay-target-audio.sh +95 -0
  40. package/.claude/hooks/sentiment-manager.sh +201 -0
  41. package/.claude/hooks/speed-manager.sh +291 -0
  42. package/.claude/hooks/voice-manager.sh +594 -0
  43. package/.claude/hooks/voices-config.sh +70 -0
  44. package/.claude/settings.local.json +41 -0
  45. package/.github/ISSUE_TEMPLATE/config.yaml +4 -0
  46. package/.github/ISSUE_TEMPLATE/idea_submission.md +2 -2
  47. package/.github/workflows/{format-check.yaml → lint.yaml} +19 -1
  48. package/.prettierignore +2 -0
  49. package/CHANGELOG.md +8 -2
  50. package/CONTRIBUTING.md +1 -0
  51. package/README.md +263 -0
  52. package/bmad/_cfg/agent-manifest.csv +7 -0
  53. package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +42 -0
  54. package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +32 -0
  55. package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +42 -0
  56. package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +42 -0
  57. package/bmad/_cfg/agents/core-bmad-master.customize.yaml +42 -0
  58. package/bmad/_cfg/files-manifest.csv +83 -0
  59. package/bmad/_cfg/manifest.yaml +12 -0
  60. package/bmad/_cfg/task-manifest.csv +5 -0
  61. package/bmad/_cfg/tool-manifest.csv +2 -0
  62. package/bmad/_cfg/workflow-manifest.csv +15 -0
  63. package/bmad/bmb/README.md +132 -0
  64. package/bmad/bmb/agents/bmad-builder.md +70 -0
  65. package/bmad/bmb/config.yaml +14 -0
  66. package/bmad/bmb/workflows/audit-workflow/checklist.md +143 -0
  67. package/bmad/bmb/workflows/audit-workflow/instructions.md +341 -0
  68. package/bmad/bmb/workflows/audit-workflow/template.md +118 -0
  69. package/bmad/bmb/workflows/audit-workflow/workflow.yaml +23 -0
  70. package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +21 -0
  71. package/bmad/bmb/workflows/convert-legacy/README.md +262 -0
  72. package/bmad/bmb/workflows/convert-legacy/checklist.md +205 -0
  73. package/bmad/bmb/workflows/convert-legacy/instructions.md +377 -0
  74. package/bmad/bmb/workflows/convert-legacy/workflow.yaml +32 -0
  75. package/bmad/bmb/workflows/create-agent/README.md +320 -0
  76. package/bmad/bmb/workflows/create-agent/agent-architecture.md +419 -0
  77. package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +412 -0
  78. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +759 -0
  79. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +759 -0
  80. package/bmad/bmb/workflows/create-agent/agent-types.md +292 -0
  81. package/bmad/bmb/workflows/create-agent/brainstorm-context.md +174 -0
  82. package/bmad/bmb/workflows/create-agent/checklist.md +62 -0
  83. package/bmad/bmb/workflows/create-agent/communication-styles.md +202 -0
  84. package/bmad/bmb/workflows/create-agent/instructions.md +430 -0
  85. package/bmad/bmb/workflows/create-agent/workflow.yaml +37 -0
  86. package/bmad/bmb/workflows/create-module/README.md +220 -0
  87. package/bmad/bmb/workflows/create-module/README.md.bak +218 -0
  88. package/bmad/bmb/workflows/create-module/brainstorm-context.md +137 -0
  89. package/bmad/bmb/workflows/create-module/checklist.md +244 -0
  90. package/bmad/bmb/workflows/create-module/checklist.md.bak +245 -0
  91. package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +92 -0
  92. package/bmad/bmb/workflows/create-module/installer-templates/installer.js +231 -0
  93. package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +231 -0
  94. package/bmad/bmb/workflows/create-module/instructions.md +581 -0
  95. package/bmad/bmb/workflows/create-module/instructions.md.bak +521 -0
  96. package/bmad/bmb/workflows/create-module/module-structure.md +366 -0
  97. package/bmad/bmb/workflows/create-module/module-structure.md.bak +310 -0
  98. package/bmad/bmb/workflows/create-module/workflow.yaml +42 -0
  99. package/bmad/bmb/workflows/create-module/workflow.yaml.bak +40 -0
  100. package/bmad/bmb/workflows/create-workflow/README.md +277 -0
  101. package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +197 -0
  102. package/bmad/bmb/workflows/create-workflow/checklist.md +94 -0
  103. package/bmad/bmb/workflows/create-workflow/instructions.md +716 -0
  104. package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +1150 -0
  105. package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +24 -0
  106. package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +13 -0
  107. package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +9 -0
  108. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +39 -0
  109. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +39 -0
  110. package/bmad/bmb/workflows/create-workflow/workflow.yaml +40 -0
  111. package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +38 -0
  112. package/bmad/bmb/workflows/edit-agent/README.md +112 -0
  113. package/bmad/bmb/workflows/edit-agent/checklist.md +112 -0
  114. package/bmad/bmb/workflows/edit-agent/instructions.md +290 -0
  115. package/bmad/bmb/workflows/edit-agent/workflow.yaml +33 -0
  116. package/bmad/bmb/workflows/edit-module/README.md +187 -0
  117. package/bmad/bmb/workflows/edit-module/checklist.md +165 -0
  118. package/bmad/bmb/workflows/edit-module/instructions.md +339 -0
  119. package/bmad/bmb/workflows/edit-module/workflow.yaml +34 -0
  120. package/bmad/bmb/workflows/edit-workflow/README.md +119 -0
  121. package/bmad/bmb/workflows/edit-workflow/checklist.md +70 -0
  122. package/bmad/bmb/workflows/edit-workflow/instructions.md +342 -0
  123. package/bmad/bmb/workflows/edit-workflow/workflow.yaml +27 -0
  124. package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +25 -0
  125. package/bmad/bmb/workflows/module-brief/README.md +264 -0
  126. package/bmad/bmb/workflows/module-brief/checklist.md +116 -0
  127. package/bmad/bmb/workflows/module-brief/instructions.md +267 -0
  128. package/bmad/bmb/workflows/module-brief/template.md +275 -0
  129. package/bmad/bmb/workflows/module-brief/workflow.yaml +29 -0
  130. package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +27 -0
  131. package/bmad/bmb/workflows/redoc/README.md +87 -0
  132. package/bmad/bmb/workflows/redoc/checklist.md +99 -0
  133. package/bmad/bmb/workflows/redoc/instructions.md +265 -0
  134. package/bmad/bmb/workflows/redoc/workflow.yaml +32 -0
  135. package/bmad/bmb/workflows/redoc/workflow.yaml.bak +31 -0
  136. package/bmad/bmd/README.md +193 -0
  137. package/bmad/bmd/README.md.bak +193 -0
  138. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +102 -0
  139. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +102 -0
  140. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +68 -0
  141. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +68 -0
  142. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +123 -0
  143. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +123 -0
  144. package/bmad/bmd/agents/cli-chief-sidecar/memories.md +53 -0
  145. package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +53 -0
  146. package/bmad/bmd/agents/cli-chief.md +108 -0
  147. package/bmad/bmd/agents/cli-chief.md.bak +108 -0
  148. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +177 -0
  149. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +177 -0
  150. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +81 -0
  151. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +81 -0
  152. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +88 -0
  153. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +88 -0
  154. package/bmad/bmd/agents/doc-keeper.md +115 -0
  155. package/bmad/bmd/agents/doc-keeper.md.bak +115 -0
  156. package/bmad/bmd/agents/release-chief-sidecar/instructions.md +164 -0
  157. package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +164 -0
  158. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +82 -0
  159. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +82 -0
  160. package/bmad/bmd/agents/release-chief-sidecar/memories.md +73 -0
  161. package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +73 -0
  162. package/bmad/bmd/agents/release-chief.md +109 -0
  163. package/bmad/bmd/agents/release-chief.md.bak +109 -0
  164. package/bmad/bmd/config.yaml +10 -0
  165. package/bmad/core/agents/bmad-master.md +71 -0
  166. package/bmad/core/agents/bmad-web-orchestrator.agent.xml +122 -0
  167. package/bmad/core/config.yaml +9 -0
  168. package/bmad/core/tasks/adv-elicit-methods.csv +39 -0
  169. package/{src/core/tasks/adv-elicit.md → bmad/core/tasks/adv-elicit.xml} +6 -11
  170. package/{src/core/tasks/index-docs.md → bmad/core/tasks/index-docs.xml} +6 -10
  171. package/{src/core/tasks/validate-workflow.md → bmad/core/tasks/validate-workflow.xml} +4 -7
  172. package/bmad/core/tasks/workflow.xml +174 -0
  173. package/bmad/core/tools/shard-doc.xml +100 -0
  174. package/{src/modules/cis → bmad/core}/workflows/brainstorming/README.md +2 -2
  175. package/{src/modules/cis → bmad/core}/workflows/brainstorming/instructions.md +26 -22
  176. package/{src/modules/cis → bmad/core}/workflows/brainstorming/template.md +2 -2
  177. package/{src/modules/cis → bmad/core}/workflows/brainstorming/workflow.yaml +16 -3
  178. package/bmad/core/workflows/party-mode/instructions.md +188 -0
  179. package/bmad/core/workflows/party-mode/workflow.yaml +23 -0
  180. package/bmad/docs/claude-code-instructions.md +25 -0
  181. package/bmad/docs/codex-instructions.md +21 -0
  182. package/bmd/README.md +193 -0
  183. package/bmd/agents/cli-chief-sidecar/instructions.md +102 -0
  184. package/bmd/agents/cli-chief-sidecar/knowledge/README.md +68 -0
  185. package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +123 -0
  186. package/bmd/agents/cli-chief-sidecar/memories.md +53 -0
  187. package/bmd/agents/cli-chief.agent.yaml +126 -0
  188. package/bmd/agents/doc-keeper-sidecar/instructions.md +177 -0
  189. package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +81 -0
  190. package/bmd/agents/doc-keeper-sidecar/memories.md +88 -0
  191. package/bmd/agents/doc-keeper.agent.yaml +137 -0
  192. package/bmd/agents/release-chief-sidecar/instructions.md +164 -0
  193. package/bmd/agents/release-chief-sidecar/knowledge/README.md +82 -0
  194. package/bmd/agents/release-chief-sidecar/memories.md +73 -0
  195. package/bmd/agents/release-chief.agent.yaml +127 -0
  196. package/bmd/bmad-custom-module-installer-plan.md +1176 -0
  197. package/bmd/config.yaml +12 -0
  198. package/docs/bmad-brownfield-guide.md +1260 -0
  199. package/docs/conversion-report-shard-doc-2025-10-26.md +188 -0
  200. package/docs/ide-info/auggie.md +2 -2
  201. package/docs/ide-info/claude-code.md +4 -4
  202. package/docs/ide-info/codex.md +9 -20
  203. package/docs/ide-info/opencode.md +24 -0
  204. package/docs/installers-bundlers/ide-injections.md +0 -10
  205. package/docs/installers-bundlers/installers-modules-platforms-reference.md +22 -50
  206. package/docs/v4-to-v6-upgrade.md +225 -0
  207. package/eslint.config.mjs +4 -2
  208. package/package.json +11 -6
  209. package/src/core/_module-installer/{install-menu-config.yaml → install-config.yaml} +8 -4
  210. package/src/core/_module-installer/installer.js +1 -1
  211. package/src/core/agents/bmad-master.agent.yaml +39 -0
  212. package/src/core/agents/bmad-web-orchestrator.agent.xml +122 -0
  213. package/src/core/tasks/adv-elicit.xml +104 -0
  214. package/src/core/tasks/index-docs.xml +65 -0
  215. package/src/core/tasks/validate-workflow.xml +89 -0
  216. package/src/core/tasks/{workflow.md → workflow.xml} +42 -17
  217. package/src/core/tools/shard-doc.xml +100 -0
  218. package/src/core/workflows/brainstorming/README.md +271 -0
  219. package/src/core/workflows/brainstorming/brain-methods.csv +36 -0
  220. package/src/core/workflows/brainstorming/instructions.md +314 -0
  221. package/src/core/workflows/brainstorming/template.md +102 -0
  222. package/src/core/workflows/brainstorming/workflow.yaml +43 -0
  223. package/src/core/workflows/party-mode/instructions.md +30 -23
  224. package/src/core/workflows/party-mode/workflow.yaml +7 -8
  225. package/src/modules/bmb/README.md +132 -0
  226. package/src/modules/bmb/_module-installer/install-config.yaml +26 -0
  227. package/src/modules/bmb/agents/bmad-builder.agent.yaml +58 -0
  228. package/src/modules/bmb/workflows/audit-workflow/checklist.md +143 -0
  229. package/src/modules/bmb/workflows/audit-workflow/instructions.md +341 -0
  230. package/src/modules/bmb/workflows/audit-workflow/template.md +118 -0
  231. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +25 -0
  232. package/src/modules/bmb/workflows/convert-legacy/README.md +32 -32
  233. package/src/modules/bmb/workflows/convert-legacy/checklist.md +21 -20
  234. package/src/modules/bmb/workflows/convert-legacy/instructions.md +130 -81
  235. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +7 -8
  236. package/src/modules/bmb/workflows/create-agent/README.md +96 -44
  237. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +58 -51
  238. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +153 -151
  239. package/src/modules/bmb/workflows/create-agent/agent-types.md +137 -22
  240. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +4 -4
  241. package/src/modules/bmb/workflows/create-agent/checklist.md +30 -102
  242. package/src/modules/bmb/workflows/create-agent/communication-styles.md +22 -60
  243. package/src/modules/bmb/workflows/create-agent/instructions.md +309 -219
  244. package/src/modules/bmb/workflows/create-agent/workflow.yaml +24 -14
  245. package/src/modules/bmb/workflows/create-module/README.md +23 -21
  246. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +1 -1
  247. package/src/modules/bmb/workflows/create-module/checklist.md +20 -21
  248. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +92 -0
  249. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +1 -1
  250. package/src/modules/bmb/workflows/create-module/instructions.md +309 -237
  251. package/src/modules/bmb/workflows/create-module/module-structure.md +104 -48
  252. package/src/modules/bmb/workflows/create-module/workflow.yaml +14 -17
  253. package/src/modules/bmb/workflows/create-workflow/README.md +68 -7
  254. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +4 -4
  255. package/src/modules/bmb/workflows/create-workflow/checklist.md +22 -0
  256. package/src/modules/bmb/workflows/create-workflow/instructions.md +496 -47
  257. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +753 -59
  258. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +4 -3
  259. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +30 -0
  260. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +11 -11
  261. package/src/modules/bmb/workflows/edit-agent/README.md +112 -0
  262. package/src/modules/bmb/workflows/edit-agent/checklist.md +112 -0
  263. package/src/modules/bmb/workflows/edit-agent/instructions.md +290 -0
  264. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +35 -0
  265. package/src/modules/bmb/workflows/edit-module/README.md +187 -0
  266. package/src/modules/bmb/workflows/edit-module/checklist.md +165 -0
  267. package/src/modules/bmb/workflows/edit-module/instructions.md +339 -0
  268. package/src/modules/bmb/workflows/edit-module/workflow.yaml +36 -0
  269. package/src/modules/bmb/workflows/edit-workflow/README.md +58 -2
  270. package/src/modules/bmb/workflows/edit-workflow/instructions.md +289 -117
  271. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +5 -10
  272. package/src/modules/bmb/workflows/module-brief/README.md +16 -16
  273. package/src/modules/bmb/workflows/module-brief/checklist.md +4 -4
  274. package/src/modules/bmb/workflows/module-brief/instructions.md +9 -7
  275. package/src/modules/bmb/workflows/module-brief/template.md +9 -9
  276. package/src/modules/bmb/workflows/module-brief/workflow.yaml +5 -4
  277. package/src/modules/bmb/workflows/redoc/checklist.md +2 -2
  278. package/src/modules/bmb/workflows/redoc/instructions.md +20 -10
  279. package/src/modules/bmb/workflows/redoc/workflow.yaml +5 -4
  280. package/src/modules/bmm/README.md +141 -0
  281. package/src/modules/bmm/_module-installer/install-config.yaml +74 -0
  282. package/src/modules/bmm/_module-installer/installer.js +1 -1
  283. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +1 -1
  284. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +1 -1
  285. package/src/modules/bmm/agents/analyst.agent.yaml +43 -0
  286. package/src/modules/bmm/agents/architect.agent.yaml +41 -0
  287. package/src/modules/bmm/agents/dev.agent.yaml +43 -0
  288. package/src/modules/bmm/agents/game-architect.agent.yaml +35 -0
  289. package/src/modules/bmm/agents/game-designer.agent.yaml +47 -0
  290. package/src/modules/bmm/agents/game-dev.agent.yaml +39 -0
  291. package/src/modules/bmm/agents/pm.agent.yaml +50 -0
  292. package/src/modules/bmm/agents/sm.agent.yaml +67 -0
  293. package/src/modules/bmm/agents/tea.agent.yaml +59 -0
  294. package/src/modules/bmm/agents/ux-designer.agent.yaml +33 -0
  295. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +1 -1
  296. package/src/modules/bmm/sub-modules/claude-code/readme.md +1 -1
  297. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{api-documenter.md → bmad-analysis/api-documenter.md} +17 -0
  298. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{codebase-analyzer.md → bmad-analysis/codebase-analyzer.md} +19 -1
  299. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{data-analyst.md → bmad-analysis/data-analyst.md} +17 -0
  300. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{pattern-detector.md → bmad-analysis/pattern-detector.md} +17 -0
  301. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{dependency-mapper.md → bmad-planning/dependency-mapper.md} +16 -0
  302. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{epic-optimizer.md → bmad-planning/epic-optimizer.md} +15 -0
  303. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{technical-decisions-curator.md → bmad-planning/technical-decisions-curator.md} +24 -2
  304. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{trend-spotter.md → bmad-planning/trend-spotter.md} +16 -0
  305. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{user-journey-mapper.md → bmad-planning/user-journey-mapper.md} +22 -0
  306. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{user-researcher.md → bmad-planning/user-researcher.md} +16 -0
  307. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{market-researcher.md → bmad-research/market-researcher.md} +17 -0
  308. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{tech-debt-auditor.md → bmad-research/tech-debt-auditor.md} +17 -0
  309. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{document-reviewer.md → bmad-review/document-reviewer.md} +17 -0
  310. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{technical-evaluator.md → bmad-review/technical-evaluator.md} +17 -0
  311. package/src/modules/bmm/sub-modules/claude-code/sub-agents/{test-coverage-analyzer.md → bmad-review/test-coverage-analyzer.md} +17 -0
  312. package/src/modules/bmm/tasks/{daily-standup.md → daily-standup.xml} +21 -27
  313. package/src/modules/bmm/tasks/{retrospective.md → retrospective.xml} +22 -28
  314. package/src/modules/bmm/teams/team-fullstack.yaml +11 -0
  315. package/src/modules/bmm/teams/team-gamedev.yaml +5 -0
  316. package/src/modules/bmm/testarch/README.md +311 -0
  317. package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +675 -0
  318. package/src/modules/bmm/testarch/knowledge/component-tdd.md +486 -0
  319. package/src/modules/bmm/testarch/knowledge/contract-testing.md +957 -0
  320. package/src/modules/bmm/testarch/knowledge/data-factories.md +500 -0
  321. package/src/modules/bmm/testarch/knowledge/email-auth.md +721 -0
  322. package/src/modules/bmm/testarch/knowledge/error-handling.md +725 -0
  323. package/src/modules/bmm/testarch/knowledge/feature-flags.md +750 -0
  324. package/src/modules/bmm/testarch/knowledge/fixture-architecture.md +401 -0
  325. package/src/modules/bmm/testarch/knowledge/network-first.md +486 -0
  326. package/src/modules/bmm/testarch/knowledge/nfr-criteria.md +670 -0
  327. package/src/modules/bmm/testarch/knowledge/playwright-config.md +730 -0
  328. package/src/modules/bmm/testarch/knowledge/probability-impact.md +601 -0
  329. package/src/modules/bmm/testarch/knowledge/risk-governance.md +615 -0
  330. package/src/modules/bmm/testarch/knowledge/selective-testing.md +732 -0
  331. package/src/modules/bmm/testarch/knowledge/selector-resilience.md +527 -0
  332. package/src/modules/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
  333. package/src/modules/bmm/testarch/knowledge/test-levels-framework.md +473 -0
  334. package/src/modules/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
  335. package/src/modules/bmm/testarch/knowledge/test-quality.md +664 -0
  336. package/src/modules/bmm/testarch/knowledge/timing-debugging.md +372 -0
  337. package/src/modules/bmm/testarch/knowledge/visual-debugging.md +524 -0
  338. package/src/modules/bmm/testarch/tea-index.csv +22 -0
  339. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +38 -0
  340. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/game-context.md +3 -3
  341. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +74 -12
  342. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +22 -3
  343. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +29 -0
  344. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +61 -8
  345. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +4 -4
  346. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +21 -3
  347. package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +5 -5
  348. package/src/modules/bmm/workflows/1-analysis/game-brief/checklist.md +2 -2
  349. package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +151 -311
  350. package/src/modules/bmm/workflows/1-analysis/game-brief/template.md +2 -2
  351. package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +16 -6
  352. package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +4 -4
  353. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +2 -2
  354. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +147 -179
  355. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +4 -4
  356. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +16 -6
  357. package/src/modules/bmm/workflows/1-analysis/research/README.md +3 -3
  358. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +1 -1
  359. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +2 -2
  360. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +2 -2
  361. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +80 -17
  362. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +71 -11
  363. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +72 -38
  364. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +73 -14
  365. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +1 -1
  366. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +1 -1
  367. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +21 -121
  368. package/src/modules/bmm/workflows/2-plan-workflows/README.md +258 -0
  369. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +310 -0
  370. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1283 -0
  371. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +145 -0
  372. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +42 -0
  373. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/README.md +16 -16
  374. package/src/modules/bmm/workflows/2-plan-workflows/gdd/checklist.md +148 -0
  375. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/action-platformer.md +1 -1
  376. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/adventure.md +1 -1
  377. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/card-game.md +2 -2
  378. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/fighting.md +1 -1
  379. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/horror.md +2 -2
  380. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/idle-incremental.md +1 -1
  381. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/moba.md +4 -4
  382. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/party-game.md +1 -1
  383. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/racing.md +3 -3
  384. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/rhythm.md +1 -1
  385. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/roguelike.md +2 -2
  386. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/rpg.md +3 -3
  387. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/sandbox.md +4 -4
  388. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/shooter.md +3 -3
  389. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/simulation.md +3 -3
  390. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/sports.md +3 -3
  391. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/strategy.md +3 -3
  392. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/survival.md +2 -2
  393. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/text-based.md +3 -3
  394. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/tower-defense.md +5 -5
  395. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/turn-based-tactics.md +4 -4
  396. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/visual-novel.md +1 -1
  397. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/gdd-template.md +6 -12
  398. package/src/modules/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md +475 -0
  399. package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +67 -0
  400. package/src/modules/bmm/workflows/2-plan-workflows/narrative/checklist.md +139 -0
  401. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/narrative/instructions-narrative.md +52 -12
  402. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/narrative/narrative-template.md +8 -8
  403. package/src/modules/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +38 -0
  404. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +117 -0
  405. package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +63 -0
  406. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +449 -0
  407. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +62 -0
  408. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +46 -0
  409. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +107 -0
  410. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +11 -0
  411. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +167 -0
  412. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +278 -0
  413. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +269 -0
  414. package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/tech-spec/tech-spec-template.md +0 -4
  415. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +56 -0
  416. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +52 -0
  417. package/src/modules/bmm/workflows/3-solutioning/README.md +1 -565
  418. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +347 -0
  419. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +103 -0
  420. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +244 -0
  421. package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +222 -0
  422. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +703 -0
  423. package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +13 -0
  424. package/src/modules/bmm/workflows/3-solutioning/architecture/readme.md +318 -0
  425. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +54 -0
  426. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +177 -0
  427. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +175 -0
  428. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +273 -0
  429. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +146 -0
  430. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +189 -0
  431. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +40 -0
  432. package/src/modules/bmm/workflows/4-implementation/README.md +221 -0
  433. package/src/modules/bmm/workflows/4-implementation/{review-story → code-review}/README.md +4 -7
  434. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +391 -0
  435. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +56 -0
  436. package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +73 -0
  437. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +5 -5
  438. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +64 -53
  439. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +10 -0
  440. package/src/modules/bmm/workflows/4-implementation/create-story/README.md +117 -30
  441. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +240 -39
  442. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +193 -22
  443. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +2 -8
  444. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +11 -34
  445. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +367 -0
  446. package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +189 -67
  447. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +1 -1
  448. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +215 -40
  449. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +12 -37
  450. package/src/modules/bmm/workflows/{3-solutioning/tech-spec → 4-implementation/epic-tech-context}/README.md +6 -6
  451. package/src/modules/bmm/workflows/{3-solutioning/tech-spec → 4-implementation/epic-tech-context}/checklist.md +1 -1
  452. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +160 -0
  453. package/src/modules/bmm/workflows/{3-solutioning/tech-spec → 4-implementation/epic-tech-context}/template.md +1 -1
  454. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +34 -0
  455. package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +77 -0
  456. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +236 -148
  457. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +8 -4
  458. package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +156 -0
  459. package/src/modules/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
  460. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +221 -0
  461. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  462. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +41 -0
  463. package/src/modules/bmm/workflows/4-implementation/story-context/README.md +1 -1
  464. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +146 -21
  465. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +8 -32
  466. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +111 -0
  467. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +27 -0
  468. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +117 -0
  469. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +27 -0
  470. package/src/modules/bmm/workflows/README.md +577 -0
  471. package/src/modules/bmm/workflows/document-project/README.md +444 -0
  472. package/src/modules/bmm/workflows/document-project/checklist.md +245 -0
  473. package/src/modules/bmm/workflows/document-project/documentation-requirements.csv +12 -0
  474. package/src/modules/bmm/workflows/document-project/instructions.md +222 -0
  475. package/src/modules/bmm/workflows/document-project/templates/README.md +38 -0
  476. package/src/modules/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
  477. package/src/modules/bmm/workflows/document-project/templates/index-template.md +169 -0
  478. package/src/modules/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
  479. package/src/modules/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  480. package/src/modules/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
  481. package/src/modules/bmm/workflows/document-project/workflow.yaml +36 -0
  482. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  483. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  484. package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  485. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  486. package/src/modules/bmm/workflows/testarch/README.md +26 -0
  487. package/src/modules/bmm/workflows/testarch/atdd/README.md +672 -0
  488. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
  489. package/src/modules/bmm/workflows/testarch/atdd/checklist.md +373 -0
  490. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +785 -0
  491. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +54 -0
  492. package/src/modules/bmm/workflows/testarch/automate/README.md +869 -0
  493. package/src/modules/bmm/workflows/testarch/automate/checklist.md +580 -0
  494. package/src/modules/bmm/workflows/testarch/automate/instructions.md +1303 -0
  495. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +63 -0
  496. package/src/modules/bmm/workflows/testarch/ci/README.md +493 -0
  497. package/src/modules/bmm/workflows/testarch/ci/checklist.md +246 -0
  498. package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +165 -0
  499. package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +128 -0
  500. package/src/modules/bmm/workflows/testarch/ci/instructions.md +517 -0
  501. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +55 -0
  502. package/src/modules/bmm/workflows/testarch/framework/README.md +340 -0
  503. package/src/modules/bmm/workflows/testarch/framework/checklist.md +321 -0
  504. package/src/modules/bmm/workflows/testarch/framework/instructions.md +455 -0
  505. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +55 -0
  506. package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +469 -0
  507. package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +405 -0
  508. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
  509. package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +443 -0
  510. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +58 -0
  511. package/src/modules/bmm/workflows/testarch/test-design/README.md +493 -0
  512. package/src/modules/bmm/workflows/testarch/test-design/checklist.md +234 -0
  513. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +621 -0
  514. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +285 -0
  515. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +54 -0
  516. package/src/modules/bmm/workflows/testarch/test-review/README.md +775 -0
  517. package/src/modules/bmm/workflows/testarch/test-review/checklist.md +470 -0
  518. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +608 -0
  519. package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +388 -0
  520. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +55 -0
  521. package/src/modules/bmm/workflows/testarch/trace/README.md +802 -0
  522. package/src/modules/bmm/workflows/testarch/trace/checklist.md +654 -0
  523. package/src/modules/bmm/workflows/testarch/trace/instructions.md +1045 -0
  524. package/src/modules/bmm/workflows/testarch/trace/trace-template.md +673 -0
  525. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +68 -0
  526. package/src/modules/bmm/workflows/workflow-status/README.md +241 -0
  527. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +297 -0
  528. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +28 -0
  529. package/src/modules/bmm/workflows/workflow-status/instructions.md +324 -0
  530. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +54 -0
  531. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-1.yaml +58 -0
  532. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +76 -0
  533. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-3.yaml +95 -0
  534. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +88 -0
  535. package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +75 -0
  536. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +45 -0
  537. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-1.yaml +49 -0
  538. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +78 -0
  539. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +73 -0
  540. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +75 -0
  541. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +59 -0
  542. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +30 -0
  543. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +30 -0
  544. package/src/modules/cis/_module-installer/installer.js +1 -1
  545. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +23 -0
  546. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +23 -0
  547. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +23 -0
  548. package/src/modules/cis/agents/innovation-strategist.agent.yaml +23 -0
  549. package/src/modules/cis/agents/storyteller.agent.yaml +23 -0
  550. package/src/modules/cis/workflows/design-thinking/design-methods.csv +1 -1
  551. package/src/modules/cis/workflows/design-thinking/instructions.md +1 -1
  552. package/src/modules/cis/workflows/design-thinking/workflow.yaml +14 -0
  553. package/src/modules/cis/workflows/innovation-strategy/innovation-frameworks.csv +2 -2
  554. package/src/modules/cis/workflows/innovation-strategy/instructions.md +1 -1
  555. package/src/modules/cis/workflows/innovation-strategy/template.md +4 -4
  556. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +14 -0
  557. package/src/modules/cis/workflows/problem-solving/instructions.md +1 -1
  558. package/src/modules/cis/workflows/problem-solving/solving-methods.csv +6 -6
  559. package/src/modules/cis/workflows/problem-solving/template.md +3 -3
  560. package/src/modules/cis/workflows/problem-solving/workflow.yaml +14 -0
  561. package/src/modules/cis/workflows/storytelling/instructions.md +35 -27
  562. package/src/modules/cis/workflows/storytelling/template.md +2 -2
  563. package/src/modules/cis/workflows/storytelling/workflow.yaml +14 -0
  564. package/src/utility/models/agent-activation-ide.xml +3 -3
  565. package/src/utility/models/agent-activation-web.xml +60 -0
  566. package/src/utility/models/agent-in-team-activation.xml +3 -0
  567. package/src/utility/models/fragments/activation-rules.xml +8 -0
  568. package/src/utility/models/fragments/activation-steps.xml +15 -0
  569. package/src/utility/models/fragments/handler-action.xml +4 -0
  570. package/src/utility/models/fragments/handler-data.xml +5 -0
  571. package/src/utility/models/fragments/handler-exec.xml +5 -0
  572. package/src/utility/models/fragments/handler-tmpl.xml +5 -0
  573. package/src/utility/models/fragments/handler-validate-workflow.xml +7 -0
  574. package/src/utility/models/fragments/handler-workflow.xml +9 -0
  575. package/src/utility/models/fragments/menu-handlers.xml +6 -0
  576. package/src/utility/models/fragments/web-bundle-activation-steps.xml +32 -0
  577. package/src/utility/templates/agent.customize.template.yaml +42 -0
  578. package/test/README.md +295 -0
  579. package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +26 -0
  580. package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +29 -0
  581. package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +21 -0
  582. package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +19 -0
  583. package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +24 -0
  584. package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +23 -0
  585. package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +24 -0
  586. package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +30 -0
  587. package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +24 -0
  588. package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +24 -0
  589. package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +24 -0
  590. package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +24 -0
  591. package/test/fixtures/agent-schema/invalid/metadata/core-agent-with-module.agent.yaml +26 -0
  592. package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
  593. package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
  594. package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +26 -0
  595. package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
  596. package/test/fixtures/agent-schema/invalid/metadata/module-agent-missing-module.agent.yaml +25 -0
  597. package/test/fixtures/agent-schema/invalid/metadata/wrong-module-value.agent.yaml +26 -0
  598. package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +23 -0
  599. package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +26 -0
  600. package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +26 -0
  601. package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +23 -0
  602. package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +23 -0
  603. package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +28 -0
  604. package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +30 -0
  605. package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +27 -0
  606. package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +27 -0
  607. package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
  608. package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +27 -0
  609. package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
  610. package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
  611. package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
  612. package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +23 -0
  613. package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +21 -0
  614. package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +26 -0
  615. package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +30 -0
  616. package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +21 -0
  617. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +39 -0
  618. package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +23 -0
  619. package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +33 -0
  620. package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +23 -0
  621. package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +23 -0
  622. package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +23 -0
  623. package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +23 -0
  624. package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +23 -0
  625. package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +21 -0
  626. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +27 -0
  627. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +29 -0
  628. package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +23 -0
  629. package/test/test-agent-schema.js +387 -0
  630. package/test/test-cli-integration.sh +159 -0
  631. package/test/unit-test-schema.js +133 -0
  632. package/tools/bmad-npx-wrapper.js +38 -0
  633. package/tools/cli/README.md +590 -0
  634. package/tools/cli/bmad-cli.js +0 -2
  635. package/tools/cli/bundlers/bundle-web.js +24 -2
  636. package/tools/cli/bundlers/test-bundler.js +1 -1
  637. package/tools/cli/bundlers/web-bundler.js +639 -40
  638. package/tools/cli/commands/build.js +458 -0
  639. package/tools/cli/commands/install.js +49 -8
  640. package/tools/cli/installers/lib/core/config-collector.js +222 -15
  641. package/tools/cli/installers/lib/core/dependency-resolver.js +5 -1
  642. package/tools/cli/installers/lib/core/detector.js +80 -14
  643. package/tools/cli/installers/lib/core/ide-config-manager.js +152 -0
  644. package/tools/cli/installers/lib/core/installer.js +1175 -150
  645. package/tools/cli/installers/lib/core/manifest-generator.js +454 -63
  646. package/tools/cli/installers/lib/core/manifest.js +95 -43
  647. package/tools/cli/installers/lib/ide/_base-ide.js +311 -20
  648. package/tools/cli/installers/lib/ide/auggie.js +92 -27
  649. package/tools/cli/installers/lib/ide/claude-code.js +132 -308
  650. package/tools/cli/installers/lib/ide/cline.js +149 -227
  651. package/tools/cli/installers/lib/ide/codex.js +141 -174
  652. package/tools/cli/installers/lib/ide/crush.js +109 -37
  653. package/tools/cli/installers/lib/ide/cursor.js +81 -13
  654. package/tools/cli/installers/lib/ide/gemini.js +24 -28
  655. package/tools/cli/installers/lib/ide/github-copilot.js +15 -14
  656. package/tools/cli/installers/lib/ide/manager.js +26 -35
  657. package/tools/cli/installers/lib/ide/opencode.js +213 -0
  658. package/tools/cli/installers/lib/ide/qwen.js +172 -70
  659. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +143 -0
  660. package/tools/cli/installers/lib/ide/shared/module-injections.js +133 -0
  661. package/tools/cli/installers/lib/ide/task-tool-command-generator.js +119 -0
  662. package/tools/cli/installers/lib/ide/trae.js +120 -24
  663. package/tools/cli/installers/lib/ide/windsurf.js +88 -36
  664. package/tools/cli/installers/lib/ide/workflow-command-generator.js +119 -46
  665. package/tools/cli/installers/lib/ide/workflow-command-template.md +7 -3
  666. package/tools/cli/installers/lib/modules/manager.js +123 -7
  667. package/tools/cli/lib/activation-builder.js +168 -0
  668. package/tools/cli/lib/agent-analyzer.js +81 -0
  669. package/tools/cli/lib/agent-party-generator.js +3 -3
  670. package/tools/cli/lib/ui.js +78 -3
  671. package/tools/cli/lib/xml-handler.js +46 -1
  672. package/tools/cli/lib/yaml-xml-builder.js +439 -0
  673. package/tools/cli/regenerate-manifests.js +1 -1
  674. package/tools/cli/test-yaml-builder.js +43 -0
  675. package/tools/format-workflow-md.js +263 -0
  676. package/tools/platform-codes.yaml +6 -0
  677. package/tools/schema/agent.js +231 -0
  678. package/tools/validate-agent-schema.js +110 -0
  679. package/v6-open-items.md +23 -0
  680. package/docs/codebase-flattener.md +0 -19
  681. package/readme.md +0 -216
  682. package/src/core/agents/bmad-master.md +0 -27
  683. package/src/core/agents/bmad-web-orchestrator.md +0 -71
  684. package/src/core/tasks/shard-doc.md +0 -57
  685. package/src/core/workflows/bmad-init/instructions.md +0 -79
  686. package/src/core/workflows/bmad-init/workflow.yaml +0 -24
  687. package/src/modules/bmb/_module-installer/install-menu-config.yaml +0 -16
  688. package/src/modules/bmb/agents/bmad-builder.md +0 -30
  689. package/src/modules/bmb/workflows/create-module/installer-templates/install-module-config.yaml +0 -132
  690. package/src/modules/bmm/_module-installer/install-menu-config.yaml +0 -49
  691. package/src/modules/bmm/agents/analyst.md +0 -26
  692. package/src/modules/bmm/agents/architect.md +0 -29
  693. package/src/modules/bmm/agents/dev.md +0 -61
  694. package/src/modules/bmm/agents/game-architect.md +0 -26
  695. package/src/modules/bmm/agents/game-designer.md +0 -27
  696. package/src/modules/bmm/agents/game-dev.md +0 -28
  697. package/src/modules/bmm/agents/pm.md +0 -26
  698. package/src/modules/bmm/agents/po.md +0 -25
  699. package/src/modules/bmm/agents/sm.md +0 -29
  700. package/src/modules/bmm/agents/tea.md +0 -32
  701. package/src/modules/bmm/agents/ux-expert.md +0 -24
  702. package/src/modules/bmm/teams/team-all.yaml +0 -7
  703. package/src/modules/bmm/teams/team-dev.yaml +0 -14
  704. package/src/modules/bmm/testarch/atdd.md +0 -40
  705. package/src/modules/bmm/testarch/automate.md +0 -38
  706. package/src/modules/bmm/testarch/ci.md +0 -39
  707. package/src/modules/bmm/testarch/framework.md +0 -41
  708. package/src/modules/bmm/testarch/nfr-assess.md +0 -38
  709. package/src/modules/bmm/testarch/risk-profile.md +0 -38
  710. package/src/modules/bmm/testarch/tea-commands.csv +0 -11
  711. package/src/modules/bmm/testarch/tea-gate.md +0 -38
  712. package/src/modules/bmm/testarch/tea-knowledge.md +0 -275
  713. package/src/modules/bmm/testarch/test-design.md +0 -39
  714. package/src/modules/bmm/testarch/test-levels-framework.md +0 -148
  715. package/src/modules/bmm/testarch/test-priorities-matrix.md +0 -174
  716. package/src/modules/bmm/testarch/trace-requirements.md +0 -38
  717. package/src/modules/bmm/workflows/2-plan/README.md +0 -203
  718. package/src/modules/bmm/workflows/2-plan/checklist.md +0 -369
  719. package/src/modules/bmm/workflows/2-plan/gdd/instructions-gdd.md +0 -480
  720. package/src/modules/bmm/workflows/2-plan/instructions-router.md +0 -222
  721. package/src/modules/bmm/workflows/2-plan/prd/analysis-template.md +0 -53
  722. package/src/modules/bmm/workflows/2-plan/prd/epics-template.md +0 -18
  723. package/src/modules/bmm/workflows/2-plan/prd/instructions-lg.md +0 -267
  724. package/src/modules/bmm/workflows/2-plan/prd/instructions-med.md +0 -251
  725. package/src/modules/bmm/workflows/2-plan/prd/prd-template.md +0 -73
  726. package/src/modules/bmm/workflows/2-plan/tech-spec/instructions-sm.md +0 -137
  727. package/src/modules/bmm/workflows/2-plan/ux/instructions-ux.md +0 -360
  728. package/src/modules/bmm/workflows/2-plan/ux/ux-spec-template.md +0 -162
  729. package/src/modules/bmm/workflows/2-plan/workflow.yaml +0 -60
  730. package/src/modules/bmm/workflows/3-solutioning/ADR-template.md +0 -74
  731. package/src/modules/bmm/workflows/3-solutioning/checklist.md +0 -170
  732. package/src/modules/bmm/workflows/3-solutioning/instructions.md +0 -661
  733. package/src/modules/bmm/workflows/3-solutioning/project-types/backend-questions.md +0 -490
  734. package/src/modules/bmm/workflows/3-solutioning/project-types/cli-questions.md +0 -337
  735. package/src/modules/bmm/workflows/3-solutioning/project-types/data-questions.md +0 -472
  736. package/src/modules/bmm/workflows/3-solutioning/project-types/desktop-questions.md +0 -299
  737. package/src/modules/bmm/workflows/3-solutioning/project-types/embedded-questions.md +0 -118
  738. package/src/modules/bmm/workflows/3-solutioning/project-types/extension-questions.md +0 -374
  739. package/src/modules/bmm/workflows/3-solutioning/project-types/game-questions.md +0 -133
  740. package/src/modules/bmm/workflows/3-solutioning/project-types/infra-questions.md +0 -484
  741. package/src/modules/bmm/workflows/3-solutioning/project-types/library-questions.md +0 -146
  742. package/src/modules/bmm/workflows/3-solutioning/project-types/mobile-questions.md +0 -110
  743. package/src/modules/bmm/workflows/3-solutioning/project-types/project-types.csv +0 -12
  744. package/src/modules/bmm/workflows/3-solutioning/project-types/web-questions.md +0 -136
  745. package/src/modules/bmm/workflows/3-solutioning/tech-spec/instructions.md +0 -73
  746. package/src/modules/bmm/workflows/3-solutioning/tech-spec/workflow.yaml +0 -51
  747. package/src/modules/bmm/workflows/3-solutioning/templates/backend-service-architecture.md +0 -66
  748. package/src/modules/bmm/workflows/3-solutioning/templates/cli-tool-architecture.md +0 -66
  749. package/src/modules/bmm/workflows/3-solutioning/templates/data-pipeline-architecture.md +0 -66
  750. package/src/modules/bmm/workflows/3-solutioning/templates/desktop-app-architecture.md +0 -66
  751. package/src/modules/bmm/workflows/3-solutioning/templates/embedded-firmware-architecture.md +0 -66
  752. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-architecture.md +0 -244
  753. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-godot-guide.md +0 -428
  754. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-unity-guide.md +0 -333
  755. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-web-guide.md +0 -528
  756. package/src/modules/bmm/workflows/3-solutioning/templates/infrastructure-architecture.md +0 -66
  757. package/src/modules/bmm/workflows/3-solutioning/templates/library-package-architecture.md +0 -66
  758. package/src/modules/bmm/workflows/3-solutioning/templates/mobile-app-architecture.md +0 -66
  759. package/src/modules/bmm/workflows/3-solutioning/templates/registry.csv +0 -172
  760. package/src/modules/bmm/workflows/3-solutioning/templates/web-api-architecture.md +0 -66
  761. package/src/modules/bmm/workflows/3-solutioning/templates/web-fullstack-architecture.md +0 -277
  762. package/src/modules/bmm/workflows/3-solutioning/workflow.yaml +0 -65
  763. package/src/modules/bmm/workflows/4-implementation/review-story/instructions.md +0 -176
  764. package/src/modules/bmm/workflows/4-implementation/review-story/workflow.yaml +0 -99
  765. package/src/modules/cis/agents/brainstorming-coach.md +0 -24
  766. package/src/modules/cis/agents/creative-problem-solver.md +0 -24
  767. package/src/modules/cis/agents/design-thinking-coach.md +0 -24
  768. package/src/modules/cis/agents/innovation-strategist.md +0 -24
  769. package/src/modules/cis/agents/storyteller.md +0 -24
  770. package/tools/test-agents/captain-kirk-commander.md +0 -110
  771. package/tools/test-agents/data-operations-android.md +0 -123
  772. package/tools/test-agents/geordi-chief-engineer.md +0 -135
  773. package/tools/test-agents/isabella-martinez-ethicist.md +0 -109
  774. package/tools/test-agents/marcus-thompson-security.md +0 -109
  775. package/tools/test-agents/maya-patel-pragmatist.md +0 -82
  776. package/tools/test-agents/picard-diplomat-captain.md +0 -134
  777. package/tools/test-agents/spock-science-officer.md +0 -124
  778. package/tools/test-agents/william-smithers-technocrat.md +0 -71
  779. package/tools/test-agents/zara-chen-designer.md +0 -94
  780. /package/{src/modules/cis → bmad/core}/workflows/brainstorming/brain-methods.csv +0 -0
  781. /package/src/modules/bmm/_module-installer/assets/{technical-decisions-template.md → technical-decisions.md} +0 -0
  782. /package/src/modules/bmm/sub-modules/claude-code/sub-agents/{requirements-analyst.md → bmad-planning/requirements-analyst.md} +0 -0
  783. /package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/metroidvania.md +0 -0
  784. /package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/puzzle.md +0 -0
  785. /package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types.csv +0 -0
  786. /package/src/modules/bmm/workflows/4-implementation/{review-story → code-review}/backlog_template.md +0 -0
  787. /package/src/modules/bmm/workflows/4-implementation/{review-story → code-review}/checklist.md +0 -0
  788. /package/src/modules/cis/_module-installer/{install-menu-config.yaml → install-config.yaml} +0 -0
@@ -0,0 +1,178 @@
1
+ #!/bin/bash
2
+ #
3
+ # File: .claude/hooks/piper-installer.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied, including but not limited to the warranties of
26
+ # merchantability, fitness for a particular purpose and noninfringement.
27
+ # In no event shall the authors or copyright holders be liable for any claim,
28
+ # damages or other liability, whether in an action of contract, tort or
29
+ # otherwise, arising from, out of or in connection with the software or the
30
+ # use or other dealings in the software.
31
+ #
32
+ # ---
33
+ #
34
+ # @fileoverview Piper TTS Installer - Installs Piper TTS via pipx and downloads initial voice models
35
+ # @context Automated installation script for free offline Piper TTS on WSL/Linux systems
36
+ # @architecture Helper script for AgentVibes installer, invoked manually or from provider switcher
37
+ # @dependencies pipx (Python package installer), apt-get/brew/dnf/pacman (for pipx installation)
38
+ # @entrypoints Called by src/installer.js or manually by users during setup
39
+ # @patterns Platform detection (WSL/Linux only), package manager abstraction, guided voice download
40
+ # @related piper-download-voices.sh, provider-manager.sh, src/installer.js
41
+ #
42
+
43
+ set -e # Exit on error
44
+
45
+ echo "🎤 Piper TTS Installer"
46
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
47
+ echo ""
48
+
49
+ # Check if running on WSL or Linux
50
+ if ! grep -qi microsoft /proc/version 2>/dev/null && [[ "$(uname -s)" != "Linux" ]]; then
51
+ echo "❌ Piper TTS is only supported on WSL and Linux"
52
+ echo " Your platform: $(uname -s)"
53
+ echo ""
54
+ echo " For macOS/Windows, use ElevenLabs instead:"
55
+ echo " /agent-vibes:provider switch elevenlabs"
56
+ exit 1
57
+ fi
58
+
59
+ # Check if Piper is already installed
60
+ if command -v piper &> /dev/null; then
61
+ # Piper doesn't have a --version flag, just check if it exists
62
+ echo "✅ Piper TTS is already installed!"
63
+ echo " Location: $(which piper)"
64
+ echo ""
65
+ echo " Download voices with: .claude/hooks/piper-download-voices.sh"
66
+ exit 0
67
+ fi
68
+
69
+ echo "📦 Installing Piper TTS..."
70
+ echo ""
71
+
72
+ # Check if pipx is installed
73
+ if ! command -v pipx &> /dev/null; then
74
+ echo "⚠️ pipx not found. Installing pipx first..."
75
+ echo ""
76
+
77
+ # Try to install pipx
78
+ if command -v apt-get &> /dev/null; then
79
+ # Debian/Ubuntu
80
+ sudo apt-get update
81
+ sudo apt-get install -y pipx
82
+ elif command -v brew &> /dev/null; then
83
+ # macOS (though Piper doesn't run on macOS)
84
+ brew install pipx
85
+ elif command -v dnf &> /dev/null; then
86
+ # Fedora
87
+ sudo dnf install -y pipx
88
+ elif command -v pacman &> /dev/null; then
89
+ # Arch Linux
90
+ sudo pacman -S python-pipx
91
+ else
92
+ echo "❌ Unable to install pipx automatically."
93
+ echo ""
94
+ echo " Please install pipx manually:"
95
+ echo " https://pipx.pypa.io/stable/installation/"
96
+ exit 1
97
+ fi
98
+
99
+ # Ensure pipx is in PATH
100
+ pipx ensurepath
101
+ echo ""
102
+ fi
103
+
104
+ # Install Piper TTS
105
+ echo "📥 Installing Piper TTS via pipx..."
106
+ pipx install piper-tts
107
+
108
+ if ! command -v piper &> /dev/null; then
109
+ echo ""
110
+ echo "❌ Installation completed but piper command not found in PATH"
111
+ echo ""
112
+ echo " Try running: pipx ensurepath"
113
+ echo " Then restart your terminal"
114
+ exit 1
115
+ fi
116
+
117
+ echo ""
118
+ echo "✅ Piper TTS installed successfully!"
119
+ echo ""
120
+
121
+ PIPER_VERSION=$(piper --version 2>&1 || echo "unknown")
122
+ echo " Version: $PIPER_VERSION"
123
+ echo ""
124
+
125
+ # Determine voices directory
126
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
127
+ CLAUDE_DIR="$(dirname "$SCRIPT_DIR")"
128
+
129
+ # Check for configured voices directory
130
+ VOICES_DIR=""
131
+ if [[ -f "$CLAUDE_DIR/piper-voices-dir.txt" ]]; then
132
+ VOICES_DIR=$(cat "$CLAUDE_DIR/piper-voices-dir.txt")
133
+ elif [[ -f "$HOME/.claude/piper-voices-dir.txt" ]]; then
134
+ VOICES_DIR=$(cat "$HOME/.claude/piper-voices-dir.txt")
135
+ else
136
+ VOICES_DIR="$HOME/.claude/piper-voices"
137
+ fi
138
+
139
+ echo "📁 Voice storage location: $VOICES_DIR"
140
+ echo ""
141
+
142
+ # Ask if user wants to download voices now
143
+ read -p "Would you like to download voice models now? [Y/n] " -n 1 -r
144
+ echo ""
145
+
146
+ if [[ $REPLY =~ ^[Yy]$ ]] || [[ -z $REPLY ]]; then
147
+ echo ""
148
+ echo "📥 Downloading recommended voices..."
149
+ echo ""
150
+
151
+ # Use the piper-download-voices.sh script if available
152
+ if [[ -f "$SCRIPT_DIR/piper-download-voices.sh" ]]; then
153
+ "$SCRIPT_DIR/piper-download-voices.sh"
154
+ else
155
+ # Manual download of a basic voice
156
+ mkdir -p "$VOICES_DIR"
157
+
158
+ echo "Downloading en_US-lessac-medium (recommended)..."
159
+ curl -L "https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/lessac/medium/en_US-lessac-medium.onnx" \
160
+ -o "$VOICES_DIR/en_US-lessac-medium.onnx"
161
+ curl -L "https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/lessac/medium/en_US-lessac-medium.onnx.json" \
162
+ -o "$VOICES_DIR/en_US-lessac-medium.onnx.json"
163
+
164
+ echo "✅ Voice downloaded!"
165
+ fi
166
+ fi
167
+
168
+ echo ""
169
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
170
+ echo "🎉 Piper TTS Setup Complete!"
171
+ echo ""
172
+ echo "Next steps:"
173
+ echo " 1. Download more voices: .claude/hooks/piper-download-voices.sh"
174
+ echo " 2. List available voices: /agent-vibes:list"
175
+ echo " 3. Test it out: /agent-vibes:preview"
176
+ echo ""
177
+ echo "Enjoy your free, offline TTS! 🎤"
178
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@@ -0,0 +1,165 @@
1
+ #!/bin/bash
2
+ #
3
+ # File: .claude/hooks/piper-multispeaker-registry.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied, including but not limited to the warranties of
26
+ # merchantability, fitness for a particular purpose and noninfringement.
27
+ # In no event shall the authors or copyright holders be liable for any claim,
28
+ # damages or other liability, whether in an action of contract, tort or
29
+ # otherwise, arising from, out of or in connection with the software or the
30
+ # use or other dealings in the software.
31
+ #
32
+ # ---
33
+ #
34
+ # @fileoverview Multi-Speaker Voice Registry - Maps speaker names to ONNX models and speaker IDs
35
+ # @context Enables individual speaker selection from multi-speaker Piper models (e.g., 16Speakers)
36
+ # @architecture Static registry mapping speaker names to model files and numeric speaker IDs
37
+ # @dependencies piper-voice-manager.sh (voice storage), play-tts-piper.sh (TTS with speaker ID)
38
+ # @entrypoints Sourced by voice-manager.sh for multi-speaker voice switching
39
+ # @patterns Registry pattern, speaker ID mapping, model-to-speaker association
40
+ # @related voice-manager.sh, play-tts-piper.sh, 16Speakers.onnx.json (speaker_id_map)
41
+ #
42
+
43
+ # Registry of multi-speaker models and their speaker names
44
+ # Format: "SpeakerName:model_file:speaker_id:description"
45
+ #
46
+ # 16Speakers Model (12 US + 4 UK voices):
47
+ # Source: LibriVox Public Domain recordings
48
+ # Model: 16Speakers.onnx (77MB)
49
+ #
50
+ MULTISPEAKER_VOICES=(
51
+ # US English Speakers (0-11)
52
+ "Cori_Samuel:16Speakers:0:US English Female"
53
+ "Kara_Shallenberg:16Speakers:1:US English Female"
54
+ "Kristin_Hughes:16Speakers:2:US English Female"
55
+ "Maria_Kasper:16Speakers:3:US English Female"
56
+ "Mike_Pelton:16Speakers:4:US English Male"
57
+ "Mark_Nelson:16Speakers:5:US English Male"
58
+ "Michael_Scherer:16Speakers:6:US English Male"
59
+ "James_K_White:16Speakers:7:US English Male"
60
+ "Rose_Ibex:16Speakers:8:US English Female"
61
+ "progressingamerica:16Speakers:9:US English Male"
62
+ "Steve_C:16Speakers:10:US English Male"
63
+ "Owlivia:16Speakers:11:US English Female"
64
+
65
+ # UK English Speakers (12-15)
66
+ "Paul_Hampton:16Speakers:12:UK English Male"
67
+ "Jennifer_Dorr:16Speakers:13:UK English Female"
68
+ "Emily_Cripps:16Speakers:14:UK English Female"
69
+ "Martin_Clifton:16Speakers:15:UK English Male"
70
+ )
71
+
72
+ # @function get_multispeaker_info
73
+ # @intent Get model and speaker ID for a speaker name
74
+ # @why Enables users to select individual speakers from multi-speaker models by name
75
+ # @param $1 {string} speaker_name - Speaker name (e.g., "Cori_Samuel", "Rose_Ibex")
76
+ # @returns Echoes "model:speaker_id" (e.g., "16Speakers:0") to stdout
77
+ # @exitcode 0=speaker found, 1=speaker not found
78
+ # @sideeffects None (read-only lookup)
79
+ # @edgecases Case-insensitive matching
80
+ # @calledby voice-manager.sh switch command
81
+ # @calls None (pure bash array iteration)
82
+ get_multispeaker_info() {
83
+ local speaker_name="$1"
84
+ for entry in "${MULTISPEAKER_VOICES[@]}"; do
85
+ name="${entry%%:*}"
86
+ rest="${entry#*:}"
87
+ model="${rest%%:*}"
88
+ rest="${rest#*:}"
89
+ speaker_id="${rest%%:*}"
90
+
91
+ if [[ "${name,,}" == "${speaker_name,,}" ]]; then
92
+ echo "$model:$speaker_id"
93
+ return 0
94
+ fi
95
+ done
96
+ return 1
97
+ }
98
+
99
+ # @function list_multispeaker_voices
100
+ # @intent Display all available multi-speaker voices with descriptions
101
+ # @why Help users discover individual speakers within multi-speaker models
102
+ # @param None
103
+ # @returns None
104
+ # @exitcode Always 0
105
+ # @sideeffects Writes formatted list to stdout
106
+ # @edgecases None
107
+ # @calledby voice-manager.sh list command, /agent-vibes:list
108
+ # @calls None (pure bash array iteration)
109
+ list_multispeaker_voices() {
110
+ echo "🎭 Multi-Speaker Voices (16Speakers Model):"
111
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
112
+
113
+ local current_model=""
114
+ for entry in "${MULTISPEAKER_VOICES[@]}"; do
115
+ name="${entry%%:*}"
116
+ rest="${entry#*:}"
117
+ model="${rest%%:*}"
118
+ rest="${rest#*:}"
119
+ speaker_id="${rest%%:*}"
120
+ description="${rest#*:}"
121
+
122
+ # Print section header when model changes
123
+ if [[ "$model" != "$current_model" ]]; then
124
+ if [[ -n "$current_model" ]]; then
125
+ echo ""
126
+ fi
127
+ echo " Model: $model.onnx"
128
+ current_model="$model"
129
+ fi
130
+
131
+ echo " • $name (ID: $speaker_id) - $description"
132
+ done
133
+
134
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
135
+ echo ""
136
+ echo "Usage: /agent-vibes:switch Cori_Samuel"
137
+ echo " /agent-vibes:switch Rose_Ibex"
138
+ }
139
+
140
+ # @function get_multispeaker_description
141
+ # @intent Get description for a speaker name
142
+ # @why Provide user-friendly info about speaker characteristics
143
+ # @param $1 {string} speaker_name - Speaker name
144
+ # @returns Echoes description (e.g., "US English Female") to stdout
145
+ # @exitcode 0=speaker found, 1=speaker not found
146
+ # @sideeffects None (read-only lookup)
147
+ # @edgecases Case-insensitive matching
148
+ # @calledby voice-manager.sh switch command (for confirmation message)
149
+ # @calls None (pure bash array iteration)
150
+ get_multispeaker_description() {
151
+ local speaker_name="$1"
152
+ for entry in "${MULTISPEAKER_VOICES[@]}"; do
153
+ name="${entry%%:*}"
154
+ rest="${entry#*:}"
155
+ rest="${rest#*:}"
156
+ rest="${rest#*:}"
157
+ description="${rest}"
158
+
159
+ if [[ "${name,,}" == "${speaker_name,,}" ]]; then
160
+ echo "$description"
161
+ return 0
162
+ fi
163
+ done
164
+ return 1
165
+ }
@@ -0,0 +1,293 @@
1
+ #!/bin/bash
2
+ #
3
+ # File: .claude/hooks/piper-voice-manager.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied, including but not limited to the warranties of
26
+ # merchantability, fitness for a particular purpose and noninfringement.
27
+ # In no event shall the authors or copyright holders be liable for any claim,
28
+ # damages or other liability, whether in an action of contract, tort or
29
+ # otherwise, arising from, out of or in connection with the software or the
30
+ # use or other dealings in the software.
31
+ #
32
+ # ---
33
+ #
34
+ # @fileoverview Piper Voice Model Management - Downloads, caches, and validates Piper ONNX voice models
35
+ # @context Voice model lifecycle management for free offline Piper TTS provider
36
+ # @architecture HuggingFace repository integration with local caching, global storage for voice models
37
+ # @dependencies curl (downloads), piper binary (TTS synthesis)
38
+ # @entrypoints Sourced by play-tts-piper.sh, piper-download-voices.sh, and provider management commands
39
+ # @patterns HuggingFace model repository integration, file-based caching (~25MB per voice), global storage
40
+ # @related play-tts-piper.sh, piper-download-voices.sh, provider-manager.sh, GitHub Issue #25
41
+ #
42
+
43
+ # Base URL for Piper voice models on HuggingFace
44
+ PIPER_VOICES_BASE_URL="https://huggingface.co/rhasspy/piper-voices/resolve/main"
45
+
46
+ # AI NOTE: Voice storage precedence order:
47
+ # 1. PIPER_VOICES_DIR environment variable (highest priority)
48
+ # 2. Project-local .claude/piper-voices-dir.txt
49
+ # 3. Directory tree search for .claude/piper-voices-dir.txt
50
+ # 4. Global ~/.claude/piper-voices-dir.txt
51
+ # 5. Default ~/.claude/piper-voices (fallback)
52
+ # This allows per-project voice isolation while defaulting to shared global storage.
53
+
54
+ # @function get_voice_storage_dir
55
+ # @intent Determine directory for storing Piper voice models with precedence chain
56
+ # @why Voice models are large (~25MB each) and should be shared globally by default, but allow per-project overrides
57
+ # @param None
58
+ # @returns Echoes path to voice storage directory
59
+ # @exitcode Always 0
60
+ # @sideeffects Creates directory if it doesn't exist
61
+ # @edgecases Searches up directory tree for .claude/ folder, supports custom paths via env var or config files
62
+ # @calledby All voice management functions (verify_voice, get_voice_path, download_voice, list_downloaded_voices)
63
+ # @calls mkdir, cat, dirname
64
+ get_voice_storage_dir() {
65
+ local voice_dir
66
+
67
+ # Check for custom path in environment or config file
68
+ if [[ -n "$PIPER_VOICES_DIR" ]]; then
69
+ voice_dir="$PIPER_VOICES_DIR"
70
+ else
71
+ # Check for config file (project-local first, then global)
72
+ local config_file
73
+ if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -f "$CLAUDE_PROJECT_DIR/.claude/piper-voices-dir.txt" ]]; then
74
+ config_file="$CLAUDE_PROJECT_DIR/.claude/piper-voices-dir.txt"
75
+ else
76
+ # Search up directory tree for .claude/
77
+ local current_dir="$PWD"
78
+ while [[ "$current_dir" != "/" ]]; do
79
+ if [[ -f "$current_dir/.claude/piper-voices-dir.txt" ]]; then
80
+ config_file="$current_dir/.claude/piper-voices-dir.txt"
81
+ break
82
+ fi
83
+ current_dir=$(dirname "$current_dir")
84
+ done
85
+
86
+ # Check global config
87
+ if [[ -z "$config_file" ]] && [[ -f "$HOME/.claude/piper-voices-dir.txt" ]]; then
88
+ config_file="$HOME/.claude/piper-voices-dir.txt"
89
+ fi
90
+ fi
91
+
92
+ if [[ -n "$config_file" ]]; then
93
+ voice_dir=$(cat "$config_file" | tr -d '[:space:]')
94
+ fi
95
+ fi
96
+
97
+ # Fallback to default global storage
98
+ if [[ -z "$voice_dir" ]]; then
99
+ voice_dir="$HOME/.claude/piper-voices"
100
+ fi
101
+
102
+ mkdir -p "$voice_dir"
103
+ echo "$voice_dir"
104
+ }
105
+
106
+ # @function verify_voice
107
+ # @intent Check if voice model files exist locally (both .onnx and .onnx.json)
108
+ # @why Avoid redundant downloads, detect missing models, ensure model integrity
109
+ # @param $1 {string} voice_name - Voice model name (e.g., en_US-lessac-medium)
110
+ # @returns None
111
+ # @exitcode 0=voice exists and complete, 1=voice missing or incomplete
112
+ # @sideeffects None (read-only check)
113
+ # @edgecases Requires both ONNX model and JSON config to return success
114
+ # @calledby download_voice, piper-download-voices.sh
115
+ # @calls get_voice_storage_dir
116
+ verify_voice() {
117
+ local voice_name="$1"
118
+ local voice_dir
119
+ voice_dir=$(get_voice_storage_dir)
120
+
121
+ local onnx_file="$voice_dir/${voice_name}.onnx"
122
+ local json_file="$voice_dir/${voice_name}.onnx.json"
123
+
124
+ [[ -f "$onnx_file" ]] && [[ -f "$json_file" ]]
125
+ }
126
+
127
+ # @function get_voice_path
128
+ # @intent Get absolute path to voice model ONNX file for Piper binary
129
+ # @why Piper binary requires full absolute path to model file, not just voice name
130
+ # @param $1 {string} voice_name - Voice model name
131
+ # @returns Echoes absolute path to .onnx file to stdout
132
+ # @exitcode 0=success, 1=voice not found
133
+ # @sideeffects Writes error message to stderr if voice not found
134
+ # @edgecases Returns error if voice not downloaded yet
135
+ # @calledby play-tts-piper.sh for TTS synthesis
136
+ # @calls get_voice_storage_dir
137
+ get_voice_path() {
138
+ local voice_name="$1"
139
+ local voice_dir
140
+ voice_dir=$(get_voice_storage_dir)
141
+
142
+ local onnx_file="$voice_dir/${voice_name}.onnx"
143
+
144
+ if [[ ! -f "$onnx_file" ]]; then
145
+ echo "❌ Voice model not found: $voice_name" >&2
146
+ return 1
147
+ fi
148
+
149
+ echo "$onnx_file"
150
+ }
151
+
152
+ # AI NOTE: Voice name format is: lang_LOCALE-speaker-quality
153
+ # Example: en_US-lessac-medium
154
+ # - lang: en (language code)
155
+ # - LOCALE: US (locale/country code)
156
+ # - speaker: lessac (speaker/voice name)
157
+ # - quality: medium (model quality: low/medium/high)
158
+ # HuggingFace repository structure: {lang}/{lang}_{LOCALE}/{speaker}/{quality}/
159
+
160
+ # @function parse_voice_components
161
+ # @intent Extract language, locale, speaker, quality components from voice name
162
+ # @why HuggingFace uses structured directory paths based on these components
163
+ # @param $1 {string} voice_name - Voice name (e.g., en_US-lessac-medium)
164
+ # @returns None (sets global variables)
165
+ # @exitcode Always 0
166
+ # @sideeffects Sets global variables: LANG, LOCALE, SPEAKER, QUALITY
167
+ # @edgecases Expects specific format: lang_LOCALE-speaker-quality
168
+ # @calledby download_voice
169
+ # @calls None (pure string manipulation)
170
+ parse_voice_components() {
171
+ local voice_name="$1"
172
+
173
+ # Extract components from voice name
174
+ # Format: en_US-lessac-medium
175
+ # lang_LOCALE-speaker-quality
176
+
177
+ local lang_locale="${voice_name%%-*}" # en_US
178
+ local speaker_quality="${voice_name#*-}" # lessac-medium
179
+
180
+ LANG="${lang_locale%%_*}" # en
181
+ LOCALE="${lang_locale#*_}" # US
182
+ SPEAKER="${speaker_quality%%-*}" # lessac
183
+ QUALITY="${speaker_quality#*-}" # medium
184
+ }
185
+
186
+ # @function download_voice
187
+ # @intent Download Piper voice model from HuggingFace repository
188
+ # @why Provide free offline TTS voices without requiring API keys
189
+ # @param $1 {string} voice_name - Voice model name (e.g., en_US-lessac-medium)
190
+ # @param $2 {string} lang_code - Language code (optional, inferred from voice_name, unused)
191
+ # @returns None
192
+ # @exitcode 0=success (already downloaded or newly downloaded), 1=download failed
193
+ # @sideeffects Downloads .onnx and .onnx.json files (~25MB total), removes partial downloads on failure
194
+ # @edgecases Handles network failures, validates file integrity (non-zero size), skips if already downloaded
195
+ # @calledby piper-download-voices.sh, manual voice download commands
196
+ # @calls parse_voice_components, verify_voice, get_voice_storage_dir, curl, rm
197
+ download_voice() {
198
+ local voice_name="$1"
199
+ local lang_code="${2:-}"
200
+
201
+ local voice_dir
202
+ voice_dir=$(get_voice_storage_dir)
203
+
204
+ # Check if already downloaded
205
+ if verify_voice "$voice_name"; then
206
+ echo "✅ Voice already downloaded: $voice_name"
207
+ return 0
208
+ fi
209
+
210
+ # Parse voice components
211
+ parse_voice_components "$voice_name"
212
+
213
+ # Construct download URLs
214
+ # Path format: {language}/{language}_{locale}/{speaker}/{quality}/{speaker}-{quality}.onnx
215
+ local model_path="${LANG}/${LANG}_${LOCALE}/${SPEAKER}/${QUALITY}/${voice_name}"
216
+ local onnx_url="${PIPER_VOICES_BASE_URL}/${model_path}.onnx"
217
+ local json_url="${PIPER_VOICES_BASE_URL}/${model_path}.onnx.json"
218
+
219
+ echo "📥 Downloading Piper voice: $voice_name"
220
+ echo " Source: HuggingFace (rhasspy/piper-voices)"
221
+ echo " Size: ~25MB"
222
+ echo ""
223
+
224
+ # Download ONNX model
225
+ echo " Downloading model file..."
226
+ if ! curl -L --progress-bar -o "$voice_dir/${voice_name}.onnx" "$onnx_url"; then
227
+ echo "❌ Failed to download voice model"
228
+ rm -f "$voice_dir/${voice_name}.onnx"
229
+ return 1
230
+ fi
231
+
232
+ # Download JSON config
233
+ echo " Downloading config file..."
234
+ if ! curl -L -s -o "$voice_dir/${voice_name}.onnx.json" "$json_url"; then
235
+ echo "❌ Failed to download voice config"
236
+ rm -f "$voice_dir/${voice_name}.onnx" "$voice_dir/${voice_name}.onnx.json"
237
+ return 1
238
+ fi
239
+
240
+ # Verify file integrity (basic check - file size > 0)
241
+ if [[ ! -s "$voice_dir/${voice_name}.onnx" ]]; then
242
+ echo "❌ Downloaded file is empty or corrupt"
243
+ rm -f "$voice_dir/${voice_name}.onnx" "$voice_dir/${voice_name}.onnx.json"
244
+ return 1
245
+ fi
246
+
247
+ echo "✅ Voice downloaded successfully: $voice_name"
248
+ echo " Location: $voice_dir/${voice_name}.onnx"
249
+ }
250
+
251
+ # @function list_downloaded_voices
252
+ # @intent Display all locally cached voice models with file sizes
253
+ # @why Help users see what voices they have available and storage usage
254
+ # @param None
255
+ # @returns None
256
+ # @exitcode Always 0
257
+ # @sideeffects Writes formatted list to stdout
258
+ # @edgecases Handles empty voice directory gracefully, uses nullglob to avoid literal *.onnx
259
+ # @calledby Voice management commands, /agent-vibes:list
260
+ # @calls get_voice_storage_dir, basename, du
261
+ list_downloaded_voices() {
262
+ local voice_dir
263
+ voice_dir=$(get_voice_storage_dir)
264
+
265
+ echo "📦 Downloaded Piper Voices:"
266
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
267
+
268
+ local count=0
269
+ shopt -s nullglob
270
+ for onnx_file in "$voice_dir"/*.onnx; do
271
+ if [[ -f "$onnx_file" ]]; then
272
+ local voice_name
273
+ voice_name=$(basename "$onnx_file" .onnx)
274
+ local file_size
275
+ file_size=$(du -h "$onnx_file" | cut -f1)
276
+ echo " • $voice_name ($file_size)"
277
+ ((count++))
278
+ fi
279
+ done
280
+ shopt -u nullglob
281
+
282
+ if [[ $count -eq 0 ]]; then
283
+ echo " (No voices downloaded yet)"
284
+ fi
285
+
286
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
287
+ echo "Total: $count voices"
288
+ }
289
+
290
+ # AI NOTE: This file manages the lifecycle of Piper voice models
291
+ # Voice models are ONNX files (~20-30MB each) downloaded from HuggingFace
292
+ # Files are cached locally to avoid repeated downloads
293
+ # Project-local storage preferred over global for isolation