# Environment & secrets — never committed (see CLAUDE.md "Secrets")
.env
.env.*
# …but the documented, secret-free template IS committed.
!.env.example
*.pem
*.key

# Postman: the committed environments carry hosts only; per-developer copies
# with real tokens/keys live next to them as *.local.json.
postman/environments/*.local.json

# Node
node_modules/
dist/
coverage/
*.tsbuildinfo
npm-debug.log*

# Go
bin/
*.test
*.out

# Python (sdks/python)
__pycache__/
*.py[cod]
.venv/
*.egg-info/

# Mobile SDK builds
sdks/swift-link/.build/
sdks/kotlin-link/**/build/
sdks/kotlin-link/.gradle/
sdks/kotlin-link/local.properties

# Kotlin/JVM server SDK build
sdks/kotlin/build/
sdks/kotlin/.gradle/
sdks/kotlin/.kotlin/

# docs-web staging & build outputs (generated by scripts/stage.mjs + vitepress)
docs-web/guide/
docs-web/public/
docs-web/.vitepress/cache/

# OS / editors
.DS_Store
.idea/
.vscode/
*.log

# Local dev environment (docker compose) — see infra/local/README.md
.env
docker-compose.override.yml

# Local Claude Code MCP config (per-machine)
.mcp.json
