Agent skill · cursor

add-read-aloud

Use when the user runs /add-read-aloud or wants the app to speak text with Grok text-to-speech: read-aloud button on assistant replies, auto-speak, TTS, voice output, narration, IVR prompts, speech tags, voice_id. For a two-way voice agent use /add-voice. For speech-to-text use /add-dictation.

What it needs

About 8k tokens when loaded.

What this skill does

Add Read Aloud Add Grok Text to Speech to an existing app: a speaker button on assistant replies, auto-speak, or narration of any text. Run on /add-read-aloud, typed Read aloud, or clear “speak this” / “TTS” intent. Cursor has no speaker; wire the app, not the IDE. Docs https://docs.x.ai/developers/model-capabilities/audio/text-to-speech API reference: https://docs.x.ai/developers/rest-api-reference/inference/voice Custom voices: https://docs.x.ai/developers/model-capabilities/audio/custom-voices Pricing (cite docs only): https://docs.x.ai/developers/pricing Pick the path Need Path --- --- Tap speaker, hear the finished reply. Narrate a page. Generate a file. Batch POST https://api.x.ai/v1/tts (default) Audio starts while the LLM is still streaming; barge-in; texts over 15,000 chars Streaming wss://api.x.ai/v1/tts through a backend relay Batch is the default for a read-aloud button: one request, one MP3, cacheable, the key never leaves the server. Go streaming only when the UX needs audio before the text is complete. POST /v1/tts has no documented streaming flag; do not invent one. Auth Bearer XAIAPIKEY, server side only. The TTS docs document no ephemeral-token flow, and browsers cannot set WebSocket headers, so browser streaming goes through your backend relay. Never put the key in a client bundle. Do not paste keys in chat. Steps 1. Map the app Where assistant messages render, where per-message actions live (copy, regenerate), how the reply stream ends, server framework, package manager. The speaker icon belongs to read aloud. Waveform is voice mode (/add-voice), microphone is dictation (/add-dictation). Put a ghost speaker button in the message action row; loading shows a spinner, playing shows a stop square. One utterance at a time: starting a new one stops the current one. Align the action row to the reply’s text edge, not the button’s box: an icon button centres its glyph, so if the assistant bubble has no padding pull the row left by that inset (e.g. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills cursor/add-read-aloud

View the source on GitHub

Browse the @skills marketplace