# ───────── .NET / C# ─────────
bin/
obj/
*.user
*.suo
.vs/
*.userprefs
*.pidb
*.booproj
*.svd
*.dll.mdb
*.exe.mdb
packages.lock.json.bak
.idea/
*.iml

# ───────── Python ─────────
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
dist/
*.egg-info/
.eggs/
*.egg
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
.coverage.*
htmlcov/
.tox/
.nox/
coverage.xml
*.cover
.hypothesis/
.venv/
venv/
ENV/

# uv
.uv-cache/

# ───────── Editors ─────────
.vscode/
*.swp
*.swo
.DS_Store
Thumbs.db

# ───────── Project-local ─────────
# Local credentials / tokens (never commit)
*.local
*.local.*
secrets/
.env
.env.*
!.env.example

# Local WorldBox install symlinks / cached dlls
mod/local-refs/
mod/lib/
*.snk

# Build outputs of the mod
WorldBoxBridge-v*.zip

# Decompilation scratch
scratch/
sandbox/

# Docs build
site/
.cache/

# Pre-commit
.pre-commit-cache/

# Scenario output (regenerated on each run)
examples/scenarios/output/

# Local dev tools (not committed)
actionlint.exe
actionlint
actionlint.tar.gz

# Build staging area for release artifacts
release-stage/

# ───────── AI agent scratch ─────────
# Plans, notes and session state are personal working material. They name local paths and
# throwaway ideas, they go stale immediately, and they are noise for anyone reading the repo.
# The durable equivalents are tracked on purpose: CLAUDE.md, TODOS.md and docs/.
plans/
.plans/
*.plan.md
PLAN.md
NOTES.md
SCRATCHPAD.md

# Per-machine agent config. A project-scoped .claude/settings.json can be committed
# deliberately by force-adding it; local overrides and session state never are.
.claude/
.codex/
.aider*
.cursor/
.cursorrules
.windsurfrules
.continue/
