npx claudepluginhub nbkm8y5/claude-plugins --plugin agentic-watchdogDefined in hooks/hooks.json
{
"Stop": [
{
"hooks": [
{
"type": "prompt",
"prompt": "Before completing, verify: (1) Did you run the actual verification commands (tests, build, lint) that prove your work is correct, or are you claiming success based on what you wrote? If you have NOT run verification, say so explicitly — do not claim the work is complete. (2) Check if any requirements from the original request remain unaddressed. List them if so. This is a self-check, not a block — but be honest."
}
],
"matcher": ""
}
],
"PreCompact": [
{
"hooks": [
{
"type": "prompt",
"prompt": "Before context is compressed, perform a session health audit. Read ${CLAUDE_PLUGIN_ROOT}/skills/failure-detection/references/detection_heuristics.md for the specific signals to check. Evaluate the current session for: (1) AGENTIC LOOPS — have you repeated similar tool calls 3+ times without progress? Are you editing the same file back and forth? (2) SYCOPHANTIC CONFIRMATION — have you agreed with the user on something technically questionable without pushback? Did you confirm success without running verification? (3) CONTEXT DEGRADATION — what percentage of the original requirements/spec can you still recall? List any requirements you can no longer confidently state. (4) SPEC DRIFT — if artifacts/ or a spec file exists, are recent changes still aligned with the original requirements? Write a brief health report to .claude/watchdog-report.md with severity ratings (healthy/warning/critical) for each dimension. If any dimension is critical, flag it prominently so it survives compression."
}
],
"matcher": ""
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/detect_silent_failure.py",
"timeout": 5
}
],
"matcher": "Bash"
},
{
"hooks": [
{
"type": "command",
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/detect_spec_drift.py \"$FILE_PATH\"",
"timeout": 10
}
],
"matcher": "Write|Edit"
}
]
}"{\"riskFlags\": {\"touchesBash\": true, \"matchAllTools\": false, \"touchesFileWrites\": true}, \"typeStats\": {\"prompt\": 2, \"command\": 2}, \"eventStats\": {\"Stop\": 1, \"PreCompact\": 1, \"PostToolUse\": 2}, \"originCounts\": {\"absolutePaths\": 0, \"pluginScripts\": 2, \"projectScripts\": 0}, \"timeoutStats\": {\"commandsWithoutTimeout\": 0}}"