/plugin marketplace add packlikez/claude-code-dev-plugin/plugin install packlikez-dev@packlikez/claude-code-dev-pluginDefined in ./hooks/hooks.json
{
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/scripts/notify.sh stop",
"timeout": 5
}
]
},
{
"hooks": [
{
"type": "prompt",
"prompt": "Before stopping, verify work is complete:\n\n1. Check if there are unfixed issues in any .claude/errors-*.md files\n2. Check if last validation passed\n3. Check if there are pending items in .claude/state/progress.md\n\nIf there's unfinished work:\n- DO NOT stop\n- Continue fixing issues\n- Loop until all tests pass\n\nOnly allow stop if:\n- All validations pass, OR\n- User explicitly requested to stop, OR\n- 10+ fix attempts made without progress\n\nOutput 'CONTINUE' if work remains, 'STOP' if done."
}
]
}
],
"PreCompact": [
{
"hooks": [
{
"type": "prompt",
"prompt": "Before context compaction, save the current state:\n\n1. Write current task progress to .claude/state/checkpoint.md\n2. Include: current task, completed items, pending items, key context\n3. Include resume instructions\n\nThis ensures work can continue after compaction."
}
]
}
],
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/scripts/notify.sh question",
"timeout": 5
}
],
"matcher": "AskUserQuestion"
}
],
"SessionStart": [
{
"hooks": [
{
"type": "prompt",
"prompt": "Check if there's saved state to restore:\n\n1. Check if .claude/state/checkpoint.md exists\n2. Check if .claude/project.md exists\n3. If checkpoint found, offer to resume\n4. If project.md found, note that project context is available\n\nOutput a brief status message about available context."
}
]
}
],
"SubagentStop": [
{
"hooks": [
{
"type": "prompt",
"prompt": "Review the subagent's output:\n\n1. Did it complete its task?\n2. Are there remaining issues?\n3. Should we continue with another agent?\n\nIf issues remain, note them for the next loop iteration."
}
]
}
]
}{
"riskFlags": {
"touchesBash": false,
"matchAllTools": false,
"touchesFileWrites": false
},
"typeStats": {
"prompt": 4,
"command": 2
},
"eventStats": {
"Stop": 2,
"PreCompact": 1,
"PreToolUse": 1,
"SessionStart": 1,
"SubagentStop": 1
},
"originCounts": {
"absolutePaths": 0,
"pluginScripts": 2,
"projectScripts": 0
},
"timeoutStats": {
"commandsWithoutTimeout": 0
}
}