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.
npx agentmods add commands/chendrizzy/claude-tts/configgit clone --depth 1 https://github.com/chendrizzy/claude-ttsWrote 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.
[](https://agentmods.dev/commands/chendrizzy/claude-tts/config)<a href="https://agentmods.dev/commands/chendrizzy/claude-tts/config"><img src="https://agentmods.dev/badge/commands/chendrizzy/claude-tts/config.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00026 | $0.00917 |
| Opus 5 | $0.00013 | $0.00458 |
| Sonnet 5 | $0.00005 | $0.00183 |
| Haiku 4.5 | $0.00003 | $0.00092 |
Grade A, and why
tts:config 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 5d 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.
What it actually says
View or change claude-tts settings. This edits the same config /tts:setup
writes and /tts:voice edits — it just covers every block, not only voice.
The annotated schema (every key + what it does) lives in config.example.json.
Config file: ~/.config/claude-tts/config.json.
Argument (optional): $ARGUMENTS — a dotted key, optionally followed by a value.
Steps:
-
Read
~/.config/claude-tts/config.json. If it does not exist, tell the user to run/tts:setupfirst and stop. Keys beginning with_are documentation (comments, option lists, ranges) — never show them as settings, but do read them as hints (below). -
No argument → print the current settings grouped by block (
voice,filtering,summarizer,routing,statusline,audio,performance,logging,feature_flags, and any others present). Show each real key's value; suppress the_-prefixed meta keys. After the listing, note that the annotated reference isconfig.example.json, and that/tts:voiceis the friendlier path forvoice.engine/voice.name. -
A dotted key, no value (e.g.
summarizer.soft_tokens) → show that key's current value and, if a sibling hint exists, its meaning: look for_<key>_desc,_<key>_options,_<key>_range, or a block_comment. -
A dotted key and a value (e.g.
voice.rate 1.1,feature_flags.legacy_speak_enabled false) → set it:- Delegate voice — if the key is
voice.engineorvoice.name, stop and run/tts:voiceinstead; it knows engine↔voice compatibility and speaks a confirmation. Don't edit those here. - Validate against the key's own hints, in this order: an
_<key>_options/_levelslist → the value must be one of them; an_<key>_range→ within it; otherwise the value must match the JSON type of the current value (bool stays bool, number stays number, string stays string). Reject with the allowed set/range/type if it doesn't fit — do not write an invalid value. - Back up the current file to
config.json.bak(same dir), then write the change. Preserve every other key exactly, including all_-prefixed documentation keys, and emit valid JSON (2-space indent, like the original). - If the key does not exist in the file, say so and point to
config.example.jsonrather than inventing a new key — only offer to add it if the example documents it.
- Delegate voice — if the key is
-
Apply. The daemon reads config at start, except the
feature_flagsblock, which is re-read per request. So:- If the only change was under
feature_flags, it takes effect immediately — no restart. - Otherwise restart the daemon so the change applies, and confirm the socket
is bound afterward at
${CLAUDE_TTS_SOCKET:-${XDG_RUNTIME_DIR:-/tmp}/claude-tts.sock}.
- If the only change was under
-
If you changed a
summarizerbudget key (soft_tokens,slack_tokens,inner_timeout_s), suggest/tts:doctor— its budget-vs-timeout check verifies a full-budget summary still completes before the inner timeout. -
Speak a one-line confirmation of what changed (or, for a read, keep it silent — a view changes nothing).
Do not hardcode absolute personal paths; read locations from ~/.config/claude-tts
and the XDG socket expression above. If the daemon is not installed, say so and
suggest /tts:setup.
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.
- 5d ago First seen · 67 lines · 26 tokens per session scan A a34c71aef7ec
tts:config is a command published in the GitHub repository chendrizzy/claude-tts (1 stars, last pushed 19d ago), licensed MIT. It adds 26 tokens to every session and 917 once invoked, about $0.0001 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-08-31.
Other commands, from other repositories
wp-seed
Seed WordPress content from demo HTML — parses sections, creates pages, imports media, populates ACF fields, builds menus, supports bilingual content.
wp-audit
Comprehensive audit — security, SEO, accessibility, performance, best practices.
wp-tailwindify
Convert an HTML/CSS demo to Tailwind-native HTML — preserves section delimiters, maps colors to @theme variables.
anti-slop-designer
Use when a UI looks machine-made rather than decided. Violet gradients, glassmorphism everywhere, identical cards in a grid, untouched shadcn or Material defaults, emoji bullets, or copy stuffed with seamless and unlock.
design-enforce
Use when code has drifted off the design system. Raw hex values and pixel numbers written where a token already exists, one-off components, library defaults left untouched. Finds every bypass and fixes it.
design-grill
Use when a design keeps getting reinvented every session. Interviews you until you share one understanding, then writes the vocabulary and the binding decisions into the repo so they survive the next context window.