# Dependencies
node_modules/
.pnpm-store/

# Build output
dist/
build/
*.tsbuildinfo

# Demo bundle — generated by `npm run demo:build` (see scripts/build-demo-dataset.js
# + scripts/patch-demo-mode.js). The deployed site at skill-map.dev/demo/ is
# built fresh from `ui/` + `ui/fixtures/demo-scope/` on every site:build run.
web/demo/

# Test / coverage
coverage/
.nyc_output/

# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Environment
.env
.env.local
.env.*.local

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

# OS
.DS_Store
Thumbs.db

# Project-local temp
.tmp/

# skill-map runtime artifacts (local cache, shouldn't be committed).
# Exception: conformance fixtures intentionally ship a `.skill-map/`
# subtree as source (drop-in plugin layouts, etc.) — those MUST be
# tracked so CI's `spec:check` sees the same files the local runner
# does.
.skill-map/
!spec/conformance/fixtures/**/.skill-map/
!spec/conformance/fixtures/**/.skill-map/**

.codex

# Claude Code / sandbox dotfile mounts. The sandbox virtualises certain
# host dotfiles as /dev/null character devices in the repo root so the
# tool's process cannot read user-level config (shell rc, git identity,
# MCP servers, ripgrep config). They surface as untracked entries in
# `git status` forever; ignoring them keeps the working tree clean.
.bashrc
.bash_profile
.profile
.zshrc
.zprofile
.gitconfig
.gitmodules
.mcp.json
.ripgreprc
.vscode
.claude/commands
.claude/settings.json
.claude/scheduled_tasks.lock
