node_modules/
dist/
.turbo/
*.db
*.db-journal
*.db-wal
*.db-shm
/data/
tmp/
.env
.env.local
.env.cloudflare
.env.*
.DS_Store
.playwright/
.playwright-mcp/
.vite/
apps/api/data/
apps/api/tmp/
apps/web/.vite/

# Python
__pycache__/
*.pyc

# Build artifacts
.next/
.astro/
**/.vitepress/cache/
**/.vitepress/.temp/
out/
coverage/
*.tsbuildinfo

# Playwright
test-results/
playwright-report/
blob-report/

# License signing key (NEVER commit)
.license-signing-key

# IDE / tool scratch
CLAUDE.md
AGENTS.md
CONTEXT.md
.claude/
.codex/
.superpowers/
docs/*
!docs/COMMUNITY_GUIDE.md
PRD.md

# Docker Hub publish script (maintainer-local ops)
scripts/update-dockerhub-overview.sh

# Ad-hoc test screenshots and reports
tests/e2e/screenshots/qa/
test-*.png
!tests/fixtures/*.png
stirling-pdf-*.png
settings-*.png
layout-*.png
audit_report.md
docs/SECURITY_AUDIT_REPORT.md
docs/QA_REPORT*.md
.worktrees/
.release-version
.models
.local-wiki/
.mcp.json
tests/benchmark/bench-limits-results-mac.jsonl
.superpowers/
scripts/setup-cloudflare-email.sh
apps/videos
remotion/
/demo
pentest-results/
# Test scratch: fleet jobs point TMPDIR here, so per-fork test workspaces
# and Playwright's transform cache land in it (#1456)
.tmp/
# Stryker mutation testing
.stryker-tmp/
.stryker-tmp-api/
.stryker-tmp-shared/
packages/image-engine/reports/
packages/media-engine/reports/
packages/doc-engine/reports/
# Root Stryker output for the apps/api mutation lane (stryker.api.config.json)
/reports/

# Local AI run scratch scripts
run-ai-*.py

# Local QA scratch artifacts
.qa-maps/

# Secrets: GSC OAuth client + any credential JSON (never commit)
.secrets/
*client_secret*.json
*service_account*.json

# i18n Claude Code batch handoff scratch (export/import intermediates)
.i18n-batches/

# Local Python venv. tests/helpers/python-gate.ts and packages/ai/src/bridge.ts
# both resolve .venv/bin/python3 first, so this is how you open the
# weasyprint/PyMuPDF-gated suites locally. No trailing slash: it is usually a
# symlink to a venv elsewhere, which a directory-only pattern would miss.
.venv
