# Python
__pycache__/
*.py[cod]
*$py.class
*.egg-info/
.eggs/
dist/
build/
*.whl

# Virtualenvs
.venv/
venv/
env/

# uv
.uv/

# Tooling caches
.ruff_cache/
.mypy_cache/
.pytest_cache/

# Editor
.vscode/
.idea/
*.swp
.DS_Store

# Local agent state (Claude Code, etc.)
.claude/

# Secrets — never commit. Plugins read env vars from the process
# environment; loading .env into the env is the user's responsibility
# (uv run --env-file .env / direnv / shell export).
.env
.env.*
!.env.example

# Local experimentation: smoke-test fixtures, ad-hoc conversion
# outputs, scratch scripts. Not part of the package or test suite.
scratch/

# Coverage
.coverage
htmlcov/

# uv.lock — workspace lockfile is checked in, but per-package locks aren't
**/uv.lock
!uv.lock
