notify
v0.1.0Claude Code Hooks 通知插件 - 通过系统通知和 TTS 语音实时提示会话状态变更、权限请求等重要事件
By lazygophersLicense: AGPL-3.0-or-later4 GitHub starsUpdated yesterday
Directory evidence
- Runtimes
- Claude Code
- Parsed components
- 0 skill or MCP entries
- Source updated
- Sep 23, 2026
- Manifest status
- Canonical path parsed
The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology →
Install notify for Claude Code
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install notify-4@agent-plugin-marketplacePaste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.
The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.
Get the source manually
git clone https://github.com/lazygophers/ccpluginClone the source repository, then follow its setup instructions to add the plugin to a compatible client. The plugin root is plugins/tools/notify/.
Plugin files
└── .claude-plugin/plugin.json
Plugin manifests1
{
"name": "notify",
"description": "Claude Code Hooks 通知插件 - 通过系统通知和 TTS 语音实时提示会话状态变更、权限请求等重要事件",
"version": "0.1.0",
"author": {
"name": "lazygophers",
"email": "[email protected]",
"url": "https://github.com/lazygophers"
},
"homepage": "https://github.com/lazygophers/ccplugin/tree/master/plugins/tools/notify",
"repository": "https://github.com/lazygophers/ccplugin/tree/master/plugins/tools/notify",
"license": "AGPL-3.0-or-later",
"keywords": [
"notification",
"system-notification",
"hook",
"event",
"tts",
"sound",
"alert"
],
"commands": [
"./commands/notify-config.md"
],
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"Setup": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 30
}
]
}
],
"UserPromptExpansion": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"PostToolUseFailure": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"PostToolBatch": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"PermissionRequest": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"PermissionDenied": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"MessageDisplay": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"SubagentStart": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"SubagentStop": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"TaskCreated": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"TaskCompleted": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"StopFailure": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"TeammateIdle": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"InstructionsLoaded": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"ConfigChange": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"CwdChanged": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"FileChanged": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"WorktreeCreate": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"WorktreeRemove": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"PostCompact": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"Elicitation": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"ElicitationResult": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
],
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "uv run --directory ${CLAUDE_PLUGIN_ROOT} ./scripts/main.py hooks",
"async": true,
"timeout": 10
}
]
}
]
}
}For maintainers
If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.
[notify on Agent Plugins Marketplace](https://pluginsmp.com/plugins/notify-4)