# Environment variables / secrets
.env
.env.*

# OS files
.DS_Store
Thumbs.db

# Node
node_modules/
dist/
build/

# Python
__pycache__/
*.pyc
.venv/
venv/
.coverage
coverage.xml
results.xml

# Jupyter
.ipynb_checkpoints/
.virtual_documents/

# Local databases
*.sqlite3
*.sqlite3-shm
*.sqlite3-wal

# Local build output
release/

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

# Playwright MCP session logs (transient)
.playwright-mcp/
.sdlc/

# Local AI-agent scratch docs (plans/specs staging, not committed)
.docs/

# Per-unit git worktrees (CLAUDE.md rule 5). These are nested working directories, not
# content — committing one would vendor a second copy of the repo into itself. Previously
# excluded only via .git/info/exclude, which is local to a clone and never travels, so a
# fresh clone saw them as untracked.
.claude/worktrees/
