bmad-method 6.0.0-alpha.3 → 6.0.0-alpha.5
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/bmm/agents/analyst.md +67 -0
- package/.claude/commands/bmad/bmm/agents/architect.md +72 -0
- package/.claude/commands/bmad/bmm/agents/dev.md +69 -0
- package/.claude/commands/bmad/bmm/agents/paige.md +82 -0
- package/.claude/commands/bmad/bmm/agents/pm.md +76 -0
- package/.claude/commands/bmad/bmm/agents/sm.md +85 -0
- package/.claude/commands/bmad/bmm/agents/tea.md +72 -0
- package/.claude/commands/bmad/bmm/agents/tech-writer.md +82 -0
- package/.claude/commands/bmad/bmm/agents/ux-designer.md +71 -0
- package/.claude/commands/bmad/bmm/workflows/README.md +132 -0
- package/.claude/commands/bmad/bmm/workflows/architecture.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/brainstorm-project.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/code-review.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/correct-course.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/create-story.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/create-ux-design.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/dev-story.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/document-project.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/epic-tech-context.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/narrative.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/prd.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/product-brief.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/research.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/retrospective.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/solutioning-gate-check.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/sprint-planning.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/story-context.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/story-done.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/story-ready.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/tech-spec-sm.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/tech-spec.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/workflow-init.md +15 -0
- package/.claude/commands/bmad/bmm/workflows/workflow-status.md +15 -0
- package/.claude/commands/bmad/cis/agents/README.md +104 -0
- package/.claude/commands/bmad/cis/agents/brainstorming-coach.md +62 -0
- package/.claude/commands/bmad/cis/agents/creative-problem-solver.md +62 -0
- package/.claude/commands/bmad/cis/agents/design-thinking-coach.md +62 -0
- package/.claude/commands/bmad/cis/agents/innovation-strategist.md +62 -0
- package/.claude/commands/bmad/cis/agents/storyteller.md +59 -0
- package/.claude/commands/bmad/cis/workflows/README.md +37 -0
- package/.claude/commands/bmad/cis/workflows/design-thinking.md +15 -0
- package/.claude/commands/bmad/cis/workflows/innovation-strategy.md +15 -0
- package/.claude/commands/bmad/cis/workflows/problem-solving.md +15 -0
- package/.claude/commands/bmad/cis/workflows/storytelling.md +15 -0
- package/.claude/commands/bmad/core/workflows/README.md +10 -0
- package/.claude/settings.local.json +7 -42
- package/CHANGELOG.md +544 -0
- package/README.md +266 -101
- package/bmad/_cfg/agent-manifest.csv +13 -3
- package/bmad/_cfg/agents/bmm-dev.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmm-paige.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmm-pm.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmm-sm.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmm-tea.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmm-tech-writer.customize.yaml +42 -0
- package/bmad/_cfg/agents/bmm-ux-designer.customize.yaml +42 -0
- package/bmad/_cfg/agents/cis-brainstorming-coach.customize.yaml +42 -0
- package/bmad/_cfg/agents/cis-creative-problem-solver.customize.yaml +42 -0
- package/bmad/_cfg/agents/cis-design-thinking-coach.customize.yaml +42 -0
- package/bmad/_cfg/agents/cis-innovation-strategist.customize.yaml +42 -0
- package/bmad/_cfg/agents/cis-storyteller.customize.yaml +42 -0
- package/bmad/_cfg/files-manifest.csv +267 -22
- package/bmad/_cfg/ides/claude-code.yaml +6 -0
- package/bmad/_cfg/manifest.yaml +5 -5
- package/bmad/_cfg/task-manifest.csv +5 -0
- package/bmad/_cfg/tool-manifest.csv +1 -0
- package/bmad/_cfg/workflow-manifest.csv +37 -2
- package/bmad/bmb/README.md +135 -73
- package/bmad/bmb/agents/bmad-builder.md.bak +70 -0
- package/bmad/bmb/config.yaml +2 -2
- package/bmad/bmb/workflows/audit-workflow/instructions.md +1 -1
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +3 -1
- package/bmad/bmb/workflows/create-agent/README.md +126 -243
- package/bmad/bmb/workflows/create-agent/instructions.md +25 -12
- package/bmad/bmb/workflows/create-module/README.md +163 -154
- package/bmad/bmb/workflows/create-module/workflow.yaml.bak +2 -0
- package/bmad/bmb/workflows/create-workflow/instructions.md +16 -8
- package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +158 -0
- package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +2 -0
- package/bmad/bmb/workflows/edit-agent/workflow.yaml.bak +33 -0
- package/bmad/bmb/workflows/edit-module/workflow.yaml.bak +34 -0
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +2 -0
- package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +2 -0
- package/bmad/bmb/workflows/redoc/workflow.yaml.bak +1 -0
- package/bmad/bmm/README.md +128 -0
- package/bmad/bmm/README.md.bak +169 -0
- package/bmad/bmm/agents/analyst.md +67 -0
- package/bmad/bmm/agents/analyst.md.bak +67 -0
- package/bmad/bmm/agents/architect.md +72 -0
- package/bmad/bmm/agents/architect.md.bak +73 -0
- package/bmad/bmm/agents/dev.md +69 -0
- package/bmad/bmm/agents/dev.md.bak +69 -0
- package/bmad/bmm/agents/paige.md.bak +82 -0
- package/bmad/bmm/agents/pm.md +76 -0
- package/bmad/bmm/agents/pm.md.bak +76 -0
- package/bmad/bmm/agents/sm.md +85 -0
- package/bmad/bmm/agents/sm.md.bak +85 -0
- package/bmad/bmm/agents/tea.md +72 -0
- package/bmad/bmm/agents/tea.md.bak +72 -0
- package/bmad/bmm/agents/tech-writer.md +82 -0
- package/bmad/bmm/agents/ux-designer.md +71 -0
- package/bmad/bmm/agents/ux-designer.md.bak +71 -0
- package/bmad/bmm/config.yaml +17 -0
- package/bmad/bmm/docs/README.md +235 -0
- package/bmad/bmm/docs/agents-guide.md +1057 -0
- package/bmad/bmm/docs/brownfield-guide.md +759 -0
- package/bmad/bmm/docs/enterprise-agentic-development.md +680 -0
- package/bmad/bmm/docs/faq.md +589 -0
- package/bmad/bmm/docs/glossary.md +321 -0
- package/bmad/bmm/docs/party-mode.md +224 -0
- package/bmad/bmm/docs/quick-spec-flow.md +652 -0
- package/{docs/BMad-Method-V6-Quick-Start.md → bmad/bmm/docs/quick-start.md} +72 -47
- package/bmad/bmm/docs/scale-adaptive-system.md +599 -0
- package/bmad/bmm/docs/troubleshooting.md +680 -0
- package/{src/modules/bmm/workflows/3-solutioning/architecture/README.md → bmad/bmm/docs/workflow-architecture-reference.md} +130 -77
- package/{src/modules/bmm/workflows/document-project/README.md → bmad/bmm/docs/workflow-document-project-reference.md} +45 -2
- package/bmad/bmm/docs/workflows-analysis.md +670 -0
- package/bmad/bmm/docs/workflows-implementation.md +1758 -0
- package/bmad/bmm/docs/workflows-planning.md +1086 -0
- package/bmad/bmm/docs/workflows-solutioning.md +726 -0
- package/bmad/bmm/tasks/daily-standup.xml +85 -0
- package/bmad/bmm/teams/team-fullstack.yaml +11 -0
- package/bmad/bmm/teams/team-gamedev.yaml +14 -0
- package/bmad/bmm/testarch/knowledge/ci-burn-in.md +675 -0
- package/bmad/bmm/testarch/knowledge/component-tdd.md +486 -0
- package/bmad/bmm/testarch/knowledge/contract-testing.md +957 -0
- package/bmad/bmm/testarch/knowledge/data-factories.md +500 -0
- package/bmad/bmm/testarch/knowledge/email-auth.md +721 -0
- package/bmad/bmm/testarch/knowledge/error-handling.md +725 -0
- package/bmad/bmm/testarch/knowledge/feature-flags.md +750 -0
- package/bmad/bmm/testarch/knowledge/fixture-architecture.md +401 -0
- package/bmad/bmm/testarch/knowledge/network-first.md +486 -0
- package/bmad/bmm/testarch/knowledge/nfr-criteria.md +670 -0
- package/bmad/bmm/testarch/knowledge/playwright-config.md +730 -0
- package/bmad/bmm/testarch/knowledge/probability-impact.md +601 -0
- package/bmad/bmm/testarch/knowledge/risk-governance.md +615 -0
- package/bmad/bmm/testarch/knowledge/selective-testing.md +732 -0
- package/bmad/bmm/testarch/knowledge/selector-resilience.md +527 -0
- package/bmad/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
- package/bmad/bmm/testarch/knowledge/test-levels-framework.md +473 -0
- package/bmad/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/bmad/bmm/testarch/knowledge/test-quality.md +664 -0
- package/bmad/bmm/testarch/knowledge/timing-debugging.md +372 -0
- package/bmad/bmm/testarch/knowledge/visual-debugging.md +524 -0
- package/bmad/bmm/testarch/tea-index.csv +22 -0
- package/bmad/bmm/workflows/1-analysis/brainstorm-project/instructions.md +110 -0
- package/bmad/bmm/workflows/1-analysis/brainstorm-project/project-context.md +25 -0
- package/bmad/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +26 -0
- package/bmad/bmm/workflows/1-analysis/domain-research/instructions.md +423 -0
- package/bmad/bmm/workflows/1-analysis/domain-research/template.md +180 -0
- package/bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +36 -0
- package/bmad/bmm/workflows/1-analysis/product-brief/checklist.md +115 -0
- package/bmad/bmm/workflows/1-analysis/product-brief/instructions.md +524 -0
- package/bmad/bmm/workflows/1-analysis/product-brief/template.md +181 -0
- package/bmad/bmm/workflows/1-analysis/product-brief/workflow.yaml +45 -0
- package/bmad/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +144 -0
- package/bmad/bmm/workflows/1-analysis/research/checklist-technical.md +249 -0
- package/bmad/bmm/workflows/1-analysis/research/checklist.md +299 -0
- package/bmad/bmm/workflows/1-analysis/research/claude-code/injections.yaml +114 -0
- package/bmad/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +439 -0
- package/bmad/bmm/workflows/1-analysis/research/instructions-market.md +679 -0
- package/bmad/bmm/workflows/1-analysis/research/instructions-router.md +133 -0
- package/bmad/bmm/workflows/1-analysis/research/instructions-technical.md +538 -0
- package/bmad/bmm/workflows/1-analysis/research/template-deep-prompt.md +94 -0
- package/bmad/bmm/workflows/1-analysis/research/template-market.md +347 -0
- package/bmad/bmm/workflows/1-analysis/research/template-technical.md +245 -0
- package/bmad/bmm/workflows/1-analysis/research/workflow.yaml +44 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +310 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1319 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +145 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +64 -0
- package/bmad/bmm/workflows/2-plan-workflows/narrative/checklist.md +139 -0
- package/bmad/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md +608 -0
- package/bmad/bmm/workflows/2-plan-workflows/narrative/narrative-template.md +195 -0
- package/bmad/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +29 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +349 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +395 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +33 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +423 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +237 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +46 -0
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +214 -0
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +58 -0
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +200 -0
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +451 -0
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +1133 -0
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +181 -0
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +87 -0
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +60 -0
- package/bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml.bak +60 -0
- package/bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +347 -0
- package/bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md +103 -0
- package/bmad/bmm/workflows/3-solutioning/architecture/checklist.md +244 -0
- package/bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +222 -0
- package/bmad/bmm/workflows/3-solutioning/architecture/instructions.md +715 -0
- package/bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +13 -0
- package/bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml +67 -0
- package/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +175 -0
- package/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +322 -0
- package/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +146 -0
- package/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +189 -0
- package/bmad/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +64 -0
- package/bmad/bmm/workflows/4-implementation/code-review/backlog_template.md +12 -0
- package/bmad/bmm/workflows/4-implementation/code-review/checklist.md +22 -0
- package/bmad/bmm/workflows/4-implementation/code-review/instructions.md +420 -0
- package/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +74 -0
- package/bmad/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
- package/bmad/bmm/workflows/4-implementation/correct-course/instructions.md +201 -0
- package/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +43 -0
- package/bmad/bmm/workflows/4-implementation/create-story/checklist.md +240 -0
- package/bmad/bmm/workflows/4-implementation/create-story/instructions.md +283 -0
- package/bmad/bmm/workflows/4-implementation/create-story/template.md +51 -0
- package/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +74 -0
- package/bmad/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +367 -0
- package/bmad/bmm/workflows/4-implementation/dev-story/checklist.md +38 -0
- package/bmad/bmm/workflows/4-implementation/dev-story/instructions.md +262 -0
- package/bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +26 -0
- package/bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md +17 -0
- package/bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md +189 -0
- package/bmad/bmm/workflows/4-implementation/epic-tech-context/template.md +76 -0
- package/bmad/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +58 -0
- package/bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1460 -0
- package/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +71 -0
- package/bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +238 -0
- package/bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +47 -0
- package/bmad/bmm/workflows/4-implementation/story-context/checklist.md +16 -0
- package/bmad/bmm/workflows/4-implementation/story-context/context-template.xml +34 -0
- package/bmad/bmm/workflows/4-implementation/story-context/instructions.md +234 -0
- package/bmad/bmm/workflows/4-implementation/story-context/workflow.yaml +57 -0
- package/bmad/bmm/workflows/4-implementation/story-done/instructions.md +111 -0
- package/bmad/bmm/workflows/4-implementation/story-done/workflow.yaml +25 -0
- package/bmad/bmm/workflows/4-implementation/story-ready/instructions.md +117 -0
- package/bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml +25 -0
- package/bmad/bmm/workflows/document-project/checklist.md +245 -0
- package/bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/bmad/bmm/workflows/document-project/instructions.md +222 -0
- package/bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/bmad/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/bmad/bmm/workflows/document-project/workflow.yaml +34 -0
- package/bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/bmad/bmm/workflows/techdoc/documentation-standards.md +239 -0
- package/bmad/bmm/workflows/techdoc/documentation-standards.md.bak +238 -0
- package/bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
- package/bmad/bmm/workflows/testarch/atdd/checklist.md +373 -0
- package/bmad/bmm/workflows/testarch/atdd/instructions.md +785 -0
- package/bmad/bmm/workflows/testarch/atdd/workflow.yaml +52 -0
- package/bmad/bmm/workflows/testarch/automate/checklist.md +580 -0
- package/bmad/bmm/workflows/testarch/automate/instructions.md +1303 -0
- package/bmad/bmm/workflows/testarch/automate/workflow.yaml +61 -0
- package/bmad/bmm/workflows/testarch/ci/checklist.md +246 -0
- package/bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +165 -0
- package/bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +128 -0
- package/bmad/bmm/workflows/testarch/ci/instructions.md +517 -0
- package/bmad/bmm/workflows/testarch/ci/workflow.yaml +53 -0
- package/bmad/bmm/workflows/testarch/framework/checklist.md +321 -0
- package/bmad/bmm/workflows/testarch/framework/instructions.md +455 -0
- package/bmad/bmm/workflows/testarch/framework/workflow.yaml +53 -0
- package/bmad/bmm/workflows/testarch/nfr-assess/checklist.md +405 -0
- package/bmad/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
- package/bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +443 -0
- package/bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +56 -0
- package/bmad/bmm/workflows/testarch/test-design/checklist.md +234 -0
- package/bmad/bmm/workflows/testarch/test-design/instructions.md +621 -0
- package/bmad/bmm/workflows/testarch/test-design/test-design-template.md +285 -0
- package/bmad/bmm/workflows/testarch/test-design/workflow.yaml +52 -0
- package/bmad/bmm/workflows/testarch/test-review/checklist.md +470 -0
- package/bmad/bmm/workflows/testarch/test-review/instructions.md +608 -0
- package/bmad/bmm/workflows/testarch/test-review/test-review-template.md +388 -0
- package/bmad/bmm/workflows/testarch/test-review/workflow.yaml +53 -0
- package/bmad/bmm/workflows/testarch/trace/checklist.md +654 -0
- package/bmad/bmm/workflows/testarch/trace/instructions.md +1045 -0
- package/bmad/bmm/workflows/testarch/trace/trace-template.md +673 -0
- package/bmad/bmm/workflows/testarch/trace/workflow.yaml +66 -0
- package/bmad/bmm/workflows/workflow-status/init/instructions.md +771 -0
- package/bmad/bmm/workflows/workflow-status/init/workflow.yaml +27 -0
- package/bmad/bmm/workflows/workflow-status/init/workflow.yaml.bak +27 -0
- package/bmad/bmm/workflows/workflow-status/instructions.md +386 -0
- package/bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +120 -0
- package/bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +108 -0
- package/bmad/bmm/workflows/workflow-status/paths/game-design.yaml +75 -0
- package/{src/modules/bmm/workflows/workflow-status/paths/brownfield-level-3.yaml → bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml} +33 -31
- package/{src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml → bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml} +31 -21
- package/{src/modules/bmm/workflows/workflow-status/paths/brownfield-level-1.yaml → bmad/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml} +18 -18
- package/{src/modules/bmm/workflows/workflow-status/paths/greenfield-level-1.yaml → bmad/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml} +16 -18
- package/bmad/bmm/workflows/workflow-status/project-levels.yaml +59 -0
- package/bmad/bmm/workflows/workflow-status/sample-level-3-workflow.yaml +49 -0
- package/bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +31 -0
- package/bmad/bmm/workflows/workflow-status/workflow.yaml +28 -0
- package/bmad/cis/README.md +153 -0
- package/bmad/cis/agents/README.md +104 -0
- package/bmad/cis/agents/brainstorming-coach.md +62 -0
- package/bmad/cis/agents/brainstorming-coach.md.bak +62 -0
- package/bmad/cis/agents/creative-problem-solver.md +62 -0
- package/bmad/cis/agents/creative-problem-solver.md.bak +62 -0
- package/bmad/cis/agents/design-thinking-coach.md +62 -0
- package/bmad/cis/agents/design-thinking-coach.md.bak +62 -0
- package/bmad/cis/agents/innovation-strategist.md +62 -0
- package/bmad/cis/agents/innovation-strategist.md.bak +62 -0
- package/bmad/cis/agents/storyteller.md +59 -0
- package/bmad/cis/agents/storyteller.md.bak +59 -0
- package/bmad/{bmd → cis}/config.yaml +3 -3
- package/bmad/cis/teams/creative-squad.yaml +6 -0
- package/bmad/cis/workflows/README.md +139 -0
- package/bmad/cis/workflows/design-thinking/README.md +56 -0
- package/bmad/cis/workflows/design-thinking/design-methods.csv +31 -0
- package/bmad/cis/workflows/design-thinking/instructions.md +200 -0
- package/bmad/cis/workflows/design-thinking/template.md +111 -0
- package/bmad/cis/workflows/design-thinking/workflow.yaml +32 -0
- package/bmad/cis/workflows/innovation-strategy/README.md +56 -0
- package/bmad/cis/workflows/innovation-strategy/innovation-frameworks.csv +31 -0
- package/bmad/cis/workflows/innovation-strategy/instructions.md +274 -0
- package/bmad/cis/workflows/innovation-strategy/template.md +189 -0
- package/bmad/cis/workflows/innovation-strategy/workflow.yaml +32 -0
- package/bmad/cis/workflows/problem-solving/README.md +56 -0
- package/bmad/cis/workflows/problem-solving/instructions.md +250 -0
- package/bmad/cis/workflows/problem-solving/solving-methods.csv +31 -0
- package/bmad/cis/workflows/problem-solving/template.md +165 -0
- package/bmad/cis/workflows/problem-solving/workflow.yaml +32 -0
- package/bmad/cis/workflows/storytelling/README.md +58 -0
- package/bmad/cis/workflows/storytelling/instructions.md +291 -0
- package/bmad/cis/workflows/storytelling/story-types.csv +26 -0
- package/bmad/cis/workflows/storytelling/template.md +113 -0
- package/bmad/cis/workflows/storytelling/workflow.yaml +32 -0
- package/bmad/core/agents/bmad-master.md.bak +71 -0
- package/bmad/core/config.yaml +2 -2
- package/bmad/core/tasks/workflow.xml +1 -19
- package/bmad/core/tools/shard-doc.xml +8 -43
- package/docs/document-sharding-guide.md +447 -0
- package/docs/index.md +37 -41
- package/package.json +1 -1
- package/src/core/tasks/workflow.xml +1 -11
- package/src/core/tools/shard-doc.xml +8 -43
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +1 -1
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +158 -0
- package/src/modules/bmm/README.md +79 -95
- package/src/modules/bmm/agents/architect.agent.yaml +0 -4
- package/src/modules/bmm/agents/game-designer.agent.yaml +2 -2
- package/src/modules/bmm/agents/game-dev.agent.yaml +8 -12
- package/src/modules/bmm/agents/pm.agent.yaml +11 -1
- package/src/modules/bmm/agents/sm.agent.yaml +1 -1
- package/src/modules/bmm/agents/tech-writer.agent.yaml +69 -0
- package/src/modules/bmm/docs/README.md +235 -0
- package/src/modules/bmm/docs/agents-guide.md +1057 -0
- package/src/modules/bmm/docs/brownfield-guide.md +759 -0
- package/src/modules/bmm/docs/enterprise-agentic-development.md +680 -0
- package/src/modules/bmm/docs/faq.md +589 -0
- package/src/modules/bmm/docs/glossary.md +321 -0
- package/src/modules/bmm/docs/party-mode.md +224 -0
- package/src/modules/bmm/docs/quick-spec-flow.md +652 -0
- package/src/modules/bmm/docs/quick-start.md +366 -0
- package/src/modules/bmm/docs/scale-adaptive-system.md +599 -0
- package/src/modules/bmm/docs/troubleshooting.md +680 -0
- package/src/modules/bmm/docs/workflow-architecture-reference.md +371 -0
- package/src/modules/bmm/docs/workflow-document-project-reference.md +487 -0
- package/src/modules/bmm/docs/workflows-analysis.md +670 -0
- package/src/modules/bmm/docs/workflows-implementation.md +1758 -0
- package/src/modules/bmm/docs/workflows-planning.md +1086 -0
- package/src/modules/bmm/docs/workflows-solutioning.md +726 -0
- package/src/modules/bmm/tasks/daily-standup.xml +1 -1
- package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +423 -0
- package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +180 -0
- package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +36 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +405 -213
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +93 -77
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +14 -0
- package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +144 -0
- package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +249 -0
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +154 -57
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +45 -29
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +181 -104
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +24 -32
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +94 -46
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +37 -1
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +36 -1
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +13 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +22 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md +18 -0
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +14 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +296 -63
- package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +52 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +169 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +55 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +268 -291
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +198 -23
- package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +26 -8
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +138 -31
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +73 -4
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +50 -17
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +199 -26
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +971 -109
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +132 -6
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +54 -20
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +23 -2
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +40 -32
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +17 -4
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +1 -0
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +32 -6
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +29 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +20 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +29 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +29 -0
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +32 -6
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +1222 -241
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +28 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +17 -0
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +8 -0
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +31 -1
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/techdoc/documentation-standards.md +239 -0
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +623 -242
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +120 -0
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +108 -0
- package/src/modules/bmm/workflows/workflow-status/paths/{brownfield-level-4.yaml → method-brownfield.yaml} +35 -26
- package/src/modules/bmm/workflows/workflow-status/paths/{greenfield-level-3.yaml → method-greenfield.yaml} +32 -17
- package/src/modules/bmm/workflows/workflow-status/paths/{brownfield-level-0.yaml → quick-flow-brownfield.yaml} +23 -19
- package/src/modules/bmm/workflows/workflow-status/paths/{greenfield-level-0.yaml → quick-flow-greenfield.yaml} +18 -16
- package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +4 -4
- package/tools/cli/commands/install.js +1 -1
- package/.claude/commands/bmad/bmd/agents/cli-chief.md +0 -108
- package/.claude/commands/bmad/bmd/agents/doc-keeper.md +0 -115
- package/.claude/commands/bmad/bmd/agents/release-chief.md +0 -109
- package/.claude/hooks/bmad-tts-injector.sh +0 -415
- package/.claude/hooks/bmad-voice-manager.sh +0 -511
- package/.claude/hooks/check-output-style.sh +0 -112
- package/.claude/hooks/download-extra-voices.sh +0 -244
- package/.claude/hooks/github-star-reminder.sh +0 -154
- package/.claude/hooks/language-manager.sh +0 -392
- package/.claude/hooks/learn-manager.sh +0 -475
- package/.claude/hooks/personality-manager.sh +0 -438
- package/.claude/hooks/piper-download-voices.sh +0 -165
- package/.claude/hooks/piper-installer.sh +0 -178
- package/.claude/hooks/piper-multispeaker-registry.sh +0 -165
- package/.claude/hooks/piper-voice-manager.sh +0 -293
- package/.claude/hooks/play-tts-elevenlabs.sh +0 -404
- package/.claude/hooks/play-tts-piper.sh +0 -338
- package/.claude/hooks/play-tts.sh +0 -100
- package/.claude/hooks/provider-commands.sh +0 -540
- package/.claude/hooks/provider-manager.sh +0 -298
- package/.claude/hooks/replay-target-audio.sh +0 -95
- package/.claude/hooks/sentiment-manager.sh +0 -201
- package/.claude/hooks/speed-manager.sh +0 -291
- package/.claude/hooks/voice-manager.sh +0 -594
- package/.claude/hooks/voices-config.sh +0 -70
- package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +0 -32
- package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +0 -412
- package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +0 -759
- package/bmad/bmb/workflows/create-module/README.md.bak +0 -218
- package/bmad/bmb/workflows/create-module/checklist.md.bak +0 -245
- package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +0 -231
- package/bmad/bmb/workflows/create-module/instructions.md.bak +0 -521
- package/bmad/bmb/workflows/create-module/module-structure.md.bak +0 -310
- package/bmad/bmd/README.md +0 -193
- package/bmad/bmd/README.md.bak +0 -193
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +0 -102
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +0 -68
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +0 -123
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md +0 -53
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +0 -53
- package/bmad/bmd/agents/cli-chief.md +0 -108
- package/bmad/bmd/agents/cli-chief.md.bak +0 -108
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +0 -177
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +0 -81
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +0 -88
- package/bmad/bmd/agents/doc-keeper.md +0 -115
- package/bmad/bmd/agents/doc-keeper.md.bak +0 -115
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md +0 -164
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +0 -164
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +0 -82
- package/bmad/bmd/agents/release-chief-sidecar/memories.md +0 -73
- package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +0 -73
- package/bmad/bmd/agents/release-chief.md +0 -109
- package/bmad/bmd/agents/release-chief.md.bak +0 -109
- package/bmad/docs/codex-instructions.md +0 -21
- package/docs/bmad-brownfield-guide.md +0 -1260
- package/docs/conversion-report-shard-doc-2025-10-26.md +0 -188
- package/src/modules/bmm/tasks/retrospective.xml +0 -104
- package/src/modules/bmm/testarch/README.md +0 -311
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +0 -38
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +0 -113
- package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +0 -221
- package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +0 -180
- package/src/modules/bmm/workflows/1-analysis/research/README.md +0 -454
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +0 -259
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +0 -190
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +0 -337
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +0 -107
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +0 -329
- package/src/modules/bmm/workflows/2-plan-workflows/README.md +0 -258
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +0 -222
- package/src/modules/bmm/workflows/3-solutioning/README.md +0 -1
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +0 -177
- package/src/modules/bmm/workflows/4-implementation/README.md +0 -221
- package/src/modules/bmm/workflows/4-implementation/code-review/README.md +0 -69
- package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +0 -73
- package/src/modules/bmm/workflows/4-implementation/create-story/README.md +0 -146
- package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +0 -206
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/README.md +0 -195
- package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +0 -77
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +0 -156
- package/src/modules/bmm/workflows/4-implementation/story-context/README.md +0 -234
- package/src/modules/bmm/workflows/README.md +0 -215
- package/src/modules/bmm/workflows/document-project/templates/README.md +0 -38
- package/src/modules/bmm/workflows/testarch/README.md +0 -26
- package/src/modules/bmm/workflows/testarch/atdd/README.md +0 -672
- package/src/modules/bmm/workflows/testarch/automate/README.md +0 -869
- package/src/modules/bmm/workflows/testarch/ci/README.md +0 -493
- package/src/modules/bmm/workflows/testarch/framework/README.md +0 -340
- package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +0 -469
- package/src/modules/bmm/workflows/testarch/test-design/README.md +0 -493
- package/src/modules/bmm/workflows/testarch/test-review/README.md +0 -775
- package/src/modules/bmm/workflows/testarch/trace/README.md +0 -802
- package/src/modules/bmm/workflows/workflow-status/README.md +0 -260
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +0 -76
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +0 -75
- /package/bmad/_cfg/agents/{bmd-doc-keeper.customize.yaml → bmm-analyst.customize.yaml} +0 -0
- /package/bmad/_cfg/agents/{bmd-release-chief.customize.yaml → bmm-architect.customize.yaml} +0 -0
- /package/{src/modules/bmm/workflows/2-plan-workflows/prd → bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories}/epics-template.md +0 -0
|
@@ -1,438 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/personality-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. Use at your own risk. See the Apache License for details.
|
|
26
|
-
#
|
|
27
|
-
# ---
|
|
28
|
-
#
|
|
29
|
-
# @fileoverview Personality Manager - Adds character and emotional style to TTS voices
|
|
30
|
-
# @context Enables voices to have distinct personalities (flirty, sarcastic, pirate, etc.) with provider-aware voice assignment
|
|
31
|
-
# @architecture Markdown-based personality templates with provider-specific voice mappings (ElevenLabs vs Piper)
|
|
32
|
-
# @dependencies .claude/personalities/*.md files, voice-manager.sh, play-tts.sh, provider-manager.sh
|
|
33
|
-
# @entrypoints Called by /agent-vibes:personality slash commands
|
|
34
|
-
# @patterns Template-based configuration, provider abstraction, random personality support
|
|
35
|
-
# @related .claude/personalities/*.md, voice-manager.sh, .claude/tts-personality.txt
|
|
36
|
-
|
|
37
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
38
|
-
PERSONALITIES_DIR="$SCRIPT_DIR/../personalities"
|
|
39
|
-
|
|
40
|
-
# Determine target .claude directory based on context
|
|
41
|
-
# Priority:
|
|
42
|
-
# 1. CLAUDE_PROJECT_DIR env var (set by MCP for project-specific settings)
|
|
43
|
-
# 2. Script location (for direct slash command usage)
|
|
44
|
-
# 3. Global ~/.claude (fallback)
|
|
45
|
-
|
|
46
|
-
if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -d "$CLAUDE_PROJECT_DIR/.claude" ]]; then
|
|
47
|
-
# MCP context: Use the project directory where MCP was invoked
|
|
48
|
-
CLAUDE_DIR="$CLAUDE_PROJECT_DIR/.claude"
|
|
49
|
-
else
|
|
50
|
-
# Direct usage context: Use script location
|
|
51
|
-
# Script is at .claude/hooks/personality-manager.sh, so .claude is ..
|
|
52
|
-
CLAUDE_DIR="$(cd "$SCRIPT_DIR/.." 2>/dev/null && pwd)"
|
|
53
|
-
|
|
54
|
-
# If script is in global ~/.claude, use that
|
|
55
|
-
if [[ "$CLAUDE_DIR" == "$HOME/.claude" ]]; then
|
|
56
|
-
CLAUDE_DIR="$HOME/.claude"
|
|
57
|
-
elif [[ ! -d "$CLAUDE_DIR" ]]; then
|
|
58
|
-
# Fallback to global if directory doesn't exist
|
|
59
|
-
CLAUDE_DIR="$HOME/.claude"
|
|
60
|
-
fi
|
|
61
|
-
fi
|
|
62
|
-
|
|
63
|
-
PERSONALITY_FILE="$CLAUDE_DIR/tts-personality.txt"
|
|
64
|
-
|
|
65
|
-
# Function to get personality data from markdown file
|
|
66
|
-
get_personality_data() {
|
|
67
|
-
local personality="$1"
|
|
68
|
-
local field="$2"
|
|
69
|
-
local file="$PERSONALITIES_DIR/${personality}.md"
|
|
70
|
-
|
|
71
|
-
if [[ ! -f "$file" ]]; then
|
|
72
|
-
return 1
|
|
73
|
-
fi
|
|
74
|
-
|
|
75
|
-
case "$field" in
|
|
76
|
-
prefix)
|
|
77
|
-
sed -n '/^## Prefix/,/^##/p' "$file" | sed '1d;$d' | tr -d '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
|
|
78
|
-
;;
|
|
79
|
-
suffix)
|
|
80
|
-
sed -n '/^## Suffix/,/^##/p' "$file" | sed '1d;$d' | tr -d '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
|
|
81
|
-
;;
|
|
82
|
-
description)
|
|
83
|
-
grep "^description:" "$file" | cut -d: -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
|
|
84
|
-
;;
|
|
85
|
-
voice)
|
|
86
|
-
grep "^elevenlabs_voice:" "$file" | cut -d: -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
|
|
87
|
-
;;
|
|
88
|
-
piper_voice)
|
|
89
|
-
grep "^piper_voice:" "$file" | cut -d: -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
|
|
90
|
-
;;
|
|
91
|
-
instructions)
|
|
92
|
-
sed -n '/^## AI Instructions/,/^##/p' "$file" | sed '1d;$d'
|
|
93
|
-
;;
|
|
94
|
-
esac
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
# Function to list all available personalities
|
|
98
|
-
list_personalities() {
|
|
99
|
-
local personalities=()
|
|
100
|
-
|
|
101
|
-
# Find all .md files in personalities directory
|
|
102
|
-
if [[ -d "$PERSONALITIES_DIR" ]]; then
|
|
103
|
-
for file in "$PERSONALITIES_DIR"/*.md; do
|
|
104
|
-
if [[ -f "$file" ]]; then
|
|
105
|
-
basename "$file" .md
|
|
106
|
-
fi
|
|
107
|
-
done
|
|
108
|
-
fi
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
case "$1" in
|
|
112
|
-
list)
|
|
113
|
-
echo "🎭 Available Personalities:"
|
|
114
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
115
|
-
|
|
116
|
-
# Get current personality
|
|
117
|
-
CURRENT="normal"
|
|
118
|
-
if [ -f "$PERSONALITY_FILE" ]; then
|
|
119
|
-
CURRENT=$(cat "$PERSONALITY_FILE")
|
|
120
|
-
fi
|
|
121
|
-
|
|
122
|
-
# List personalities from markdown files
|
|
123
|
-
echo "Built-in personalities:"
|
|
124
|
-
for personality in $(list_personalities | sort); do
|
|
125
|
-
desc=$(get_personality_data "$personality" "description")
|
|
126
|
-
if [[ "$personality" == "$CURRENT" ]]; then
|
|
127
|
-
echo " ✓ $personality - $desc (current)"
|
|
128
|
-
else
|
|
129
|
-
echo " - $personality - $desc"
|
|
130
|
-
fi
|
|
131
|
-
done
|
|
132
|
-
|
|
133
|
-
# Add random option
|
|
134
|
-
if [[ "$CURRENT" == "random" ]]; then
|
|
135
|
-
echo " ✓ random - Picks randomly each time (current)"
|
|
136
|
-
else
|
|
137
|
-
echo " - random - Picks randomly each time"
|
|
138
|
-
fi
|
|
139
|
-
|
|
140
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
141
|
-
echo ""
|
|
142
|
-
echo "Usage: /agent-vibes:personality <name>"
|
|
143
|
-
echo " /agent-vibes:personality add <name>"
|
|
144
|
-
echo " /agent-vibes:personality edit <name>"
|
|
145
|
-
;;
|
|
146
|
-
|
|
147
|
-
set|switch)
|
|
148
|
-
PERSONALITY="$2"
|
|
149
|
-
|
|
150
|
-
if [[ -z "$PERSONALITY" ]]; then
|
|
151
|
-
echo "❌ Please specify a personality name"
|
|
152
|
-
echo "Usage: $0 set <personality>"
|
|
153
|
-
exit 1
|
|
154
|
-
fi
|
|
155
|
-
|
|
156
|
-
# Check if personality file exists (unless it's random)
|
|
157
|
-
if [[ "$PERSONALITY" != "random" ]]; then
|
|
158
|
-
if [[ ! -f "$PERSONALITIES_DIR/${PERSONALITY}.md" ]]; then
|
|
159
|
-
echo "❌ Personality not found: $PERSONALITY"
|
|
160
|
-
echo ""
|
|
161
|
-
echo "Available personalities:"
|
|
162
|
-
for p in $(list_personalities | sort); do
|
|
163
|
-
echo " • $p"
|
|
164
|
-
done
|
|
165
|
-
exit 1
|
|
166
|
-
fi
|
|
167
|
-
fi
|
|
168
|
-
|
|
169
|
-
# Save the personality
|
|
170
|
-
echo "$PERSONALITY" > "$PERSONALITY_FILE"
|
|
171
|
-
echo "🎭 Personality set to: $PERSONALITY"
|
|
172
|
-
|
|
173
|
-
# Check if personality has an assigned voice
|
|
174
|
-
# Detect active TTS provider
|
|
175
|
-
PROVIDER_FILE=""
|
|
176
|
-
if [[ -f "$CLAUDE_DIR/tts-provider.txt" ]]; then
|
|
177
|
-
PROVIDER_FILE="$CLAUDE_DIR/tts-provider.txt"
|
|
178
|
-
elif [[ -f "$HOME/.claude/tts-provider.txt" ]]; then
|
|
179
|
-
PROVIDER_FILE="$HOME/.claude/tts-provider.txt"
|
|
180
|
-
fi
|
|
181
|
-
|
|
182
|
-
ACTIVE_PROVIDER="elevenlabs" # default
|
|
183
|
-
if [[ -n "$PROVIDER_FILE" ]]; then
|
|
184
|
-
ACTIVE_PROVIDER=$(cat "$PROVIDER_FILE")
|
|
185
|
-
fi
|
|
186
|
-
|
|
187
|
-
# Get the appropriate voice based on provider
|
|
188
|
-
ASSIGNED_VOICE=""
|
|
189
|
-
if [[ "$ACTIVE_PROVIDER" == "piper" ]]; then
|
|
190
|
-
# Try to get Piper-specific voice first
|
|
191
|
-
ASSIGNED_VOICE=$(get_personality_data "$PERSONALITY" "piper_voice")
|
|
192
|
-
if [[ -z "$ASSIGNED_VOICE" ]]; then
|
|
193
|
-
# Fallback to default Piper voice
|
|
194
|
-
ASSIGNED_VOICE="en_US-lessac-medium"
|
|
195
|
-
fi
|
|
196
|
-
else
|
|
197
|
-
# Use ElevenLabs voice (reads from elevenlabs_voice: field)
|
|
198
|
-
ASSIGNED_VOICE=$(get_personality_data "$PERSONALITY" "voice")
|
|
199
|
-
fi
|
|
200
|
-
|
|
201
|
-
if [[ -n "$ASSIGNED_VOICE" ]]; then
|
|
202
|
-
# Switch to the assigned voice (silently - personality will do the talking)
|
|
203
|
-
VOICE_MANAGER="$SCRIPT_DIR/voice-manager.sh"
|
|
204
|
-
if [[ -x "$VOICE_MANAGER" ]]; then
|
|
205
|
-
echo "🎤 Switching to assigned voice: $ASSIGNED_VOICE"
|
|
206
|
-
"$VOICE_MANAGER" switch "$ASSIGNED_VOICE" --silent >/dev/null 2>&1
|
|
207
|
-
fi
|
|
208
|
-
fi
|
|
209
|
-
|
|
210
|
-
# Make a personality-appropriate remark with TTS
|
|
211
|
-
if [[ "$PERSONALITY" != "random" ]]; then
|
|
212
|
-
echo ""
|
|
213
|
-
|
|
214
|
-
# Get TTS script path
|
|
215
|
-
TTS_SCRIPT="$SCRIPT_DIR/play-tts.sh"
|
|
216
|
-
|
|
217
|
-
# Try to get acknowledgment from personality file
|
|
218
|
-
PERSONALITY_FILE_PATH="$PERSONALITIES_DIR/${PERSONALITY}.md"
|
|
219
|
-
REMARK=""
|
|
220
|
-
|
|
221
|
-
if [[ -f "$PERSONALITY_FILE_PATH" ]]; then
|
|
222
|
-
# Extract example responses from personality file (lines starting with "- ")
|
|
223
|
-
mapfile -t EXAMPLES < <(grep '^- "' "$PERSONALITY_FILE_PATH" | sed 's/^- "//; s/"$//')
|
|
224
|
-
|
|
225
|
-
if [[ ${#EXAMPLES[@]} -gt 0 ]]; then
|
|
226
|
-
# Pick a random example
|
|
227
|
-
REMARK="${EXAMPLES[$RANDOM % ${#EXAMPLES[@]}]}"
|
|
228
|
-
fi
|
|
229
|
-
fi
|
|
230
|
-
|
|
231
|
-
# Fallback if no examples found
|
|
232
|
-
if [[ -z "$REMARK" ]]; then
|
|
233
|
-
REMARK="Personality set to ${PERSONALITY}!"
|
|
234
|
-
fi
|
|
235
|
-
|
|
236
|
-
echo "💬 $REMARK"
|
|
237
|
-
"$TTS_SCRIPT" "$REMARK"
|
|
238
|
-
|
|
239
|
-
echo ""
|
|
240
|
-
echo "Note: AI will generate unique ${PERSONALITY} responses - no fixed templates!"
|
|
241
|
-
echo ""
|
|
242
|
-
echo "💡 Tip: To hear automatic TTS narration, enable the Agent Vibes output style:"
|
|
243
|
-
echo " /output-style Agent Vibes"
|
|
244
|
-
fi
|
|
245
|
-
;;
|
|
246
|
-
|
|
247
|
-
get)
|
|
248
|
-
if [ -f "$PERSONALITY_FILE" ]; then
|
|
249
|
-
CURRENT=$(cat "$PERSONALITY_FILE")
|
|
250
|
-
echo "Current personality: $CURRENT"
|
|
251
|
-
|
|
252
|
-
if [[ "$CURRENT" != "random" ]]; then
|
|
253
|
-
desc=$(get_personality_data "$CURRENT" "description")
|
|
254
|
-
[[ -n "$desc" ]] && echo "Description: $desc"
|
|
255
|
-
fi
|
|
256
|
-
else
|
|
257
|
-
echo "Current personality: normal (default)"
|
|
258
|
-
fi
|
|
259
|
-
;;
|
|
260
|
-
|
|
261
|
-
add)
|
|
262
|
-
NAME="$2"
|
|
263
|
-
if [[ -z "$NAME" ]]; then
|
|
264
|
-
echo "❌ Please specify a personality name"
|
|
265
|
-
echo "Usage: $0 add <name>"
|
|
266
|
-
exit 1
|
|
267
|
-
fi
|
|
268
|
-
|
|
269
|
-
FILE="$PERSONALITIES_DIR/${NAME}.md"
|
|
270
|
-
if [[ -f "$FILE" ]]; then
|
|
271
|
-
echo "❌ Personality '$NAME' already exists"
|
|
272
|
-
echo "Use 'edit' to modify it"
|
|
273
|
-
exit 1
|
|
274
|
-
fi
|
|
275
|
-
|
|
276
|
-
# Create new personality file
|
|
277
|
-
cat > "$FILE" << 'EOF'
|
|
278
|
-
---
|
|
279
|
-
name: NAME
|
|
280
|
-
description: Custom personality
|
|
281
|
-
---
|
|
282
|
-
|
|
283
|
-
# NAME Personality
|
|
284
|
-
|
|
285
|
-
## Prefix
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
## Suffix
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
## AI Instructions
|
|
292
|
-
Describe how the AI should generate messages for this personality.
|
|
293
|
-
|
|
294
|
-
## Example Responses
|
|
295
|
-
- "Example response 1"
|
|
296
|
-
- "Example response 2"
|
|
297
|
-
EOF
|
|
298
|
-
|
|
299
|
-
# Replace NAME with actual name
|
|
300
|
-
sed -i "s/NAME/$NAME/g" "$FILE"
|
|
301
|
-
|
|
302
|
-
echo "✅ Created new personality: $NAME"
|
|
303
|
-
echo "📝 Edit the file: $FILE"
|
|
304
|
-
echo ""
|
|
305
|
-
echo "You can now customize:"
|
|
306
|
-
echo " • Prefix: Text before messages"
|
|
307
|
-
echo " • Suffix: Text after messages"
|
|
308
|
-
echo " • AI Instructions: How AI should speak"
|
|
309
|
-
echo " • Example Responses: Sample messages"
|
|
310
|
-
;;
|
|
311
|
-
|
|
312
|
-
edit)
|
|
313
|
-
NAME="$2"
|
|
314
|
-
if [[ -z "$NAME" ]]; then
|
|
315
|
-
echo "❌ Please specify a personality name"
|
|
316
|
-
echo "Usage: $0 edit <name>"
|
|
317
|
-
exit 1
|
|
318
|
-
fi
|
|
319
|
-
|
|
320
|
-
FILE="$PERSONALITIES_DIR/${NAME}.md"
|
|
321
|
-
if [[ ! -f "$FILE" ]]; then
|
|
322
|
-
echo "❌ Personality '$NAME' not found"
|
|
323
|
-
echo "Use 'add' to create it first"
|
|
324
|
-
exit 1
|
|
325
|
-
fi
|
|
326
|
-
|
|
327
|
-
echo "📝 Edit this file to customize the personality:"
|
|
328
|
-
echo "$FILE"
|
|
329
|
-
;;
|
|
330
|
-
|
|
331
|
-
reset)
|
|
332
|
-
echo "normal" > "$PERSONALITY_FILE"
|
|
333
|
-
echo "🎭 Personality reset to: normal"
|
|
334
|
-
;;
|
|
335
|
-
|
|
336
|
-
set-favorite-voice)
|
|
337
|
-
PERSONALITY="$2"
|
|
338
|
-
NEW_VOICE="$3"
|
|
339
|
-
|
|
340
|
-
if [[ -z "$PERSONALITY" ]] || [[ -z "$NEW_VOICE" ]]; then
|
|
341
|
-
echo "❌ Please specify both personality name and voice name"
|
|
342
|
-
echo "Usage: $0 set-favorite-voice <personality> <voice>"
|
|
343
|
-
exit 1
|
|
344
|
-
fi
|
|
345
|
-
|
|
346
|
-
FILE="$PERSONALITIES_DIR/${PERSONALITY}.md"
|
|
347
|
-
if [[ ! -f "$FILE" ]]; then
|
|
348
|
-
echo "❌ Personality '$PERSONALITY' not found"
|
|
349
|
-
exit 1
|
|
350
|
-
fi
|
|
351
|
-
|
|
352
|
-
# Detect active TTS provider
|
|
353
|
-
PROVIDER_FILE=""
|
|
354
|
-
if [[ -f "$CLAUDE_DIR/tts-provider.txt" ]]; then
|
|
355
|
-
PROVIDER_FILE="$CLAUDE_DIR/tts-provider.txt"
|
|
356
|
-
elif [[ -f "$HOME/.claude/tts-provider.txt" ]]; then
|
|
357
|
-
PROVIDER_FILE="$HOME/.claude/tts-provider.txt"
|
|
358
|
-
fi
|
|
359
|
-
|
|
360
|
-
ACTIVE_PROVIDER="elevenlabs" # default
|
|
361
|
-
if [[ -n "$PROVIDER_FILE" ]]; then
|
|
362
|
-
ACTIVE_PROVIDER=$(cat "$PROVIDER_FILE")
|
|
363
|
-
fi
|
|
364
|
-
|
|
365
|
-
# Determine which field to update based on provider
|
|
366
|
-
if [[ "$ACTIVE_PROVIDER" == "piper" ]]; then
|
|
367
|
-
VOICE_FIELD="piper_voice"
|
|
368
|
-
CURRENT_VOICE=$(get_personality_data "$PERSONALITY" "piper_voice")
|
|
369
|
-
else
|
|
370
|
-
VOICE_FIELD="elevenlabs_voice"
|
|
371
|
-
CURRENT_VOICE=$(get_personality_data "$PERSONALITY" "voice")
|
|
372
|
-
fi
|
|
373
|
-
|
|
374
|
-
# Check if personality already has a favorite voice assigned
|
|
375
|
-
if [[ -n "$CURRENT_VOICE" ]] && [[ "$CURRENT_VOICE" != "$NEW_VOICE" ]]; then
|
|
376
|
-
echo "⚠️ WARNING: Personality '$PERSONALITY' already has a favorite voice assigned!"
|
|
377
|
-
echo ""
|
|
378
|
-
echo " Current favorite ($ACTIVE_PROVIDER): $CURRENT_VOICE"
|
|
379
|
-
echo " New voice: $NEW_VOICE"
|
|
380
|
-
echo ""
|
|
381
|
-
echo "Do you want to replace the favorite voice?"
|
|
382
|
-
echo ""
|
|
383
|
-
read -p "Enter your choice (yes/no): " CHOICE
|
|
384
|
-
|
|
385
|
-
case "$CHOICE" in
|
|
386
|
-
yes|y|YES|Y)
|
|
387
|
-
echo "✅ Replacing favorite voice..."
|
|
388
|
-
;;
|
|
389
|
-
no|n|NO|N)
|
|
390
|
-
echo "❌ Keeping current favorite voice: $CURRENT_VOICE"
|
|
391
|
-
exit 0
|
|
392
|
-
;;
|
|
393
|
-
*)
|
|
394
|
-
echo "❌ Invalid choice. Keeping current favorite voice: $CURRENT_VOICE"
|
|
395
|
-
exit 1
|
|
396
|
-
;;
|
|
397
|
-
esac
|
|
398
|
-
fi
|
|
399
|
-
|
|
400
|
-
# Update the voice in the personality file
|
|
401
|
-
if grep -q "^${VOICE_FIELD}:" "$FILE"; then
|
|
402
|
-
# Field exists, replace it
|
|
403
|
-
sed -i "s/^${VOICE_FIELD}:.*/${VOICE_FIELD}: ${NEW_VOICE}/" "$FILE"
|
|
404
|
-
else
|
|
405
|
-
# Field doesn't exist, add it after the frontmatter
|
|
406
|
-
sed -i "/^---$/,/^---$/ { /^---$/a\\
|
|
407
|
-
${VOICE_FIELD}: ${NEW_VOICE}
|
|
408
|
-
}" "$FILE"
|
|
409
|
-
fi
|
|
410
|
-
|
|
411
|
-
echo "✅ Favorite voice for '$PERSONALITY' personality set to: $NEW_VOICE ($ACTIVE_PROVIDER)"
|
|
412
|
-
echo "📝 Updated file: $FILE"
|
|
413
|
-
;;
|
|
414
|
-
|
|
415
|
-
*)
|
|
416
|
-
# If a single argument is provided and it's not a command, treat it as "set <personality>"
|
|
417
|
-
if [[ -n "$1" ]] && [[ -f "$PERSONALITIES_DIR/${1}.md" || "$1" == "random" ]]; then
|
|
418
|
-
# Call set with the personality name
|
|
419
|
-
exec "$0" set "$1"
|
|
420
|
-
else
|
|
421
|
-
echo "AgentVibes Personality Manager"
|
|
422
|
-
echo ""
|
|
423
|
-
echo "Commands:"
|
|
424
|
-
echo " list - List all personalities"
|
|
425
|
-
echo " set/switch <name> - Set personality"
|
|
426
|
-
echo " add <name> - Create new personality"
|
|
427
|
-
echo " edit <name> - Show path to edit personality"
|
|
428
|
-
echo " get - Show current personality"
|
|
429
|
-
echo " set-favorite-voice <name> <voice> - Set favorite voice for a personality"
|
|
430
|
-
echo " reset - Reset to normal"
|
|
431
|
-
echo ""
|
|
432
|
-
echo "Examples:"
|
|
433
|
-
echo " /agent-vibes:personality flirty"
|
|
434
|
-
echo " /agent-vibes:personality add cowboy"
|
|
435
|
-
echo " /agent-vibes:personality set-favorite-voice flirty \"Aria\""
|
|
436
|
-
fi
|
|
437
|
-
;;
|
|
438
|
-
esac
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/piper-download-voices.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 Downloader - Batch downloads popular Piper TTS voices from HuggingFace
|
|
35
|
-
# @context Post-installation utility to download commonly used voices (~25MB each)
|
|
36
|
-
# @architecture Wrapper around piper-voice-manager.sh download functions with progress tracking
|
|
37
|
-
# @dependencies piper-voice-manager.sh (download logic), piper binary (for validation)
|
|
38
|
-
# @entrypoints Called by piper-installer.sh or manually via ./piper-download-voices.sh [--yes|-y]
|
|
39
|
-
# @patterns Batch operations, skip-existing logic, auto-yes flag for non-interactive use
|
|
40
|
-
# @related piper-voice-manager.sh, piper-installer.sh
|
|
41
|
-
#
|
|
42
|
-
|
|
43
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
44
|
-
source "$SCRIPT_DIR/piper-voice-manager.sh"
|
|
45
|
-
|
|
46
|
-
# Parse command line arguments
|
|
47
|
-
AUTO_YES=false
|
|
48
|
-
if [[ "$1" == "--yes" ]] || [[ "$1" == "-y" ]]; then
|
|
49
|
-
AUTO_YES=true
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
# Common voice models to download
|
|
53
|
-
COMMON_VOICES=(
|
|
54
|
-
"en_US-lessac-medium" # Default, clear male
|
|
55
|
-
"en_US-amy-medium" # Warm female
|
|
56
|
-
"en_US-joe-medium" # Professional male
|
|
57
|
-
"en_US-ryan-high" # Expressive male
|
|
58
|
-
"en_US-libritts-high" # Premium quality
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
echo "🎙️ Piper Voice Model Downloader"
|
|
62
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
63
|
-
echo ""
|
|
64
|
-
echo "This will download the most commonly used Piper voice models."
|
|
65
|
-
echo "Each voice is approximately 25MB."
|
|
66
|
-
echo ""
|
|
67
|
-
|
|
68
|
-
# Check if piper is installed
|
|
69
|
-
if ! command -v piper &> /dev/null; then
|
|
70
|
-
echo "❌ Error: Piper TTS not installed"
|
|
71
|
-
echo "Install with: pipx install piper-tts"
|
|
72
|
-
exit 1
|
|
73
|
-
fi
|
|
74
|
-
|
|
75
|
-
# Get storage directory
|
|
76
|
-
VOICE_DIR=$(get_voice_storage_dir)
|
|
77
|
-
|
|
78
|
-
echo "📂 Storage location: $VOICE_DIR"
|
|
79
|
-
echo ""
|
|
80
|
-
|
|
81
|
-
# Count already downloaded
|
|
82
|
-
ALREADY_DOWNLOADED=0
|
|
83
|
-
ALREADY_DOWNLOADED_LIST=()
|
|
84
|
-
NEED_DOWNLOAD=()
|
|
85
|
-
|
|
86
|
-
for voice in "${COMMON_VOICES[@]}"; do
|
|
87
|
-
if verify_voice "$voice" 2>/dev/null; then
|
|
88
|
-
((ALREADY_DOWNLOADED++))
|
|
89
|
-
ALREADY_DOWNLOADED_LIST+=("$voice")
|
|
90
|
-
else
|
|
91
|
-
NEED_DOWNLOAD+=("$voice")
|
|
92
|
-
fi
|
|
93
|
-
done
|
|
94
|
-
|
|
95
|
-
echo "📊 Status:"
|
|
96
|
-
echo " Already downloaded: $ALREADY_DOWNLOADED voice(s)"
|
|
97
|
-
echo " Need to download: ${#NEED_DOWNLOAD[@]} voice(s)"
|
|
98
|
-
echo ""
|
|
99
|
-
|
|
100
|
-
# Show already downloaded voices
|
|
101
|
-
if [[ $ALREADY_DOWNLOADED -gt 0 ]]; then
|
|
102
|
-
echo "✅ Already downloaded (skipped):"
|
|
103
|
-
for voice in "${ALREADY_DOWNLOADED_LIST[@]}"; do
|
|
104
|
-
echo " ✓ $voice"
|
|
105
|
-
done
|
|
106
|
-
echo ""
|
|
107
|
-
fi
|
|
108
|
-
|
|
109
|
-
if [[ ${#NEED_DOWNLOAD[@]} -eq 0 ]]; then
|
|
110
|
-
echo "🎉 All common voices ready to use!"
|
|
111
|
-
exit 0
|
|
112
|
-
fi
|
|
113
|
-
|
|
114
|
-
echo "Voices to download:"
|
|
115
|
-
for voice in "${NEED_DOWNLOAD[@]}"; do
|
|
116
|
-
echo " • $voice (~25MB)"
|
|
117
|
-
done
|
|
118
|
-
echo ""
|
|
119
|
-
|
|
120
|
-
# Ask for confirmation (skip if --yes flag provided)
|
|
121
|
-
if [[ "$AUTO_YES" == "false" ]]; then
|
|
122
|
-
read -p "Download ${#NEED_DOWNLOAD[@]} voice model(s)? [Y/n]: " -n 1 -r
|
|
123
|
-
echo
|
|
124
|
-
|
|
125
|
-
if [[ ! $REPLY =~ ^[Yy]$ ]] && [[ -n $REPLY ]]; then
|
|
126
|
-
echo "❌ Download cancelled"
|
|
127
|
-
exit 0
|
|
128
|
-
fi
|
|
129
|
-
else
|
|
130
|
-
echo "Auto-downloading ${#NEED_DOWNLOAD[@]} voice model(s)..."
|
|
131
|
-
echo ""
|
|
132
|
-
fi
|
|
133
|
-
|
|
134
|
-
# Download each voice
|
|
135
|
-
DOWNLOADED=0
|
|
136
|
-
FAILED=0
|
|
137
|
-
|
|
138
|
-
for voice in "${NEED_DOWNLOAD[@]}"; do
|
|
139
|
-
echo ""
|
|
140
|
-
echo "📥 Downloading: $voice..."
|
|
141
|
-
|
|
142
|
-
if download_voice "$voice"; then
|
|
143
|
-
((DOWNLOADED++))
|
|
144
|
-
echo "✅ Downloaded: $voice"
|
|
145
|
-
else
|
|
146
|
-
((FAILED++))
|
|
147
|
-
echo "❌ Failed: $voice"
|
|
148
|
-
fi
|
|
149
|
-
done
|
|
150
|
-
|
|
151
|
-
echo ""
|
|
152
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
153
|
-
echo "📊 Download Summary:"
|
|
154
|
-
echo " ✅ Successfully downloaded: $DOWNLOADED"
|
|
155
|
-
echo " ❌ Failed: $FAILED"
|
|
156
|
-
echo " 📦 Total voices available: $((ALREADY_DOWNLOADED + DOWNLOADED))"
|
|
157
|
-
echo ""
|
|
158
|
-
|
|
159
|
-
if [[ $DOWNLOADED -gt 0 ]]; then
|
|
160
|
-
echo "✨ Ready to use Piper TTS with downloaded voices!"
|
|
161
|
-
echo ""
|
|
162
|
-
echo "Try it:"
|
|
163
|
-
echo " /agent-vibes:provider switch piper"
|
|
164
|
-
echo " /agent-vibes:preview"
|
|
165
|
-
fi
|