# Node.js
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.npm
.eslintcache
.node_repl_history
*.tgz
.yarn-integrity
.env.local
.env.development.local
.env.test.local
.env.production.local

# Bun
.bun-build/
bun.lock

# Build output
dist/
*.mcpb
.mcpb-staging/
# Writes-enabled manifest variant produced by `bun run pack:mcpb:write`
# (local-only build; the committed manifest.json describes the read-only bundle).
manifest.write.json

# Claude Code local state
.claude/scheduled_tasks.lock
.claude/settings.local.json

# GraphQL capture — raw captures contain unscrubbed PII (real Firebase JWTs,
# merchant names, amounts, account IDs). Only the scrubbed/generated output
# is tracked; raw/ stays local.
docs/graphql-capture/raw/

# Superpowers session scratch — audit measurements, design specs, plan
# templates, and handoff notes routinely contain real financial figures
# captured during parity work (account balances, category totals, account
# names). Keep the whole tree local so `git add -A` can't surface it.
docs/superpowers/

# TypeScript
*.tsbuildinfo

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

# OS
.DS_Store
Thumbs.db

# Project specific
# Demo database contains real financial data - do NOT commit
tests/fixtures/demo_database/
# Development/debug scripts (except tracked subdirectories)
scripts/*
!scripts/graphql-capture/
!scripts/launcher.sh
!scripts/generate-graphql-operations.ts
!scripts/smoke-graphql.ts
!scripts/smoke/
!scripts/build-write-manifest.ts
!scripts/manifest-utils.ts
!scripts/verify-optimistic-consistency.ts
!scripts/check-version-sync.ts
!scripts/check-server-json.ts
!scripts/check-skills.py
!scripts/scheduled-smoke.ts
!scripts/install-scheduled-smoke.sh
!scripts/uninstall-scheduled-smoke.sh
# License-check scratch directory (created by CI license gate)
.license-check/
# Generated test fixtures
tests/fixtures/mixed-files-db/

# User financial profile (auto-populated with personal data by finance skills)
# Only the template (user-profile.template.md) is committed
skills/user-profile.md

# LevelDB snapshots (contain personal financial data)
snapshots/

# LevelDB files (except synthetic test fixtures)
*.ldb
!tests/fixtures/synthetic-db/*.ldb
MANIFEST-*
CURRENT
LOCK
*.log

# Whitelist scripts whose names happen to match earlier ignore patterns
# (the MANIFEST-* LevelDB rule above matches "manifest-utils.ts" on case-
# insensitive filesystems like default macOS APFS).
!scripts/manifest-utils.ts
