Paste your ~/.claude/settings.json. Nothing leaves your browser.
Build a custom hook without writing code.
Copy-paste recipes from real GitHub Issues.
All major Claude Code hook projects compared.
| Project | Lang | Hooks | Install |
|---|---|---|---|
| safety-net | TS | 5 | npx |
| cc-safe-setup | Bash | 8+39 | npx |
| karanb192 | JS | 5+ | copy |
| mastery | Python | 12 | copy |
| lasso | Python | 1 | install.sh |
| Feature | safety-net | cc-safe-setup | karanb192 | mastery |
|---|---|---|---|---|
| rm -rf blocker | ✓ | ✓ | ✓ | ✓ |
| Branch guard | ✓ | ✓ | - | - |
| Secret guard | - | ✓ | ✓ | - |
| Syntax check | - | ✓ | - | - |
| Context monitor | - | ✓ | - | - |
| Hook generator | - | ✓ | - | - |
| Dashboard | - | ✓ | - | - |
| GitHub Action | - | ✓ | - | - |
Print this page (Ctrl+P) for a quick reference.
Prompt → PreToolUse → Tool → PostToolUse → Stop
| Code | Meaning |
|---|---|
0 | Allow |
2 | Block |
#!/bin/bash CMD=$(cat | jq -r '.tool_input.command // empty') [ -z "$CMD" ] && exit 0 echo "$CMD" | grep -qE 'PATTERN' && echo "BLOCKED" >&2 && exit 2 exit 0
#!/bin/bash
CMD=$(cat | jq -r '.tool_input.command // empty')
[ -z "$CMD" ] && exit 0
echo "$CMD" | grep -qE '^git\s+(status|log|diff)' && \
jq -n '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow"}}'
exit 0
npx cc-safe-setup | Install 8 hooks |
--create "desc" | Generate hook |
--audit | Score 0-100 |
--dashboard | Live status |
--doctor | Diagnose |
--benchmark | Speed test |