# =========================================================================
# AI Project Template — .gitignore
# Trim or extend per project, but treat the secrets/build/data sections as
# load-bearing: removing them is what causes accidental credential commits.
# =========================================================================

# --- Secrets & local config ---
.env
.env.local
.env.*.local
.env.development
.env.staging
.env.production
.env.backup.*

# --- AWS credentials ---
.aws/

# --- Node / Next.js (site) ---
site/node_modules/
site/.next/
site/.next-*/
site/out/
site/public/assets/*
!site/public/assets/.gitkeep
*.tsbuildinfo

# --- Python (api) ---
__pycache__/
*.pyc
*.pyo
*.pyd
.Python
.venv/
venv/
env/
.pytest_cache/
.mypy_cache/
.ruff_cache/
*.egg-info/
dist/
build/

# --- App database / local data ---
*.db
*.sqlite
*.sqlite3
app-db/data/
data/

# --- Docker / LocalStack ---
ops/localstack/volume/
localstack-volume/

# --- Langfuse local artifacts ---
ops/langfuse/storage/
ops/langfuse/turbo-cache/

# --- CloudFormation outputs / task defs ---
task-def*.json
new-task-def*.json
task_def_out.json
cloudformation-outputs/
backups/cloudformation-*.yaml
scripts/aws/*.log

# --- OS / editor noise ---
.DS_Store
Thumbs.db
.vscode/
.idea/
*.swp
*:Zone.Identifier

# --- Cursor / Claude local settings (keep settings.json, drop settings.local.json) ---
.cursor/*
.claude/settings.local.json
.claude/scheduled_tasks.lock

# --- Test outputs ---
coverage/
.coverage
htmlcov/
junit.xml

# --- Tooling caches ---
.next/
.turbo/
.playwright-mcp/

# --- Manual-testing artifacts (screenshots, diff captures, etc.) ---
# These accumulate at repo-root during ad-hoc UI testing and shouldn't
# land in commits. If you need to keep a screenshot, move it under
# docs/ or supplemental/ with an explicit name.
/*.png
/*.jpg
/*.jpeg

# Playwright snapshot artifacts
*.playwright-mcp/
editor-*.md
builder*.md

# onboarding stress-test scratch harness
_stress/
api/_stress/

# Local user-testing artifacts (reports, screenshots, transcripts) — not shipped.
# Root-anchored: an unanchored `user-testing/` would also swallow the reusable
# skill at .claude/skills/user-testing/, which IS committed.
/user-testing/

# Stray Playwright accessibility-snapshot dumps from browser-driven QA.
ctx*-run.md
page-*.yml
user-testing/
