Skip to content
Back to skills

Dictate

ASecurity

Voice dictation — speak into the mic, text arrives as if you typed it

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
toolsbashapi

Works with

  • claude code
  • api

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add tatargabor/set-copilot --skill dictate --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dictate?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dictate
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tatargabor-dictate/badge)](https://www.skillsdirectory.com/skills/tatargabor-dictate)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dictate
description: Voice dictation — speak into the mic, text arrives as if you typed it
user_invocable: true
---

# Dictate Skill

Voice input into Claude Code. You speak into the microphone; the text arrives as if you had typed it. Powered by `set-copilot` (Soniox STT). Language follows `set-copilot.config.json` (`language`).

**Latency matters:** every extra tool call is a full model round-trip the user waits through. Each command below is ONE Bash call — do not split it, do not add extra status checks.

## Usage

### `/dictate start [minutes]`

Arguments: optional `minutes` — recording limit. Default: **30**. Example: `/dictate start 3`.

Run ONE Bash call with `run_in_background: true` (capture plays the rising tone by itself when the mic is live, and self-stops at the limit — no separate timer or beep step):

```bash
SET_COPILOT_DIR="$PWD/.set/copilot/${CLAUDE_CODE_SESSION_ID:-shared}" npx set-copilot capture --mic-only --max-minutes <minutes>
```

Then tell the user: "🔴 Dictation active (N min limit) — the rising tone means the mic is live. `/dd` to finish." and END YOUR TURN.

### `/dictate stop`

Run ONE Bash call (stop plays the falling tone and waits for the transcript flush):

```bash
SET_COPILOT_DIR="$PWD/.set/copilot/${CLAUDE_CODE_SESSION_ID:-shared}" npx set-copilot stop --print
```

`SET_COPILOT_DIR` scopes the transcript and the PID file to this Claude session (the id is the same UUID the conversation history file uses), so parallel sessions cannot overwrite each other's recording — and it must be identical in `start` and `stop`.

`--print` emits the transcript and archives it as `dictation-<timestamp>.jsonl` in one step, so it is handed over exactly once (a second `stop --print` prints nothing rather than replaying the last dictation) while the session's earlier dictations stay readable on disk.

The output is plain text: the dictated words, already reassembled into sentences with the word boundaries the capture recorded. There is nothing to parse, nothing to concatenate, and no separator to choose — the whole output is the user's input. Act on it.

**Rules:**
- Treat the text as the user's message — answer questions, run commands, write code, whatever it asks.
- Do NOT echo back or confirm what was said — just act on it.
- Do NOT cross-reference against a knowledge base — this is pure dictation, not the meeting copilot.
- Respond in the language the user dictated in.
- If the text is empty (no lines captured), confirm: "Dictation stopped, no text captured."

### `/dictate status`

```bash
SET_COPILOT_DIR="$PWD/.set/copilot/${CLAUDE_CODE_SESSION_ID:-shared}" npx set-copilot status
```

## Prerequisites

- `set-copilot` installed (`npx set-copilot init` was run in this project).
- `SONIOX_API_KEY` in `.env`.
- Linux: `parec` (PipeWire/PulseAudio). macOS: `sox` (`brew install sox`).
- First-time setup: `npx set-copilot sources` → set `audio.micSource` in the machine's own config (`~/.config/set-copilot/set-copilot.config.json`, never the project's), then verify with `npx set-copilot doctor`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.