.DS_Store
*.swp
*.swo
*~
.idea/
.vscode/
node_modules/
__pycache__/
*.py[cod]
.worktrees/

# Local agent and plugin state.
.claude/
.agents/
.codex/
.codex-plugin/
.claude-plugin/
.antigravitycli/

# Local credentials and auth state.
.env
.env.*
!.env.example
!.env.sample
**/.codex/auth.json
**/.netrc
**/.npmrc
**/.pypirc
*.pem
*.key
*.p12
*.pfx
id_rsa
id_rsa.*
id_ed25519
id_ed25519.*
*_rsa
*_ed25519
.dev.vars
.wrangler/
*.tfstate
*.tfstate.*
*.tfvars
*.tfvars.json

# /masterplan runtime telemetry is local-only. Keep generated cost/context
# sidecars out of commits even when using broad git add commands.
**/events-archive.jsonl
**/*-telemetry.jsonl
**/*-telemetry-archive.jsonl
**/*-subagents.jsonl
**/*-subagents-archive.jsonl
**/*-subagents-cursor

# Internal handoff notes (kept local; not for public consumption).
# See SessionStart-hook convention; LLMs collaborating on this repo
# write decisions here for the next session, not the public.
WORKLOG.md
legacy/
docs/notes/

# --- Doctor test fixtures are CI ground truth and MUST be committed ---
# They deliberately mirror the real host layout the doctor probes (.claude/,
# .codex/, .claude-plugin/, installed_plugins.json, auth.json), which the
# local-state ignores above (lines 13-25) would otherwise silently drop. The
# directory negations re-admit the dot-dirs so git recurses into them; the final
# catch-all re-admits the files within (incl. auth.json, overriding **/.codex/auth.json).
!test/fixtures/**/.claude/
!test/fixtures/**/.codex/
!test/fixtures/**/.claude-plugin/
!test/fixtures/**/auth.json
!test/fixtures/**
# Re-ignore secret-file globs that the catch-all above would otherwise re-admit.
# auth.json is intentionally NOT listed here — the !test/fixtures/**/auth.json
# negation above keeps codex-auth fixtures tracked.
test/fixtures/**/.env
test/fixtures/**/.env.*
test/fixtures/**/*.key
test/fixtures/**/*.pem
test/fixtures/**/*.p12
test/fixtures/**/*.pfx
test/fixtures/**/id_rsa
test/fixtures/**/id_ed25519
