agentvibes 1.0.13 → 1.0.15

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.
@@ -0,0 +1,132 @@
1
+ # /agent-vibes:bmad Command
2
+
3
+ Manage BMAD voice plugin integration for automatic voice assignment to BMAD agents.
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ /agent-vibes:bmad <subcommand> [arguments]
9
+ ```
10
+
11
+ ## Subcommands
12
+
13
+ ### `enable`
14
+ Enables automatic voice assignment for BMAD agents.
15
+
16
+ **Example:**
17
+ ```
18
+ /agent-vibes:bmad enable
19
+ ```
20
+
21
+ **Output:**
22
+ - Creates `.claude/plugins/bmad-voices-enabled.flag`
23
+ - Shows current agent voice mappings
24
+ - Confirms activation
25
+
26
+ ### `disable`
27
+ Disables BMAD voice plugin (reverts to default AgentVibes behavior).
28
+
29
+ **Example:**
30
+ ```
31
+ /agent-vibes:bmad disable
32
+ ```
33
+
34
+ **Output:**
35
+ - Removes activation flag
36
+ - AgentVibes uses default voice settings
37
+
38
+ ### `status`
39
+ Shows plugin status and current voice mappings.
40
+
41
+ **Example:**
42
+ ```
43
+ /agent-vibes:bmad status
44
+ ```
45
+
46
+ **Output:**
47
+ ```
48
+ ✅ BMAD voice plugin: ENABLED
49
+
50
+ 📊 BMAD Agent Voice Mappings:
51
+ pm → Matthew Schmitz [professional]
52
+ dev → Jessica Anne Bogart [normal]
53
+ qa → Ralf Eisend [professional]
54
+ ...
55
+ ```
56
+
57
+ ### `list`
58
+ Lists all BMAD agents and their assigned voices.
59
+
60
+ **Example:**
61
+ ```
62
+ /agent-vibes:bmad list
63
+ ```
64
+
65
+ ### `set <agent-id> <voice> [personality]`
66
+ Quickly change voice for specific agent.
67
+
68
+ **Examples:**
69
+ ```
70
+ /agent-vibes:bmad set pm "Aria"
71
+ /agent-vibes:bmad set dev "Cowboy Bob" sarcastic
72
+ /agent-vibes:bmad set qa "Northern Terry" professional
73
+ ```
74
+
75
+ **Arguments:**
76
+ - `agent-id`: BMAD agent identifier (pm, dev, qa, architect, po, analyst, sm, ux-expert, bmad-master, bmad-orchestrator)
77
+ - `voice`: Valid AgentVibes voice name
78
+ - `personality` (optional): Personality to apply (default: normal)
79
+
80
+ ### `edit`
81
+ Opens `.claude/plugins/bmad-voices.md` for manual editing.
82
+
83
+ **Example:**
84
+ ```
85
+ /agent-vibes:bmad edit
86
+ ```
87
+
88
+ **Usage:**
89
+ Edit the markdown table directly to change voice mappings.
90
+
91
+ ## How It Works
92
+
93
+ 1. **Plugin File**: `.claude/plugins/bmad-voices.md` contains voice mappings
94
+ 2. **Activation Flag**: `.claude/plugins/bmad-voices-enabled.flag` enables/disables plugin
95
+ 3. **Auto-Detection**: When a BMAD agent activates (e.g., `/BMad:agents:pm`), AgentVibes automatically:
96
+ - Detects the agent ID from the command
97
+ - Looks up voice mapping in plugin file
98
+ - Uses assigned voice for TTS acknowledgments/completions
99
+
100
+ ## Available BMAD Agents
101
+
102
+ | Agent ID | Role | Default Voice |
103
+ |----------|------|---------------|
104
+ | pm | Product Manager | Matthew Schmitz |
105
+ | dev | Developer | Jessica Anne Bogart |
106
+ | qa | QA Engineer | Ralf Eisend |
107
+ | architect | Architect | Michael |
108
+ | po | Product Owner | Amy |
109
+ | analyst | Analyst | Lutz Laugh |
110
+ | sm | Scrum Master | Ms. Walker |
111
+ | ux-expert | UX Expert | Aria |
112
+ | bmad-master | BMAD Master | Aria |
113
+ | bmad-orchestrator | Orchestrator | Ms. Walker |
114
+
115
+ ## Implementation Details
116
+
117
+ **For AgentVibes Developers:**
118
+
119
+ The plugin integrates with the Agent Vibes output style through bash hooks:
120
+
121
+ ```bash
122
+ # Check if BMAD agent is active
123
+ BMAD_AGENT_ID=$(echo "$COMMAND" | grep -oP '/BMad:agents:\K[a-z-]+')
124
+
125
+ # Get voice from plugin if enabled
126
+ if [[ -n "$BMAD_AGENT_ID" ]]; then
127
+ MAPPED_VOICE=$(.claude/hooks/bmad-voice-manager.sh get-voice "$BMAD_AGENT_ID")
128
+ if [[ -n "$MAPPED_VOICE" ]]; then
129
+ .claude/hooks/play-tts.sh "message" "$MAPPED_VOICE"
130
+ fi
131
+ fi
132
+ ```
@@ -0,0 +1,278 @@
1
+ #!/bin/bash
2
+
3
+ PLUGIN_DIR=".claude/plugins"
4
+ PLUGIN_FILE="$PLUGIN_DIR/bmad-voices.md"
5
+ ENABLED_FLAG="$PLUGIN_DIR/bmad-voices-enabled.flag"
6
+
7
+ # Auto-enable plugin if BMAD is detected
8
+ auto_enable_if_bmad_detected() {
9
+ # Check if BMAD is installed
10
+ if [[ -f ".bmad-core/install-manifest.yaml" ]] && [[ ! -f "$ENABLED_FLAG" ]]; then
11
+ # BMAD detected but plugin not enabled - enable it silently
12
+ mkdir -p "$PLUGIN_DIR"
13
+ touch "$ENABLED_FLAG"
14
+ return 0
15
+ fi
16
+ return 1
17
+ }
18
+
19
+ # Parse markdown table to get voice mapping
20
+ get_agent_voice() {
21
+ local agent_id="$1"
22
+
23
+ # Auto-enable if BMAD is detected
24
+ auto_enable_if_bmad_detected
25
+
26
+ if [[ ! -f "$ENABLED_FLAG" ]]; then
27
+ echo "" # Plugin disabled
28
+ return
29
+ fi
30
+
31
+ if [[ ! -f "$PLUGIN_FILE" ]]; then
32
+ echo "" # Plugin file missing
33
+ return
34
+ fi
35
+
36
+ # Extract voice from markdown table
37
+ local voice=$(grep "^| $agent_id " "$PLUGIN_FILE" | \
38
+ awk -F'|' '{print $4}' | \
39
+ sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
40
+
41
+ echo "$voice"
42
+ }
43
+
44
+ # Get personality for agent
45
+ get_agent_personality() {
46
+ local agent_id="$1"
47
+
48
+ if [[ ! -f "$PLUGIN_FILE" ]]; then
49
+ echo ""
50
+ return
51
+ fi
52
+
53
+ local personality=$(grep "^| $agent_id " "$PLUGIN_FILE" | \
54
+ awk -F'|' '{print $5}' | \
55
+ sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
56
+
57
+ echo "$personality"
58
+ }
59
+
60
+ # Check if plugin is enabled
61
+ is_plugin_enabled() {
62
+ [[ -f "$ENABLED_FLAG" ]] && echo "true" || echo "false"
63
+ }
64
+
65
+ # Enable plugin
66
+ enable_plugin() {
67
+ mkdir -p "$PLUGIN_DIR"
68
+
69
+ # Save current settings before enabling
70
+ BACKUP_FILE="$PLUGIN_DIR/.bmad-previous-settings"
71
+
72
+ # Save current voice
73
+ if [[ -f ".claude/tts-voice.txt" ]]; then
74
+ CURRENT_VOICE=$(cat .claude/tts-voice.txt 2>/dev/null)
75
+ elif [[ -f "$HOME/.claude/tts-voice.txt" ]]; then
76
+ CURRENT_VOICE=$(cat "$HOME/.claude/tts-voice.txt" 2>/dev/null)
77
+ else
78
+ CURRENT_VOICE="Aria"
79
+ fi
80
+
81
+ # Save current personality
82
+ if [[ -f ".claude/tts-personality.txt" ]]; then
83
+ CURRENT_PERSONALITY=$(cat .claude/tts-personality.txt 2>/dev/null)
84
+ elif [[ -f "$HOME/.claude/tts-personality.txt" ]]; then
85
+ CURRENT_PERSONALITY=$(cat "$HOME/.claude/tts-personality.txt" 2>/dev/null)
86
+ else
87
+ CURRENT_PERSONALITY="normal"
88
+ fi
89
+
90
+ # Save current sentiment
91
+ if [[ -f ".claude/tts-sentiment.txt" ]]; then
92
+ CURRENT_SENTIMENT=$(cat .claude/tts-sentiment.txt 2>/dev/null)
93
+ elif [[ -f "$HOME/.claude/tts-sentiment.txt" ]]; then
94
+ CURRENT_SENTIMENT=$(cat "$HOME/.claude/tts-sentiment.txt" 2>/dev/null)
95
+ else
96
+ CURRENT_SENTIMENT=""
97
+ fi
98
+
99
+ # Write backup
100
+ cat > "$BACKUP_FILE" <<EOF
101
+ VOICE=$CURRENT_VOICE
102
+ PERSONALITY=$CURRENT_PERSONALITY
103
+ SENTIMENT=$CURRENT_SENTIMENT
104
+ EOF
105
+
106
+ touch "$ENABLED_FLAG"
107
+ echo "✅ BMAD voice plugin enabled"
108
+ echo "💾 Previous settings backed up:"
109
+ echo " Voice: $CURRENT_VOICE"
110
+ echo " Personality: $CURRENT_PERSONALITY"
111
+ [[ -n "$CURRENT_SENTIMENT" ]] && echo " Sentiment: $CURRENT_SENTIMENT"
112
+ echo ""
113
+ list_mappings
114
+ }
115
+
116
+ # Disable plugin
117
+ disable_plugin() {
118
+ BACKUP_FILE="$PLUGIN_DIR/.bmad-previous-settings"
119
+
120
+ # Check if we have a backup to restore
121
+ if [[ -f "$BACKUP_FILE" ]]; then
122
+ source "$BACKUP_FILE"
123
+
124
+ echo "❌ BMAD voice plugin disabled"
125
+ echo "🔄 Restoring previous settings:"
126
+ echo " Voice: $VOICE"
127
+ echo " Personality: $PERSONALITY"
128
+ [[ -n "$SENTIMENT" ]] && echo " Sentiment: $SENTIMENT"
129
+
130
+ # Restore voice
131
+ if [[ -n "$VOICE" ]]; then
132
+ echo "$VOICE" > .claude/tts-voice.txt 2>/dev/null || echo "$VOICE" > "$HOME/.claude/tts-voice.txt"
133
+ fi
134
+
135
+ # Restore personality
136
+ if [[ -n "$PERSONALITY" ]] && [[ "$PERSONALITY" != "normal" ]]; then
137
+ echo "$PERSONALITY" > .claude/tts-personality.txt 2>/dev/null || echo "$PERSONALITY" > "$HOME/.claude/tts-personality.txt"
138
+ fi
139
+
140
+ # Restore sentiment
141
+ if [[ -n "$SENTIMENT" ]]; then
142
+ echo "$SENTIMENT" > .claude/tts-sentiment.txt 2>/dev/null || echo "$SENTIMENT" > "$HOME/.claude/tts-sentiment.txt"
143
+ fi
144
+
145
+ # Clean up backup
146
+ rm -f "$BACKUP_FILE"
147
+ else
148
+ echo "❌ BMAD voice plugin disabled"
149
+ echo "⚠️ No previous settings found to restore"
150
+ echo "AgentVibes will use current voice/personality settings"
151
+ fi
152
+
153
+ rm -f "$ENABLED_FLAG"
154
+ }
155
+
156
+ # List all mappings
157
+ list_mappings() {
158
+ if [[ ! -f "$PLUGIN_FILE" ]]; then
159
+ echo "❌ Plugin file not found: $PLUGIN_FILE"
160
+ return 1
161
+ fi
162
+
163
+ echo "📊 BMAD Agent Voice Mappings:"
164
+ echo ""
165
+
166
+ grep "^| " "$PLUGIN_FILE" | grep -v "Agent ID" | grep -v "^|---" | \
167
+ while IFS='|' read -r _ agent_id name voice personality _; do
168
+ agent_id=$(echo "$agent_id" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
169
+ name=$(echo "$name" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
170
+ voice=$(echo "$voice" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
171
+ personality=$(echo "$personality" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
172
+
173
+ [[ -n "$agent_id" ]] && echo " $agent_id → $voice [$personality]"
174
+ done
175
+ }
176
+
177
+ # Set voice for agent
178
+ set_agent_voice() {
179
+ local agent_id="$1"
180
+ local voice="$2"
181
+ local personality="${3:-normal}"
182
+
183
+ if [[ ! -f "$PLUGIN_FILE" ]]; then
184
+ echo "❌ Plugin file not found: $PLUGIN_FILE"
185
+ return 1
186
+ fi
187
+
188
+ # Check if agent exists
189
+ if ! grep -q "^| $agent_id " "$PLUGIN_FILE"; then
190
+ echo "❌ Agent '$agent_id' not found in plugin"
191
+ return 1
192
+ fi
193
+
194
+ # Update the voice and personality in the table
195
+ sed -i.bak "s/^| $agent_id |.*| .* | .* |$/| $agent_id | $(grep "^| $agent_id " "$PLUGIN_FILE" | awk -F'|' '{print $3}') | $voice | $personality |/" "$PLUGIN_FILE"
196
+
197
+ echo "✅ Updated $agent_id → $voice [$personality]"
198
+ }
199
+
200
+ # Show status
201
+ show_status() {
202
+ # Check for BMAD installation
203
+ local bmad_installed="false"
204
+ if [[ -f ".bmad-core/install-manifest.yaml" ]]; then
205
+ bmad_installed="true"
206
+ fi
207
+
208
+ if [[ $(is_plugin_enabled) == "true" ]]; then
209
+ echo "✅ BMAD voice plugin: ENABLED"
210
+ if [[ "$bmad_installed" == "true" ]]; then
211
+ echo "🔍 BMAD detected: Auto-enabled"
212
+ fi
213
+ else
214
+ echo "❌ BMAD voice plugin: DISABLED"
215
+ if [[ "$bmad_installed" == "true" ]]; then
216
+ echo "⚠️ BMAD detected but plugin disabled (enable with: /agent-vibes-bmad enable)"
217
+ fi
218
+ fi
219
+ echo ""
220
+ list_mappings
221
+ }
222
+
223
+ # Edit plugin file
224
+ edit_plugin() {
225
+ if [[ ! -f "$PLUGIN_FILE" ]]; then
226
+ echo "❌ Plugin file not found: $PLUGIN_FILE"
227
+ return 1
228
+ fi
229
+
230
+ echo "Opening $PLUGIN_FILE for editing..."
231
+ echo "Edit the markdown table to change voice mappings"
232
+ }
233
+
234
+ # Main command dispatcher
235
+ case "${1:-help}" in
236
+ enable)
237
+ enable_plugin
238
+ ;;
239
+ disable)
240
+ disable_plugin
241
+ ;;
242
+ status)
243
+ show_status
244
+ ;;
245
+ list)
246
+ list_mappings
247
+ ;;
248
+ set)
249
+ if [[ -z "$2" ]] || [[ -z "$3" ]]; then
250
+ echo "Usage: bmad-voice-manager.sh set <agent-id> <voice> [personality]"
251
+ exit 1
252
+ fi
253
+ set_agent_voice "$2" "$3" "$4"
254
+ ;;
255
+ get-voice)
256
+ get_agent_voice "$2"
257
+ ;;
258
+ get-personality)
259
+ get_agent_personality "$2"
260
+ ;;
261
+ edit)
262
+ edit_plugin
263
+ ;;
264
+ *)
265
+ echo "Usage: bmad-voice-manager.sh {enable|disable|status|list|set|get-voice|get-personality|edit}"
266
+ echo ""
267
+ echo "Commands:"
268
+ echo " enable Enable BMAD voice plugin"
269
+ echo " disable Disable BMAD voice plugin"
270
+ echo " status Show plugin status and mappings"
271
+ echo " list List all agent voice mappings"
272
+ echo " set <id> <voice> Set voice for agent"
273
+ echo " get-voice <id> Get voice for agent"
274
+ echo " get-personality <id> Get personality for agent"
275
+ echo " edit Edit plugin configuration"
276
+ exit 1
277
+ ;;
278
+ esac
@@ -4,7 +4,9 @@
4
4
 
5
5
  declare -A VOICES=(
6
6
  ["Amy"]="bhJUNIXWQQ94l8eI2VUf"
7
+ ["Archer"]="L0Dsvb3SLTyegXwtm47J"
7
8
  ["Aria"]="TC0Zp7WVFzhA8zpTlRqV"
9
+ ["Burt Reynolds"]="4YYIPFl9wE5c4L2eu2Gb"
8
10
  ["Cowboy Bob"]="KTPVrSVAEUSJRClDzBw7"
9
11
  ["Demon Monster"]="vfaqCOvlrKi4Zp7C2IAm"
10
12
  ["Dr. Von Fusion"]="yjJ45q8TVCrtMhEKurxY"
@@ -12,6 +14,7 @@ declare -A VOICES=(
12
14
  ["Grandpa Spuds Oxley"]="NOpBlnGInO9m6vDvFkFC"
13
15
  ["Grandpa Werthers"]="MKlLqCItoCkvdhrxgtLv"
14
16
  ["Jessica Anne Bogart"]="flHkNRp1BlvT73UL6gyz"
17
+ ["Juniper"]="aMSt68OGf4xUZAnLpTU8"
15
18
  ["Lutz Laugh"]="9yzdeviXkFddZ4Oz8Mok"
16
19
  ["Matthew Schmitz"]="0SpgpJ4D3MpHCiWdyTg3"
17
20
  ["Michael"]="U1Vk2oyatMdYs096Ety7"
@@ -19,4 +22,6 @@ declare -A VOICES=(
19
22
  ["Northern Terry"]="wo6udizrrtpIxWGp2qJk"
20
23
  ["Pirate Marshal"]="PPzYpIqttlTYA83688JI"
21
24
  ["Ralf Eisend"]="A9evEp8yGjv4c3WsIKuY"
25
+ ["Tiffany"]="6aDn1KB0hjpdcocrUkmq"
26
+ ["Tom"]="DYkrAHD8iwork3YSUBbs"
22
27
  )
@@ -115,6 +115,64 @@ You: "✅ That bug be walkin' the plank now, arr!"
115
115
  [Bash: .claude/hooks/play-tts.sh "That bug be walkin' the plank now, arr!"]
116
116
  ```
