{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": [
      "mcp__obsidian__obsidian_list_files_in_vault",
      "mcp__obsidian__obsidian_simple_search",
      "mcp__obsidian__obsidian_get_file_contents",
      "mcp__obsidian__obsidian_list_files_in_dir",
      "mcp__postgres-gendesign__get_object_details",
      "mcp__postgres-gendesign__explain_query",
      "mcp__postgres-gendesign__list_objects",
      "mcp__postgres-gendesign__list_schemas",
      "mcp__postgres-gendesign__analyze_query_indexes",
      "Bash(curl *)",
      "Bash(powershell *)",
      "Bash(gh pr comment:*)",
      "Bash(powershell.exe:*)",
      "Bash(powershell:*)",
      "Bash(pwsh:*)",
      "mcp__forgejo",
      "mcp__forgejo__create_issue",
      "mcp__forgejo__update_issue",
      "mcp__forgejo__add_issue_labels",
      "mcp__forgejo__remove_issue_labels",
      "mcp__forgejo__issue_state_change",
      "mcp__forgejo__create_issue_comment",
      "mcp__forgejo__create_pull_request",
      "mcp__forgejo__merge_pull_request",
      "mcp__forgejo__create_pull_review",
      "mcp__forgejo__get_pull_request_diff",
      "mcp__forgejo__list_repo_issues",
      "mcp__forgejo__list_repo_pull_requests",
      "mcp__forgejo__get_pull_request_by_index",
      "mcp__forgejo__list_pull_request_files",
      "mcp__forgejo__list_pull_reviews",
      "mcp__forgejo__list_repo_labels",
      "mcp__forgejo__get_issue_by_index",
      "mcp__forgejo__list_issue_comments",
      "Write",
      "Edit",
      "Read",
      "Glob",
      "Grep",
      "LS",
      "Task",
      "TodoWrite",
      "EnterWorktree",
      "WebFetch",
      "WebSearch",
      "NotebookEdit",
      "mcp__obsidian",
      "mcp__postgres-gendesign",
      "mcp__playwright",
      "mcp__a11y",
      "mcp__lighthouse",
      "mcp__shadcn",
      "mcp__glitchtip",
      "mcp__context7",
      "mcp__fetch",
      "Bash(*)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(rm -rf /*)",
      "Bash(git push --force *)",
      "Bash(git push -f *)",
      "Bash(git reset --hard *)",
      "Bash(git commit --amend *)",
      "Bash(git rebase --interactive *)",
      "Bash(git commit --no-verify*)",
      "Bash(git push --no-verify*)",
      "Bash(git push --force-with-lease*)",
      "Bash(git push --force-if-includes*)",
      "Bash(docker compose down -v *)",
      "Bash(docker volume rm *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./backend/.env)",
      "Read(./backend/.env.*)",
      "Read(**/.env)",
      "Read(**/.env.*)"
    ],
    "defaultMode": "auto"
  },
  "enabledMcpjsonServers": [
    "obsidian",
    "context7",
    "fetch",
    "forgejo",
    "a11y",
    "lighthouse",
    "shadcn"
  ],
  "worktree": {
    "baseRef": "fresh",
    "bgIsolation": "worktree"
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python ${CLAUDE_PROJECT_DIR}/scripts/claude-hooks/check-secret-read.py"
          },
          {
            "type": "command",
            "command": "python ${CLAUDE_PROJECT_DIR}/scripts/claude-hooks/check-dangerous-commands.py"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "python ${CLAUDE_PROJECT_DIR}/scripts/claude-hooks/check-no-print.py"
          },
          {
            "type": "command",
            "command": "python ${CLAUDE_PROJECT_DIR}/scripts/claude-hooks/check-sql-pitfalls.py"
          }
        ]
      }
    ],
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "python ${CLAUDE_PROJECT_DIR}/scripts/claude-hooks/session-preflight.py"
          }
        ]
      }
    ]
  },
  "statusLine": {
    "type": "command",
    "command": "python ${CLAUDE_PROJECT_DIR}/scripts/claude-hooks/statusline.py"
  }
}
