tts

tts is a skill for Claude Code from drn/dots. It costs 49 tokens per session (675 once invoked), scanned A, original, MIT.

A text-to-speech helper that reads supplied text or a short summary aloud.

In plain words
What is it for?
Use it when you ask the agent to speak a message, summary, plan, or other text aloud.
Why use it?
It lets you listen to information instead of reading it on screen.

Skill for Claude Code

Written for Claude Code: $ARGUMENTS substitution.

Good fit Use it when you ask the agent to speak a message, summary, plan, or other text aloud.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/drn/dots/tts
View source ↗ drn/dots
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add drn/dots --skill tts
Clone the repo
git clone --depth 1 https://github.com/drn/dots

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for tts

README.md
[![agentmods](https://agentmods.dev/badge/skills/drn/dots/tts.svg)](https://agentmods.dev/skills/drn/dots/tts)
Your own site
<a href="https://agentmods.dev/skills/drn/dots/tts"><img src="https://agentmods.dev/badge/skills/drn/dots/tts.svg" alt="Measured on agentmods" height="20"></a>
Per session 49 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 675 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00049 $0.00675
Opus 5 $0.00024 $0.00338
Sonnet 5 $0.00010 $0.00135
Haiku 4.5 $0.00005 $0.00068

Measured 3d ago against content hash 478b65c1b2dd, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade A, and why

tts scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/skills/tts/SKILL.md · 48 lines

How it starts

The opening of the file, as written. The whole thing — 48 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Text-to-Speech

Read content aloud using the tts CLI (Kokoro TTS locally, or OpenAI with --remote).

Arguments

  • $ARGUMENTS - Optional text or reference to read aloud (e.g., "read the summary to me")

Instructions

Step 1: Determine Content

Figure out what to speak from the user's message and conversation context:

  • If the user said "speak to me" or "read to me" with no specific content, summarize the most recent output or finding in 1-2 sentences and speak that. Prefix with project name (see Step 2).
  • If the user referenced specific content ("read the summary", "say the plan"), speak a concise version of that content. Prefix with project name.
  • If the user provided literal text ("say hello world"), speak exactly that. Do NOT add the project-name prefix — verbatim means verbatim.

Step 2: Speak

For summaries/derived content, prefix the spoken text with the current project name followed by -, e.g. dots - completed task. Resolve the project name from the git remote URL, falling back to the git toplevel basename, then the cwd basename. Sanitize to [A-Za-z0-9._-] before interpolating so an unusual remote name can't reach the shell:

PROJECT=$(basename -s .git "$(git remote get-url origin 2>/dev/null)" 2>/dev/null)
if [ -z "$PROJECT" ]; then PROJECT=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null); fi
if [ -z "$PROJECT" ]; then PROJECT=$(basename "$PWD"); fi
PROJECT=$(printf '%s' "$PROJECT" | tr -cd 'A-Za-z0-9._-')
tts -s 1.4 "$PROJECT - Your text here"
  • Speed: Use -s 1.4 by default
  • Voice: heart (default) — user can request others with -v: alloy, nova, bella, sky, echo, onyx, or any Kokoro voice ID (af_heart, am_adam, etc.). Voices are auto-cached on first use (brief download delay).
  • Remote: Add --remote to use OpenAI TTS API instead of local Kokoro
  • Daemon: A persistent daemon auto-starts on first use to keep the model warm (~3s vs ~6.5s cold start). Use tts serve / tts stop to manage manually.
  • Length: Keep spoken text concise. For long content, summarize to key points rather than reading verbatim.

Read the full file on GitHub · 48 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 48 lines · 49 tokens per session scan A 478b65c1b2dd

Subscribe to this mod's changes

tts is a skill published in the GitHub repository drn/dots (23 stars, last pushed 2d ago), licensed MIT. It adds 49 tokens to every session and 675 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.