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.
- package/.claude/commands/bmad/bmb/agents/bmad-builder.md +70 -0
- package/.claude/commands/bmad/bmb/workflows/README.md +67 -0
- package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/create-agent.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/create-module.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/create-workflow.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/edit-agent.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/edit-module.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/module-brief.md +15 -0
- package/.claude/commands/bmad/bmb/workflows/redoc.md +15 -0
- package/.claude/commands/bmad/bmd/agents/cli-chief.md +108 -0
- package/.claude/commands/bmad/bmd/agents/doc-keeper.md +115 -0
- package/.claude/commands/bmad/bmd/agents/release-chief.md +109 -0
- package/.claude/commands/bmad/core/agents/bmad-master.md +71 -0
- package/.claude/commands/bmad/core/tasks/index-docs.md +9 -0
- package/.claude/commands/bmad/core/tools/shard-doc.md +9 -0
- package/.claude/commands/bmad/core/workflows/README.md +27 -0
- package/.claude/commands/bmad/core/workflows/brainstorming.md +15 -0
- package/.claude/commands/bmad/core/workflows/party-mode.md +15 -0
- package/.claude/hooks/bmad-tts-injector.sh +415 -0
- package/.claude/hooks/bmad-voice-manager.sh +511 -0
- package/.claude/hooks/check-output-style.sh +112 -0
- package/.claude/hooks/download-extra-voices.sh +244 -0
- package/.claude/hooks/github-star-reminder.sh +154 -0
- package/.claude/hooks/language-manager.sh +392 -0
- package/.claude/hooks/learn-manager.sh +475 -0
- package/.claude/hooks/personality-manager.sh +438 -0
- package/.claude/hooks/piper-download-voices.sh +165 -0
- package/.claude/hooks/piper-installer.sh +178 -0
- package/.claude/hooks/piper-multispeaker-registry.sh +165 -0
- package/.claude/hooks/piper-voice-manager.sh +293 -0
- package/.claude/hooks/play-tts-elevenlabs.sh +404 -0
- package/.claude/hooks/play-tts-piper.sh +338 -0
- package/.claude/hooks/play-tts.sh +100 -0
- package/.claude/hooks/provider-commands.sh +540 -0
- package/.claude/hooks/provider-manager.sh +298 -0
- package/.claude/hooks/replay-target-audio.sh +95 -0
- package/.claude/hooks/sentiment-manager.sh +201 -0
- package/.claude/hooks/speed-manager.sh +291 -0
- package/.claude/hooks/voice-manager.sh +594 -0
- package/.claude/hooks/voices-config.sh +70 -0
- package/.claude/settings.local.json +41 -0
- package/.github/ISSUE_TEMPLATE/config.yaml +4 -0
- package/.github/ISSUE_TEMPLATE/idea_submission.md +2 -2
- package/.github/workflows/{format-check.yaml → lint.yaml} +19 -1
- package/.prettierignore +2 -0
- package/CHANGELOG.md +8 -2
- package/CONTRIBUTING.md +1 -0
- package/README.md +263 -0
- package/bmad/_cfg/agent-manifest.csv +7 -0
- package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +32 -0
- package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +42 -0
- package/bmad/_cfg/agents/core-bmad-master.customize.yaml +42 -0
- package/bmad/_cfg/files-manifest.csv +83 -0
- package/bmad/_cfg/manifest.yaml +12 -0
- package/bmad/_cfg/task-manifest.csv +5 -0
- package/bmad/_cfg/tool-manifest.csv +2 -0
- package/bmad/_cfg/workflow-manifest.csv +15 -0
- package/bmad/bmb/README.md +132 -0
- package/bmad/bmb/agents/bmad-builder.md +70 -0
- package/bmad/bmb/config.yaml +14 -0
- package/bmad/bmb/workflows/audit-workflow/checklist.md +143 -0
- package/bmad/bmb/workflows/audit-workflow/instructions.md +341 -0
- package/bmad/bmb/workflows/audit-workflow/template.md +118 -0
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml +23 -0
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +21 -0
- package/bmad/bmb/workflows/convert-legacy/README.md +262 -0
- package/bmad/bmb/workflows/convert-legacy/checklist.md +205 -0
- package/bmad/bmb/workflows/convert-legacy/instructions.md +377 -0
- package/bmad/bmb/workflows/convert-legacy/workflow.yaml +32 -0
- package/bmad/bmb/workflows/create-agent/README.md +320 -0
- package/bmad/bmb/workflows/create-agent/agent-architecture.md +419 -0
- package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +412 -0
- package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +759 -0
- package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +759 -0
- package/bmad/bmb/workflows/create-agent/agent-types.md +292 -0
- package/bmad/bmb/workflows/create-agent/brainstorm-context.md +174 -0
- package/bmad/bmb/workflows/create-agent/checklist.md +62 -0
- package/bmad/bmb/workflows/create-agent/communication-styles.md +202 -0
- package/bmad/bmb/workflows/create-agent/instructions.md +430 -0
- package/bmad/bmb/workflows/create-agent/workflow.yaml +37 -0
- package/bmad/bmb/workflows/create-module/README.md +220 -0
- package/bmad/bmb/workflows/create-module/README.md.bak +218 -0
- package/bmad/bmb/workflows/create-module/brainstorm-context.md +137 -0
- package/bmad/bmb/workflows/create-module/checklist.md +244 -0
- package/bmad/bmb/workflows/create-module/checklist.md.bak +245 -0
- package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +92 -0
- package/bmad/bmb/workflows/create-module/installer-templates/installer.js +231 -0
- package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +231 -0
- package/bmad/bmb/workflows/create-module/instructions.md +581 -0
- package/bmad/bmb/workflows/create-module/instructions.md.bak +521 -0
- package/bmad/bmb/workflows/create-module/module-structure.md +366 -0
- package/bmad/bmb/workflows/create-module/module-structure.md.bak +310 -0
- package/bmad/bmb/workflows/create-module/workflow.yaml +42 -0
- package/bmad/bmb/workflows/create-module/workflow.yaml.bak +40 -0
- package/bmad/bmb/workflows/create-workflow/README.md +277 -0
- package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +197 -0
- package/bmad/bmb/workflows/create-workflow/checklist.md +94 -0
- package/bmad/bmb/workflows/create-workflow/instructions.md +716 -0
- package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +1150 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +24 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +13 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +9 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +39 -0
- package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +39 -0
- package/bmad/bmb/workflows/create-workflow/workflow.yaml +40 -0
- package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +38 -0
- package/bmad/bmb/workflows/edit-agent/README.md +112 -0
- package/bmad/bmb/workflows/edit-agent/checklist.md +112 -0
- package/bmad/bmb/workflows/edit-agent/instructions.md +290 -0
- package/bmad/bmb/workflows/edit-agent/workflow.yaml +33 -0
- package/bmad/bmb/workflows/edit-module/README.md +187 -0
- package/bmad/bmb/workflows/edit-module/checklist.md +165 -0
- package/bmad/bmb/workflows/edit-module/instructions.md +339 -0
- package/bmad/bmb/workflows/edit-module/workflow.yaml +34 -0
- package/bmad/bmb/workflows/edit-workflow/README.md +119 -0
- package/bmad/bmb/workflows/edit-workflow/checklist.md +70 -0
- package/bmad/bmb/workflows/edit-workflow/instructions.md +342 -0
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml +27 -0
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +25 -0
- package/bmad/bmb/workflows/module-brief/README.md +264 -0
- package/bmad/bmb/workflows/module-brief/checklist.md +116 -0
- package/bmad/bmb/workflows/module-brief/instructions.md +267 -0
- package/bmad/bmb/workflows/module-brief/template.md +275 -0
- package/bmad/bmb/workflows/module-brief/workflow.yaml +29 -0
- package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +27 -0
- package/bmad/bmb/workflows/redoc/README.md +87 -0
- package/bmad/bmb/workflows/redoc/checklist.md +99 -0
- package/bmad/bmb/workflows/redoc/instructions.md +265 -0
- package/bmad/bmb/workflows/redoc/workflow.yaml +32 -0
- package/bmad/bmb/workflows/redoc/workflow.yaml.bak +31 -0
- package/bmad/bmd/README.md +193 -0
- package/bmad/bmd/README.md.bak +193 -0
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +102 -0
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +102 -0
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +68 -0
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +68 -0
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +123 -0
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +123 -0
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md +53 -0
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +53 -0
- package/bmad/bmd/agents/cli-chief.md +108 -0
- package/bmad/bmd/agents/cli-chief.md.bak +108 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +177 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +177 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +81 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +81 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +88 -0
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +88 -0
- package/bmad/bmd/agents/doc-keeper.md +115 -0
- package/bmad/bmd/agents/doc-keeper.md.bak +115 -0
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md +164 -0
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +164 -0
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +82 -0
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +82 -0
- package/bmad/bmd/agents/release-chief-sidecar/memories.md +73 -0
- package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +73 -0
- package/bmad/bmd/agents/release-chief.md +109 -0
- package/bmad/bmd/agents/release-chief.md.bak +109 -0
- package/bmad/bmd/config.yaml +10 -0
- package/bmad/core/agents/bmad-master.md +71 -0
- package/bmad/core/agents/bmad-web-orchestrator.agent.xml +122 -0
- package/bmad/core/config.yaml +9 -0
- package/bmad/core/tasks/adv-elicit-methods.csv +39 -0
- package/{src/core/tasks/adv-elicit.md → bmad/core/tasks/adv-elicit.xml} +6 -11
- package/{src/core/tasks/index-docs.md → bmad/core/tasks/index-docs.xml} +6 -10
- package/{src/core/tasks/validate-workflow.md → bmad/core/tasks/validate-workflow.xml} +4 -7
- package/bmad/core/tasks/workflow.xml +174 -0
- package/bmad/core/tools/shard-doc.xml +100 -0
- package/{src/modules/cis → bmad/core}/workflows/brainstorming/README.md +2 -2
- package/{src/modules/cis → bmad/core}/workflows/brainstorming/instructions.md +26 -22
- package/{src/modules/cis → bmad/core}/workflows/brainstorming/template.md +2 -2
- package/{src/modules/cis → bmad/core}/workflows/brainstorming/workflow.yaml +16 -3
- package/bmad/core/workflows/party-mode/instructions.md +188 -0
- package/bmad/core/workflows/party-mode/workflow.yaml +23 -0
- package/bmad/docs/claude-code-instructions.md +25 -0
- package/bmad/docs/codex-instructions.md +21 -0
- package/bmd/README.md +193 -0
- package/bmd/agents/cli-chief-sidecar/instructions.md +102 -0
- package/bmd/agents/cli-chief-sidecar/knowledge/README.md +68 -0
- package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +123 -0
- package/bmd/agents/cli-chief-sidecar/memories.md +53 -0
- package/bmd/agents/cli-chief.agent.yaml +126 -0
- package/bmd/agents/doc-keeper-sidecar/instructions.md +177 -0
- package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +81 -0
- package/bmd/agents/doc-keeper-sidecar/memories.md +88 -0
- package/bmd/agents/doc-keeper.agent.yaml +137 -0
- package/bmd/agents/release-chief-sidecar/instructions.md +164 -0
- package/bmd/agents/release-chief-sidecar/knowledge/README.md +82 -0
- package/bmd/agents/release-chief-sidecar/memories.md +73 -0
- package/bmd/agents/release-chief.agent.yaml +127 -0
- package/bmd/bmad-custom-module-installer-plan.md +1176 -0
- package/bmd/config.yaml +12 -0
- package/docs/bmad-brownfield-guide.md +1260 -0
- package/docs/conversion-report-shard-doc-2025-10-26.md +188 -0
- package/docs/ide-info/auggie.md +2 -2
- package/docs/ide-info/claude-code.md +4 -4
- package/docs/ide-info/codex.md +9 -20
- package/docs/ide-info/opencode.md +24 -0
- package/docs/installers-bundlers/ide-injections.md +0 -10
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +22 -50
- package/docs/v4-to-v6-upgrade.md +225 -0
- package/eslint.config.mjs +4 -2
- package/package.json +11 -6
- package/src/core/_module-installer/{install-menu-config.yaml → install-config.yaml} +8 -4
- package/src/core/_module-installer/installer.js +1 -1
- package/src/core/agents/bmad-master.agent.yaml +39 -0
- package/src/core/agents/bmad-web-orchestrator.agent.xml +122 -0
- package/src/core/tasks/adv-elicit.xml +104 -0
- package/src/core/tasks/index-docs.xml +65 -0
- package/src/core/tasks/validate-workflow.xml +89 -0
- package/src/core/tasks/{workflow.md → workflow.xml} +42 -17
- package/src/core/tools/shard-doc.xml +100 -0
- package/src/core/workflows/brainstorming/README.md +271 -0
- package/src/core/workflows/brainstorming/brain-methods.csv +36 -0
- package/src/core/workflows/brainstorming/instructions.md +314 -0
- package/src/core/workflows/brainstorming/template.md +102 -0
- package/src/core/workflows/brainstorming/workflow.yaml +43 -0
- package/src/core/workflows/party-mode/instructions.md +30 -23
- package/src/core/workflows/party-mode/workflow.yaml +7 -8
- package/src/modules/bmb/README.md +132 -0
- package/src/modules/bmb/_module-installer/install-config.yaml +26 -0
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +58 -0
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +143 -0
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +341 -0
- package/src/modules/bmb/workflows/audit-workflow/template.md +118 -0
- package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +25 -0
- package/src/modules/bmb/workflows/convert-legacy/README.md +32 -32
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +21 -20
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +130 -81
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +7 -8
- package/src/modules/bmb/workflows/create-agent/README.md +96 -44
- package/src/modules/bmb/workflows/create-agent/agent-architecture.md +58 -51
- package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +153 -151
- package/src/modules/bmb/workflows/create-agent/agent-types.md +137 -22
- package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +4 -4
- package/src/modules/bmb/workflows/create-agent/checklist.md +30 -102
- package/src/modules/bmb/workflows/create-agent/communication-styles.md +22 -60
- package/src/modules/bmb/workflows/create-agent/instructions.md +309 -219
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +24 -14
- package/src/modules/bmb/workflows/create-module/README.md +23 -21
- package/src/modules/bmb/workflows/create-module/brainstorm-context.md +1 -1
- package/src/modules/bmb/workflows/create-module/checklist.md +20 -21
- package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +92 -0
- package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +1 -1
- package/src/modules/bmb/workflows/create-module/instructions.md +309 -237
- package/src/modules/bmb/workflows/create-module/module-structure.md +104 -48
- package/src/modules/bmb/workflows/create-module/workflow.yaml +14 -17
- package/src/modules/bmb/workflows/create-workflow/README.md +68 -7
- package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +4 -4
- package/src/modules/bmb/workflows/create-workflow/checklist.md +22 -0
- package/src/modules/bmb/workflows/create-workflow/instructions.md +496 -47
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +753 -59
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +4 -3
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +30 -0
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +11 -11
- package/src/modules/bmb/workflows/edit-agent/README.md +112 -0
- package/src/modules/bmb/workflows/edit-agent/checklist.md +112 -0
- package/src/modules/bmb/workflows/edit-agent/instructions.md +290 -0
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +35 -0
- package/src/modules/bmb/workflows/edit-module/README.md +187 -0
- package/src/modules/bmb/workflows/edit-module/checklist.md +165 -0
- package/src/modules/bmb/workflows/edit-module/instructions.md +339 -0
- package/src/modules/bmb/workflows/edit-module/workflow.yaml +36 -0
- package/src/modules/bmb/workflows/edit-workflow/README.md +58 -2
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +289 -117
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +5 -10
- package/src/modules/bmb/workflows/module-brief/README.md +16 -16
- package/src/modules/bmb/workflows/module-brief/checklist.md +4 -4
- package/src/modules/bmb/workflows/module-brief/instructions.md +9 -7
- package/src/modules/bmb/workflows/module-brief/template.md +9 -9
- package/src/modules/bmb/workflows/module-brief/workflow.yaml +5 -4
- package/src/modules/bmb/workflows/redoc/checklist.md +2 -2
- package/src/modules/bmb/workflows/redoc/instructions.md +20 -10
- package/src/modules/bmb/workflows/redoc/workflow.yaml +5 -4
- package/src/modules/bmm/README.md +141 -0
- package/src/modules/bmm/_module-installer/install-config.yaml +74 -0
- package/src/modules/bmm/_module-installer/installer.js +1 -1
- package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +1 -1
- package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +1 -1
- package/src/modules/bmm/agents/analyst.agent.yaml +43 -0
- package/src/modules/bmm/agents/architect.agent.yaml +41 -0
- package/src/modules/bmm/agents/dev.agent.yaml +43 -0
- package/src/modules/bmm/agents/game-architect.agent.yaml +35 -0
- package/src/modules/bmm/agents/game-designer.agent.yaml +47 -0
- package/src/modules/bmm/agents/game-dev.agent.yaml +39 -0
- package/src/modules/bmm/agents/pm.agent.yaml +50 -0
- package/src/modules/bmm/agents/sm.agent.yaml +67 -0
- package/src/modules/bmm/agents/tea.agent.yaml +59 -0
- package/src/modules/bmm/agents/ux-designer.agent.yaml +33 -0
- package/src/modules/bmm/sub-modules/claude-code/injections.yaml +1 -1
- package/src/modules/bmm/sub-modules/claude-code/readme.md +1 -1
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{api-documenter.md → bmad-analysis/api-documenter.md} +17 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{codebase-analyzer.md → bmad-analysis/codebase-analyzer.md} +19 -1
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{data-analyst.md → bmad-analysis/data-analyst.md} +17 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{pattern-detector.md → bmad-analysis/pattern-detector.md} +17 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{dependency-mapper.md → bmad-planning/dependency-mapper.md} +16 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{epic-optimizer.md → bmad-planning/epic-optimizer.md} +15 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{technical-decisions-curator.md → bmad-planning/technical-decisions-curator.md} +24 -2
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{trend-spotter.md → bmad-planning/trend-spotter.md} +16 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{user-journey-mapper.md → bmad-planning/user-journey-mapper.md} +22 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{user-researcher.md → bmad-planning/user-researcher.md} +16 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{market-researcher.md → bmad-research/market-researcher.md} +17 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{tech-debt-auditor.md → bmad-research/tech-debt-auditor.md} +17 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{document-reviewer.md → bmad-review/document-reviewer.md} +17 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{technical-evaluator.md → bmad-review/technical-evaluator.md} +17 -0
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/{test-coverage-analyzer.md → bmad-review/test-coverage-analyzer.md} +17 -0
- package/src/modules/bmm/tasks/{daily-standup.md → daily-standup.xml} +21 -27
- package/src/modules/bmm/tasks/{retrospective.md → retrospective.xml} +22 -28
- package/src/modules/bmm/teams/team-fullstack.yaml +11 -0
- package/src/modules/bmm/teams/team-gamedev.yaml +5 -0
- package/src/modules/bmm/testarch/README.md +311 -0
- package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +675 -0
- package/src/modules/bmm/testarch/knowledge/component-tdd.md +486 -0
- package/src/modules/bmm/testarch/knowledge/contract-testing.md +957 -0
- package/src/modules/bmm/testarch/knowledge/data-factories.md +500 -0
- package/src/modules/bmm/testarch/knowledge/email-auth.md +721 -0
- package/src/modules/bmm/testarch/knowledge/error-handling.md +725 -0
- package/src/modules/bmm/testarch/knowledge/feature-flags.md +750 -0
- package/src/modules/bmm/testarch/knowledge/fixture-architecture.md +401 -0
- package/src/modules/bmm/testarch/knowledge/network-first.md +486 -0
- package/src/modules/bmm/testarch/knowledge/nfr-criteria.md +670 -0
- package/src/modules/bmm/testarch/knowledge/playwright-config.md +730 -0
- package/src/modules/bmm/testarch/knowledge/probability-impact.md +601 -0
- package/src/modules/bmm/testarch/knowledge/risk-governance.md +615 -0
- package/src/modules/bmm/testarch/knowledge/selective-testing.md +732 -0
- package/src/modules/bmm/testarch/knowledge/selector-resilience.md +527 -0
- package/src/modules/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
- package/src/modules/bmm/testarch/knowledge/test-levels-framework.md +473 -0
- package/src/modules/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/src/modules/bmm/testarch/knowledge/test-quality.md +664 -0
- package/src/modules/bmm/testarch/knowledge/timing-debugging.md +372 -0
- package/src/modules/bmm/testarch/knowledge/visual-debugging.md +524 -0
- package/src/modules/bmm/testarch/tea-index.csv +22 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +38 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/game-context.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +74 -12
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +22 -3
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +29 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +61 -8
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +4 -4
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +21 -3
- package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +5 -5
- package/src/modules/bmm/workflows/1-analysis/game-brief/checklist.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +151 -311
- package/src/modules/bmm/workflows/1-analysis/game-brief/template.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +16 -6
- package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +4 -4
- package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +147 -179
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +4 -4
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +16 -6
- package/src/modules/bmm/workflows/1-analysis/research/README.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +80 -17
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +71 -11
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +72 -38
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +73 -14
- package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +21 -121
- package/src/modules/bmm/workflows/2-plan-workflows/README.md +258 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +310 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1283 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +145 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +42 -0
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/README.md +16 -16
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/checklist.md +148 -0
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/action-platformer.md +1 -1
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/adventure.md +1 -1
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/card-game.md +2 -2
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/fighting.md +1 -1
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/horror.md +2 -2
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/idle-incremental.md +1 -1
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/moba.md +4 -4
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/party-game.md +1 -1
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/racing.md +3 -3
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/rhythm.md +1 -1
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/roguelike.md +2 -2
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/rpg.md +3 -3
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/sandbox.md +4 -4
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/shooter.md +3 -3
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/simulation.md +3 -3
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/sports.md +3 -3
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/strategy.md +3 -3
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/survival.md +2 -2
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/text-based.md +3 -3
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/tower-defense.md +5 -5
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/turn-based-tactics.md +4 -4
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/visual-novel.md +1 -1
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/gdd-template.md +6 -12
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md +475 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +67 -0
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/checklist.md +139 -0
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/narrative/instructions-narrative.md +52 -12
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/narrative/narrative-template.md +8 -8
- package/src/modules/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +38 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +117 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +63 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +449 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +62 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +46 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +107 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +11 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +167 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +278 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +269 -0
- package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/tech-spec/tech-spec-template.md +0 -4
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +56 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +52 -0
- package/src/modules/bmm/workflows/3-solutioning/README.md +1 -565
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +347 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +103 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +244 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +222 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +703 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +13 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/readme.md +318 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +54 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +177 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +175 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +273 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +146 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +189 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +40 -0
- package/src/modules/bmm/workflows/4-implementation/README.md +221 -0
- package/src/modules/bmm/workflows/4-implementation/{review-story → code-review}/README.md +4 -7
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +391 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +56 -0
- package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +73 -0
- package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +5 -5
- package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +64 -53
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +10 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/README.md +117 -30
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +240 -39
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +193 -22
- package/src/modules/bmm/workflows/4-implementation/create-story/template.md +2 -8
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +11 -34
- package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +367 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +189 -67
- package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +215 -40
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +12 -37
- package/src/modules/bmm/workflows/{3-solutioning/tech-spec → 4-implementation/epic-tech-context}/README.md +6 -6
- package/src/modules/bmm/workflows/{3-solutioning/tech-spec → 4-implementation/epic-tech-context}/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +160 -0
- package/src/modules/bmm/workflows/{3-solutioning/tech-spec → 4-implementation/epic-tech-context}/template.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +34 -0
- package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +77 -0
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +236 -148
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +8 -4
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +156 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +221 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +41 -0
- package/src/modules/bmm/workflows/4-implementation/story-context/README.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +146 -21
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +8 -32
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +111 -0
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +117 -0
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/README.md +577 -0
- package/src/modules/bmm/workflows/document-project/README.md +444 -0
- package/src/modules/bmm/workflows/document-project/checklist.md +245 -0
- package/src/modules/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/src/modules/bmm/workflows/document-project/instructions.md +222 -0
- package/src/modules/bmm/workflows/document-project/templates/README.md +38 -0
- package/src/modules/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/src/modules/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/src/modules/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/src/modules/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/modules/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/src/modules/bmm/workflows/document-project/workflow.yaml +36 -0
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/modules/bmm/workflows/testarch/README.md +26 -0
- package/src/modules/bmm/workflows/testarch/atdd/README.md +672 -0
- package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
- package/src/modules/bmm/workflows/testarch/atdd/checklist.md +373 -0
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +785 -0
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +54 -0
- package/src/modules/bmm/workflows/testarch/automate/README.md +869 -0
- package/src/modules/bmm/workflows/testarch/automate/checklist.md +580 -0
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +1303 -0
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +63 -0
- package/src/modules/bmm/workflows/testarch/ci/README.md +493 -0
- package/src/modules/bmm/workflows/testarch/ci/checklist.md +246 -0
- package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +165 -0
- package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +128 -0
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +517 -0
- package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +55 -0
- package/src/modules/bmm/workflows/testarch/framework/README.md +340 -0
- package/src/modules/bmm/workflows/testarch/framework/checklist.md +321 -0
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +455 -0
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +55 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +469 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +405 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +443 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +58 -0
- package/src/modules/bmm/workflows/testarch/test-design/README.md +493 -0
- package/src/modules/bmm/workflows/testarch/test-design/checklist.md +234 -0
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +621 -0
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +285 -0
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +54 -0
- package/src/modules/bmm/workflows/testarch/test-review/README.md +775 -0
- package/src/modules/bmm/workflows/testarch/test-review/checklist.md +470 -0
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +608 -0
- package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +388 -0
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +55 -0
- package/src/modules/bmm/workflows/testarch/trace/README.md +802 -0
- package/src/modules/bmm/workflows/testarch/trace/checklist.md +654 -0
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +1045 -0
- package/src/modules/bmm/workflows/testarch/trace/trace-template.md +673 -0
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +68 -0
- package/src/modules/bmm/workflows/workflow-status/README.md +241 -0
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +297 -0
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +28 -0
- package/src/modules/bmm/workflows/workflow-status/instructions.md +324 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +54 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-1.yaml +58 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +76 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-3.yaml +95 -0
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +88 -0
- package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +75 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +45 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-1.yaml +49 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +78 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +73 -0
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +75 -0
- package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +59 -0
- package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +30 -0
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +30 -0
- package/src/modules/cis/_module-installer/installer.js +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +23 -0
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +23 -0
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +23 -0
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +23 -0
- package/src/modules/cis/agents/storyteller.agent.yaml +23 -0
- package/src/modules/cis/workflows/design-thinking/design-methods.csv +1 -1
- package/src/modules/cis/workflows/design-thinking/instructions.md +1 -1
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +14 -0
- package/src/modules/cis/workflows/innovation-strategy/innovation-frameworks.csv +2 -2
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +1 -1
- package/src/modules/cis/workflows/innovation-strategy/template.md +4 -4
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +14 -0
- package/src/modules/cis/workflows/problem-solving/instructions.md +1 -1
- package/src/modules/cis/workflows/problem-solving/solving-methods.csv +6 -6
- package/src/modules/cis/workflows/problem-solving/template.md +3 -3
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +14 -0
- package/src/modules/cis/workflows/storytelling/instructions.md +35 -27
- package/src/modules/cis/workflows/storytelling/template.md +2 -2
- package/src/modules/cis/workflows/storytelling/workflow.yaml +14 -0
- package/src/utility/models/agent-activation-ide.xml +3 -3
- package/src/utility/models/agent-activation-web.xml +60 -0
- package/src/utility/models/agent-in-team-activation.xml +3 -0
- package/src/utility/models/fragments/activation-rules.xml +8 -0
- package/src/utility/models/fragments/activation-steps.xml +15 -0
- package/src/utility/models/fragments/handler-action.xml +4 -0
- package/src/utility/models/fragments/handler-data.xml +5 -0
- package/src/utility/models/fragments/handler-exec.xml +5 -0
- package/src/utility/models/fragments/handler-tmpl.xml +5 -0
- package/src/utility/models/fragments/handler-validate-workflow.xml +7 -0
- package/src/utility/models/fragments/handler-workflow.xml +9 -0
- package/src/utility/models/fragments/menu-handlers.xml +6 -0
- package/src/utility/models/fragments/web-bundle-activation-steps.xml +32 -0
- package/src/utility/templates/agent.customize.template.yaml +42 -0
- package/test/README.md +295 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +29 -0
- package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +21 -0
- package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/core-agent-with-module.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/metadata/module-agent-missing-module.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/metadata/wrong-module-value.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
- package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
- package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +21 -0
- package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +26 -0
- package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +30 -0
- package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +21 -0
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +39 -0
- package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +33 -0
- package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +21 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +27 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +29 -0
- package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +23 -0
- package/test/test-agent-schema.js +387 -0
- package/test/test-cli-integration.sh +159 -0
- package/test/unit-test-schema.js +133 -0
- package/tools/bmad-npx-wrapper.js +38 -0
- package/tools/cli/README.md +590 -0
- package/tools/cli/bmad-cli.js +0 -2
- package/tools/cli/bundlers/bundle-web.js +24 -2
- package/tools/cli/bundlers/test-bundler.js +1 -1
- package/tools/cli/bundlers/web-bundler.js +639 -40
- package/tools/cli/commands/build.js +458 -0
- package/tools/cli/commands/install.js +49 -8
- package/tools/cli/installers/lib/core/config-collector.js +222 -15
- package/tools/cli/installers/lib/core/dependency-resolver.js +5 -1
- package/tools/cli/installers/lib/core/detector.js +80 -14
- package/tools/cli/installers/lib/core/ide-config-manager.js +152 -0
- package/tools/cli/installers/lib/core/installer.js +1175 -150
- package/tools/cli/installers/lib/core/manifest-generator.js +454 -63
- package/tools/cli/installers/lib/core/manifest.js +95 -43
- package/tools/cli/installers/lib/ide/_base-ide.js +311 -20
- package/tools/cli/installers/lib/ide/auggie.js +92 -27
- package/tools/cli/installers/lib/ide/claude-code.js +132 -308
- package/tools/cli/installers/lib/ide/cline.js +149 -227
- package/tools/cli/installers/lib/ide/codex.js +141 -174
- package/tools/cli/installers/lib/ide/crush.js +109 -37
- package/tools/cli/installers/lib/ide/cursor.js +81 -13
- package/tools/cli/installers/lib/ide/gemini.js +24 -28
- package/tools/cli/installers/lib/ide/github-copilot.js +15 -14
- package/tools/cli/installers/lib/ide/manager.js +26 -35
- package/tools/cli/installers/lib/ide/opencode.js +213 -0
- package/tools/cli/installers/lib/ide/qwen.js +172 -70
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +143 -0
- package/tools/cli/installers/lib/ide/shared/module-injections.js +133 -0
- package/tools/cli/installers/lib/ide/task-tool-command-generator.js +119 -0
- package/tools/cli/installers/lib/ide/trae.js +120 -24
- package/tools/cli/installers/lib/ide/windsurf.js +88 -36
- package/tools/cli/installers/lib/ide/workflow-command-generator.js +119 -46
- package/tools/cli/installers/lib/ide/workflow-command-template.md +7 -3
- package/tools/cli/installers/lib/modules/manager.js +123 -7
- package/tools/cli/lib/activation-builder.js +168 -0
- package/tools/cli/lib/agent-analyzer.js +81 -0
- package/tools/cli/lib/agent-party-generator.js +3 -3
- package/tools/cli/lib/ui.js +78 -3
- package/tools/cli/lib/xml-handler.js +46 -1
- package/tools/cli/lib/yaml-xml-builder.js +439 -0
- package/tools/cli/regenerate-manifests.js +1 -1
- package/tools/cli/test-yaml-builder.js +43 -0
- package/tools/format-workflow-md.js +263 -0
- package/tools/platform-codes.yaml +6 -0
- package/tools/schema/agent.js +231 -0
- package/tools/validate-agent-schema.js +110 -0
- package/v6-open-items.md +23 -0
- package/docs/codebase-flattener.md +0 -19
- package/readme.md +0 -216
- package/src/core/agents/bmad-master.md +0 -27
- package/src/core/agents/bmad-web-orchestrator.md +0 -71
- package/src/core/tasks/shard-doc.md +0 -57
- package/src/core/workflows/bmad-init/instructions.md +0 -79
- package/src/core/workflows/bmad-init/workflow.yaml +0 -24
- package/src/modules/bmb/_module-installer/install-menu-config.yaml +0 -16
- package/src/modules/bmb/agents/bmad-builder.md +0 -30
- package/src/modules/bmb/workflows/create-module/installer-templates/install-module-config.yaml +0 -132
- package/src/modules/bmm/_module-installer/install-menu-config.yaml +0 -49
- package/src/modules/bmm/agents/analyst.md +0 -26
- package/src/modules/bmm/agents/architect.md +0 -29
- package/src/modules/bmm/agents/dev.md +0 -61
- package/src/modules/bmm/agents/game-architect.md +0 -26
- package/src/modules/bmm/agents/game-designer.md +0 -27
- package/src/modules/bmm/agents/game-dev.md +0 -28
- package/src/modules/bmm/agents/pm.md +0 -26
- package/src/modules/bmm/agents/po.md +0 -25
- package/src/modules/bmm/agents/sm.md +0 -29
- package/src/modules/bmm/agents/tea.md +0 -32
- package/src/modules/bmm/agents/ux-expert.md +0 -24
- package/src/modules/bmm/teams/team-all.yaml +0 -7
- package/src/modules/bmm/teams/team-dev.yaml +0 -14
- package/src/modules/bmm/testarch/atdd.md +0 -40
- package/src/modules/bmm/testarch/automate.md +0 -38
- package/src/modules/bmm/testarch/ci.md +0 -39
- package/src/modules/bmm/testarch/framework.md +0 -41
- package/src/modules/bmm/testarch/nfr-assess.md +0 -38
- package/src/modules/bmm/testarch/risk-profile.md +0 -38
- package/src/modules/bmm/testarch/tea-commands.csv +0 -11
- package/src/modules/bmm/testarch/tea-gate.md +0 -38
- package/src/modules/bmm/testarch/tea-knowledge.md +0 -275
- package/src/modules/bmm/testarch/test-design.md +0 -39
- package/src/modules/bmm/testarch/test-levels-framework.md +0 -148
- package/src/modules/bmm/testarch/test-priorities-matrix.md +0 -174
- package/src/modules/bmm/testarch/trace-requirements.md +0 -38
- package/src/modules/bmm/workflows/2-plan/README.md +0 -203
- package/src/modules/bmm/workflows/2-plan/checklist.md +0 -369
- package/src/modules/bmm/workflows/2-plan/gdd/instructions-gdd.md +0 -480
- package/src/modules/bmm/workflows/2-plan/instructions-router.md +0 -222
- package/src/modules/bmm/workflows/2-plan/prd/analysis-template.md +0 -53
- package/src/modules/bmm/workflows/2-plan/prd/epics-template.md +0 -18
- package/src/modules/bmm/workflows/2-plan/prd/instructions-lg.md +0 -267
- package/src/modules/bmm/workflows/2-plan/prd/instructions-med.md +0 -251
- package/src/modules/bmm/workflows/2-plan/prd/prd-template.md +0 -73
- package/src/modules/bmm/workflows/2-plan/tech-spec/instructions-sm.md +0 -137
- package/src/modules/bmm/workflows/2-plan/ux/instructions-ux.md +0 -360
- package/src/modules/bmm/workflows/2-plan/ux/ux-spec-template.md +0 -162
- package/src/modules/bmm/workflows/2-plan/workflow.yaml +0 -60
- package/src/modules/bmm/workflows/3-solutioning/ADR-template.md +0 -74
- package/src/modules/bmm/workflows/3-solutioning/checklist.md +0 -170
- package/src/modules/bmm/workflows/3-solutioning/instructions.md +0 -661
- package/src/modules/bmm/workflows/3-solutioning/project-types/backend-questions.md +0 -490
- package/src/modules/bmm/workflows/3-solutioning/project-types/cli-questions.md +0 -337
- package/src/modules/bmm/workflows/3-solutioning/project-types/data-questions.md +0 -472
- package/src/modules/bmm/workflows/3-solutioning/project-types/desktop-questions.md +0 -299
- package/src/modules/bmm/workflows/3-solutioning/project-types/embedded-questions.md +0 -118
- package/src/modules/bmm/workflows/3-solutioning/project-types/extension-questions.md +0 -374
- package/src/modules/bmm/workflows/3-solutioning/project-types/game-questions.md +0 -133
- package/src/modules/bmm/workflows/3-solutioning/project-types/infra-questions.md +0 -484
- package/src/modules/bmm/workflows/3-solutioning/project-types/library-questions.md +0 -146
- package/src/modules/bmm/workflows/3-solutioning/project-types/mobile-questions.md +0 -110
- package/src/modules/bmm/workflows/3-solutioning/project-types/project-types.csv +0 -12
- package/src/modules/bmm/workflows/3-solutioning/project-types/web-questions.md +0 -136
- package/src/modules/bmm/workflows/3-solutioning/tech-spec/instructions.md +0 -73
- package/src/modules/bmm/workflows/3-solutioning/tech-spec/workflow.yaml +0 -51
- package/src/modules/bmm/workflows/3-solutioning/templates/backend-service-architecture.md +0 -66
- package/src/modules/bmm/workflows/3-solutioning/templates/cli-tool-architecture.md +0 -66
- package/src/modules/bmm/workflows/3-solutioning/templates/data-pipeline-architecture.md +0 -66
- package/src/modules/bmm/workflows/3-solutioning/templates/desktop-app-architecture.md +0 -66
- package/src/modules/bmm/workflows/3-solutioning/templates/embedded-firmware-architecture.md +0 -66
- package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-architecture.md +0 -244
- package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-godot-guide.md +0 -428
- package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-unity-guide.md +0 -333
- package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-web-guide.md +0 -528
- package/src/modules/bmm/workflows/3-solutioning/templates/infrastructure-architecture.md +0 -66
- package/src/modules/bmm/workflows/3-solutioning/templates/library-package-architecture.md +0 -66
- package/src/modules/bmm/workflows/3-solutioning/templates/mobile-app-architecture.md +0 -66
- package/src/modules/bmm/workflows/3-solutioning/templates/registry.csv +0 -172
- package/src/modules/bmm/workflows/3-solutioning/templates/web-api-architecture.md +0 -66
- package/src/modules/bmm/workflows/3-solutioning/templates/web-fullstack-architecture.md +0 -277
- package/src/modules/bmm/workflows/3-solutioning/workflow.yaml +0 -65
- package/src/modules/bmm/workflows/4-implementation/review-story/instructions.md +0 -176
- package/src/modules/bmm/workflows/4-implementation/review-story/workflow.yaml +0 -99
- package/src/modules/cis/agents/brainstorming-coach.md +0 -24
- package/src/modules/cis/agents/creative-problem-solver.md +0 -24
- package/src/modules/cis/agents/design-thinking-coach.md +0 -24
- package/src/modules/cis/agents/innovation-strategist.md +0 -24
- package/src/modules/cis/agents/storyteller.md +0 -24
- package/tools/test-agents/captain-kirk-commander.md +0 -110
- package/tools/test-agents/data-operations-android.md +0 -123
- package/tools/test-agents/geordi-chief-engineer.md +0 -135
- package/tools/test-agents/isabella-martinez-ethicist.md +0 -109
- package/tools/test-agents/marcus-thompson-security.md +0 -109
- package/tools/test-agents/maya-patel-pragmatist.md +0 -82
- package/tools/test-agents/picard-diplomat-captain.md +0 -134
- package/tools/test-agents/spock-science-officer.md +0 -124
- package/tools/test-agents/william-smithers-technocrat.md +0 -71
- package/tools/test-agents/zara-chen-designer.md +0 -94
- /package/{src/modules/cis → bmad/core}/workflows/brainstorming/brain-methods.csv +0 -0
- /package/src/modules/bmm/_module-installer/assets/{technical-decisions-template.md → technical-decisions.md} +0 -0
- /package/src/modules/bmm/sub-modules/claude-code/sub-agents/{requirements-analyst.md → bmad-planning/requirements-analyst.md} +0 -0
- /package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/metroidvania.md +0 -0
- /package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types/puzzle.md +0 -0
- /package/src/modules/bmm/workflows/{2-plan → 2-plan-workflows}/gdd/game-types.csv +0 -0
- /package/src/modules/bmm/workflows/4-implementation/{review-story → code-review}/backlog_template.md +0 -0
- /package/src/modules/bmm/workflows/4-implementation/{review-story → code-review}/checklist.md +0 -0
- /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
|