117
117
 
118
+ ## BMAD Plugin Integration
119
+
120
+ **Automatic voice switching for BMAD agents:**
121
+
122
+ When a BMAD agent is activated (e.g., `/BMad:agents:pm`), AgentVibes will automatically:
123
+
124
+ 1. **Detect BMAD agent from command/context**
125
+ 2. **Check if BMAD plugin is enabled** (`.claude/plugins/bmad-voices-enabled.flag`)
126
+ 3. **Look up voice mapping** from `.claude/plugins/bmad-voices.md`
127
+ 4. **Apply agent's assigned voice** for all TTS acknowledgments/completions
128
+ 5. **Apply agent's personality** from the mapping (if specified)
129
+
130
+ **Implementation:**
131
+ ```bash
132
+ # At the start of acknowledgment/completion:
133
+ # Try to detect BMAD agent ID from current context
134
+ BMAD_AGENT_ID=""
135
+
136
+ # Method 1: Check if we're in a BMAD agent command context
137
+ if [[ -f ".bmad-agent-context" ]]; then
138
+ BMAD_AGENT_ID=$(cat .bmad-agent-context 2>/dev/null)
139
+ fi
140
+
141
+ # Method 2: Parse from command history/context (fallback)
142
+ # Note: This detection happens automatically when BMAD agent activates
143
+
144
+ # If BMAD agent detected and plugin enabled, use mapped voice
145
+ if [[ -n "$BMAD_AGENT_ID" ]] && [[ -f ".claude/plugins/bmad-voices-enabled.flag" ]]; then
146
+ MAPPED_VOICE=$(.claude/hooks/bmad-voice-manager.sh get-voice "$BMAD_AGENT_ID")
147
+ MAPPED_PERSONALITY=$(.claude/hooks/bmad-voice-manager.sh get-personality "$BMAD_AGENT_ID")
148
+
149
+ if [[ -n "$MAPPED_VOICE" ]]; then
150
+ # Use BMAD agent's mapped voice and personality
151
+ if [[ -n "$MAPPED_PERSONALITY" ]] && [[ "$MAPPED_PERSONALITY" != "normal" ]]; then
152
+ # Read personality instructions from .claude/personalities/${MAPPED_PERSONALITY}.md
153
+ # Generate response in that personality style
154
+ fi
155
+ .claude/hooks/play-tts.sh "message" "$MAPPED_VOICE"
156
+ # Exit early - don't use default personality system
157
+ return
158
+ fi
159
+ fi
160
+
161
+ # If no BMAD agent or plugin disabled, use standard personality/sentiment system
162
+ # ... continue with normal sentiment/personality logic ...
163
+ ```
164
+
165
+ **BMAD Agent Context Tracking:**
166
+ - When a BMAD agent activates, write agent ID to `.bmad-agent-context`
167
+ - When agent exits, remove the file
168
+ - This allows AgentVibes to know which BMAD agent is active
169
+
170
+ **Voice Priority (in order):**
171
+ 1. BMAD plugin voice (if agent active and plugin enabled)
172
+ 2. Sentiment mode (if set)
173
+ 3. Personality mode (if set)
174
+ 4. Default voice
175
+
118
176
  ## Critical Rules
