agentvibes 2.5.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bmad/_cfg/agent-manifest.csv +11 -0
- package/.bmad/_cfg/agents/bmm-analyst.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-architect.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-dev.customize.yaml +42 -0
- package/.bmad/_cfg/agents/bmm-frame-expert.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/core-bmad-master.customize.yaml +42 -0
- package/.bmad/_cfg/files-manifest.csv +243 -0
- package/.bmad/_cfg/ides/claude-code.yaml +6 -0
- package/.bmad/_cfg/manifest.yaml +9 -0
- package/.bmad/_cfg/task-manifest.csv +5 -0
- package/.bmad/_cfg/tool-manifest.csv +2 -0
- package/.bmad/_cfg/workflow-manifest.csv +38 -0
- package/.bmad/bmm/README.md +128 -0
- package/.bmad/bmm/agents/analyst.md +79 -0
- package/.bmad/bmm/agents/analyst.md.backup-pre-tts +75 -0
- package/.bmad/bmm/agents/architect.md +80 -0
- package/.bmad/bmm/agents/dev.md +70 -0
- package/.bmad/bmm/agents/frame-expert.md +72 -0
- package/.bmad/bmm/agents/pm.md +84 -0
- package/.bmad/bmm/agents/sm.md +93 -0
- package/.bmad/bmm/agents/tea.md +80 -0
- package/.bmad/bmm/agents/tech-writer.md +84 -0
- package/.bmad/bmm/agents/ux-designer.md +79 -0
- package/.bmad/bmm/config.yaml +17 -0
- package/.bmad/bmm/docs/README.md +236 -0
- package/.bmad/bmm/docs/agents-guide.md +1058 -0
- package/.bmad/bmm/docs/brownfield-guide.md +762 -0
- package/.bmad/bmm/docs/enterprise-agentic-development.md +686 -0
- package/.bmad/bmm/docs/faq.md +588 -0
- package/.bmad/bmm/docs/glossary.md +320 -0
- package/.bmad/bmm/docs/party-mode.md +224 -0
- package/.bmad/bmm/docs/quick-spec-flow.md +652 -0
- package/.bmad/bmm/docs/quick-start.md +376 -0
- package/.bmad/bmm/docs/scale-adaptive-system.md +612 -0
- package/.bmad/bmm/docs/test-architecture.md +396 -0
- package/.bmad/bmm/docs/workflow-architecture-reference.md +366 -0
- package/.bmad/bmm/docs/workflow-document-project-reference.md +489 -0
- package/.bmad/bmm/docs/workflows-analysis.md +370 -0
- package/.bmad/bmm/docs/workflows-implementation.md +286 -0
- package/.bmad/bmm/docs/workflows-planning.md +612 -0
- package/.bmad/bmm/docs/workflows-solutioning.md +554 -0
- package/.bmad/bmm/teams/default-party.csv +20 -0
- package/.bmad/bmm/teams/team-fullstack.yaml +13 -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 +112 -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 +425 -0
- package/.bmad/bmm/workflows/1-analysis/domain-research/template.md +180 -0
- package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +28 -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 +438 -0
- package/.bmad/bmm/workflows/1-analysis/research/instructions-market.md +675 -0
- package/.bmad/bmm/workflows/1-analysis/research/instructions-router.md +134 -0
- package/.bmad/bmm/workflows/1-analysis/research/instructions-technical.md +534 -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-epics-and-stories/epics-template.md +80 -0
- package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/instructions.md +616 -0
- package/.bmad/bmm/workflows/2-plan-workflows/create-epics-and-stories/workflow.yaml +53 -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 +1308 -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 +61 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +346 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +703 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +204 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- package/.bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +52 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +217 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +74 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +436 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +980 -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 +90 -0
- package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +58 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +321 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md +103 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/checklist.md +240 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +222 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/instructions.md +768 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +13 -0
- package/.bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml +55 -0
- package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/checklist.md +169 -0
- package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +332 -0
- package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/template.md +146 -0
- package/.bmad/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +62 -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 +398 -0
- package/.bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +60 -0
- package/.bmad/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
- package/.bmad/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
- package/.bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +56 -0
- package/.bmad/bmm/workflows/4-implementation/create-story/checklist.md +240 -0
- package/.bmad/bmm/workflows/4-implementation/create-story/instructions.md +256 -0
- package/.bmad/bmm/workflows/4-implementation/create-story/template.md +51 -0
- package/.bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +71 -0
- package/.bmad/bmm/workflows/4-implementation/dev-story/checklist.md +38 -0
- package/.bmad/bmm/workflows/4-implementation/dev-story/instructions.md +267 -0
- package/.bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +56 -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 +164 -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 +57 -0
- package/.bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
- package/.bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +56 -0
- package/.bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/.bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +234 -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 +49 -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 +209 -0
- package/.bmad/bmm/workflows/4-implementation/story-context/workflow.yaml +61 -0
- package/.bmad/bmm/workflows/4-implementation/story-done/instructions.md +111 -0
- package/.bmad/bmm/workflows/4-implementation/story-done/workflow.yaml +26 -0
- package/.bmad/bmm/workflows/4-implementation/story-ready/instructions.md +117 -0
- package/.bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml +23 -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 +29 -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/frame-expert/_shared/excalidraw-helpers.md +127 -0
- package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-library.json +90 -0
- package/.bmad/bmm/workflows/frame-expert/_shared/excalidraw-templates.yaml +127 -0
- package/.bmad/bmm/workflows/frame-expert/_shared/validate-json-instructions.md +79 -0
- package/.bmad/bmm/workflows/frame-expert/create-dataflow/checklist.md +39 -0
- package/.bmad/bmm/workflows/frame-expert/create-dataflow/instructions.md +131 -0
- package/.bmad/bmm/workflows/frame-expert/create-dataflow/workflow.yaml +23 -0
- package/.bmad/bmm/workflows/frame-expert/create-diagram/checklist.md +43 -0
- package/.bmad/bmm/workflows/frame-expert/create-diagram/instructions.md +142 -0
- package/.bmad/bmm/workflows/frame-expert/create-diagram/workflow.yaml +24 -0
- package/.bmad/bmm/workflows/frame-expert/create-flowchart/checklist.md +49 -0
- package/.bmad/bmm/workflows/frame-expert/create-flowchart/instructions.md +242 -0
- package/.bmad/bmm/workflows/frame-expert/create-flowchart/workflow.yaml +27 -0
- package/.bmad/bmm/workflows/frame-expert/create-wireframe/checklist.md +38 -0
- package/.bmad/bmm/workflows/frame-expert/create-wireframe/instructions.md +133 -0
- package/.bmad/bmm/workflows/frame-expert/create-wireframe/workflow.yaml +23 -0
- package/.bmad/bmm/workflows/techdoc/documentation-standards.md +262 -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 +45 -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 +52 -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 +45 -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 +47 -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 +47 -0
- package/.bmad/bmm/workflows/testarch/test-design/checklist.md +234 -0
- package/.bmad/bmm/workflows/testarch/test-design/instructions.md +782 -0
- package/.bmad/bmm/workflows/testarch/test-design/test-design-template.md +285 -0
- package/.bmad/bmm/workflows/testarch/test-design/workflow.yaml +48 -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 +46 -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 +55 -0
- package/.bmad/bmm/workflows/workflow-status/init/instructions.md +334 -0
- package/.bmad/bmm/workflows/workflow-status/init/workflow.yaml +28 -0
- package/.bmad/bmm/workflows/workflow-status/instructions.md +388 -0
- package/.bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +138 -0
- package/.bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +126 -0
- package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +52 -0
- package/.bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +122 -0
- package/.bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +113 -0
- package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +58 -0
- package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +47 -0
- package/.bmad/bmm/workflows/workflow-status/project-levels.yaml +59 -0
- package/.bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/.bmad/bmm/workflows/workflow-status/workflow.yaml +28 -0
- package/.bmad/core/agents/bmad-master.md +72 -0
- package/.bmad/core/agents/bmad-web-orchestrator.agent.xml +113 -0
- package/.bmad/core/config.yaml +11 -0
- package/.bmad/core/tasks/adv-elicit-methods.csv +39 -0
- package/.bmad/core/tasks/advanced-elicitation-methods.csv +21 -0
- package/.bmad/core/tasks/advanced-elicitation.xml +106 -0
- package/.bmad/core/tasks/index-docs.xml +65 -0
- package/.bmad/core/tasks/validate-workflow.xml +89 -0
- package/.bmad/core/tasks/workflow.xml +270 -0
- package/.bmad/core/tools/shard-doc.xml +109 -0
- package/.bmad/core/workflows/brainstorming/README.md +261 -0
- package/.bmad/core/workflows/brainstorming/brain-methods.csv +36 -0
- package/.bmad/core/workflows/brainstorming/instructions.md +315 -0
- package/.bmad/core/workflows/brainstorming/template.md +106 -0
- package/.bmad/core/workflows/brainstorming/workflow.yaml +38 -0
- package/.bmad/core/workflows/party-mode/instructions.md +202 -0
- package/.bmad/core/workflows/party-mode/workflow.yaml +28 -0
- package/.bmad/docs/claude-code-instructions.md +25 -0
- package/.claude/commands/agent-vibes-bmad-party.md +117 -0
- package/.claude/commands/bmad/bmm/agents/analyst.md +14 -0
- package/.claude/commands/bmad/bmm/agents/architect.md +14 -0
- package/.claude/commands/bmad/bmm/agents/dev.md +14 -0
- package/.claude/commands/bmad/bmm/agents/frame-expert.md +14 -0
- package/.claude/commands/bmad/bmm/agents/pm.md +14 -0
- package/.claude/commands/bmad/bmm/agents/sm.md +14 -0
- package/.claude/commands/bmad/bmm/agents/tea.md +14 -0
- package/.claude/commands/bmad/bmm/agents/tech-writer.md +14 -0
- package/.claude/commands/bmad/bmm/agents/ux-designer.md +14 -0
- package/.claude/commands/bmad/bmm/workflows/architecture.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/brainstorm-project.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/code-review.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/correct-course.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-dataflow.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-diagram.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-flowchart.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-story.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-ux-design.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/create-wireframe.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/dev-story.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/document-project.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/domain-research.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/epic-tech-context.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/implementation-readiness.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/prd.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/product-brief.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/research.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/retrospective.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/sprint-planning.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/story-context.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/story-done.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/story-ready.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/tech-spec.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/workflow-init.md +13 -0
- package/.claude/commands/bmad/bmm/workflows/workflow-status.md +13 -0
- package/.claude/commands/bmad/core/agents/bmad-master.md +14 -0
- package/.claude/commands/bmad/core/tasks/advanced-elicitation.md +9 -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/brainstorming.md +13 -0
- package/.claude/commands/bmad/core/workflows/party-mode.md +13 -0
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/README-TTS-QUEUE.md +135 -0
- package/.claude/hooks/bmad-party-manager.sh +225 -0
- package/.claude/hooks/bmad-speak.sh +110 -0
- package/.claude/hooks/bmad-tts-injector.sh +8 -3
- package/.claude/hooks/bmad-voice-manager.sh +61 -29
- package/.claude/hooks/play-tts.sh +5 -0
- package/.claude/hooks/stop.sh +221 -0
- package/.claude/hooks/tts-queue-worker.sh +68 -0
- package/.claude/hooks/tts-queue.sh +105 -0
- package/.claude/verbosity.txt +1 -0
- package/README.md +8 -8
- package/RELEASE_NOTES.md +171 -370
- package/package.json +1 -1
- package/src/bmad-detector.js +3 -3
- package/src/commands/bmad-voices.js +392 -0
- package/src/installer.js +243 -51
- package/.claude/hooks/user-prompt-output.sh +0 -111
- package/.claude/plugins/bmad-voices-enabled.flag +0 -0
- package/.claude/plugins/bmad-voices.md +0 -51
- /package/{.bmad-core → v4-backup/.bmad-core}/agent-teams/team-all.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agent-teams/team-fullstack.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agent-teams/team-ide-minimal.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agent-teams/team-no-ui.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/analyst.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/architect.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/bmad-master.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/bmad-orchestrator.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/dev.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/pm.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/po.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/qa.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/sm.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/agents/ux-expert.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/checklists/architect-checklist.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/checklists/change-checklist.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/checklists/pm-checklist.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/checklists/po-master-checklist.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/checklists/story-dod-checklist.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/checklists/story-draft-checklist.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/core-config.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/data/bmad-kb.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/data/brainstorming-techniques.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/data/elicitation-methods.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/data/technical-preferences.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/data/test-levels-framework.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/data/test-priorities-matrix.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/enhanced-ide-development-workflow.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/install-manifest.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/advanced-elicitation.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/apply-qa-fixes.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/brownfield-create-epic.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/brownfield-create-story.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/correct-course.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/create-brownfield-story.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/create-deep-research-prompt.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/create-doc.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/create-next-story.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/document-project.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/execute-checklist.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/facilitate-brainstorming-session.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/generate-ai-frontend-prompt.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/index-docs.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/kb-mode-interaction.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/nfr-assess.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/qa-gate.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/review-story.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/risk-profile.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/shard-doc.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/test-design.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/trace-requirements.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/tasks/validate-next-story.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/architecture-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/brainstorming-output-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/brownfield-architecture-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/brownfield-prd-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/competitor-analysis-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/front-end-architecture-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/front-end-spec-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/fullstack-architecture-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/market-research-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/prd-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/project-brief-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/qa-gate-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/templates/story-tmpl.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/user-guide.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/utils/bmad-doc-template.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/utils/workflow-management.md +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/workflows/brownfield-fullstack.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/workflows/brownfield-service.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/workflows/brownfield-ui.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/workflows/greenfield-fullstack.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/workflows/greenfield-service.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/workflows/greenfield-ui.yaml +0 -0
- /package/{.bmad-core → v4-backup/.bmad-core}/working-in-the-brownfield.md +0 -0
package/src/installer.js
CHANGED
|
@@ -53,6 +53,13 @@ import boxen from 'boxen';
|
|
|
53
53
|
import ora from 'ora';
|
|
54
54
|
import { fileURLToPath } from 'node:url';
|
|
55
55
|
import { installMCP } from './commands/install-mcp.js';
|
|
56
|
+
import {
|
|
57
|
+
previewVoice,
|
|
58
|
+
listAvailableVoices,
|
|
59
|
+
listBmadAssignedVoices,
|
|
60
|
+
assignVoice,
|
|
61
|
+
resetBmadVoices,
|
|
62
|
+
} from './commands/bmad-voices.js';
|
|
56
63
|
|
|
57
64
|
const __filename = fileURLToPath(import.meta.url);
|
|
58
65
|
const __dirname = path.dirname(__filename);
|
|
@@ -63,6 +70,13 @@ const packageJson = JSON.parse(
|
|
|
63
70
|
);
|
|
64
71
|
const VERSION = packageJson.version;
|
|
65
72
|
|
|
73
|
+
// Configure CLI
|
|
74
|
+
program
|
|
75
|
+
.name('agentvibes')
|
|
76
|
+
.description('🎙️ AgentVibes - Text-to-Speech with personality for AI Assistants')
|
|
77
|
+
.version(VERSION, '-v, --version', 'Output the current version')
|
|
78
|
+
.helpOption('-h, --help', 'Display help for command');
|
|
79
|
+
|
|
66
80
|
// Beautiful ASCII art
|
|
67
81
|
function showWelcome() {
|
|
68
82
|
console.log('');
|
|
@@ -113,31 +127,26 @@ function showReleaseInfo() {
|
|
|
113
127
|
console.log(
|
|
114
128
|
boxen(
|
|
115
129
|
chalk.white.bold('═══════════════════════════════════════════════════════════════\n') +
|
|
116
|
-
chalk.cyan.bold(' 📦 AgentVibes v2.
|
|
117
|
-
chalk.white.bold('═══════════════════════════════════════════════════════════════\n\n') +
|
|
118
|
-
chalk.green.bold('🎙️ NEW FEATURE:\n\n') +
|
|
119
|
-
chalk.cyan('Intelligent Verbosity Control\n') +
|
|
120
|
-
chalk.gray(' • Control how much Claude speaks while working\n') +
|
|
121
|
-
chalk.gray(' • LOW: Acknowledgments + completions only (minimal)\n') +
|
|
122
|
-
chalk.gray(' • MEDIUM: + Major decisions and findings (balanced)\n') +
|
|
123
|
-
chalk.gray(' • HIGH: Full reasoning process (maximum transparency)\n') +
|
|
124
|
-
chalk.gray(' • Uses emoji markers (💭 🤔 ✓) for automatic TTS\n') +
|
|
125
|
-
chalk.gray(' • No manual Bash calls needed!\n\n') +
|
|
126
|
-
chalk.cyan('How to Use:\n') +
|
|
127
|
-
chalk.gray(' /agent-vibes:verbosity high # Maximum transparency\n') +
|
|
128
|
-
chalk.gray(' /agent-vibes:verbosity medium # Balanced\n') +
|
|
129
|
-
chalk.gray(' /agent-vibes:verbosity low # Minimal (default)\n\n') +
|
|
130
|
-
chalk.cyan('Perfect For:\n') +
|
|
131
|
-
chalk.gray(' • LOW: Quiet, focused work sessions\n') +
|
|
132
|
-
chalk.gray(' • MEDIUM: Understanding major decisions\n') +
|
|
133
|
-
chalk.gray(' • HIGH: Learning mode, debugging complex tasks\n\n') +
|
|
130
|
+
chalk.cyan.bold(' 📦 AgentVibes v2.6.0 - BMAD Integration & Voice Management CLI\n') +
|
|
134
131
|
chalk.white.bold('═══════════════════════════════════════════════════════════════\n\n') +
|
|
135
|
-
chalk.green.bold('
|
|
136
|
-
chalk.cyan('
|
|
137
|
-
chalk.cyan('
|
|
138
|
-
chalk.cyan('
|
|
139
|
-
chalk.
|
|
140
|
-
chalk.
|
|
132
|
+
chalk.green.bold('🎙️ WHAT\'S NEW:\n\n') +
|
|
133
|
+
chalk.cyan('AgentVibes v2.6.0 brings comprehensive BMAD integration with unique\n') +
|
|
134
|
+
chalk.cyan('AI voices for all agents! BMAD is a revolutionary AI-driven agile\n') +
|
|
135
|
+
chalk.cyan('framework that automatically adapts from single bug fixes to\n') +
|
|
136
|
+
chalk.cyan('enterprise-scale systems. This release includes 5 new CLI commands\n') +
|
|
137
|
+
chalk.cyan('for voice management, fuzzy voice matching (use short names like\n') +
|
|
138
|
+
chalk.cyan('"ryan"), BMAD v6 support with backward compatibility, and an\n') +
|
|
139
|
+
chalk.cyan('improved help system.\n\n') +
|
|
140
|
+
chalk.green.bold('✨ KEY HIGHLIGHTS:\n\n') +
|
|
141
|
+
chalk.gray(' 🎙️ BMAD TTS Integration - All BMAD agents can now speak!\n') +
|
|
142
|
+
chalk.gray(' 🛠️ Voice Management CLI - 5 new commands for managing voices\n') +
|
|
143
|
+
chalk.gray(' 🔍 Fuzzy Voice Matching - Use "ryan" instead of "en_US-ryan-high"\n') +
|
|
144
|
+
chalk.gray(' 📚 Improved Help - Built-in help command lists all commands\n') +
|
|
145
|
+
chalk.gray(' 🔧 BMAD v6 Support - Detects latest BMAD folder structure\n\n') +
|
|
146
|
+
chalk.cyan('Try the new commands:\n') +
|
|
147
|
+
chalk.gray(' npx agentvibes help\n') +
|
|
148
|
+
chalk.gray(' npx agentvibes preview-voice ryan\n') +
|
|
149
|
+
chalk.gray(' npx agentvibes list-available-voices\n\n') +
|
|
141
150
|
chalk.white.bold('═══════════════════════════════════════════════════════════════\n\n') +
|
|
142
151
|
chalk.gray('📖 Full Release Notes: RELEASE_NOTES.md\n') +
|
|
143
152
|
chalk.gray('🌐 Website: https://agentvibes.org\n') +
|
|
@@ -182,7 +191,7 @@ function getUserShell() {
|
|
|
182
191
|
|
|
183
192
|
/**
|
|
184
193
|
* Execute a shell script using the user's default shell with environment loaded
|
|
185
|
-
* @param {string} scriptPath - Path to the script
|
|
194
|
+
* @param {string} scriptPath - Path to the script with optional arguments (e.g., "script.sh enable")
|
|
186
195
|
* @param {object} options - execSync options
|
|
187
196
|
* @returns {Buffer} - Output from the script
|
|
188
197
|
*/
|
|
@@ -190,7 +199,8 @@ function execScript(scriptPath, options = {}) {
|
|
|
190
199
|
const { shell, shellConfig } = getUserShell();
|
|
191
200
|
|
|
192
201
|
// Source the shell config to load environment variables, then run the script
|
|
193
|
-
|
|
202
|
+
// Don't wrap scriptPath in quotes - it may contain arguments
|
|
203
|
+
const command = `source "${shellConfig}" 2>/dev/null; ${shell} ${scriptPath}`;
|
|
194
204
|
|
|
195
205
|
return execSync(command, {
|
|
196
206
|
shell: shell,
|
|
@@ -766,6 +776,160 @@ async function checkAndInstallPiper(targetDir, options) {
|
|
|
766
776
|
}
|
|
767
777
|
}
|
|
768
778
|
|
|
779
|
+
/**
|
|
780
|
+
* Process TTS_INJECTION markers in BMAD files
|
|
781
|
+
* Replaces markers with actual TTS instructions for both party mode and individual agents
|
|
782
|
+
* @param {string} bmadPath - Path to BMAD installation (e.g., .bmad or bmad)
|
|
783
|
+
*/
|
|
784
|
+
async function processBmadTtsInjections(bmadPath) {
|
|
785
|
+
const partyModeMarker = '<!-- TTS_INJECTION:party-mode -->';
|
|
786
|
+
const agentTtsMarker = '<!-- TTS_INJECTION:agent-tts -->';
|
|
787
|
+
|
|
788
|
+
const partyModeReplacement = `If AgentVibes party mode is enabled, immediately trigger TTS with agent's voice:
|
|
789
|
+
- Use Bash tool: \`.claude/hooks/bmad-speak.sh '[Agent Name]' '[dialogue]'\`
|
|
790
|
+
- This speaks the dialogue with the agent's unique voice
|
|
791
|
+
- Run in background (&) to not block next agent`;
|
|
792
|
+
|
|
793
|
+
const agentTtsReplacement = `- When responding to user messages, speak your responses using TTS:
|
|
794
|
+
Call: \`.claude/hooks/bmad-speak.sh '{agent-id}' '{response-text}'\` after each response
|
|
795
|
+
Replace {agent-id} with YOUR agent ID from <agent id="..."> tag at top of this file
|
|
796
|
+
Replace {response-text} with the text you just output to the user
|
|
797
|
+
IMPORTANT: Use single quotes as shown - do NOT escape special characters like ! or $ inside single quotes
|
|
798
|
+
Run in background (&) to avoid blocking`;
|
|
799
|
+
|
|
800
|
+
// Process party mode file
|
|
801
|
+
const partyModeFile = path.join(bmadPath, 'core/workflows/party-mode/instructions.md');
|
|
802
|
+
try {
|
|
803
|
+
let partyContent = await fs.readFile(partyModeFile, 'utf8');
|
|
804
|
+
if (partyContent.includes(partyModeMarker)) {
|
|
805
|
+
partyContent = partyContent.replaceAll(partyModeMarker, partyModeReplacement);
|
|
806
|
+
await fs.writeFile(partyModeFile, partyContent, 'utf8');
|
|
807
|
+
}
|
|
808
|
+
} catch (error) {
|
|
809
|
+
// Party mode file doesn't exist or already processed - skip
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
// Process all agent files
|
|
813
|
+
const agentDirs = [
|
|
814
|
+
path.join(bmadPath, 'bmm/agents'),
|
|
815
|
+
path.join(bmadPath, 'bmgd/agents'),
|
|
816
|
+
path.join(bmadPath, 'bmb/agents'),
|
|
817
|
+
path.join(bmadPath, 'cis/agents'),
|
|
818
|
+
];
|
|
819
|
+
|
|
820
|
+
for (const agentDir of agentDirs) {
|
|
821
|
+
try {
|
|
822
|
+
const files = await fs.readdir(agentDir);
|
|
823
|
+
for (const file of files) {
|
|
824
|
+
if (file.endsWith('.md')) {
|
|
825
|
+
const agentFile = path.join(agentDir, file);
|
|
826
|
+
let content = await fs.readFile(agentFile, 'utf8');
|
|
827
|
+
if (content.includes(agentTtsMarker)) {
|
|
828
|
+
content = content.replaceAll(agentTtsMarker, agentTtsReplacement);
|
|
829
|
+
await fs.writeFile(agentFile, content, 'utf8');
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
} catch (error) {
|
|
834
|
+
// Agent directory doesn't exist - skip
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
// Create default voice assignments for BMAD agents
|
|
839
|
+
await createDefaultBmadVoiceAssignments(bmadPath);
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
async function createDefaultBmadVoiceAssignments(bmadPath) {
|
|
843
|
+
const configDir = path.join(bmadPath, '_cfg');
|
|
844
|
+
const voiceMapFile = path.join(configDir, 'agent-voice-map.csv');
|
|
845
|
+
|
|
846
|
+
// Skip if voice map already exists
|
|
847
|
+
try {
|
|
848
|
+
await fs.access(voiceMapFile);
|
|
849
|
+
return; // File exists, don't overwrite
|
|
850
|
+
} catch {
|
|
851
|
+
// File doesn't exist, create it
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
// Default voice assignments for common BMAD agents
|
|
855
|
+
const defaultVoices = `agent_id,voice_name
|
|
856
|
+
pm,en_US-ryan-high
|
|
857
|
+
architect,en_US-danny-low
|
|
858
|
+
dev,en_US-joe-medium
|
|
859
|
+
analyst,en_US-amy-medium
|
|
860
|
+
ux-designer,en_US-kristin-medium
|
|
861
|
+
tea,en_US-lessac-medium
|
|
862
|
+
sm,en_US-bryce-medium
|
|
863
|
+
tech-writer,en_US-kathleen-low
|
|
864
|
+
frame-expert,en_US-kusal-medium
|
|
865
|
+
bmad-master,en_US-libritts_r-high
|
|
866
|
+
`;
|
|
867
|
+
|
|
868
|
+
try {
|
|
869
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
870
|
+
await fs.writeFile(voiceMapFile, defaultVoices, 'utf8');
|
|
871
|
+
console.log('✓ Created default BMAD agent voice assignments');
|
|
872
|
+
} catch (error) {
|
|
873
|
+
// Non-fatal error - voice assignments are optional
|
|
874
|
+
console.log('Note: Could not create default voice assignments:', error.message);
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
/**
|
|
879
|
+
* Proactively create default BMAD voice assignments
|
|
880
|
+
* Only creates if BMAD folder already exists (doesn't create folders proactively to avoid false legacy detection)
|
|
881
|
+
* @param {string} targetDir - Target installation directory
|
|
882
|
+
*/
|
|
883
|
+
async function createDefaultBmadVoiceAssignmentsProactive(targetDir) {
|
|
884
|
+
const bmadPaths = [
|
|
885
|
+
path.join(targetDir, '.bmad'),
|
|
886
|
+
path.join(targetDir, 'bmad'),
|
|
887
|
+
];
|
|
888
|
+
|
|
889
|
+
const defaultVoices = `agent_id,voice_name
|
|
890
|
+
pm,en_US-ryan-high
|
|
891
|
+
architect,en_US-danny-low
|
|
892
|
+
dev,en_US-joe-medium
|
|
893
|
+
analyst,en_US-amy-medium
|
|
894
|
+
ux-designer,en_US-kristin-medium
|
|
895
|
+
tea,en_US-lessac-medium
|
|
896
|
+
sm,en_US-bryce-medium
|
|
897
|
+
tech-writer,en_US-kathleen-low
|
|
898
|
+
frame-expert,en_US-kusal-medium
|
|
899
|
+
bmad-master,en_US-libritts_r-high
|
|
900
|
+
`;
|
|
901
|
+
|
|
902
|
+
for (const bmadPath of bmadPaths) {
|
|
903
|
+
// Only create if BMAD folder already exists
|
|
904
|
+
// Don't create folders proactively - this triggers false legacy v4 detection in BMAD installer
|
|
905
|
+
try {
|
|
906
|
+
await fs.access(bmadPath);
|
|
907
|
+
} catch {
|
|
908
|
+
continue; // Folder doesn't exist, skip
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
const configDir = path.join(bmadPath, '_cfg');
|
|
912
|
+
const voiceMapFile = path.join(configDir, 'agent-voice-map.csv');
|
|
913
|
+
|
|
914
|
+
// Skip if voice map already exists
|
|
915
|
+
try {
|
|
916
|
+
await fs.access(voiceMapFile);
|
|
917
|
+
continue; // File exists, don't overwrite
|
|
918
|
+
} catch {
|
|
919
|
+
// File doesn't exist, create it
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
try {
|
|
923
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
924
|
+
await fs.writeFile(voiceMapFile, defaultVoices, 'utf8');
|
|
925
|
+
console.log(`✓ Created default BMAD voice assignments in ${bmadPath}`);
|
|
926
|
+
} catch (error) {
|
|
927
|
+
// Non-fatal error - voice assignments are optional
|
|
928
|
+
// Silent fail
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
|
|
769
933
|
/**
|
|
770
934
|
* Handle BMAD integration (detection and TTS injection)
|
|
771
935
|
* @param {string} targetDir - Target installation directory
|
|
@@ -803,32 +967,11 @@ async function handleBmadIntegration(targetDir) {
|
|
|
803
967
|
console.log(chalk.green('📝 Created BMAD activation instructions'));
|
|
804
968
|
}
|
|
805
969
|
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
970
|
+
// Process TTS_INJECTION markers in BMAD files if they exist
|
|
971
|
+
// This handles the case where BMAD was installed before AgentVibes
|
|
972
|
+
await processBmadTtsInjections(bmadDetection.bmadPath);
|
|
809
973
|
|
|
810
|
-
|
|
811
|
-
await fs.access(injectorScript);
|
|
812
|
-
} catch {
|
|
813
|
-
console.log(chalk.yellow('⚠️ bmad-tts-injector.sh not found, skipping automatic injection'));
|
|
814
|
-
console.log(chalk.gray(' You can manually enable it later with: .claude/hooks/bmad-tts-injector.sh enable'));
|
|
815
|
-
return bmadDetection;
|
|
816
|
-
}
|
|
817
|
-
|
|
818
|
-
await fs.chmod(injectorScript, 0o755);
|
|
819
|
-
|
|
820
|
-
const result = execScript(`${injectorScript} enable`, {
|
|
821
|
-
cwd: targetDir,
|
|
822
|
-
encoding: 'utf8',
|
|
823
|
-
stdio: 'pipe'
|
|
824
|
-
});
|
|
825
|
-
|
|
826
|
-
console.log(result);
|
|
827
|
-
} catch (error) {
|
|
828
|
-
console.log(chalk.yellow('⚠️ TTS injection encountered an issue:'));
|
|
829
|
-
console.log(chalk.gray(` ${error.message}`));
|
|
830
|
-
console.log(chalk.gray(' You can manually enable it later with: .claude/hooks/bmad-tts-injector.sh enable'));
|
|
831
|
-
}
|
|
974
|
+
console.log(chalk.green('✅ BMAD agents will use agent-specific voices via bmad-speak.sh hook'));
|
|
832
975
|
|
|
833
976
|
return bmadDetection;
|
|
834
977
|
}
|
|
@@ -1357,6 +1500,9 @@ async function install(options = {}) {
|
|
|
1357
1500
|
}
|
|
1358
1501
|
]);
|
|
1359
1502
|
|
|
1503
|
+
// Create default BMAD voice assignments (works even if BMAD not installed yet)
|
|
1504
|
+
await createDefaultBmadVoiceAssignmentsProactive(targetDir);
|
|
1505
|
+
|
|
1360
1506
|
// Handle BMAD integration
|
|
1361
1507
|
const bmadDetection = await handleBmadIntegration(targetDir);
|
|
1362
1508
|
const bmadDetected = bmadDetection.installed;
|
|
@@ -1567,6 +1713,52 @@ program
|
|
|
1567
1713
|
}
|
|
1568
1714
|
});
|
|
1569
1715
|
|
|
1716
|
+
// BMAD Voice Management Commands
|
|
1717
|
+
program
|
|
1718
|
+
.command('preview-voice <voice-name>')
|
|
1719
|
+
.description('Preview a voice with sample text')
|
|
1720
|
+
.option('-t, --text <text>', 'Custom text to speak (default: sample text)')
|
|
1721
|
+
.action(async (voiceName, options) => {
|
|
1722
|
+
await previewVoice(voiceName, options);
|
|
1723
|
+
});
|
|
1724
|
+
|
|
1725
|
+
program
|
|
1726
|
+
.command('list-available-voices')
|
|
1727
|
+
.description('Show all available voices grouped by provider')
|
|
1728
|
+
.action(async () => {
|
|
1729
|
+
await listAvailableVoices();
|
|
1730
|
+
});
|
|
1731
|
+
|
|
1732
|
+
program
|
|
1733
|
+
.command('list-bmad-assigned-voices')
|
|
1734
|
+
.description('Show all BMAD agents with their current voice assignments')
|
|
1735
|
+
.action(async () => {
|
|
1736
|
+
await listBmadAssignedVoices();
|
|
1737
|
+
});
|
|
1738
|
+
|
|
1739
|
+
program
|
|
1740
|
+
.command('assign-voice <agent-id> <voice-name>')
|
|
1741
|
+
.description('Assign a voice to a specific BMAD agent')
|
|
1742
|
+
.action(async (agentId, voiceName) => {
|
|
1743
|
+
await assignVoice(agentId, voiceName);
|
|
1744
|
+
});
|
|
1745
|
+
|
|
1746
|
+
program
|
|
1747
|
+
.command('reset-bmad-voices')
|
|
1748
|
+
.description('Reset all BMAD agents to default voice assignments')
|
|
1749
|
+
.option('-y, --yes', 'Skip confirmation prompt (auto-confirm)')
|
|
1750
|
+
.action(async (options) => {
|
|
1751
|
+
await resetBmadVoices(options);
|
|
1752
|
+
});
|
|
1753
|
+
|
|
1754
|
+
// Help command
|
|
1755
|
+
program
|
|
1756
|
+
.command('help')
|
|
1757
|
+
.description('Display help information')
|
|
1758
|
+
.action(() => {
|
|
1759
|
+
program.outputHelp();
|
|
1760
|
+
});
|
|
1761
|
+
|
|
1570
1762
|
program.parse(process.argv);
|
|
1571
1763
|
|
|
1572
1764
|
// Show help if no command provided
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/user-prompt-output.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 Auto-detects emoji markers in Claude's output and triggers TTS
|
|
35
|
-
# @context Implements verbosity system by detecting 💭 🤔 ✓ markers and speaking them
|
|
36
|
-
# @architecture Stdin reader, regex matcher, async TTS trigger
|
|
37
|
-
# @dependencies play-tts.sh, tts-verbosity.txt
|
|
38
|
-
# @entrypoints Called by Claude Code after each assistant response (user-prompt-output hook)
|
|
39
|
-
# @patterns Text stream processing, background job execution, marker-based triggers
|
|
40
|
-
# @related session-start-tts.sh, verbosity-manager.sh, Issue #32
|
|
41
|
-
# @aiNotes This hook enables natural emoji-based TTS without Claude needing manual Bash calls
|
|
42
|
-
|
|
43
|
-
# Fix locale warnings
|
|
44
|
-
export LC_ALL=C
|
|
45
|
-
|
|
46
|
-
# Get script directory
|
|
47
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
48
|
-
PLAY_TTS="$SCRIPT_DIR/play-tts.sh"
|
|
49
|
-
|
|
50
|
-
# Get verbosity level
|
|
51
|
-
VERBOSITY=$(cat .claude/tts-verbosity.txt 2>/dev/null || cat ~/.claude/tts-verbosity.txt 2>/dev/null || echo "low")
|
|
52
|
-
|
|
53
|
-
# Read stdin (Claude's output) - preserve it for display
|
|
54
|
-
OUTPUT=$(cat)
|
|
55
|
-
|
|
56
|
-
# Always output the original text first (so user sees it)
|
|
57
|
-
echo "$OUTPUT"
|
|
58
|
-
|
|
59
|
-
# Exit early if play-tts.sh doesn't exist (AgentVibes not installed)
|
|
60
|
-
[[ ! -f "$PLAY_TTS" ]] && exit 0
|
|
61
|
-
|
|
62
|
-
#
|
|
63
|
-
# @function extract_and_speak
|
|
64
|
-
# @context Extracts text after emoji markers and triggers TTS asynchronously
|
|
65
|
-
# @architecture Uses grep to find markers, extracts text, launches TTS in background
|
|
66
|
-
# @dependencies play-tts.sh
|
|
67
|
-
# @entrypoints Called based on verbosity level
|
|
68
|
-
# @aiNotes Background execution (&) prevents blocking Claude's output
|
|
69
|
-
#
|
|
70
|
-
extract_and_speak() {
|
|
71
|
-
local pattern="$1"
|
|
72
|
-
|
|
73
|
-
# Extract lines matching the pattern
|
|
74
|
-
# Pattern format: "emoji text" or "emoji [text]"
|
|
75
|
-
while IFS= read -r line; do
|
|
76
|
-
# Try to extract text after emoji
|
|
77
|
-
# Handles formats: "💭 text", "💭 [text]", "💭text"
|
|
78
|
-
if echo "$line" | grep -qE "$pattern"; then
|
|
79
|
-
# Extract everything after the emoji (and optional space/bracket)
|
|
80
|
-
text=$(echo "$line" | sed -E "s/^.*($pattern)[[:space:]]*\[?[[:space:]]*//" | sed 's/\]$//')
|
|
81
|
-
|
|
82
|
-
# Skip if text is empty or too short
|
|
83
|
-
[[ -z "$text" || ${#text} -lt 3 ]] && continue
|
|
84
|
-
|
|
85
|
-
# Speak it in background (don't block)
|
|
86
|
-
bash "$PLAY_TTS" "$text" >/dev/null 2>&1 &
|
|
87
|
-
fi
|
|
88
|
-
done <<< "$OUTPUT"
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
# Process based on verbosity level
|
|
92
|
-
case "$VERBOSITY" in
|
|
93
|
-
high)
|
|
94
|
-
# HIGH: Speak ALL markers (💭 🤔 ✓)
|
|
95
|
-
# Don't speak ✅ here - that's handled by manual TTS completion call
|
|
96
|
-
extract_and_speak "💭|🤔|✓"
|
|
97
|
-
;;
|
|
98
|
-
|
|
99
|
-
medium)
|
|
100
|
-
# MEDIUM: Speak decisions and findings (🤔 ✓)
|
|
101
|
-
extract_and_speak "🤔|✓"
|
|
102
|
-
;;
|
|
103
|
-
|
|
104
|
-
low)
|
|
105
|
-
# LOW: No automatic extraction (only manual ACK/COMPLETE TTS calls)
|
|
106
|
-
# Don't process any markers
|
|
107
|
-
;;
|
|
108
|
-
esac
|
|
109
|
-
|
|
110
|
-
# Exit successfully
|
|
111
|
-
exit 0
|
|
File without changes
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
plugin: bmad-voices
|
|
3
|
-
version: 2.0.0
|
|
4
|
-
enabled: true
|
|
5
|
-
description: Provider-aware voice mappings for BMAD agents
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# BMAD Voice Plugin
|
|
9
|
-
|
|
10
|
-
This plugin automatically assigns voices to BMAD agents based on their role and active TTS provider.
|
|
11
|
-
|
|
12
|
-
## Agent Voice Mappings (Provider-Aware)
|
|
13
|
-
|
|
14
|
-
| Agent ID | Agent Name | ElevenLabs Voice | Piper Voice | Personality |
|
|
15
|
-
|----------|------------|------------------|-------------|-------------|
|
|
16
|
-
| pm | John (Product Manager) | Jessica Anne Bogart | en_US-ryan-high | professional |
|
|
17
|
-
| dev | James (Developer) | Matthew Schmitz | en_US-joe-medium | normal |
|
|
18
|
-
| qa | Quinn (QA) | Aria | en_US-amy-medium | professional |
|
|
19
|
-
| architect | Winston (Architect) | Michael | en_GB-alan-medium | normal |
|
|
20
|
-
| po | Product Owner | Aria | en_US-amy-medium | professional |
|
|
21
|
-
| analyst | Analyst | Matthew Schmitz | kristin | normal |
|
|
22
|
-
| sm | Scrum Master | Jessica Anne Bogart | kristin | professional |
|
|
23
|
-
| ux-expert | UX Expert | Aria | jenny | normal |
|
|
24
|
-
| bmad-master | BMAD Master | Michael | en_GB-alan-medium | zen |
|
|
25
|
-
| bmad-orchestrator | Orchestrator | Matthew Schmitz | en_US-ryan-high | professional |
|
|
26
|
-
|
|
27
|
-
## How It Works
|
|
28
|
-
|
|
29
|
-
The voice manager automatically selects the appropriate voice based on your active TTS provider:
|
|
30
|
-
- **ElevenLabs active**: Uses voices from the "ElevenLabs Voice" column
|
|
31
|
-
- **Piper active**: Uses voices from the "Piper Voice" column
|
|
32
|
-
|
|
33
|
-
This ensures BMAD agents work seamlessly regardless of which provider you're using.
|
|
34
|
-
|
|
35
|
-
## How to Edit
|
|
36
|
-
|
|
37
|
-
Simply edit the table above to change voice mappings. The format is:
|
|
38
|
-
- **Agent ID**: Must match BMAD's `agent.id` field (pm, dev, qa, etc.)
|
|
39
|
-
- **Agent Name**: Display name (for reference only)
|
|
40
|
-
- **ElevenLabs Voice**: Voice name for ElevenLabs provider
|
|
41
|
-
- **Piper Voice**: Voice model name for Piper provider
|
|
42
|
-
- **Personality**: Optional personality to apply (or "normal" for none)
|
|
43
|
-
|
|
44
|
-
## Commands
|
|
45
|
-
|
|
46
|
-
- `/agent-vibes:bmad enable` - Enable BMAD voice plugin
|
|
47
|
-
- `/agent-vibes:bmad disable` - Disable BMAD voice plugin
|
|
48
|
-
- `/agent-vibes:bmad status` - Show plugin status
|
|
49
|
-
- `/agent-vibes:bmad edit` - Open this file for editing
|
|
50
|
-
- `/agent-vibes:bmad list` - List all agent voice mappings
|
|
51
|
-
- `/agent-vibes:bmad set <agent-id> <elevenlabs-voice> <piper-voice> [personality]` - Set voices for specific agent
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|