claudemods

All Claude Code modskingchan818/claude-code-tts

read-aloud

A Claude Code mod in kingchan818/claude-code-tts

Reads Claude's replies out loud on macOS with ElevenLabs (via OpenRouter) or the built-in say voice. /speak to control it.

read-aloud reaches L2 (writes or runs) and fails claude plugin validate on Claude Code 2.1.304: modules../register.tsx: read-aloud.hasReply is not declared: the manifest's types contract must name it in interface PluginState { read-aloud: { hasReply: ...….

Install hint

/plugin install read-aloud --marketplace kingchan818/claude-code-tts

From the repository's own marketplace. Confirm the plugin name in the repository's README before installing. Mods need Claude Code 2.1.287 or later. It fails validation in the latest scan, so it may not install.

Access

L2 Writes or runsruns processes, writes files, reads files, reads mod state, persists state, draws

Validation

fails on 2.1.304

View the source on GitHub Back to the list

What the scan recorded

Observed events
every prompt
Hooks
session.start, turn.complete, prompt.submit, ui.render {component=AbovePrompt}, command.run {command=speak}
API calls
$.clock.every, $.clock.now, $.command.register, $.fs.read, $.fs.write, $.process.run, $.state.get, $.state.set, $.store.get, $.store.set, $.ui.log, $.ui.resolve
Validation on 2.1.304
fails on 2.1.304
Validator output
modules../register.tsx: read-aloud.hasReply is not declared: the manifest's types contract must name it in interface PluginState { read-aloud: { hasReply: ... } }; modules../register.tsx: read-aloud.speed is not declared: the manifest's types contract must name it in interface PluginState { read-aloud: { speed: ... } }; ./register.tsx hooks: session.start, turn.complete, prompt.submit, ui.render{component=AbovePrompt}, command.run{command=speak}; ./register.tsx answers its own command: command.run{command=speak}; ./register.tsx gating hook with .catch: prompt.submit; ./register.tsx calls: $.clock.every (via watchStatus), $.clock.now (via speak, watchStatus), $.command.register, $.fs.read (via watchStatus), $.fs.write (via setSpeed, speak, stopSpeaking), $.process.run (via speak, stopSpeaking), $.state.get, $.state.set, $.store.get (via getSpeed, isEnabled, speak), $.store.set, $.ui.log, $.ui.resolve; ./register.tsx state writes: read-aloud.hasReply, read-aloud.speed, read-aloud.status; ./register.tsx state reads: read-aloud.hasReply, read-aloud.speed, read-aloud.status
Scanned revision
b536a77d55ce
Marketplace passed
read-aloud

These are the hooks and API calls reported by claude plugin validate. Access levels describe the widest reach of those calls and are not safety ratings. Validation is a static check, not a runtime test, and a passing result does not prove that a mod works or is safe. What a mod can access and how the scan works.

Badge for your README

Reach badge for read-aloud Validation badge for read-aloud

Authors can show the latest scan result in their README. Each badge links to this page.

[![reach](https://raw.githubusercontent.com/karanb192/awesome-claude-code-mods/main/badges/kingchan818--claude-code-tts--read-aloud-reach.svg)](https://mods.aidojo.si/mods/kingchan818--claude-code-tts--read-aloud/)
[![validates](https://raw.githubusercontent.com/karanb192/awesome-claude-code-mods/main/badges/kingchan818--claude-code-tts--read-aloud-validates.svg)](https://mods.aidojo.si/mods/kingchan818--claude-code-tts--read-aloud/)