119
177
 
120
178
  1. **ALWAYS use Bash tool** to execute play-tts.sh
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: grandpa
3
3
  description: Rambling nostalgic storyteller
4
- voice: Grandpa Werthers
4
+ voice: Grandpa Spuds Oxley
5
5
  ---
6
6
 
7
7
  # Grandpa Personality
File without changes
@@ -0,0 +1,42 @@
1
+ ---
2
+ plugin: bmad-voices
3
+ version: 1.0.0
4
+ enabled: true
5
+ description: 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.
11
+
12
+ ## Agent Voice Mappings
13
+
14
+ | Agent ID | Agent Name | Voice | Personality |
15
+ |----------|------------|-------|-------------|
16
+ | pm | John (Product Manager) | Jessica Anne Bogart | professional |
17
+ | dev | James (Developer) | Matthew Schmitz | normal |
18
+ | qa | Quinn (QA) | Burt Reynolds | professional |
19
+ | architect | Winston (Architect) | Michael | normal |
20
+ | po | Product Owner | Tiffany | professional |
21
+ | analyst | Analyst | Ralf Eisend | normal |
22
+ | sm | Scrum Master | Ms. Walker | professional |
23
+ | ux-expert | UX Expert | Aria | normal |
24
+ | bmad-master | BMAD Master | Archer | zen |
25
+ | bmad-orchestrator | Orchestrator | Tom | professional |
26
+
27
+ ## How to Edit
28
+
29
+ Simply edit the table above to change voice mappings. The format is:
30
+ - **Agent ID**: Must match BMAD's `agent.id` field
31
+ - **Agent Name**: Display name (for reference only)
32
+ - **Voice**: Must be a valid AgentVibes voice name
33
+ - **Personality**: Optional personality to apply (or "normal" for none)
34
+
35
+ ## Commands
36
+
37
+ - `/agent-vibes:bmad enable` - Enable BMAD voice plugin
38
+ - `/agent-vibes:bmad disable` - Disable BMAD voice plugin
39
+ - `/agent-vibes:bmad status` - Show plugin status
40
+ - `/agent-vibes:bmad edit` - Open this file for editing
41
+ - `/agent-vibes:bmad list` - List all agent voice mappings
42
+ - `/agent-vibes:bmad set <agent-id> <voice> [personality]` - Set voice for specific agent
package/README.md CHANGED
@@ -13,9 +13,36 @@
13
13
 
