# deps
node_modules/

# build / caches
dist/
build/
out/
.cache/
# `.webjs/vendor/` is the EXCEPTION: holds the committed importmap
# manifest + optional downloaded bundles for `webjs vendor pin`. See
# packages/cli/templates/.gitignore for the full rationale.
# DO NOT collapse to `.webjs/`: parent exclusion blocks child
# negations and silently breaks `webjs vendor pin`. The
# `gitignore-vendor-not-ignored` lint rule guards this.
# The `**/` prefix is REQUIRED in this monorepo: a slash-bearing
# `.webjs/*` anchors to the repo root, so the nested in-repo apps
# (website/, docs/, packages/ui/packages/website/) leaked their
# generated `.webjs/routes.d.ts` into `git status`. `**/.webjs/*`
# matches the dir at every depth while the negations still re-include
# vendor at each (a re-included parent allows child negation).
**/.webjs/*
!**/.webjs/vendor/
!**/.webjs/vendor/**

# generated Tailwind CSS - built from public/input.css via `npm run dev` / `npm run start`
**/public/tailwind.css

# env
.env
.env.*
!.env.example

# prisma local db
**/dev.db
**/dev.db-journal

# logs
*.log
npm-debug.log*

# OS
.DS_Store
Thumbs.db

# editors
.vscode/
.idea/
# Exception: the scaffold ships a VS Code settings file (the webjs-config
# JSON Schema association, #259) that MUST be committed so `webjs create`
# copies it into new apps. The repo's own top-level .vscode/ stays ignored.
!packages/cli/templates/.vscode/
!packages/cli/templates/.vscode/settings.json

# AI assistants - local session state, scheduled-task locks, etc.
# Keep repo-shared config (settings.json + hooks scripts) tracked so
# every contributor / agent gets the same PreToolUse rules.
.claude/*
!.claude/settings.json
!.claude/hooks/
!.claude/hooks/**

# test artifacts
coverage/

# Playwright/chrome-devtools MCP console-log output
.playwright-mcp/

# Bundled MCP docs (generated at prepack from agent-docs + AGENTS.md, #376;
# the MCP server moved to @webjsdev/mcp in #415, so the bundle is produced there)
packages/mcp/resources/
