# Category rule: nothing dot-prefixed at the repo root gets tracked except the
# git config files and CI workflows re-included below (a category beats a
# list -- same philosophy as Cargo's exclude = [".*"]). Root-anchored on
# purpose; nested dotfiles are governed by the specific rules below.
/.*
!/.gitignore
!/.gitattributes
!/.github/

# Private agent config (always excluded). No trailing slash on purpose: a
# .agents that is a symlink to a private store is treated by git as a file,
# so a directory-only `.agents/` would NOT ignore it. These stay even
# though /.* already covers them at the root: they also catch nested copies.
# *.local.* is the unshared override (machine- or user-specific) and must
# never be committed or packaged.
.agents
*.local.*
CLAUDE*
.claude

# Build/dist output and generated docs site
build/
dist/
site/

# Python
__pycache__/
*.py[cod]
*$py.class
.pytest_cache/
.hypothesis/
.mypy_cache/
.ruff_cache/
.coverage
.coverage.*
htmlcov/
*.egg-info/
.venv/
.pyvenv/

# OS/editor
.DS_Store
Thumbs.db
.idea/
.vscode/
