Install
1
Install the plugin$
npx claudepluginhub nguyenthienthanh/aura-frog --plugin aura-frogWant just this hook?
Then install: npx claudepluginhub u/[userId]/[slug]
Risk Indicators
Executes bash commandsModifies files
Source
Defined in hooks/hooks.json
Configuration
{
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/compact-handoff.cjs\" 2>&1"
},
{
"type": "command",
"async": true,
"command": "if [ -f .envrc ]; then set -a; source .envrc 2>/dev/null; set +a; fi; node \"${CLAUDE_PLUGIN_ROOT}/hooks/session-metrics.cjs\" 2>&1"
}
]
}
],
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/compact-handoff.cjs\" --pre-compact 2>&1"
}
]
}
],
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/scout-block.cjs\""
}
],
"matcher": "Bash|Read|Write|Edit|Glob|Grep"
},
{
"hooks": [
{
"type": "command",
"command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -qE '(rm -rf /|mkfs|dd if=|:(){|fork|shutdown|reboot|halt)'; then echo '⚠️ Blocked: Potentially destructive command detected' >&2; exit 2; fi"
},
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/commit-attribution.cjs\""
}
],
"matcher": "Bash"
},
{
"hooks": [
{
"type": "command",
"command": "if [ ! -f .claude/project-contexts/*/project-config.yaml ]; then echo '💡 Reminder: Run project:init to create project context before generating code' >&2; fi"
},
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/security-critical-warn.cjs\""
}
],
"matcher": "Write|Edit"
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"async": true,
"command": "if [ -d .claude/logs/workflows ]; then echo \"[$(date '+%Y-%m-%d %H:%M:%S')] Bash: $CLAUDE_TOOL_INPUT\" >> .claude/logs/workflows/commands.log; fi"
},
{
"type": "command",
"async": true,
"command": "if [ -f .envrc ]; then set -a; source .envrc 2>/dev/null; set +a; fi; node \"${CLAUDE_PLUGIN_ROOT}/hooks/smart-learn.cjs\" 2>&1"
}
],
"matcher": "Bash"
},
{
"hooks": [
{
"type": "command",
"command": "if [ -n \"$CLAUDE_FILE_PATHS\" ] && [ -f \"$CLAUDE_FILE_PATHS\" ]; then FILE_LINES=$(wc -l < \"$CLAUDE_FILE_PATHS\" 2>/dev/null || echo 0); if [ \"$FILE_LINES\" -gt 500 ]; then echo \"📄 Large file ($FILE_LINES lines). Consider using response-analyzer skill for chunked reading.\" >&2; fi; fi"
}
],
"matcher": "Read"
},
{
"hooks": [
{
"type": "command",
"async": true,
"command": "if [ -f .envrc ]; then set -a; source .envrc 2>/dev/null; set +a; fi; node \"${CLAUDE_PLUGIN_ROOT}/hooks/feedback-capture.cjs\" 2>&1"
},
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/lint-autofix.cjs\" 2>&1"
},
{
"type": "command",
"async": true,
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/security-scan.cjs\""
},
{
"type": "command",
"async": true,
"command": "if [ -f .envrc ]; then set -a; source .envrc 2>/dev/null; set +a; fi; node \"${CLAUDE_PLUGIN_ROOT}/hooks/auto-test-runner.cjs\""
},
{
"type": "command",
"async": true,
"command": "if [ -f .envrc ]; then set -a; source .envrc 2>/dev/null; set +a; fi; node \"${CLAUDE_PLUGIN_ROOT}/hooks/smart-learn.cjs\" 2>&1"
}
],
"matcher": "Write|Edit"
},
{
"hooks": [
{
"type": "command",
"async": true,
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/token-tracker.cjs\""
}
],
"matcher": "Bash|Read|Write|Edit|Glob|Grep|Task"
}
],
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "if [ -f .envrc ]; then set -a; source .envrc 2>/dev/null; set +a; fi; node \"${CLAUDE_PLUGIN_ROOT}/hooks/session-start.cjs\" 2>&1"
},
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/visual-pixel-init.cjs\" 2>&1"
},
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/firebase-cleanup.cjs\" 2>&1"
},
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/workflow-edit-learn.cjs\" 2>&1"
},
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/compact-handoff.cjs\" --resume 2>&1"
}
]
}
],
"TeammateIdle": [
{
"hooks": [
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/teammate-idle.cjs\""
}
],
"matcher": "*"
}
],
"SubagentStart": [
{
"hooks": [
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/subagent-init.cjs\""
}
],
"matcher": "*"
}
],
"TaskCompleted": [
{
"hooks": [
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/task-completed.cjs\""
}
],
"matcher": "*"
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/prompt-reminder.cjs\""
},
{
"type": "command",
"async": true,
"command": "if [ -f .envrc ]; then set -a; source .envrc 2>/dev/null; set +a; fi; node \"${CLAUDE_PLUGIN_ROOT}/hooks/auto-learn.cjs\" 2>&1"
},
{
"type": "command",
"async": true,
"command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/scope-drift.cjs\""
}
]
}
]
}Summary
{
"riskFlags": {
"touchesBash": true,
"matchAllTools": false,
"touchesFileWrites": true
},
"typeStats": {
"command": 28
},
"eventStats": {
"Stop": 2,
"PreCompact": 1,
"PreToolUse": 5,
"PostToolUse": 9,
"SessionStart": 5,
"TeammateIdle": 1,
"SubagentStart": 1,
"TaskCompleted": 1,
"UserPromptSubmit": 3
},
"originCounts": {
"absolutePaths": 0,
"pluginScripts": 24,
"projectScripts": 0
},
"timeoutStats": {
"commandsWithoutTimeout": 28
}
}Stats
Stars9
Forks2
Last CommitFeb 27, 2026