__pycache__/
*.py[cod]
.venv/
.uv/
/dist/
# Written by scripts/generate_sbom.py; published as release assets, never committed.
sbom/
/build/
*.egg-info/
**/*.egg-info/
.mypy_cache/
.ruff_cache/
.pytest_cache/
.import_linter_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/
.python-version

# OS
.DS_Store
Thumbs.db

# Env / secrets
.env
.env.*

# Editors
.vscode/
.idea/

# Logs
*.log

# Agent tooling. `.claude/settings.json`, `.claude/skills/`, `.claude/agents/` and
# `.claude/rules/` ARE checked in on purpose: every agent working here gets the hooks
# and the project's own procedures, and an ignored hook is a promise nobody keeps.
# Only machine-local state and gate logs stay out.
.claude/settings.local.json
.claude/scheduled_tasks.lock
.claude/worktrees/
.playwright-mcp/
cache/
