Auto-discovered marketplace from sandipchitale/tellme-claude
npx claudepluginhub sandipchitale/tellme-claudeSpeak claude response...
A Claude Code plugin that provides an interactive speech-based prompt dialog and reads Claude's responses aloud using text-to-speech.
TellMe has two hooks that work together:
UserPromptSubmit Hook — intercepts prompts that start with . (dot). When detected, it displays an input dialog (macOS via osascript, Linux via Java) for the user to type or edit their input, speaks the input aloud ("You said: ..."), and forwards it as the prompt to Claude. If the user cancels the dialog, the prompt is blocked.
Stop Hook — triggers after Claude finishes a response. If the original prompt started with . or ended with .., it speaks Claude's response aloud with the format: "I say: {response}". The speech runs in a detached process so it doesn't block Claude Code.
/usr/bin/say (macOS) or espeak (Linux), or custom via TTS_COMMAND env varClone or copy this project:
git clone https://github.com/sandipchitale/tellme-claude.git
cd tellme-claude
Install dependencies:
npm install
Build the TypeScript:
npm run build
Install the plugin in Claude Code:
claude plugin install /path/to/tellme-claude
. (e.g., .tell me a joke). prefix:
. again (e.g., ..tell me), use the text as-is without showing a dialogosascript dialog titled "Yo" with message "Wassup? (try dictation)"scripts/tellme.java)
Stop hook after finishing a response. or ended with .., it extracts the last assistant responseIf the voice output is too long and you want to stop it:
macOS:
!killall /usr/bin/say
Linux:
!killall espeak
Then press ESCAPE to return to prompt.
tellme-claude/
├── .claude-plugin/
│ ├── plugin.json # Plugin metadata (name: tellme-claude, v1.0.0)
│ └── marketplace.json # Marketplace/local dev config
├── hooks/
│ └── hooks.json # Hook event configuration (UserPromptSubmit + Stop)
├── scripts/
│ └── tellme.java # Java fallback for Linux dialog support
├── screenshots/
│ └── prompt-dialog-with-dictation.jpg # Example dialog screenshot
├── tellme.ts # Main hook handler (TypeScript source)
├── tellme.js # Compiled JS (generated by npm run build)
├── package.json # Dependencies and project config
├── tsconfig.json # TypeScript configuration (ES2022 target)
├── .gitignore
└── README.md
tellme.ts — The main TypeScript source (ES2022 target), compiled to tellme.js via npm run build. It reads JSON from stdin, determines the hook event (UserPromptSubmit or Stop), and dispatches accordingly.
UserPromptSubmit:
osascript to let users confirm/edit input.scripts/tellme.java) for dialog display...) prefix to skip dialog and use text directly.Stop: Reads the transcript to check if the last prompt started with . or ended with .., then speaks the response with "I say: {response}". Uses child_process.spawn with detached: true so the voice doesn't block Claude Code./usr/bin/say on macOS, /usr/bin/espeak on Linux. Configurable via TTS_COMMAND environment variable.child_process.execSync for dialogs and child_process.spawn for TTS.hooks/hooks.json — Registers two hooks (UserPromptSubmit and Stop) that both run node ${CLAUDE_PLUGIN_ROOT}/tellme.js on every matcher (*).