__pycache__/
*.pyc
.subtask/
.agents/
bench/runs/
debug/
.pytest_cache/
.ruff_cache/
.obsidian/
# docs/dev/ is ignored by default (scratch plans/designs); ratified plans are
# force-added (`git add -f`) — see .claude/skills/dev-docs/SKILL.md
docs/dev/
.venv/
dist/
# .claude/ is machine-local (settings, plans, worktrees) EXCEPT skills and
# commands, which are shared developer assets. `.claude/*` (not `.claude/`)
# so the negations below can re-include — git won't descend into a fully
# ignored directory.
.claude/*
!.claude/skills/
!.claude/commands/
.DS_Store
.worktrees/
HANDOFF.md
ROADMAP.md
BACKLOG.md
PLAN.md
PROGRESS.json
.mcp.json

# Serena MCP project metadata (local tool artifact)
.serena/
