Guide · Agent skill
How to use the sag Text-to-Speech agent skill
Updated · written with AI from the project's own documentation and checked against our catalogue data
The sag skill lets an AI agent read text aloud using ElevenLabs AI voices, by running the sag command-line tool. It is aimed at creators who want narration drafts, developers who want a quick ElevenLabs test from the terminal, and anyone who wants the assistant to answer in a spoken voice. After this guide you will know what the skill needs, how to install it, how to ask for speech in plain language, and what to watch for on privacy and cost.
Quick start
- 1Get an ElevenLabs API key. Create an ElevenLabs account and generate an API key. You will set it as ELEVENLABS_API_KEY.
- 2Install the sag CLI. Run brew install steipete/tap/sag and check that the sag command runs in your terminal.
- 3Set your environment variables. Export ELEVENLABS_API_KEY, and optionally ELEVENLABS_VOICE_ID for a default voice.
- 4Add the skill folder. Unzip the downloaded sag skill into ~/.claude/skills/ or a project's .claude/skills/ folder, or upload it under Settings → Capabilities → Skills.
- 5Test with a simple request. Run sag "Hello there" or ask your agent to read a short sentence aloud.
- 6Request a voice reply. Ask the agent to answer in a voice. It will save an MP3 and attach it to the reply.
What the sag skill makes the agent do
An agent skill is a folder of instructions and tools that an AI assistant can load when a task calls for it. The sag skill teaches the agent to use the sag command-line tool to turn text into speech with ElevenLabs voices.
Once installed, the agent can play audio locally, list available voices, and adjust delivery with pronunciation fixes, number normalization, and expressive tags. It can also generate an MP3 file and attach it to a chat reply as a voice message.
- Speak text aloud with local playback
- List available voices
- Fix pronunciation by respelling words, adding hyphens, or adjusting casing
- Normalize numbers, units and URLs with --normalize auto (or off if it harms names)
- Add expressive tags such as [whispers], [short pause] or [laughs] in v3 voices
- Save an MP3 and send it as a voice reply in chat
Install the sag skill
Download the sag skill ZIP from this page and unzip it. The skill's only file is SKILL.md. Place the unzipped sag folder in one of these locations:
For a personal install across projects, put it in ~/.claude/skills/. For a single project, put it in that project's .claude/skills/ folder.
In the Claude apps, you can instead upload the skill under Settings → Capabilities → Skills.
- Personal: ~/.claude/skills/
- Project only: .claude/skills/ inside your project
- Claude apps: Settings → Capabilities → Skills
Install the sag command-line tool and add your API key
The skill needs the sag command-line tool. The source lists a Homebrew formula for it: steipete/tap/sag, which the skill's install entry labels 'Install sag (brew)'. Install it with Homebrew, then confirm the sag command is available in your terminal.
The skill also needs an ElevenLabs API key, set as the environment variable ELEVENLABS_API_KEY. The CLI also accepts SAG_API_KEY, and ELEVENLABS_API_KEY is the preferred name. You need an ElevenLabs account to get a key.
Optionally, set ELEVENLABS_VOICE_ID or SAG_VOICE_ID to choose a default voice.
- Required: sag command-line tool (Homebrew formula steipete/tap/sag)
- Required: ELEVENLABS_API_KEY (or SAG_API_KEY)
- Optional: ELEVENLABS_VOICE_ID or SAG_VOICE_ID for a default voice
- Requires an ElevenLabs account
brew install steipete/tap/sagAsk for speech with natural requests
You do not need special syntax. Ask the agent in plain language, for example to read a paragraph aloud, to explain something in a voice, or to make a narration file. The agent runs sag with the right options.
For direct command-line use, the source gives these quick start commands. Confirm the voice and speaker before generating long output.
- Read text aloud: sag "Hello there"
- Choose a voice: sag speak -v "Roger" "Hello"
- List voices: sag voices
- Model-specific tips: sag prompting
sag "Hello there"
sag speak -v "Roger" "Hello"
sag voices
sag promptingChoose a model and control delivery
The default model is eleven_v3, which is expressive. eleven_multilingual_v2 is listed as the stable option, and eleven_flash_v2_5 as the fast option.
Expressive tags go at the start of a line in v3. Pauses work differently by model: v3 does not support SSML <break>, so use [pause], [short pause] or [long pause] instead. On v2 and v2.5, SSML <break time="1.5s" /> is supported, but <phoneme> is not exposed in sag. Use --lang en, de, fr and so on to guide number normalization.
- v3 tags: [whispers], [shouts], [sings], [laughs], [starts laughing], [sighs], [exhales], [sarcastic], [curious], [excited], [crying], [mischievously]
- If a word is mispronounced, first respell it (for example "key-note")
- Use --normalize off if normalization harms names
sag "[whispers] keep this quiet. [short pause] ok?"Make a voice reply in chat
When you ask for a voice reply, such as a crazy scientist voice or an explanation in voice, the agent generates an audio file and sends it. The skill's pattern is to write an MP3 with -o, then include it in the reply using a MEDIA: line pointing at that file.
The source suggests tone choices: excited tags and short pauses for a crazy scientist, whispers or slower pacing for calm, and sings or shouts sparingly for drama. It uses the voice Rachel as an example, with a default voice ID for her.
- Crazy scientist: [excited] tags, dramatic [short pause], vary intensity
- Calm: [whispers] or slower pacing
- Dramatic: [sings] or [shouts] sparingly
sag -v Rachel -o /tmp/voice-reply.mp3 "Your message here"What people use it for
- Drafting narration or voiceover scripts and hearing how they sound
- Testing an ElevenLabs voice from the terminal before building it into an app
- Having the assistant answer in a character voice in chat
- Checking how numbers, units and URLs are read aloud and fixing them with normalization or respelling
Frequently asked questions
Is the sag skill free to use?
The sag skill is released under the MIT licence. Generating audio uses the ElevenLabs API, and the source notes that usage incurs API costs on your account. Check your ElevenLabs plan for pricing.
What do I need to run the sag skill?
You need the sag command-line tool, installable with Homebrew from steipete/tap/sag, and an ElevenLabs API key in ELEVENLABS_API_KEY or SAG_API_KEY. An ElevenLabs account is also required. The voice ID variables are optional.
How do I install the sag skill in Claude?
Unzip the downloaded skill into ~/.claude/skills/ for personal use, or into a project's .claude/skills/ folder. You can also upload it in the Claude apps under Settings → Capabilities → Skills.
Does sag send my text to a server?
Yes. The text is sent to ElevenLabs servers to generate the audio, so do not use this skill for offline or privacy-sensitive text.
Can I use sag to clone or imitate a real person's voice?
The skill only selects voices and does not address rights or consent. Do not use it to imitate a real person without their consent.
Why does my pronunciation sound wrong?
The source suggests first respelling the word, such as "key-note", adding hyphens, or adjusting casing. For numbers and units, try --normalize auto, or --normalize off if it harms names.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
The sag skill suits creators who want narration drafts and developers who want a quick ElevenLabs test from the terminal, as long as they have an ElevenLabs account and are comfortable sending text to that service. Skip it for offline or privacy-sensitive text, or if you have no API key, since it cannot work without one.
Download the skill