# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
.venv/
venv/
env/
*.egg-info/
dist/
build/

# Node
node_modules/
frontend/dist/
frontend/coverage/

# IDE
.idea/
.vscode/
*.swp
*.swo

# Environment
**/.env
**/.env.*

# Docker
pgdata/

# OS
.DS_Store
Thumbs.db

# Coverage
.coverage
coverage.json
htmlcov/
# Backend browser-session (e2e) coverage capture artifacts
backend/.coverage.e2e
backend/coverage-e2e.json
*/junit.xml

# Claude Code state
.claude/state/last-run.md

# Keys
*.pem

TODO.txt
TODO.md

# Terraform
**/.terraform/
*.tfstate
*.tfstate.backup
# Auto-loaded tfvars files hold env-specific secrets/IPs (e.g. allowlist.auto.tfvars).
# Plain terraform.tfvars is checked in — keep it free of sensitive values.
*.auto.tfvars

# VerifAIed
# `.verifaied/` is tracked on purpose: the recorded browser-test specs and
# `.verifaied/config.toml` (the reset command) belong to the repo the same
# way any other test does.

# TypeScript incremental build cache — regenerated by `tsc`, never shared.
*.tsbuildinfo

# Parallel worktrees. `.worktree.mk` is the per-checkout port/project block
# the setup-worktree skill generates (`.env.worktree`, its shell twin, is
# already covered by `**/.env.*` above). `.mcp.json` carries a live
# `vr_live_…` bearer token — it is machine-local config, never repo config.
.worktree.mk
.mcp.json
