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

# Virtual environments
.venv/
venv/

# uv (cli/uv.lock is committed for reproducible CI builds)

# IDE
.idea/
.vscode/
*.code-workspace
*.swp
*.swo
*~

# Rulesync
rulesync.lock

# Rulesync - generated output (regenerate with: ./scripts/rulesync-upgen.sh).
#
# copilot, claudecode, and codexcli are shared targets: their generated output
# IS committed (copilot under .github/; claudecode and codexcli below). The
# entries here are the per-developer outputs for personal targets, which stay
# ignored. See CONTRIBUTING.md ("What gets committed").
.agents/
.claudeignore
.mcp.json
.cursor/
.cursorrules
.cursorignore
.copilotignore
GEMINI.md
.gemini/
.geminiignore
.windsurfrules
.clinerules/
.roo/

# claudecode and codexcli outputs are committed, but only the dirs rulesync
# generates. Ignore everything else under these dirs (e.g. personal
# .claude/settings.local.json) via a catch-all plus explicit re-includes.
# The re-include list is an allowlist: if rulesync's output set for these
# targets grows (a new feature emits e.g. .claude/commands/ or .mcp.json),
# add the new path here, otherwise it silently stays ignored. The drift check
# (rulesync-upgen.sh --check) fails loudly if that happens, so it can't pass
# unnoticed.
.claude/*
!.claude/agents/
!.claude/rules/
!.claude/skills/
.codex/*
!.codex/agents/
!.codex/memories/
!.codex/skills/

# Reserved convention: any file with `.local.` in its name is machine-specific
# and NEVER committed. Covers a skill's local aux content (e.g.
# inventory.local.md) at both its .rulesync source and every generated harness
# copy, plus rulesync.local.jsonc. A new standard target needs no new line.
# The exception: a matching `*.local.*.example` file is the SHAREABLE
# TEMPLATE and IS committed. Copy it, drop the `.example` suffix, and fill in
# your real values; the copy then falls under the ignore rule above.
*.local.*
!*.local.*.example

# Tmux
.tmuxinator.yml

# Secrets / env files
*.env*

# OS
.DS_Store
Thumbs.db
desktop.ini

# mypy
.mypy_cache/

# ruff
.ruff_cache/

# pytest
.pytest_cache/
htmlcov/
.coverage
