# Dependencies
node_modules/

# npm lockfile (project uses bun.lock; npm may regenerate this as a side
# effect of npm subprocesses, but it should not be tracked)
package-lock.json

# Generated files
dist/
build/

# Test fixtures simulate "generated dist" trees; keep them tracked so tests
# can copy them into tmp git repos and assert is-generated behavior.
!tests/framework-fixtures/**/dist/
!tests/framework-fixtures/**/dist/**

# Build artifacts
*.log

# OS files
.DS_Store
Thumbs.db

# IDE
.vscode/
.idea/

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

# Environment
.env
.env.local

# Cloudflare
.wrangler/

# Impeccable-owned project files are split: generated sidecars/config may be
# tracked, but runtime recovery state and local assets should stay local.
.impeccable/live/server.json
.impeccable/live/codex-worker.json
.impeccable/live/codex-worker.log
# Ephemeral hook cache/state, at the project root and inside generated harness
# skill dirs (**/skills/impeccable/scripts/.impeccable/). Anchored patterns
# would miss the nested copies the build/hook writes.
**/.impeccable/hook.cache.json
.impeccable/live/sessions/
.impeccable/live/previews/
.impeccable/live/annotations/
.impeccable/live/artifacts/
.impeccable/live/accept-receipts/
.impeccable/live/locks/
.impeccable/live/cache/
.impeccable/live/benchmarks/
.impeccable/live/manual-edit-apply-transaction.json
.impeccable/live/manual-edit-events.jsonl
.impeccable/live/manual-edit-evidence/
.impeccable/live/pending-manual-edits.json
.impeccable/live/deferred-svelte-component-accepts.json
.impeccable/history/
.impeccable/config.local.json
**/.impeccable/hook.pending.json
.impeccable/provider-smoke/
src/__impeccable_provider_smoke_*.html
# Per-run critique snapshots are local artifacts. ignore.md (also under
# this dir) carries deferrals the user may want to share, so it's
# explicitly re-included below.
.impeccable/critique/
!.impeccable/critique/ignore.md

# Legacy live mode session file + annotation screenshots
.impeccable-live.json
.impeccable-live/
src/lib/impeccable/ImpeccableLiveRoot.svelte
src/lib/impeccable/__runtime.js

# Legacy per-project live mode injection config. New installs use
# .impeccable/live/config.json in the project root instead.
**/skills/impeccable/scripts/config.json

# Extension build artifacts
extension/detector/

# Legacy design context (pre-v3.1, auto-migrated to PRODUCT.md by load-context.mjs)
.impeccable.md
# Note: PRODUCT.md and DESIGN.md are INTENTIONALLY tracked in this repo —
# they serve as reference implementations for users installing impeccable.
# Users of impeccable in their own projects can choose whether to track them.

# Evals (private, commercial)
evals/
tests/evals-v2/

# Video backlog & scripts (local working files, not for distribution)
videos/

# Talk decks & speaker materials (local working files, not for distribution)
talks/

# Generated sub-pages (legacy, now replaced by Astro content collections)

# World design-system cards live in R2 (functions/worlds/cards); only the
# manifest is tracked. Generate: bun run world-cards; upload: world-cards:publish.

# Build artifacts written to site/public/ so Astro copies them to build/

# Note: harness skill directories (.claude/skills/, .cursor/skills/, etc.)
# are intentionally tracked. npx skills reads them from this repo at install
# time, and they enable clean submodule use. Run `bun run build` to refresh
# them after editing skill/.
#
# Codex CLI consumes `.agents/skills/`; the asset-producer subagent ships
# nested inside that skill (agents/*.toml), auto-discovered on install.
# The project-local hook manifest is the one tracked `.codex/` artifact.
.codex/*
!.codex/hooks.json
.astro/

# Local-only scratch for exploratory scripts, parked pages, and unused asset candidates.
tmp/

# Isolated ablation staging (impeccable-evals copies the built staged skill here
# per rule, removes one rule, points a worker at it). Throwaway; never committed.
.ablate-stage/

# Local scratch from iterating on the OG card (weight comparisons, intermediate
# PNGs, the old card backup). The canonical generator is `bun run og-image`
# (scripts/generate-og-image.js); this dir is throwaway and safe to delete.
.og-build/