14
14
  ---
15
15
 
16
+ ## 📑 Table of Contents
17
+
18
+ ### Getting Started
19
+ - [🚀 Quick Start](#-quick-start) - Install in 3 steps
20
+ - [✨ What is AgentVibes?](#-what-is-agentvibes) - Overview & key features
21
+ - [📰 Latest Release](#-latest-release) - What's new
22
+
23
+ ### Core Features
24
+ - [🎤 Commands Reference](#-commands-reference) - All available commands
25
+ - [🎭 Personalities vs Sentiments](#-personalities-vs-sentiments) - Two systems explained
26
+ - [🗣️ Voice Library](#️-voice-library) - 17+ professional voices
27
+ - [🔌 BMAD Plugin](#-bmad-plugin) - Auto voice switching for BMAD agents
28
+
29
+ ### Advanced Topics
30
+ - [📦 Installation Structure](#-installation-structure) - What gets installed
31
+ - [💡 Usage Examples](#-usage-examples) - Common workflows
32
+ - [🔧 Advanced Features](#-advanced-features) - Custom voices & personalities
33
+ - [💰 Pricing & Usage](#-pricing--usage) - ElevenLabs costs & monitoring
34
+ - [❓ Troubleshooting](#-troubleshooting) - Common issues & fixes
35
+
36
+ ### Additional Resources
37
+ - [🔄 Updating](#-updating) - Keep AgentVibes current
38
+ - [🙏 Credits](#-credits) - Acknowledgments
39
+ - [🤝 Contributing](#-contributing) - Show support
40
+
41
+ ---
42
+
16
43
  ## 📰 Latest Release
17
44
 
18
- **[v1.0.13 - Detailed Release Notes](https://github.com/paulpreibisch/AgentVibes/releases/tag/v1.0.13)** 🐛
45
+ **[v1.0.13 - Release Notes](https://github.com/paulpreibisch/AgentVibes/releases/tag/v1.0.13)** 🐛
19
46
 
20
47
  Critical bug fixes for update command and personality system, plus new dry humor personality and comprehensive voice mapping tests.
21
48
 
@@ -34,11 +61,14 @@ Imagine Claude speaking to you with different voices and personalities as you co
34
61
  - 🎙️ **17+ Professional AI Voices** - Character voices, accents, and unique personalities
35
62
  - 🎭 **19 Built-in Personalities** - From sarcastic to flirty, pirate to dry humor
36
63
  - 💬 **Sentiment System** - Apply personality styles to ANY voice
64
+ - 🔌 **BMAD Plugin** - Auto voice switching for BMAD agents
37
65
  - 🔊 **Live Audio Feedback** - Hear task acknowledgments and completions
38
66
  - 🎵 **Voice Preview** - Listen before you choose
39
67
  - 🔄 **Audio Replay** - Replay the last 10 TTS messages
40
68
  - ⚡ **One-Command Install** - Get started in seconds
41
69
 
70
+ [↑ Back to top](#-table-of-contents)
71
+
42
72
  ---
43
73
 
44
74
  ## 🚀 Quick Start
@@ -89,9 +119,11 @@ source ~/.bashrc
89
119
 
90
120
  **That's it! Claude will now speak to you!** 🎉
91
121
 
122
+ [↑ Back to top](#-table-of-contents)
123
+
92
124
  ---
93
125
 
94
- ## 🎤 Available Commands
126
+ ## 🎤 Commands Reference
95
127
 
96
128
  All commands are prefixed with `/agent-vibes:`
97
129
 
@@ -128,11 +160,18 @@ All commands are prefixed with `/agent-vibes:`
128
160
  | `/agent-vibes:sentiment get` | Show current sentiment |
129
161
  | `/agent-vibes:sentiment clear` | Remove sentiment |
130
162
 
131
- ### Advanced Commands
163
+ ### BMAD Plugin Commands
132
164
 
133
165
  | Command | Description |
134
166
  |---------|-------------|
135
- | `/agent-vibes:set-pretext <text>` | Add prefix to all TTS messages |
167
+ | `/agent-vibes-bmad status` | Show BMAD plugin status & mappings |
168
+ | `/agent-vibes-bmad enable` | Enable automatic voice switching |
169
+ | `/agent-vibes-bmad disable` | Disable plugin (restores previous settings) |
170
+ | `/agent-vibes-bmad list` | List all BMAD agent voice mappings |
171
+ | `/agent-vibes-bmad set <agent> <voice> [personality]` | Update agent mapping |
172
+ | `/agent-vibes-bmad edit` | Edit configuration file |
173
+
174
+ [↑ Back to top](#-table-of-contents)
136
175
 
137
176
  ---
138
177
 
@@ -147,13 +186,14 @@ All commands are prefixed with `/agent-vibes:`
147
186
  | **sarcastic** | Jessica Anne Bogart | Dry wit and cutting observations |
148
187
  | **flirty** | Jessica Anne Bogart | Playful charm and compliments |
149
188
  | **pirate** | Pirate Marshal | Seafaring swagger - "Arr matey!" |
150
- | **grandpa** | Grandpa Werthers | Rambling nostalgic stories |
151
- | **angry** | Drill Sergeant | Frustrated and loud |
189
+ | **grandpa** | Grandpa Spuds Oxley | Rambling nostalgic stories |
190
+ | **dry-humor** | Aria | British wit and deadpan delivery |
191
+ | **angry** | Demon Monster | Frustrated and loud |
152
192
  | **robot** | Dr. Von Fusion | Mechanical and precise |
153
193
  | **zen** | Aria | Peaceful and mindful |
154
- | **professional** | Michael | Formal and corporate |
194
+ | **professional** | Matthew Schmitz | Formal and corporate |
155
195
 
156
- **All 18 personalities:** sarcastic, flirty, pirate, grandpa, angry, robot, zen, professional, dramatic, millennial, surfer-dude, sassy, poetic, moody, funny, annoying, crass, normal, random
196
+ **All 19 personalities:** sarcastic, flirty, pirate, grandpa, dry-humor, angry, robot, zen, professional, dramatic, millennial, surfer-dude, sassy, poetic, moody, funny, annoying, crass, normal, random
157
197
 
158
198
  ```bash
159
199
  /agent-vibes:personality sarcastic
@@ -184,64 +224,114 @@ All commands are prefixed with `/agent-vibes:`
184
224
  /agent-vibes:switch Aria --sentiment sarcastic
185
225
  ```
186
226
 
227
+ [↑ Back to top](#-table-of-contents)
228
+
229
+ ---
230
+
231
+ ## 🗣️ Voice Library
232
+
233
+ AgentVibes includes **22 unique ElevenLabs voices:**
234
+
235
+ | Voice | Character | Best For |
236
+ |-------|-----------|----------|
237
+ | [Aria](https://elevenlabs.io/voice-library/aria-professional-narration/TC0Zp7WVFzhA8zpTlRqV) | Clear professional | Default, all-purpose |
238
+ | [Archer](https://elevenlabs.io/voice-library/archer/L0Dsvb3SLTyegXwtm47J) | Authoritative, commanding | Leadership, orchestration |
239
+ | [Jessica Anne Bogart](https://elevenlabs.io/voice-library/jessica-anne-bogart/flHkNRp1BlvT73UL6gyz) | Wickedly eloquent | Sarcastic, flirty |
240
+ | [Pirate Marshal](https://elevenlabs.io/voice-library/pirate-marshal/PPzYpIqttlTYA83688JI) | Authentic pirate | Pirate personality |
241
+ | [Grandpa Spuds Oxley](https://elevenlabs.io/voice-library/grandpa-spuds-oxley/NOpBlnGInO9m6vDvFkFC) | Wise elder | Grandpa personality |
242
+ | [Matthew Schmitz](https://elevenlabs.io/voice-library/matthew-schmitz/0SpgpJ4D3MpHCiWdyTg3) | Deep baritone | Professional |
243
+ | [Cowboy Bob](https://elevenlabs.io/voice-library/cowboy-bob/KTPVrSVAEUSJRClDzBw7) | Western charm | Casual, friendly |
244
+ | [Northern Terry](https://elevenlabs.io/voice-library/northern-terry/wo6udizrrtpIxWGp2qJk) | Eccentric British | Quirky responses |
245
+ | [Ms. Walker](https://elevenlabs.io/voice-library/ms-walker/DLsHlh26Ugcm6ELvS0qi) | Warm teacher | Professional |
246
+ | [Dr. Von Fusion](https://elevenlabs.io/voice-library/dr-von-fusion/yjJ45q8TVCrtMhEKurxY) | Mad scientist | Robot personality |
247
+ | [Michael](https://elevenlabs.io/voice-library/michael/U1Vk2oyatMdYs096Ety7) | British urban | Professional |
248
+ | [Ralf Eisend](https://elevenlabs.io/voice-library/ralf-eisend/A9evEp8yGjv4c3WsIKuY) | International | Multi-cultural |
249
+ | [Amy](https://elevenlabs.io/voice-library/amy/bhJUNIXWQQ94l8eI2VUf) | Chinese accent | Diverse |
250
+ | [Lutz Laugh](https://elevenlabs.io/voice-library/lutz-laugh/9yzdeviXkFddZ4Oz8Mok) | Jovial | Funny |
251
+ | [Burt Reynolds](https://elevenlabs.io/voice-library/burt-reynolds/4YYIPFl9wE5c4L2eu2Gb) | Smooth baritone | Confident, charismatic |
252
+ | [Juniper](https://elevenlabs.io/voice-library/juniper/aMSt68OGf4xUZAnLpTU8) | Warm, friendly | Stakeholder relations |
253
+ | [Tiffany](https://elevenlabs.io/voice-library/tiffany/6aDn1KB0hjpdcocrUkmq) | Professional, clear | Product ownership, leadership |
254
+ | [Tom](https://elevenlabs.io/voice-library/tom/DYkrAHD8iwork3YSUBbs) | Professional, organized | Orchestration, coordination |
255
+ | [Demon Monster](https://elevenlabs.io/voice-library/demon-monster/vfaqCOvlrKi4Zp7C2IAm) | Deep and spooky | Dramatic |
256
+
257
+ 💡 **Tip:** Click voice names to hear samples on ElevenLabs!
258
+
259
+ [↑ Back to top](#-table-of-contents)
260
+
187
261
  ---
188
262
 
189
- ## 🗣️ Available Voices
190
-
191
- AgentVibes includes **17 unique ElevenLabs voices:**
192
-
193
- | Voice | Character | Best For | Listen |
194
- |-------|-----------|----------|--------|
195
- | [Aria](https://elevenlabs.io/voice-library/aria-professional-narration/TC0Zp7WVFzhA8zpTlRqV) | Clear professional | Default, all-purpose | [Preview](https://elevenlabs.io/voice-library/aria-professional-narration/TC0Zp7WVFzhA8zpTlRqV) |
196
- | [Jessica Anne Bogart](https://elevenlabs.io/voice-library/jessica-anne-bogart/flHkNRp1BlvT73UL6gyz) | Wickedly eloquent | Sarcastic, flirty | [Preview](https://elevenlabs.io/voice-library/jessica-anne-bogart/flHkNRp1BlvT73UL6gyz) |
197
- | [Pirate Marshal](https://elevenlabs.io/voice-library/pirate-marshal/PPzYpIqttlTYA83688JI) | Authentic pirate | Pirate personality | [Preview](https://elevenlabs.io/voice-library/pirate-marshal/PPzYpIqttlTYA83688JI) |
198
- | [Grandpa Werthers](https://elevenlabs.io/voice-library/grandpa-werthers/MKlLqCItoCkvdhrxgtLv) | Nostalgic elder | Grandpa personality | [Preview](https://elevenlabs.io/voice-library/grandpa-werthers/MKlLqCItoCkvdhrxgtLv) |
199
- | [Drill Sergeant](https://elevenlabs.io/voice-library/drill-sergeant/vfaqCOvlrKi4Zp7C2IAm) | Military authority | Angry personality | [Preview](https://elevenlabs.io/voice-library/drill-sergeant/vfaqCOvlrKi4Zp7C2IAm) |
200
- | [Cowboy Bob](https://elevenlabs.io/voice-library/cowboy-bob/KTPVrSVAEUSJRClDzBw7) | Western charm | Casual, friendly | [Preview](https://elevenlabs.io/voice-library/cowboy-bob/KTPVrSVAEUSJRClDzBw7) |
201
- | [Northern Terry](https://elevenlabs.io/voice-library/northern-terry/wo6udizrrtpIxWGp2qJk) | Eccentric British | Quirky responses | [Preview](https://elevenlabs.io/voice-library/northern-terry/wo6udizrrtpIxWGp2qJk) |
202
- | [Ms. Walker](https://elevenlabs.io/voice-library/ms-walker/DLsHlh26Ugcm6ELvS0qi) | Warm teacher | Professional | [Preview](https://elevenlabs.io/voice-library/ms-walker/DLsHlh26Ugcm6ELvS0qi) |
203
- | [Dr. Von Fusion](https://elevenlabs.io/voice-library/dr-von-fusion/yjJ45q8TVCrtMhEKurxY) | Mad scientist | Robot personality | [Preview](https://elevenlabs.io/voice-library/dr-von-fusion/yjJ45q8TVCrtMhEKurxY) |
204
- | [Matthew Schmitz](https://elevenlabs.io/voice-library/matthew-schmitz/0SpgpJ4D3MpHCiWdyTg3) | Deep baritone | Dramatic | [Preview](https://elevenlabs.io/voice-library/matthew-schmitz/0SpgpJ4D3MpHCiWdyTg3) |
205
- | [Grandpa Spuds Oxley](https://elevenlabs.io/voice-library/grandpa-spuds-oxley/NOpBlnGInO9m6vDvFkFC) | Wise elder | Wisdom | [Preview](https://elevenlabs.io/voice-library/grandpa-spuds-oxley/NOpBlnGInO9m6vDvFkFC) |
206
- | [Michael](https://elevenlabs.io/voice-library/michael/U1Vk2oyatMdYs096Ety7) | British urban | Professional | [Preview](https://elevenlabs.io/voice-library/michael/U1Vk2oyatMdYs096Ety7) |
207
- | [Ralf Eisend](https://elevenlabs.io/voice-library/ralf-eisend/A9evEp8yGjv4c3WsIKuY) | International | Multi-cultural | [Preview](https://elevenlabs.io/voice-library/ralf-eisend/A9evEp8yGjv4c3WsIKuY) |
208
- | [Amy](https://elevenlabs.io/voice-library/amy/bhJUNIXWQQ94l8eI2VUf) | Chinese accent | Diverse | [Preview](https://elevenlabs.io/voice-library/amy/bhJUNIXWQQ94l8eI2VUf) |
209
- | [Lutz Laugh](https://elevenlabs.io/voice-library/lutz-laugh/9yzdeviXkFddZ4Oz8Mok) | Jovial | Funny | [Preview](https://elevenlabs.io/voice-library/lutz-laugh/9yzdeviXkFddZ4Oz8Mok) |
210
- | [Demon Monster](https://elevenlabs.io/voice-library/demon-monster/vfaqCOvlrKi4Zp7C2IAm) | Deep and spooky | Dramatic | [Preview](https://elevenlabs.io/voice-library/demon-monster/vfaqCOvlrKi4Zp7C2IAm) |
211
-
212
- **💡 Tip:** Click voice names or Preview links to hear samples on ElevenLabs before choosing!
263
+ ## 🔌 BMAD Plugin
264
+
265
+ **Automatically switch voices when using BMAD agents!**
266
+
267
+ The BMAD plugin detects when you activate a BMAD agent (e.g., `/BMad:agents:pm`) and automatically uses the assigned voice for that role.
268
+
269
+ ### Default BMAD Voice Mappings
270
+
271
+ | Agent | Role | Voice | Personality |
272
+ |-------|------|-------|-------------|
273
+ | **pm** | Product Manager | Jessica Anne Bogart | professional |
274
+ | **dev** | Developer | Matthew Schmitz | normal |
275
+ | **qa** | QA Engineer | Burt Reynolds | professional |
276
+ | **architect** | Architect | Michael | normal |
277
+ | **po** | Product Owner | Tiffany | professional |
278
+ | **analyst** | Analyst | Ralf Eisend | normal |
279
+ | **sm** | Scrum Master | Ms. Walker | professional |
280
+ | **ux-expert** | UX Expert | Aria | normal |
281
+ | **bmad-master** | BMAD Master | Archer | zen |
282
+ | **bmad-orchestrator** | Orchestrator | Tom | professional |
283
+
284
+ ### Plugin Management
285
+
286
+ ```bash
287
+ # Check status (auto-enables if BMAD detected)
288
+ /agent-vibes-bmad status
289
+
290
+ # Disable plugin
291
+ /agent-vibes-bmad disable
292
+
293
+ # Re-enable plugin
294
+ /agent-vibes-bmad enable
295
+
296
+ # Customize agent voice
297
+ /agent-vibes-bmad set pm "Aria" zen
298
+
299
+ # Edit configuration
300
+ /agent-vibes-bmad edit
301
+ ```
302
+
303
+ ### How It Works
304
+
305
+ 1. **Auto-Detection**: Plugin checks for `.bmad-core/install-manifest.yaml`
306
+ 2. **Auto-Enable**: Enables automatically when BMAD is detected
307
+ 3. **Settings Preservation**: Saves your previous voice/personality when enabling
308
+ 4. **Restore on Disable**: Restores previous settings when disabling
309
+
310
+ [↑ Back to top](#-table-of-contents)
213
311
 
214
312
  ---
215
313
 
216
- ## 📦 What Gets Installed?
314
+ ## 📦 Installation Structure
217
315
 
218
316
  ```
219
317
  your-project/
220
318
  └── .claude/
221
319
  ├── commands/
222
- └── agent-vibes/ # All slash commands
223
- ├── agent-vibes.md
224
- │ ├── agent-vibes:list.md
225
- │ ├── agent-vibes:switch.md
226
- │ ├── agent-vibes:whoami.md
227
- │ ├── agent-vibes:personality.md
228
- │ ├── agent-vibes:sentiment.md
229
- │ └── ... (12 total)
320
+ ├── agent-vibes/ # Voice commands
321
+ └── agent-vibes-bmad.md # BMAD plugin command
230
322
  ├── hooks/
231
323
  │ ├── voice-manager.sh # Voice switching
232
324
  │ ├── personality-manager.sh # Personality system
233
325
  │ ├── sentiment-manager.sh # Sentiment system
326
+ │ ├── bmad-voice-manager.sh # BMAD plugin
234
327
  │ ├── play-tts.sh # TTS playback
235
328
  │ └── voices-config.sh # Voice ID mappings
236
- ├── personalities/ # 18 personality templates
237
- ├── sarcastic.md
238
- ├── flirty.md
239
- │ ├── pirate.md
240
- │ └── ... (15 more)
329
+ ├── personalities/ # 19 personality templates
330
+ ├── plugins/
331
+ └── bmad-voices.md # BMAD voice mappings
241
332
  ├── output-styles/
242
333
  │ └── agent-vibes.md # Voice output style
243
334
  └── audio/ # Generated TTS files
244
- └── tts-*.mp3 # Last 10 kept
245
335
  ```
246
336
 
247
337
  ### Voice Settings Storage
@@ -252,20 +342,7 @@ your-project/
252
342
 
253
343
  Settings persist across Claude Code sessions!
254
344
 
255
- ---
256
-
257
- ## 🔧 CLI Management
258
-
259
- ```bash
260
- # Check installation status
261
- node ~/claude/AgentVibes/bin/agent-vibes status
262
-
263
- # Update to latest version
264
- node ~/claude/AgentVibes/bin/agent-vibes update
265
-
266
- # Install with options
267
- node ~/claude/AgentVibes/bin/agent-vibes install --yes --directory ~/my-project
268
- ```
345
+ [↑ Back to top](#-table-of-contents)
269
346
 
270
347
  ---
271
348
 
@@ -285,8 +362,8 @@ node ~/claude/AgentVibes/bin/agent-vibes install --yes --directory ~/my-project
285
362
  ```bash
286
363
  /agent-vibes:personality sarcastic # Sarcastic + Jessica Anne Bogart
287
364
  /agent-vibes:personality pirate # Pirate + Pirate Marshal
288
- /agent-vibes:personality grandpa # Grandpa + Grandpa Werthers
289
- /agent-vibes:personality list # See all 18 personalities
365
+ /agent-vibes:personality dry-humor # British wit + Aria
366
+ /agent-vibes:personality list # See all 19 personalities
290
367
  ```
291
368
 
292
369
  ### Use Sentiments
@@ -312,50 +389,11 @@ node ~/claude/AgentVibes/bin/agent-vibes install --yes --directory ~/my-project
312
389
  /agent-vibes:preview last 5 # Hear last 5
313
390
  ```
314
391
 
315
- ---
316
-
317
- ## 🌟 Best Voice/Personality Combos
318
-
319
- - **Debugging**: Sarcastic + Jessica Anne Bogart 😏
320
- - **Learning**: Professional + Michael 📚
321
- - **Fun Coding**: Pirate + Pirate Marshal 🏴‍☠️
322
- - **Late Night**: Zen + Aria 🧘
323
- - **Pair Programming**: Grandpa + Grandpa Werthers 👴
392
+ [↑ Back to top](#-table-of-contents)
324
393
 
325
394
  ---
326
395
 
327
- ## Troubleshooting
328
-
329
- ### No Audio Playing?
330
-
331
- 1. Check API key: `echo $ELEVENLABS_API_KEY`
332
- 2. Check output style: `/output-style agent-vibes`
333
- 3. Test playback: `/agent-vibes:sample Aria`
334
-
335
- ### Commands Not Found?
336
-
337
- ```bash
338
- # Verify installation
339
- node ~/claude/AgentVibes/bin/agent-vibes status
340
-
341
- # Reinstall
342
- node ~/claude/AgentVibes/bin/agent-vibes install --yes
343
- ```
344
-
345
- ### Wrong Voice Playing?
346
-
347
- ```bash
348
- # Check current setup
349
- /agent-vibes:whoami
350
-
351
- # Reset if needed
352
- /agent-vibes:personality reset
353
- /agent-vibes:sentiment clear
354
- ```
355
-
356
- ---
357
-
358
- ## 🔧 Advanced Usage
396
+ ## 🔧 Advanced Features
359
397
 
360
398
  ### Custom Personalities
361
399
 
@@ -388,7 +426,7 @@ node ~/claude/AgentVibes/bin/agent-vibes install --yes
388
426
  /agent-vibes:add "My Voice" abc123xyz789
389
427
  ```
390
428
 
391
- ### Use in Output Styles
429
+ ### Use in Custom Output Styles
392
430
 
393
431
  ```markdown
394
432
  I'll do the task
@@ -400,133 +438,118 @@ I'll do the task
400
438
  [Bash: .claude/hooks/play-tts.sh "Complete" "Cowboy Bob"]
401
439
  ```
402
440
 
441
+ [↑ Back to top](#-table-of-contents)
442
+
403
443
  ---
404
444
 
405
- ## 🔄 Updating AgentVibes
445
+ ## 💰 Pricing & Usage
406
446
 
407
- ### If installed via npx:
408
- ```bash
409
- npx agentvibes update --yes
410
- ```
447
+ ### ElevenLabs Pricing (2025)
411
448
 
412
- ### If installed globally via npm:
413
- ```bash
414
- npm update -g agentvibes
415
- agentvibes update --yes
416
- ```
449
+ | Plan | Monthly Cost | Characters/Month | Best For |
450
+ |------|-------------|------------------|----------|
451
+ | **Free** | $0 | 10,000 | Trying it out, light use |
452
+ | **Starter** | $5 | 30,000 | Casual coding (1-2 hrs/day) |
453
+ | **Creator** | $22 | 100,000 | Regular coding (4-5 hrs/day) |
454
+ | **Pro** | $99 | 500,000 | Heavy daily use (8+ hrs/day) |
455
+ | **Scale** | $330 | 2,000,000 | Professional/teams |
417
456
 
418
- ### If installed from source:
419
- ```bash
420
- cd ~/AgentVibes
421
- git pull origin master
422
- npm install
423
- node bin/agent-vibes update --yes
424
- ```
457
+ ### Monitor Your Usage
425
458
 
426
- The update command will:
427
- - ✅ Update all slash commands
428
- - ✅ Update TTS scripts
429
- - ✅ Add new personalities (keeps your custom ones)
430
- - ✅ Update output styles
431
- - ⚠️ Preserves your voice settings and configurations
459
+ **Track consumption in real-time:**
432
460
 
433
- ---
461
+ 1. **Go to ElevenLabs Dashboard**: https://elevenlabs.io/app/usage
462
+ 2. **Monitor**: Credits used, character breakdown, billing period
463
+ 3. **Set alerts**: Check usage weekly, watch for spikes
434
464
 
435
- ## 💰 ElevenLabs Usage & Costs
465
+ ### Tips to Manage Costs
436
466
 
437
- ### **Important: Monitor Your Usage!**
467
+ 1. **Use selectively**: Disable TTS when doing quick edits
468
+ ```bash
469
+ /output-style default # Turn off voice
470
+ /output-style agent-vibes # Turn back on
471
+ ```
438
472
 
439
- AgentVibes generates TTS audio for **every task acknowledgment and completion** - this can add up quickly during active coding sessions!
473
+ 2. **Monitor analytics**: Check usage dashboard regularly
440
474
 
441
- ### 📊 **Typical Usage Patterns**
475
+ 3. **Shorter messages**: "Normal" personality = shortest messages
442
476
 
443
- **Light coding (1-2 hours/day):**
444
- - ~50-100 TTS messages
445
- - ~2,500-5,000 characters/day
446
- - ✅ **Free tier works** (10,000 chars/month)
477
+ 4. **Upgrade proactively**: If coding 8+ hrs/day, start with Creator plan
447
478
 
448
- **Moderate coding (4-5 hours/day):**
449
- - ~200-300 TTS messages
450
- - ~10,000-15,000 characters/day
451
- - ⚠️ **Starter plan needed** ($5/month, 30,000 chars)
479
+ ### Useful Links
452
480
 
453
- **Heavy coding (8+ hours/day):**
454
- - ~400-600 TTS messages
455
- - ~20,000-30,000 characters/day
456
- - ⚠️ **Creator/Pro plan needed** ($22-$99/month)
457
- - 💡 **May need to upgrade mid-month** if coding intensively
481
+ - 📊 **Usage Dashboard**: https://elevenlabs.io/app/usage
482
+ - 💳 **Pricing Page**: https://elevenlabs.io/pricing
483
+ - 🆘 **Support**: https://help.elevenlabs.io/
458
484
 
459
- ### 💳 **ElevenLabs Pricing (2025)**
485
+ [↑ Back to top](#-table-of-contents)
460
486
 
461
- | Plan | Monthly Cost | Characters/Month | Best For |
462
- |------|-------------|------------------|----------|
463
- | **Free** | $0 | 10,000 | Trying it out, light use |
464
- | **Starter** | $5 | 30,000 | Casual coding |
465
- | **Creator** | $22 | 100,000 | Regular coding |
466
- | **Pro** | $99 | 500,000 | Heavy daily use |
467
- | **Scale** | $330 | 2,000,000 | Professional/teams |
487
+ ---
468
488
 
469
- **Overage costs** (if you exceed your plan):
470
- - Creator: $0.30 per 1,000 characters
471
- - Pro: $0.24 per 1,000 characters
472
- - Scale: $0.18 per 1,000 characters
489
+ ## Troubleshooting
473
490
 
474
- ### 📈 **Monitor Your Usage**
491
+ ### No Audio Playing?
475
492
 
476
- **Track your consumption in real-time:**
493
+ 1. Check API key: `echo $ELEVENLABS_API_KEY`
494
+ 2. Check output style: `/output-style agent-vibes`
495
+ 3. Test playback: `/agent-vibes:sample Aria`
477
496
 
478
- 1. **Go to ElevenLabs Dashboard:**
479
- - Visit: https://elevenlabs.io/app/usage
480
- - Click "My Account" → "Usage Analytics"
481
- - Or: "Developers" → "Usage" tab
497
+ ### Commands Not Found?
482
498
 
483
- 2. **What to monitor:**
484
- - **Credits used** - Daily and monthly totals
485
- - ✅ **Character breakdown** - By voice/API key
486
- - ✅ **Billing period alignment** - See when your plan resets
487
- - ✅ **Export to CSV** - Download usage data
499
+ ```bash
500
+ # Verify installation
501
+ node ~/claude/AgentVibes/bin/agent-vibes status
502
+
503
+ # Reinstall
504
+ node ~/claude/AgentVibes/bin/agent-vibes install --yes
505
+ ```
488
506
 
489
- 3. **Set up alerts:**
490
- - Check your usage weekly
491
- - Watch for unexpected spikes
492
- - Upgrade before hitting limits
507
+ ### Wrong Voice Playing?
493
508
 
494
- ### 💡 **Tips to Manage Costs**
509
+ ```bash
510
+ # Check current setup
511
+ /agent-vibes:whoami
495
512
 
496
- 1. **Use selectively**: Disable TTS when doing quick edits
497
- ```bash
498
- /output-style default # Turn off voice
499
- /output-style agent-vibes # Turn back on
500
- ```
513
+ # Reset if needed
514
+ /agent-vibes:personality reset
515
+ /agent-vibes:sentiment clear
516
+ ```
501
517
 
502
- 2. **Monitor analytics**: Check https://elevenlabs.io/app/usage regularly
518
+ [↑ Back to top](#-table-of-contents)
503
519
 
504
- 3. **Shorter messages**: Personality styles affect message length
505
- - "Normal" personality = shortest messages
506
- - "Sarcastic/Grandpa" = longer messages
520
+ ---
507
521
 
508
- 4. **Upgrade proactively**: If coding 8+ hours/day, start with Creator plan
522
+ ## 🔄 Updating
509
523
 
510
- ### 🔗 **Useful Links**
524
+ ### If installed via npx:
525
+ ```bash
526
+ npx agentvibes update --yes
527
+ ```
511
528
 
512
- - 📊 **Usage Dashboard**: https://elevenlabs.io/app/usage
513
- - 💳 **Pricing Page**: https://elevenlabs.io/pricing
514
- - 📖 **Usage Analytics Docs**: https://elevenlabs.io/docs/product-guides/administration/usage-analytics
515
- - 🆘 **Support**: https://help.elevenlabs.io/
529
+ ### If installed globally via npm:
530
+ ```bash
531
+ npm update -g agentvibes
532
+ agentvibes update --yes
533
+ ```
516
534
 
517
- ### ⚠️ **Fair Warning**
535
+ ### If installed from source:
536
+ ```bash
537
+ cd ~/AgentVibes
538
+ git pull origin master
539
+ npm install
540
+ node bin/agent-vibes update --yes
541
+ ```
518
542
 
519
- If you're coding **8 hours/day with Claude Code**, expect to use:
520
- - ~600-800 TTS messages daily
521
- - ~30,000-40,000 characters daily
522
- - ~900,000-1,200,000 characters/month
543
+ The update command will:
544
+ - Update all slash commands
545
+ - Update TTS scripts and plugins
546
+ - Add new personalities (keeps your custom ones)
547
+ - ✅ Update output styles
548
+ - ⚠️ Preserves your voice settings and configurations
523
549
 
524
- **You'll likely need:**
525
- - **Pro plan ($99/month)** minimum
526
- - Or **Creator plan + overages** (~$140/month)
527
- - Possibly **two Pro subscriptions** if coding intensively 6-7 days/week
550
+ [↑ Back to top](#-table-of-contents)
528
551
 
529
- **Always monitor your ElevenLabs analytics dashboard!** 📊
552
+ ---
530
553
 
531
554
  ## 🙏 Credits
532
555
 
@@ -542,11 +565,13 @@ If you're coding **8 hours/day with Claude Code**, expect to use:
542
565
  - Licensed under Apache 2.0
543
566
 
544
567
  **Inspired by:**
545
- - 💡 [Claude Code Hooks Mastery](https://github.com/disler/claude-code-hooks-mastery) by [@disler](https://github.com/disler) - Original inspiration for Claude Code customization and hooks
568
+ - 💡 [Claude Code Hooks Mastery](https://github.com/disler/claude-code-hooks-mastery) by [@disler](https://github.com/disler)
569
+
570
+ [↑ Back to top](#-table-of-contents)
546
571
 
547
572
  ---
548
573
 
549
- ## 🤝 Show Some Love
574
+ ## 🤝 Contributing
550
575
 
551
576
  If AgentVibes makes your coding more fun:
552
577
  - ⭐ **Star this repo** on GitHub
@@ -557,3 +582,5 @@ If AgentVibes makes your coding more fun:
557
582
  ---
558
583
 
559
584
  **Ready to give Claude a voice? Install now and code with personality! 🎤✨**
585
+
586
+ [↑ Back to top](#-table-of-contents)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "agentvibes",
4
- "version": "1.0.13",
4
+ "version": "1.0.15",
5
5
  "description": "Beautiful ElevenLabs TTS voice commands for Claude Code - Add professional narration to your AI coding sessions",
6
6
  "keywords": [
7
7
  "elevenlabs",
@@ -115,6 +115,64 @@ You: "✅ That bug be walkin' the plank now, arr!"
115
115
  [Bash: .claude/hooks/play-tts.sh "That bug be walkin' the plank now, arr!"]
116
116
  ```
117
117
 
118
+ ## BMAD Plugin Integration
119
+
120
+ **Automatic voice switching for BMAD agents:**
121
+
122
+ When a BMAD agent is activated (e.g., `/BMad:agents:pm`), AgentVibes will automatically:
123
+
124
+ 1. **Detect BMAD agent from command/context**
125
+ 2. **Check if BMAD plugin is enabled** (`.claude/plugins/bmad-voices-enabled.flag`)
126
+ 3. **Look up voice mapping** from `.claude/plugins/bmad-voices.md`
127
+ 4. **Apply agent's assigned voice** for all TTS acknowledgments/completions
128
+ 5. **Apply agent's personality** from the mapping (if specified)
129
+
130
+ **Implementation:**
131
+ ```bash
132
+ # At the start of acknowledgment/completion:
133
+ # Try to detect BMAD agent ID from current context
134
+ BMAD_AGENT_ID=""
135
+
136
+ # Method 1: Check if we're in a BMAD agent command context
137
+ if [[ -f ".bmad-agent-context" ]]; then
138
+ BMAD_AGENT_ID=$(cat .bmad-agent-context 2>/dev/null)
139
+ fi
140
+
141
+ # Method 2: Parse from command history/context (fallback)
142
+ # Note: This detection happens automatically when BMAD agent activates
143
+
144
+ # If BMAD agent detected and plugin enabled, use mapped voice
145
+ if [[ -n "$BMAD_AGENT_ID" ]] && [[ -f ".claude/plugins/bmad-voices-enabled.flag" ]]; then
146
+ MAPPED_VOICE=$(.claude/hooks/bmad-voice-manager.sh get-voice "$BMAD_AGENT_ID")
147
+ MAPPED_PERSONALITY=$(.claude/hooks/bmad-voice-manager.sh get-personality "$BMAD_AGENT_ID")
148
+
149
+ if [[ -n "$MAPPED_VOICE" ]]; then
150
+ # Use BMAD agent's mapped voice and personality
151
+ if [[ -n "$MAPPED_PERSONALITY" ]] && [[ "$MAPPED_PERSONALITY" != "normal" ]]; then
152
+ # Read personality instructions from .claude/personalities/${MAPPED_PERSONALITY}.md
153
+ # Generate response in that personality style
154
+ fi
155
+ .claude/hooks/play-tts.sh "message" "$MAPPED_VOICE"
156
+ # Exit early - don't use default personality system
157
+ return
158
+ fi
159
+ fi
160
+
161
+ # If no BMAD agent or plugin disabled, use standard personality/sentiment system
162
+ # ... continue with normal sentiment/personality logic ...
163
+ ```
164
+
165
+ **BMAD Agent Context Tracking:**
166
+ - When a BMAD agent activates, write agent ID to `.bmad-agent-context`
167
+ - When agent exits, remove the file
168
+ - This allows AgentVibes to know which BMAD agent is active
169
+
170
+ **Voice Priority (in order):**
171
+ 1. BMAD plugin voice (if agent active and plugin enabled)
172
+ 2. Sentiment mode (if set)
173
+ 3. Personality mode (if set)
174
+ 4. Default voice
175
+
118
176
  ## Critical Rules
119
177
 
120
178
  1. **ALWAYS use Bash tool** to execute play-tts.sh