| name | project-voice |
| description | Generate unique voice hits for project completion sounds using 11 Labs API. Use when user asks to "create a project voice", "generate a voice hit", "make a completion sound", "set up project audio", or mentions voice generation for project notifications. |
Project Voice Skill
Generate short, fun voice hits using 11 Labs API (V3 model with emotional tags) and configure project-specific completion sounds.
When to Use
- User invokes
/project-voice
- User asks to create a unique project sound
- User wants to distinguish between multiple Claude Code sessions
- User mentions 11 Labs voice generation for completion notifications
Workflow
Step 1: Gather Context
Either:
- User provides text: Use their phrase directly
- Auto-generate: Analyze project context to create a fun phrase
For auto-generation, check:
- Project folder name
- README.md (if exists)
- package.json name/description (if exists)
Generate a 2-5 word phrase that's fun, silly, and project-themed.
Step 2: Add Emotional Tag
Add an appropriate emotional tag from the V3 model. See references/emotional-tags.md for options.
Examples:
[excited] Pixels assembled!
[whisper] Peace arrived.
[triumphant] Blastoff complete!
Step 3: Select Voice
Choose a voice from the catalog. See references/voice-catalog.md for options.
- Random selection for variety
- Or match voice style to project vibe (warm, energetic, calm, etc.)
Step 4: Generate Audio
Run the generation script:
python3 ~/.claude/skills/project-voice/scripts/generate_voice.py \
--text "[excited] Your phrase here!" \
--output-dir "$(pwd)/.claude/sounds" \
--voice-id "21m00Tcm4TlvDq8ikWAM"
The script will:
- Auto-version files (voice_v1.mp3, voice_v2.mp3, etc.)
- Never overwrite existing files
- Output JSON with the created file path
Step 5: Update Project Hook
Create or update .claude/settings.local.json in the project root:
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "afplay -v 0.1 /absolute/path/to/.claude/sounds/voice_v1.mp3"
}
]
}
]
}
}
Important: Use the absolute path from the script output.
API Key Setup
- Get an API key from https://elevenlabs.io/
- Add it to
~/.claude/skills/project-voice/.env:
ELEVENLABS_API_KEY=your_key_here
Script Reference
generate_voice.py [OPTIONS]
Options:
--text TEXT Phrase to vocalize (with emotional tags)
--voice-id ID Specific voice ID (optional, random if omitted)
--output-dir DIR Where to save the audio file
--list-voices Show available voices and exit
Example Session
User: /project-voice
Claude: I'll create a unique voice hit for this project.
Looking at the project... it's called "basketball-tracker" with a sports theme.
Generating: "[excited] Hoops on fire!"
[Runs script, gets voice_v1.mp3]
Updated .claude/settings.local.json with Stop hook.
Your project now has its own completion sound! When Claude Code finishes
in this project, you'll hear "Hoops on fire!" to know it's done.
References
references/voice-catalog.md - Available voices with IDs and styles
references/emotional-tags.md - V3 emotional tag reference