From ccd65b7f435d869f3c1ccc3a3bb7ab6fa7842be1 Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sun, 30 Nov 2025 08:28:32 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 12 ++++++++++ README.md | 3 +++ hooks/hooks.json | 37 +++++++++++++++++++++++++++++++ plugin.lock.json | 45 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 hooks/hooks.json create mode 100644 plugin.lock.json diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..1cec721 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "mcp-voice-hooks-plugin", + "description": "Real-time voice interaction for Claude Code. Speak naturally while Claude works - interrupt, redirect, or provide continuous feedback without stopping.", + "version": "1.0.40", + "author": { + "name": "John Matthew Tennant", + "url": "https://github.com/johnmatthewtennant" + }, + "hooks": [ + "./hooks" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4a72551 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# mcp-voice-hooks-plugin + +Real-time voice interaction for Claude Code. Speak naturally while Claude works - interrupt, redirect, or provide continuous feedback without stopping. diff --git a/hooks/hooks.json b/hooks/hooks.json new file mode 100644 index 0000000..232621b --- /dev/null +++ b/hooks/hooks.json @@ -0,0 +1,37 @@ +{ + "hooks": { + "Stop": [ + { + "matcher": "", + "hooks": [ + { + "type": "command", + "command": "curl -s -X POST \"http://localhost:${MCP_VOICE_HOOKS_PORT:-5111}/api/hooks/stop\" || echo '{}'" + } + ] + } + ], + "PreToolUse": [ + { + "matcher": "_voice-hooks__speak$", + "hooks": [ + { + "type": "command", + "command": "curl -s -X POST \"http://localhost:${MCP_VOICE_HOOKS_PORT:-5111}/api/hooks/pre-speak\" || echo '{}'" + } + ] + } + ], + "PostToolUse": [ + { + "matcher": "^(?!.*_voice-hooks__)", + "hooks": [ + { + "type": "command", + "command": "curl -s -X POST \"http://localhost:${MCP_VOICE_HOOKS_PORT:-5111}/api/hooks/post-tool\" || echo '{}'" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..994f64c --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,45 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:johnmatthewtennant/mcp-voice-hooks:plugin", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "440fc2efefa74b5fa5509e735020f9a0e2e975be", + "treeHash": "7e755719d0274a495c01994048bb5e400d6e678a2dba0d3c1e052d0655a3b5a4", + "generatedAt": "2025-11-28T10:19:18.299532Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "mcp-voice-hooks-plugin", + "description": "Real-time voice interaction for Claude Code. Speak naturally while Claude works - interrupt, redirect, or provide continuous feedback without stopping.", + "version": "1.0.40" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "f6cf6637f41bc4de7ad340adf11c53aa65add49f93fbebf001b7bce11d9d5ca7" + }, + { + "path": "hooks/hooks.json", + "sha256": "7f091bfe25f7e4c6a1730ada218a025e53bc8860ee0e2e30de760551373159f5" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "84dc34c96a7b4e76090408a4de129e250575af116fca2934c70d1d62253487f2" + } + ], + "dirSha256": "7e755719d0274a495c01994048bb5e400d6e678a2dba0d3c1e052d0655a3b5a4" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file