# Dependencies
node_modules/

# Environment (API keys)
.env*.local
.env

# OS
.DS_Store

# Debug logs
npm-debug.log*

# Editor
.idea/
.vscode/
*.swp

# Temporary files
/tmp/
/_tmp/

# Plan files (local working docs, stored in plans/)
plans/PLAN-*.md
plans/PLAN-*.html

# Research and review reports (local working docs, stored in reports/)
# Matches the pairing html-outputs.md already documents: plans/ and reports/
# are both user-facing working dirs. Existing tracked reports are unaffected.
reports/

# IDE (local Cursor settings - shared commands are in .claude/commands/)
.cursor/

# Claude Code worktrees (Remote Control spawn mode)
.claude/worktrees/

# Codebase map (auto-generated by /index, refreshed by /document)
CODEBASE_MAP.md

# Toolkit install manifest (auto-generated by setup on every run)
.claude/.toolkit-manifest.json

# Toolkit backups (originals preserved by setup.sh before overwrite/delete)
.toolkit-backup-*/

# HTML artifacts (cycle-bound HTML output generated by toolkit commands)
artifacts/html/

# Correction ledger (issue #157). Belt-and-braces: the real files live at
# ~/.claude/, outside every repo, so git cannot commit them. This rule exists so a
# future decision to move the ledger into a repo cannot leak it silently. The
# protection that actually does the work is NEVER_PUSH_BASENAMES in
# .claude/scripts/pre-push-check.js, which also catches `git add -f`.
correction-ledger.jsonl
correction-heartbeat.jsonl
correction-rollup.json
correction-axial-map.json
correction-rows.json
