ronle

CodeTalk — Development skill for Claude Code

Development community

A spoken reflection layer for Claude Code CLI — gives Claude a voice using edge-tts.

How to install CodeTalk

This entry records only its repository, not the path inside it, so there is no exact command to give. Open ronle/CodeTalk and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What CodeTalk does

A spoken reflection layer for Claude Code CLI — gives Claude a voice using edge-tts.

Alternatives in Development

  • Speech — Generate spoken audio from text using OpenAI's API with built-in voices 14.6k ★
  • CORS — Scan an endpoint for CORS misconfiguration — arbitrary-origin reflection, null-origin trust, credential exposu 4.5k ★
  • Codenotch — A macOS app that pins usage limits from Claude Code, Cursor, Codex, and Antigravity to a screen edge 1.3k ★

README

CodeTalk

A spoken reflection layer for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI. CodeTalk gives Claude a voice — it speaks brief observations, task announcements, and non-obvious insights aloud while you work.

How It Works

Claude embeds short spoken lines directly in its responses using a distinct format. A Stop hook extracts the text and plays it through your speakers via [edge-tts](https://github.com/rany2/edge-tts) (Microsoft's free neural TTS).

Your normal response text here...

---
> *This is what gets spoken aloud — a brief observation the model decided was worth saying.*

No second LLM call. No API key. The main model decides when to speak and what to say.

Voice Behaviors

Type When Example
Task start Beginning a non-trivial task "Refactoring the scanner to use connection pooling."
Task complete Finishing a task or milestone "Migration done, both tables updated."
Reflection ~30% of substantive responses "Removing that API key also eliminates the Sonnet charge risk."

Silence is the default. Not every response gets a spoken line.

Setup

1. Install edge-tts

pip install edge-tts

2. Add the hook to Claude Code

Add to `~/.claude/settings.json`:

{
  "hooks": {
    "Stop": [
      {
        "matcher": ".*",
        "hooks": [
          {
            "type": "command",
            "command": "python \"/path/to/CodeTalk/codetalk/hooks/codetalk.py\"",
            "timeout": 30000
          }
        ]
      }
    ]
  }
}

3. Add voice instructions to your project

Copy the `## Voice Instructions (ACTIVE)` section from this project's `CLAUDE.md` into your own project's `CLAUDE.md`. This tells Claude when and how to embed spoken lines.

Configuration

All settings are optional environment variables:

Variable Default Description
CODETALK_VOICE `en-US-Andr