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.
- package/.claude/commands/agent-vibes-bmad.md +132 -0
- package/.claude/hooks/bmad-voice-manager.sh +278 -0
- package/.claude/output-styles/agent-vibes.md +58 -0
- package/.claude/personalities/grandpa.md +1 -1
- package/.claude/plugins/bmad-voices-enabled.flag +0 -0
- package/.claude/plugins/bmad-voices.md +42 -0
- package/README.md +220 -198
- package/package.json +1 -1
- package/templates/output-styles/agent-vibes.md +58 -0
|
@@ -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
|
|
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 -
|
|
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
|
-
## 🎤
|
|
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
|
-
###
|
|
163
|
+
### BMAD Plugin Commands
|
|
132
164
|
|
|
133
165
|
| Command | Description |
|
|
134
166
|
|---------|-------------|
|
|
135
|
-
| `/agent-vibes
|
|
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
|
|
151
|
-
| **
|
|
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** |
|
|
194
|
+
| **professional** | Matthew Schmitz | Formal and corporate |
|
|
155
195
|
|
|
156
|
-
**All
|
|
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
|
-
## 🗣️
|
|
231
|
+
## 🗣️ Voice Library
|
|
190
232
|
|
|
191
233
|
AgentVibes includes **17 unique ElevenLabs voices:**
|
|
192
234
|
|
|
193
|
-
| Voice | Character | Best For |
|
|
194
|
-
|
|
195
|
-
| [Aria](https://elevenlabs.io/voice-library/aria-professional-narration/TC0Zp7WVFzhA8zpTlRqV) | Clear professional | Default, all-purpose |
|
|
196
|
-
| [Jessica Anne Bogart](https://elevenlabs.io/voice-library/jessica-anne-bogart/flHkNRp1BlvT73UL6gyz) | Wickedly eloquent | Sarcastic, flirty |
|
|
197
|
-
| [Pirate Marshal](https://elevenlabs.io/voice-library/pirate-marshal/PPzYpIqttlTYA83688JI) | Authentic pirate | Pirate personality |
|
|
198
|
-
| [Grandpa
|
|
199
|
-
| [
|
|
200
|
-
| [Cowboy Bob](https://elevenlabs.io/voice-library/cowboy-bob/KTPVrSVAEUSJRClDzBw7) | Western charm | Casual, friendly |
|
|
201
|
-
| [Northern Terry](https://elevenlabs.io/voice-library/northern-terry/wo6udizrrtpIxWGp2qJk) | Eccentric British | Quirky responses |
|
|
202
|
-
| [Ms. Walker](https://elevenlabs.io/voice-library/ms-walker/DLsHlh26Ugcm6ELvS0qi) | Warm teacher | Professional |
|
|
203
|
-
| [Dr. Von Fusion](https://elevenlabs.io/voice-library/dr-von-fusion/yjJ45q8TVCrtMhEKurxY) | Mad scientist | Robot personality |
|
|
204
|
-
| [
|
|
205
|
-
| [
|
|
206
|
-
| [
|
|
207
|
-
| [
|
|
208
|
-
| [
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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
|
-
## 📦
|
|
309
|
+
## 📦 Installation Structure
|
|
217
310
|
|
|
218
311
|
```
|
|
219
312
|
your-project/
|
|
220
313
|
└── .claude/
|
|
221
314
|
├── commands/
|
|
222
|
-
│
|
|
223
|
-
│
|
|
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/ #
|
|
237
|
-
|
|
238
|
-
│
|
|
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
|
|
289
|
-
/agent-vibes:personality list # See all
|
|
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
|
-
##
|
|
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
|
-
##
|
|
440
|
+
## 💰 Pricing & Usage
|
|
406
441
|
|
|
407
|
-
###
|
|
408
|
-
```bash
|
|
409
|
-
npx agentvibes update --yes
|
|
410
|
-
```
|
|
442
|
+
### ElevenLabs Pricing (2025)
|
|
411
443
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
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
|
-
|
|
460
|
+
### Tips to Manage Costs
|
|
436
461
|
|
|
437
|
-
|
|
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
|
-
|
|
468
|
+
2. **Monitor analytics**: Check usage dashboard regularly
|
|
440
469
|
|
|
441
|
-
|
|
470
|
+
3. **Shorter messages**: "Normal" personality = shortest messages
|
|
442
471
|
|
|
443
|
-
**
|
|
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
|
-
|
|
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
|
-
**
|
|
454
|
-
-
|
|
455
|
-
-
|
|
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
|
-
|
|
480
|
+
[↑ Back to top](#-table-of-contents)
|
|
460
481
|
|
|
461
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
486
|
+
### No Audio Playing?
|
|
475
487
|
|
|
476
|
-
|
|
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
|
-
|
|
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
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
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
|
-
|
|
490
|
-
- Check your usage weekly
|
|
491
|
-
- Watch for unexpected spikes
|
|
492
|
-
- Upgrade before hitting limits
|
|
502
|
+
### Wrong Voice Playing?
|
|
493
503
|
|
|
494
|
-
|
|
504
|
+
```bash
|
|
505
|
+
# Check current setup
|
|
506
|
+
/agent-vibes:whoami
|
|
495
507
|
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
```
|
|
508
|
+
# Reset if needed
|
|
509
|
+
/agent-vibes:personality reset
|
|
510
|
+
/agent-vibes:sentiment clear
|
|
511
|
+
```
|
|
501
512
|
|
|
502
|
-
|
|
513
|
+
[↑ Back to top](#-table-of-contents)
|
|
503
514
|
|
|
504
|
-
|
|
505
|
-
- "Normal" personality = shortest messages
|
|
506
|
-
- "Sarcastic/Grandpa" = longer messages
|
|
515
|
+
---
|
|
507
516
|
|
|
508
|
-
|
|
517
|
+
## 🔄 Updating
|
|
509
518
|
|
|
510
|
-
###
|
|
519
|
+
### If installed via npx:
|
|
520
|
+
```bash
|
|
521
|
+
npx agentvibes update --yes
|
|
522
|
+
```
|
|
511
523
|
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
524
|
+
### If installed globally via npm:
|
|
525
|
+
```bash
|
|
526
|
+
npm update -g agentvibes
|
|
527
|
+
agentvibes update --yes
|
|
528
|
+
```
|
|
516
529
|
|
|
517
|
-
###
|
|
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
|
-
|
|
520
|
-
-
|
|
521
|
-
-
|
|
522
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
|
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
|
-
## 🤝
|
|
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.
|
|
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
|