{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",

  "permissions": {
    "allow": [
      "Read(*)",
      "Glob(*)",
      "Grep(*)",
      "Agent(cartographer)",
      "Agent(spec-writer)",
      "Agent(architect)",
      "Agent(reviewer)",
      "Agent(test-writer)",
      "Agent(eval-writer)",
      "Agent(anti-slop-guard)",
      "Agent(prototype-builder)",
      "Agent(devops)",
      "Agent(security)",
      "Agent(Explore)",
      "Agent(Plan)",
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git show *)",
      "Bash(git ls-files *)",
      "Bash(npm test *)",
      "Bash(npm run test *)",
      "Bash(npm run lint *)",
      "Bash(npm run build *)",
      "Bash(npm audit *)",
      "Bash(npx jest *)",
      "Bash(npx vitest *)",
      "Bash(npx prettier *)",
      "Bash(pytest *)",
      "Bash(go test *)",
      "Bash(cargo test *)"
    ],
    "deny": [
      "Bash(rm -rf /)",
      "Bash(rm -rf ~)",
      "Bash(rm -rf .)",
      "Bash(sudo rm *)",
      "Bash(git push --force * main)",
      "Bash(git push --force * master)",
      "Bash(git reset --hard origin/*)"
    ]
  },

  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-destructive.sh",
            "timeout": 5,
            "statusMessage": "Checking command safety..."
          }
        ]
      },
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/danger-zone-check.sh",
            "timeout": 5,
            "statusMessage": "Checking danger zones..."
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/auto-lint.sh",
            "timeout": 15,
            "statusMessage": "Auto-formatting..."
          },
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/slop-grep.sh",
            "timeout": 3,
            "statusMessage": "Slop check..."
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/session-review-reminder.sh",
            "timeout": 10,
            "statusMessage": "Checking for uncommitted changes..."
          }
        ]
      }
    ]
  }
}
