leesohyeon96/purrfect-claude
Claude Code global config — smart notifications, cat theme, and developer-friendly defaults 🐱
ARCHETYPE
Automator
Hooks on every lifecycle event: format, lint, notify, log.
Copy this rig
$ git clone --depth 1 https://github.com/leesohyeon96/purrfect-claude MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.
Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "cmd=$(jq -r '.tool_input.command'); if echo \"$cmd\" | grep -qE '^git commit'; then if [ -f './gradlew' ]; then ./gradlew classes -q 2>&1 || echo '{\"continue\": false, \"stopReason\": \"컴파일 에러가 있습니다. 수정 후 커밋하세요.\"}'; elif [ -f './mvnw' ]; then ./m"
}
]
}
]
}
} Hooks (6)
| event | matcher | runs |
|---|---|---|
| SessionStart | * | echo $(date +%s) > /tmp/claude-session-start; echo ''; echo ' /\_/\ '; echo ' ( o.o ) '; echo ' > ^ < Claude Code ready. Meow.'; echo '' |
| Stop | * | icon=$HOME/.claude/assets/icon.png; sound=$HOME/.claude/assets/meow.mp4; start=$(cat /tmp/claude-session-start 2>/dev/null || echo 0); now=$(date +%s); elapsed=$((now - start)); if [ $elapsed -gt 30 ]; then if [ -f "$icon" ]; then terminal- |
| PermissionRequest | * | icon=$HOME/.claude/assets/icon.png; sound=$HOME/.claude/assets/meow-waiting.mp4; tool=$(jq -r '.tool_name // "tool"'); if [ -f "$icon" ]; then terminal-notifier -title "Claude Code" -message "⚠️ Waiting for your approval — $tool" -contentIm |
| PostToolUseFailure | * | icon=$HOME/.claude/assets/icon.png; sound=$HOME/.claude/assets/meow-error.mp3; tool=$(jq -r '.tool_name // "tool"'); if [ -f "$icon" ]; then terminal-notifier -title "Claude Code" -message "❌ Error in $tool" -contentImage "$icon" -sound Bas |
| Notification | * | icon=$HOME/.claude/assets/icon.png; sound=$HOME/.claude/assets/meow.mp4; msg=$(jq -r '.message // "Meow?"'); if [ -f "$icon" ]; then terminal-notifier -title "Claude Code" -message "🐾 $msg" -contentImage "$icon" -sound Purr 2>/dev/null; els |
| PreToolUse | Bash | cmd=$(jq -r '.tool_input.command'); if echo "$cmd" | grep -qE '^git commit'; then if [ -f './gradlew' ]; then ./gradlew classes -q 2>&1 || echo '{"continue": false, "stopReason": "컴파일 에러가 있습니다. 수정 후 커밋하세요."}'; elif [ -f './mvnw' ]; then ./m |
Plugins (5)
claude-md-management@claude-plugins-officialhookify@claude-plugins-officialsession-report@claude-plugins-officialjdtls-lsp@claude-plugins-officialkotlin-lsp@claude-plugins-official
Similar rigs
cocoindex-io/cocoindex
Incremental engine for long horizon agents 🌟 Star if you like it!
Automator 7.3k tok ·
FailproofAI/failproofai
Observability and enforcement for AI agent harnesses. Capture every run and runtime reliability with policy enforcement.
Automator 22.9k tok ·
caliber-ai-org/ai-setup
Continuously sync your AI setups with one command. Codebase tailor suited agent skills, MCPs and config files for Claude Code, Cursor, and Codex.
Automator 3.2k tok ·
asklokesh/loki-mode
Autonomous software factory. Give it a GitHub issue, a spec or a one-line task; get back a pull request with a signed receipt anyone can re-check offline. Runs on your machine with your own keys: Claude, Codex, OpenCode.
Automator 8.2k tok ·