npx claudepluginhub forbee-dev/forgebee --plugin forgebeeDefined in hooks/hooks.json
{
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/session-save.js",
"timeout": 10
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/self-improve.js",
"timeout": 10
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/console-log-audit.js",
"timeout": 10
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/task-sync.js",
"timeout": 10
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/pm-sync.js",
"timeout": 10
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/audit-trail.js",
"timeout": 10
}
],
"matcher": ""
}
],
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/context-guard.js",
"timeout": 10
}
],
"matcher": ""
}
],
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/skills/continuous-learning/scripts/observe.js",
"timeout": 3
}
],
"matcher": "*"
},
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/permission-guard.js",
"timeout": 5
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/dev-server-blocker.js",
"timeout": 5
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/git-push-reminder.js",
"timeout": 5
}
],
"matcher": "Bash"
},
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/suggest-compact.js",
"timeout": 5
}
],
"matcher": "Edit|Write"
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/skills/continuous-learning/scripts/observe.js",
"timeout": 3
}
],
"matcher": "*"
},
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/post-edit-format.js",
"timeout": 15
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/post-edit-typecheck.js",
"timeout": 30
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/post-edit-console-warn.js",
"timeout": 5
}
],
"matcher": "Edit"
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/notification.js",
"timeout": 5
}
],
"matcher": ""
}
],
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/session-load.js",
"timeout": 5
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/project-triage.js",
"timeout": 10
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-context-rules.js",
"timeout": 5
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/task-sync.js",
"timeout": 5
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/pm-sync.js",
"timeout": 5
},
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/context-guard.js",
"timeout": 10
}
],
"matcher": ""
}
],
"TeammateIdle": [
{
"hooks": [
{
"type": "prompt",
"prompt": "A teammate is about to go idle. Check: did they complete ALL assigned tasks? Are there unclaimed tasks they should pick up? If there's more work to do, respond with {\"ok\": false, \"reason\": \"pick up task X next\"}. Otherwise {\"ok\": true}.",
"timeout": 15
}
],
"matcher": ""
}
],
"TaskCompleted": [
{
"hooks": [
{
"type": "prompt",
"prompt": "A task was marked as completed. Before accepting, you MUST collect concrete evidence:\n\n1. Run the test suite and capture output (not just 'tests pass' — show the actual output)\n2. Check build status if applicable\n3. Verify each acceptance criterion has specific evidence\n\nIf you cannot run verification commands, or if any test fails, or if acceptance criteria lack evidence, respond with {\"ok\": false, \"reason\": \"[specific missing evidence]\"}.\n\nOnly respond {\"ok\": true} if you have ACTUAL command output proving completion. 'I reviewed the code' is NOT verification — running commands is.",
"timeout": 30
}
],
"matcher": ""
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/skill-activator.js",
"timeout": 5
}
],
"matcher": ""
}
]
}"{\"riskFlags\": {\"touchesBash\": true, \"matchAllTools\": true, \"touchesFileWrites\": true}, \"typeStats\": {\"prompt\": 2, \"command\": 24}, \"eventStats\": {\"Stop\": 6, \"PreCompact\": 1, \"PreToolUse\": 5, \"PostToolUse\": 4, \"Notification\": 1, \"SessionStart\": 6, \"TeammateIdle\": 1, \"TaskCompleted\": 1, \"UserPromptSubmit\": 1}, \"originCounts\": {\"absolutePaths\": 0, \"pluginScripts\": 24, \"projectScripts\": 0}, \"timeoutStats\": {\"commandsWithoutTimeout\": 0}}"