Agent skill · cursor
add-dictation
Use when the user runs /add-dictation or wants speech turned into text with Grok speech-to-text: a mic button that dictates into the composer, live captions, or transcribing recorded audio (files, uploads, URLs) with word timestamps, diarization, subtitles, meeting notes. STT, transcribe, transcription. For a voice agent that talks back use /add-voice.
What it needs
About 5k tokens when loaded.
What this skill does
Add Dictation Add Grok Speech to Text to an existing app: a mic button that dictates into the composer, live captions, or transcripts of recorded audio. Run on /add-dictation, typed Dictate, or clear “transcribe” intent. Cursor has no mic; wire the app, not the IDE. Docs https://docs.x.ai/developers/model-capabilities/audio/speech-to-text Pricing (cite docs only): https://docs.x.ai/developers/pricing Pick the path Need Path --- --- Tap, speak, tap, text appears. Uploaded files. URLs. Batch POST https://api.x.ai/v1/stt (default) Text appears while speaking: captions, long dictation, push-to-talk Streaming wss://api.x.ai/v1/stt through a backend relay Batch is the default for a composer mic button: one request, no socket, the key never leaves the server. Go streaming only when the UX needs interim text. Auth Bearer XAIAPIKEY, server side only. The STT docs document no ephemeral-token flow, and browsers cannot set WebSocket headers, so browser streaming goes through your backend relay. Do not invent a token flow. Never put the key in a client bundle. Do not paste keys in chat. Steps 1. Map the app Composer or input component, where the text should land (insert at cursor vs replace), server framework, package manager. The microphone icon belongs to dictation. If /add-voice is installed, its waveform primary button stays as is; add the mic as a secondary ghost button beside it. Existing mic capture? If /add-voice ran, its PCM capture can feed streaming STT; pass its rate as samplerate. 16 kHz is the model’s native rate; other supported rates (8000, 16000, 22050, 24000, 44100, 48000) are resampled server side. 2. Batch path (default) Client: MediaRecorder → Blob → POST to your own route. The endpoint auto-detects containers (WAV, MP3, OGG, Opus, FLAC, AAC, MP4, M4A, MKV, WebM), so send whatever MediaRecorder produces. Server: forward as multipart/form-data. Option fields first, file last; fields after file may be ignored. file or url, max 500 MB. 3. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills cursor/add-dictation