# ── Python ────────────────────────────────────────────────────────────────
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
.pytest_cache/
.mypy_cache/
.ruff_cache/

# ── Virtual environments ──────────────────────────────────────────────────
.venv/
venv/
env/

# ── Build artifacts (anchored to repo root so nested placeholders survive) ─
/dist/
/build/

# ── Credentials / secrets ─────────────────────────────────────────────────
.env
.env.*
*.pem
*.key
*.p12
*.asc
*.gpg
key.json
credentials.json

# ── OS files ──────────────────────────────────────────────────────────────
.DS_Store
Thumbs.db
desktop.ini

# ── IDE / editor ──────────────────────────────────────────────────────────
.idea/
.vscode/
*.swp
*.swo
*~

# ── Agent transient state ─────────────────────────────────────────────────
# Agent config (.claude/, .codex/, CLAUDE.md, AGENTS.md, …) IS tracked in the
# private repo and stripped at publish time by scripts/sync-to-public.sh.
# Only the ephemeral per-agent worktrees are excluded from version control.
/.claude/worktrees/
