# Python bytecode
__pycache__/
*.py[cod]

# uv — virtual environment
.venv/
.uv-cache/

# hatchling — build output
dist/
src/*.egg-info/

# pytest — test cache
.pytest_cache/

# Coverage.py — reports and data
.coverage
.coverage.*
coverage.xml
htmlcov/

# mypy — type-check cache
.mypy_cache/

# Ruff — lint/format cache
.ruff_cache/

# prek — pre-commit hook cache
.prek/

# macOS — filesystem metadata
.DS_Store

# Windows — filesystem metadata
Thumbs.db
ehthumbs.db

# VSCode - settings
.vscode/

# ICM stage output is ephemeral scratch, rebuilt per run (dirs kept via .gitkeep)
ICM/**/output/*
!ICM/**/output/.gitkeep
ICM/**/shared/*
!ICM/**/shared/.gitkeep

# Machine-local Claude Code settings and runtime state - previously only excluded via
# .git/info/exclude, which is not shared with clones and is not honoured by hatchling's sdist
# builder, so a worktree or scheduled-task artifact sitting on disk at build time was bundled
# straight into the published sdist (found while auditing the 0.3.2 release build)
.claude/settings.local.json
.claude/scheduled_tasks.lock
.claude/scheduled_tasks.json
.claude/routines/.state/
.claude/worktrees/
.claude/checkpoints/
.claude/mailbox/
.claude/agent-registry.json
.claude/agent-memory-local
.claude/first-run
.claude/assistant-daemon-state.json

# skill-creator — eval workspaces
.claude/skills/*-workspace/

.mcp.json

.env*