{
  "hooks": {
    "SubagentStop": [
      {
        "matcher": "backend-developer|frontend-developer",
        "hooks": [
          {
            "type": "command",
            "command": "bash \"$CLAUDE_PROJECT_DIR/.claude/hooks/quick-scan.sh\"",
            "timeout": 30,
            "statusMessage": "Running quick scan..."
          }
        ]
      }
    ],
    "SessionStart": [
      {
        "matcher": "compact",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'if [ -f \"$CLAUDE_PROJECT_DIR/docs/project_notes/pm-session.lock\" ]; then echo \"{\\\"additionalContext\\\": \\\"PM Autonomous session active. BEFORE doing anything else: (1) Read docs/project_notes/pm-session.md for full PM state. (2) Read the product tracker Active Session. (3) Run: continue pm\\\"}\"; else echo \"{\\\"additionalContext\\\": \\\"Context was compacted. BEFORE doing anything else: (1) Read the product tracker Active Session (docs/project_notes/product-tracker.md) for context recovery. (2) Re-read the SKILL.md for your current workflow (.claude/skills/development-workflow/SKILL.md) to know what actions are required at your current step. (3) If at Step 5 or later, you MUST read references/merge-checklist.md and fill the Merge Checklist Evidence table in the ticket before requesting merge approval.\\\"}\"; fi'",
            "statusMessage": "Injecting recovery context..."
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "permission_prompt",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Waiting for approval\" with title \"Claude Code\"' 2>/dev/null || notify-send 'Claude Code' 'Waiting for approval' 2>/dev/null || printf '\\a'"
          }
        ]
      },
      {
        "matcher": "idle_prompt",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Task finished — waiting for input\" with title \"Claude Code\"' 2>/dev/null || notify-send 'Claude Code' 'Task finished — waiting for input' 2>/dev/null || printf '\\a'"
          }
        ]
      }
    ]
  }
}
