# Dependencies
/node_modules
/.pnp
.pnp.js
yarn.lock
pnpm-lock.yaml
# package-lock.json is intentionally tracked since PRP-011 for reproducible builds.

# Testing
/coverage

# Next.js
/.next/
/out/
*.rsc

# Production
/build
/dist

# Misc
.DS_Store
*.pem

# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# Ficheros de entorno — CUALQUIER variante, no solo las que terminan en `.local`.
#
# Antes esto era `.env*.local`, que exige terminar en `.local` y por tanto dejaba
# fuera toda copia con sufijo: `.env.local.bak`, `.env.local.old`, `.env.local.orig`,
# `.env.local copy`... y tambien `.envrc` (direnv) y `.env.vercel`. Nueve variantes
# realistas se colaban. No es hipotetico: el 2026-08-16 un `.env.local.bak-key`
# —creado al rotar la clave de Holded— aparecio en `git status` como no rastreado,
# con todos los secretos dentro, a un `git add -A` de subirse.
#
# El prefijo es lo que identifica el riesgo, no el sufijo. Por eso se ignora TODO
# `.env*` y se re-incluyen a mano las plantillas, que es la lista corta y conocida.
.env*
# Plantillas SIN secretos: estas SI se versionan.
!.env.example
!.env.local.example

# Vercel
.vercel

# Obsidian (estado personal del workspace — cambia con cada clic, no compartible)
.obsidian/

# IDE
.vscode
.idea
*.swp
*.swo
*~
.sublime-project
.sublime-workspace

# OS
Thumbs.db
.AppleDouble
.LSOverride

# Claude Code
.claude/skills/**/node_modules
.claude/plugins
*.mcp.json
!example.mcp.json

# Supabase
supabase/.branches
supabase/.temp

# Build artifacts
*.tsbuildinfo
sbom.json

# Test artifacts
.playwright-mcp/
demo-initial.png

# SDK build artifacts
sdk-python/dist/
sdk-python/build/
sdk-python/*.egg-info/
sdk-python/.venv/
sdk-python/__pycache__/
sdk-python/**/__pycache__/
tests/__pycache__/
scripts/__pycache__/
sdk-python/.pytest_cache/
sdk-python/.mypy_cache/
sdk-python/.ruff_cache/
agents/__pycache__/
agents/**/__pycache__/
sdk-typescript/dist/
sdk-typescript/node_modules/
sdk-typescript/.turbo/

# SDK TS lockfile MUST be tracked for CI reproducibility
# (overrides the global `package-lock.json` exclusion above)
!sdk-typescript/package-lock.json

# Autonomous loop runtime artifacts
.claude/scheduled_tasks.lock

# PRP-011/013 visual validation screenshots + PDFs temporales (local artifacts)
prp011-*.png
prp013-*.png
.tmp-pdfs/

# PRP-010 F2-F7 visual validation screenshots (local artifacts)
f2-landing-home.png
f3-landing-full.png
f4-vs-pricing.png
f5-about.png
og-home.png
og-pricing.png
og-vs.png
analytics-3way-breakdown.png

# CodeQL audit databases (reconstructible from source, ~22MB)
.claude/audit/F3-codeql/databases/

# Practice profiles legales (info sensible founder generada por cold-start interviews)
# Carpeta trackeable solo por README + plantillas vacías sanitizadas.
docs/legal/_meta/practice-profiles/*
!docs/legal/_meta/practice-profiles/README.md
!docs/legal/_meta/practice-profiles/*.template.md
.claude/design-ref/

# loose debug screenshots in repo root (not project assets)
/*.png
# Obsidian vault home note (personal, not project code)
/HOME.md

# Playwright and verifier test artifacts (reconstructible)
/playwright-report/
/test-results/
tools/verify-export/__pycache__/

# Manual QA Area 5 artifacts (reconstructible from script)
/tests/manual-qa-area5-artifacts/
/tests/manual-qa-area6-artifacts/
/tests/manual-qa-area7-artifacts/
/tests/manual-qa-area8-artifacts/
/tests/slack-*.png

# El lienzo de diseño publicado: 2,3 MB de editor GENERADO desde los .dc.html de
# al lado. Los artboards sí se versionan (son la fuente, 64 KB); el payload no.
design/*.html
!design/*.dc.html

# Los PDF de venta son ARTEFACTOS: se generan desde docs/sales/*.html y *.md.
# Estuvieron commiteados en la raiz (1,4 MB) y en git pesan en cada clon para siempre.
/Pliuz_*.pdf
