npx claudepluginhub omgpointless/aspy --plugin aspyDefined in hooks/hooks.json
{
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/spy/pre-compact.js",
"timeout": 10
}
]
}
],
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/spy/session-end.js",
"timeout": 5
}
],
"matcher": "clear|logout|prompt_input_exit|other"
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/spy/cargo-fmt.js",
"timeout": 30
}
],
"matcher": "Write|Edit"
}
],
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/spy/session-start.js",
"timeout": 10
}
],
"matcher": "startup|resume|clear|compact"
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/spy/user-prompt.js",
"timeout": 5
}
]
}
]
}"{\"riskFlags\": {\"touchesBash\": false, \"matchAllTools\": false, \"touchesFileWrites\": true}, \"typeStats\": {\"command\": 5}, \"eventStats\": {\"PreCompact\": 1, \"SessionEnd\": 1, \"PostToolUse\": 1, \"SessionStart\": 1, \"UserPromptSubmit\": 1}, \"originCounts\": {\"absolutePaths\": 0, \"pluginScripts\": 5, \"projectScripts\": 0}, \"timeoutStats\": {\"commandsWithoutTimeout\": 0}}"