# Python bytecode & packaging
__pycache__/
*.py[cod]
*$py.class
*.so
*.egg-info/
*.egg
dist/
build/
.eggs/
*.whl
*.tar.gz
sdist/
wheels/
pip-wheel-metadata/
MANIFEST

# Virtual environments
.venv/
venv/
env/
ENV/
.python-version

# IDE & editors
.vscode/
.idea/
*.swp
*.swo
*~
.project
.classpath
.settings/
*.sublime-project
*.sublime-workspace

# Testing & coverage
.pytest_cache/
.coverage
.coverage.*
htmlcov/
coverage.xml
*.cover
.hypothesis/
.nox/
.tox/

# Linting & type checking
.ruff_cache/
.mypy_cache/
.dmypy.json
dmypy.json
.pytype/
.pyre/

# OS artifacts
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Thumbs.db
ehthumbs.db
Desktop.ini

# Secrets & credentials
.env
.env.*
.env.local
.env.production
*.pem
*.key
*.p12
*.cert
*.crt
credentials*.json
secrets*.json
*_rsa
id_rsa*

# Build artifacts
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pip-log.txt
pip-delete-this-directory.txt

# Temporary files
tmp/
temp/
*.tmp
*.bak
*.orig

# AI tool local config (user-specific, not project rules)
/.claude/
/CLAUDE.md
.copilot/
.codeium/
.continue/

# Loom canonical context — KEEP in git (this is the value Loom provides)
# .context/index.json
# .context/architecture.md
# .context/naming.md
# .context/directory-map.md
# .context/stack.json
# .context/rules.json
# .context/plans-summary.md

# Loom ephemeral outputs — regenerated on demand, don't commit
.context/exports/
.context/bundles/
.context/sessions.jsonl
.context/cache/
.context/tmp/

# Loom live state — local per user, never commit
.loom/*
!.loom/reports/
