~ / rigs / leesohyeon96 / purrfect-claude

leesohyeon96/purrfect-claude

Claude Code global config — smart notifications, cat theme, and developer-friendly defaults 🐱

↗ GitHub ★ 1 no license updated 5mo ago project Claude Code
share on X
ARCHETYPE
Automator
Hooks on every lifecycle event: format, lint, notify, log.
CONTEXT TAX · EVERY TURN
~150 tokens
Featherweight · median rig: 2.3k · breakdown
GUARDRAILS
2/5
Pre-tool screening hook · No YOLO mode · details

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)

eventmatcherruns
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
PreToolUseBashcmd=$(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

copied ✓