# Claude Code worktree scaffolding
.worktrees/
.claude/worktrees/

# Dependencies
node_modules
.pnpm-store/

# Build outputs
dist/
build/
out/
types/

# ...except the Claude Code plugin's bundle, which is a COMMITTED artifact: an
# installed plugin has no node_modules and no build step, so the shipped bytes
# have to be in the repo. A test asserts it is tracked and byte-identical to a
# fresh build. The directory itself must be re-included before its contents —
# git cannot re-include a file whose parent directory is excluded.
!plugin/dist/

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

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

# Claude Code local settings (written by SessionStart hook in web sessions)
.claude/settings.local.json

# Claude Code personal notes (recurring nitpicks / review feedback, never committed)
CLAUDE.local.md
.claude/CLAUDE.local.md

# OS
.DS_Store
Thumbs.db

# Logs
*.log
npm-debug.log*
pnpm-debug.log*

# Coverage
coverage/

# Python
__pycache__/
*.pyc
.venv/
.uv/
*.egg-info/

# Generated: the self-contained CLI bundled into the Python wheel at build time
# (see scripts/bundle-python-cli.mjs). A build artifact from src/, never committed.
python/agent_sanitizer/_bundled/

# Stryker mutation testing
.stryker-tmp/
reports/mutation/
reports/stryker-incremental.json
stryker.shard.json
stryker.dryrun.json

# gh CLI state, written when a tool run puts HOME inside the checkout.
.local/

# `pnpm pack` output: a build artifact regenerated on demand, never a source.
*.tgz

# Generated at install, pack and build time by scripts/gen-unicode.mjs (`pnpm
# install` runs it through `prepare`, `npm pack` through `prepack`) from the
# UCD package pnpm-lock.yaml pins. Build output is never tracked: the reviewable
# surface is the generators plus the lockfile. The wheel's hatch `artifacts`
# force-includes the JSON, so generate before every `uv build`.
src/cf-charset.mjs
src/joining-type.mjs
src/standardized-variants.mjs
src/unicode-properties.mjs
python/agent_sanitizer/data/invisible-charset.json

# Generated at install, pack and build time by scripts/gen-gfm-autolink.mjs
# (`pnpm install` through `prepare`, `npm pack` through `prepack`): the pinned
# upstream micromark-extension-gfm-autolink-literal with
# scripts/patches/*.patch applied. Only the patch is tracked.
src/vendor/gfm-autolink-literal.mjs
