# Python
__pycache__/
*.pyc
*.pyo
*.egg-info/
dist/
build/
.venv
venv/
*.so

# OS
.DS_Store

# IDE
.vs/
.idea/
*.suo
*.user
*.userprefs

# Obsidian (commit config, ignore workspace cache)
documentation/.vscode/
documentation/.obsidian/workspace.json
documentation/.obsidian/workspace-mobile.json
documentation/.obsidian/plugins/
documentation/.obsidian/themes/
documentation/.obsidian/hotkeys.json

# AI tool config
.gemini
.gemini/

# Secrets (envchain loads from macOS Keychain — .env is only for local overrides)
.env

# direnv
.direnv/

# SQLite dev database
dev.db

# Claude Code workflow flags (transient, per-session)
.claude/no_jira_required

# Test artifacts
test.db
.coverage
coverage.xml
htmlcov/
.ruff_cache/
.pytest_cache/

# Exported conversation transcripts (generated output)
docs/conversations/*
!docs/conversations/README.md

# Scratch / working notes
SCRATCH.md

# Claude Code workflow (transient, per-session)
.claude/signals/
.claude/state/
.claude/handoff-queue/claimed/
.claude/handoff-queue/completed/
.worktrees/

# Playwright MCP
.playwright-mcp/

# Note: uv.lock is tracked for reproducible CI (not ignored)

# Node
node_modules/
package-lock.json

# Logo archive (working drafts)
logos/archive/
.direnv
assets/iterm2-key-bindings/

# Demo recording intermediates
demo/demo.mov
demo/archive/
# >>> ai-harness canonical symlinks (AIH-119) — regenerated by install.sh, do not commit >>>
docs/analysis/TEMPLATE.md
docs/analysis/STUB.md
docs/audits/TEMPLATE.md
docs/audits/STUB.md
docs/bugs/TEMPLATE.md
docs/bugs/STUB.md
docs/designs/TEMPLATE.md
docs/designs/STUB.md
docs/handoffs/TEMPLATE.md
docs/handoffs/STUB.md
docs/plans/TEMPLATE.md
docs/plans/STUB.md
docs/procedures/TEMPLATE.md
docs/procedures/STUB.md
docs/research/TEMPLATE.md
docs/research/STUB.md
docs/test/TEMPLATE.md
docs/test/STUB.md
docs/tools/TEMPLATE.md
docs/tools/STUB.md
docs/research/prompts/TEMPLATE.md
docs/prompts/fable/STUB.md
docs/specs/SPEC-TEMPLATE.md
docs/specs/STUB.md.jinja
# <<< ai-harness canonical symlinks (AIH-119) <<<
