screamlisted
Install: claude install-skill Bobby-Gray/claude-must-scream
# claude-must-scream
Give Claude a voice. A small CLI that pipes Claude's responses (or arbitrary
text) through Gemini Flash TTS and plays the audio locally — so you can listen
instead of read when your eyes are tired, or hear a long agent run wrap up
while you're across the room.
The name is a nod to Harlan Ellison's *I Have No Mouth, and I Must Scream*.
The AI in that story had no mouth and couldn't be silenced. The AI here gets
a mouth and a 30-voice picker.
## When to invoke
Trigger on:
- "Read that aloud" / "speak that"
- "TTS the last response"
- "/scream"
- "Play it back"
- "I want to hear it" / "let me listen"
- "Switch voice to X" / "change to a different voice"
- Any time the operator asks for audio output of conversation content.
Do NOT invoke for:
- Generating audio files for downstream use (this skill plays-and-discards).
Use Gemini TTS directly for file output.
- Voice input / dictation (this skill is output-only).
- Long-form audiobook narration (cap is 1,200 chars; designed for short
agent responses, not chapters).
## Prereqs
- macOS (uses `afplay` for playback and `say` as offline fallback). Linux
support possible — patches welcome.
- Python 3.9+ (stdlib only — no `requests`, no `playwright`, no installs).
- One of:
- **Gemini API key** (primary, best quality), supplied either via the
`GEMINI_TTS_API_KEY` env var or a key file at
`~/.config/claude-tts/gemini-tts.key` (0600). The env var wins when
both are present; the key file is th