agentvibes 1.0.13 → 1.0.14

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
@@ -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) | Ralf Eisend | professional |
19
+ | architect | Winston (Architect) | Michael | normal |
20
+ | po | Product Owner | Amy | professional |
21
+ | analyst | Analyst | Lutz Laugh | normal |
22
+ | sm | Scrum Master | Ms. Walker | professional |
23
+ | ux-expert | UX Expert | Aria | normal |
24
+ | bmad-master | BMAD Master | Aria | zen |
25
+ | bmad-orchestrator | Orchestrator | Ms. Walker | 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,109 @@ 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
+
187
229
  ---
188
230
 
189
- ## 🗣️ Available Voices
231
+ ## 🗣️ Voice Library
190
232
 
191
233
  AgentVibes includes **17 unique ElevenLabs voices:**
192
234
 
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!
235
+ | Voice | Character | Best For |
236
+ |-------|-----------|----------|
237
+ | [Aria](https://elevenlabs.io/voice-library/aria-professional-narration/TC0Zp7WVFzhA8zpTlRqV) | Clear professional | Default, all-purpose |
238
+ | [Jessica Anne Bogart](https://elevenlabs.io/voice-library/jessica-anne-bogart/flHkNRp1BlvT73UL6gyz) | Wickedly eloquent | Sarcastic, flirty |
239
+ | [Pirate Marshal](https://elevenlabs.io/voice-library/pirate-marshal/PPzYpIqttlTYA83688JI) | Authentic pirate | Pirate personality |
240
+ | [Grandpa Spuds Oxley](https://elevenlabs.io/voice-library/grandpa-spuds-oxley/NOpBlnGInO9m6vDvFkFC) | Wise elder | Grandpa personality |
241
+ | [Matthew Schmitz](https://elevenlabs.io/voice-library/matthew-schmitz/0SpgpJ4D3MpHCiWdyTg3) | Deep baritone | Professional |
242
+ | [Cowboy Bob](https://elevenlabs.io/voice-library/cowboy-bob/KTPVrSVAEUSJRClDzBw7) | Western charm | Casual, friendly |
243
+ | [Northern Terry](https://elevenlabs.io/voice-library/northern-terry/wo6udizrrtpIxWGp2qJk) | Eccentric British | Quirky responses |
244
+ | [Ms. Walker](https://elevenlabs.io/voice-library/ms-walker/DLsHlh26Ugcm6ELvS0qi) | Warm teacher | Professional |
245
+ | [Dr. Von Fusion](https://elevenlabs.io/voice-library/dr-von-fusion/yjJ45q8TVCrtMhEKurxY) | Mad scientist | Robot personality |
246
+ | [Michael](https://elevenlabs.io/voice-library/michael/U1Vk2oyatMdYs096Ety7) | British urban | Professional |
247
+ | [Ralf Eisend](https://elevenlabs.io/voice-library/ralf-eisend/A9evEp8yGjv4c3WsIKuY) | International | Multi-cultural |
248
+ | [Amy](https://elevenlabs.io/voice-library/amy/bhJUNIXWQQ94l8eI2VUf) | Chinese accent | Diverse |
249
+ | [Lutz Laugh](https://elevenlabs.io/voice-library/lutz-laugh/9yzdeviXkFddZ4Oz8Mok) | Jovial | Funny |
250
+ | [Demon Monster](https://elevenlabs.io/voice-library/demon-monster/vfaqCOvlrKi4Zp7C2IAm) | Deep and spooky | Dramatic |
251
+
252
+ 💡 **Tip:** Click voice names to hear samples on ElevenLabs!
253
+
254
+ [↑ Back to top](#-table-of-contents)
255
+
256
+ ---
257
+
258
+ ## 🔌 BMAD Plugin
259
+
260
+ **Automatically switch voices when using BMAD agents!**
261
+
262
+ The BMAD plugin detects when you activate a BMAD agent (e.g., `/BMad:agents:pm`) and automatically uses the assigned voice for that role.
263
+
264
+ ### Default BMAD Voice Mappings
265
+
266
+ | Agent | Role | Voice | Personality |
267
+ |-------|------|-------|-------------|
268
+ | **pm** | Product Manager | Jessica Anne Bogart | professional |
269
+ | **dev** | Developer | Matthew Schmitz | normal |
270
+ | **qa** | QA Engineer | Ralf Eisend | professional |
271
+ | **architect** | Architect | Michael | normal |
272
+ | **po** | Product Owner | Amy | professional |
273
+ | **analyst** | Analyst | Lutz Laugh | normal |
274
+ | **sm** | Scrum Master | Ms. Walker | professional |
275
+ | **ux-expert** | UX Expert | Aria | normal |
276
+ | **bmad-master** | BMAD Master | Aria | zen |
277
+ | **bmad-orchestrator** | Orchestrator | Ms. Walker | professional |
278
+
279
+ ### Plugin Management
280
+
281
+ ```bash
282
+ # Check status (auto-enables if BMAD detected)
283
+ /agent-vibes-bmad status
284
+
285
+ # Disable plugin
286
+ /agent-vibes-bmad disable
287
+
288
+ # Re-enable plugin
289
+ /agent-vibes-bmad enable
290
+
291
+ # Customize agent voice
292
+ /agent-vibes-bmad set pm "Aria" zen
293
+
294
+ # Edit configuration
295
+ /agent-vibes-bmad edit
296
+ ```
297
+
298
+ ### How It Works
299
+
300
+ 1. **Auto-Detection**: Plugin checks for `.bmad-core/install-manifest.yaml`
301
+ 2. **Auto-Enable**: Enables automatically when BMAD is detected
302
+ 3. **Settings Preservation**: Saves your previous voice/personality when enabling
303
+ 4. **Restore on Disable**: Restores previous settings when disabling
304
+
305
+ [↑ Back to top](#-table-of-contents)
213
306
 
214
307
  ---
215
308
 
216
- ## 📦 What Gets Installed?
309
+ ## 📦 Installation Structure
217
310
 
218
311
  ```
219
312
  your-project/
220
313
  └── .claude/
221
314
  ├── 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)
315
+ ├── agent-vibes/ # Voice commands
316
+ └── agent-vibes-bmad.md # BMAD plugin command
230
317
  ├── hooks/
231
318
  │ ├── voice-manager.sh # Voice switching
232
319
  │ ├── personality-manager.sh # Personality system
233
320
  │ ├── sentiment-manager.sh # Sentiment system
321
+ │ ├── bmad-voice-manager.sh # BMAD plugin
234
322
  │ ├── play-tts.sh # TTS playback
235
323
  │ └── voices-config.sh # Voice ID mappings
236
- ├── personalities/ # 18 personality templates
237
- ├── sarcastic.md
238
- ├── flirty.md
239
- │ ├── pirate.md
240
- │ └── ... (15 more)
324
+ ├── personalities/ # 19 personality templates
325
+ ├── plugins/
326
+ └── bmad-voices.md # BMAD voice mappings
241
327
  ├── output-styles/
242
328
  │ └── agent-vibes.md # Voice output style
243
329
  └── audio/ # Generated TTS files
244
- └── tts-*.mp3 # Last 10 kept
245
330
  ```
246
331
 
247
332
  ### Voice Settings Storage
@@ -252,20 +337,7 @@ your-project/
252
337
 
253
338
  Settings persist across Claude Code sessions!
254
339
 
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
- ```
340
+ [↑ Back to top](#-table-of-contents)
269
341
 
270
342
  ---
271
343
 
@@ -285,8 +357,8 @@ node ~/claude/AgentVibes/bin/agent-vibes install --yes --directory ~/my-project
285
357
  ```bash
286
358
  /agent-vibes:personality sarcastic # Sarcastic + Jessica Anne Bogart
287
359
  /agent-vibes:personality pirate # Pirate + Pirate Marshal
288
- /agent-vibes:personality grandpa # Grandpa + Grandpa Werthers
289
- /agent-vibes:personality list # See all 18 personalities
360
+ /agent-vibes:personality dry-humor # British wit + Aria
361
+ /agent-vibes:personality list # See all 19 personalities
290
362
  ```
291
363
 
292
364
  ### Use Sentiments
@@ -312,50 +384,11 @@ node ~/claude/AgentVibes/bin/agent-vibes install --yes --directory ~/my-project
312
384
  /agent-vibes:preview last 5 # Hear last 5
313
385
  ```
314
386
 
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 👴
387
+ [↑ Back to top](#-table-of-contents)
324
388
 
325
389
  ---
326
390
 
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
391
+ ## 🔧 Advanced Features
359
392
 
360
393
  ### Custom Personalities
361
394
 
@@ -388,7 +421,7 @@ node ~/claude/AgentVibes/bin/agent-vibes install --yes
388
421
  /agent-vibes:add "My Voice" abc123xyz789
389
422
  ```
390
423
 
391
- ### Use in Output Styles
424
+ ### Use in Custom Output Styles
392
425
 
393
426
  ```markdown
394
427
  I'll do the task
@@ -400,133 +433,118 @@ I'll do the task
400
433
  [Bash: .claude/hooks/play-tts.sh "Complete" "Cowboy Bob"]
401
434
  ```
402
435
 
436
+ [↑ Back to top](#-table-of-contents)
437
+
403
438
  ---
404
439
 
405
- ## 🔄 Updating AgentVibes
440
+ ## 💰 Pricing & Usage
406
441
 
407
- ### If installed via npx:
408
- ```bash
409
- npx agentvibes update --yes
410
- ```
442
+ ### ElevenLabs Pricing (2025)
411
443
 
412
- ### If installed globally via npm:
413
- ```bash
414
- npm update -g agentvibes
415
- agentvibes update --yes
416
- ```
444
+ | Plan | Monthly Cost | Characters/Month | Best For |
445
+ |------|-------------|------------------|----------|
446
+ | **Free** | $0 | 10,000 | Trying it out, light use |
447
+ | **Starter** | $5 | 30,000 | Casual coding (1-2 hrs/day) |
448
+ | **Creator** | $22 | 100,000 | Regular coding (4-5 hrs/day) |
449
+ | **Pro** | $99 | 500,000 | Heavy daily use (8+ hrs/day) |
450
+ | **Scale** | $330 | 2,000,000 | Professional/teams |
417
451
 
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
- ```
452
+ ### Monitor Your Usage
425
453
 
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
454
+ **Track consumption in real-time:**
432
455
 
433
- ---
456
+ 1. **Go to ElevenLabs Dashboard**: https://elevenlabs.io/app/usage
457
+ 2. **Monitor**: Credits used, character breakdown, billing period
458
+ 3. **Set alerts**: Check usage weekly, watch for spikes
434
459
 
435
- ## 💰 ElevenLabs Usage & Costs
460
+ ### Tips to Manage Costs
436
461
 
437
- ### **Important: Monitor Your Usage!**
462
+ 1. **Use selectively**: Disable TTS when doing quick edits
463
+ ```bash
464
+ /output-style default # Turn off voice
465
+ /output-style agent-vibes # Turn back on
466
+ ```
438
467
 
439
- AgentVibes generates TTS audio for **every task acknowledgment and completion** - this can add up quickly during active coding sessions!
468
+ 2. **Monitor analytics**: Check usage dashboard regularly
440
469
 
441
- ### 📊 **Typical Usage Patterns**
470
+ 3. **Shorter messages**: "Normal" personality = shortest messages
442
471
 
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)
472
+ 4. **Upgrade proactively**: If coding 8+ hrs/day, start with Creator plan
447
473
 
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)
474
+ ### Useful Links
452
475
 
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
476
+ - 📊 **Usage Dashboard**: https://elevenlabs.io/app/usage
477
+ - 💳 **Pricing Page**: https://elevenlabs.io/pricing
478
+ - 🆘 **Support**: https://help.elevenlabs.io/
458
479
 
459
- ### 💳 **ElevenLabs Pricing (2025)**
480
+ [↑ Back to top](#-table-of-contents)
460
481
 
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 |
482
+ ---
468
483
 
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
484
+ ## Troubleshooting
473
485
 
474
- ### 📈 **Monitor Your Usage**
486
+ ### No Audio Playing?
475
487
 
476
- **Track your consumption in real-time:**
488
+ 1. Check API key: `echo $ELEVENLABS_API_KEY`
489
+ 2. Check output style: `/output-style agent-vibes`
490
+ 3. Test playback: `/agent-vibes:sample Aria`
477
491
 
478
- 1. **Go to ElevenLabs Dashboard:**
479
- - Visit: https://elevenlabs.io/app/usage
480
- - Click "My Account" → "Usage Analytics"
481
- - Or: "Developers" → "Usage" tab
492
+ ### Commands Not Found?
482
493
 
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
494
+ ```bash
495
+ # Verify installation
496
+ node ~/claude/AgentVibes/bin/agent-vibes status
497
+
498
+ # Reinstall
499
+ node ~/claude/AgentVibes/bin/agent-vibes install --yes
500
+ ```
488
501
 
489
- 3. **Set up alerts:**
490
- - Check your usage weekly
491
- - Watch for unexpected spikes
492
- - Upgrade before hitting limits
502
+ ### Wrong Voice Playing?
493
503
 
494
- ### 💡 **Tips to Manage Costs**
504
+ ```bash
505
+ # Check current setup
506
+ /agent-vibes:whoami
495
507
 
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
- ```
508
+ # Reset if needed
509
+ /agent-vibes:personality reset
510
+ /agent-vibes:sentiment clear
511
+ ```
501
512
 
502
- 2. **Monitor analytics**: Check https://elevenlabs.io/app/usage regularly
513
+ [↑ Back to top](#-table-of-contents)
503
514
 
504
- 3. **Shorter messages**: Personality styles affect message length
505
- - "Normal" personality = shortest messages
506
- - "Sarcastic/Grandpa" = longer messages
515
+ ---
507
516
 
508
- 4. **Upgrade proactively**: If coding 8+ hours/day, start with Creator plan
517
+ ## 🔄 Updating
509
518
 
510
- ### 🔗 **Useful Links**
519
+ ### If installed via npx:
520
+ ```bash
521
+ npx agentvibes update --yes
522
+ ```
511
523
 
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/
524
+ ### If installed globally via npm:
525
+ ```bash
526
+ npm update -g agentvibes
527
+ agentvibes update --yes
528
+ ```
516
529
 
517
- ### ⚠️ **Fair Warning**
530
+ ### If installed from source:
531
+ ```bash
532
+ cd ~/AgentVibes
533
+ git pull origin master
534
+ npm install
535
+ node bin/agent-vibes update --yes
536
+ ```
518
537
 
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
538
+ The update command will:
539
+ - Update all slash commands
540
+ - Update TTS scripts and plugins
541
+ - Add new personalities (keeps your custom ones)
542
+ - ✅ Update output styles
543
+ - ⚠️ Preserves your voice settings and configurations
523
544
 
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
545
+ [↑ Back to top](#-table-of-contents)
528
546
 
529
- **Always monitor your ElevenLabs analytics dashboard!** 📊
547
+ ---
530
548
 
531
549
  ## 🙏 Credits
532
550
 
@@ -542,11 +560,13 @@ If you're coding **8 hours/day with Claude Code**, expect to use:
542
560
  - Licensed under Apache 2.0
543
561
 
544
562
  **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
563
+ - 💡 [Claude Code Hooks Mastery](https://github.com/disler/claude-code-hooks-mastery) by [@disler](https://github.com/disler)
564
+
565
+ [↑ Back to top](#-table-of-contents)
546
566
 
547
567
  ---
548
568
 
549
- ## 🤝 Show Some Love
569
+ ## 🤝 Contributing
550
570
 
551
571
  If AgentVibes makes your coding more fun:
552
572
  - ⭐ **Star this repo** on GitHub
@@ -557,3 +577,5 @@ If AgentVibes makes your coding more fun:
557
577
  ---
558
578
 
559
579
  **Ready to give Claude a voice? Install now and code with personality! 🎤✨**
580
+
581
+ [↑ 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.14",
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