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

# Virtual env
.venv/
venv/
env/

# Environment variables
.env
.env.local

# IDE
.vscode/
.idea/
*.swp
*.swo

# Testing
.pytest_cache/
.coverage
htmlcov/

# Ruff
.ruff_cache/

# OS
.DS_Store
Thumbs.db

# Claude Code (local dev config)
.claude/
CLAUDE.md
CLAUDE.md.bak.*

# Codex CLI (local dev config — symmetric with Claude Code, ADR-008)
AGENTS.md
AGENTS.md.bak.*

# PM Server data (local project management)
.pm/

# PM Server lock files (defensive — covered by .pm/ above, but explicit for users
# who choose to commit .pm/ to git; PMSERV-048)
.pm/.locks/

# PM Server X-content drafts — x_drafts.db carries raw_content (the unscrubbed
# concentrate, a secret at rest; ADR-024). Defensive explicit exclusion for
# users who choose to commit .pm/ to git (PMSERV-113 / PMSERV-120). Covers the
# WAL/SHM sidecars too.
.pm/x_drafts.db
.pm/x_drafts.db-wal
.pm/x_drafts.db-shm

# Synaptic Ledger (local knowledge data)
.synaptic/

# Blog/marketing article drafts — kept local-only. A product source repo is not
# the home for marketing posts: Zenn publishes from a dedicated zenn-content repo
# (articles/ + zenn-cli), note is web-editor only. Drafts live here untracked and
# are published manually per platform. (The README's dashboard image stays tracked
# under docs/assets/.)
docs/articles/
