# Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
.eggs/
.venv/
venv/
.pytest_cache/
.ruff_cache/

# IDE / OS
.vscode/
.idea/
.DS_Store
*.swp
*.swo
*.iml

# Secrets
.env
.env.local

# Logs
*.log
logs/

# Local agent runtime state — committed entries below (semi-scaffold shared set,
# PI-685: agents/, config.yaml, docs/CODE_MAP.md synced from templates/);
# gitignored: vault/, settings.local.json, scheduled_tasks.lock (personal/runtime)
.agents/*
!.agents/skills
!.agents/hooks
!.agents/scripts
!.agents/settings.json
!.agents/agents
!.agents/config.yaml
!.agents/docs
.agents/docs/*
!.agents/docs/CODE_MAP.md
# Claude Code writes runtime state into the committed .claude/ mirror it
# actually reads — keep it out of the index and the sync contract (#668)
.claude/scheduled_tasks.lock
.claude/settings.local.json
.codex

# coverage data
.coverage
.coverage.*

# Measurement harness raw outputs (#269/#271) — per-run transcripts/cost JSONL
tools/benchmark/results/

# MkDocs build output (published to the gh-pages branch, not committed)
site/

# Plan-review scratch from codex-review / grill skills (work is tracked in Issues)
PLAN.md
PLAN-REVIEW-LOG.md
