# Eval workspace artifacts
benchmarks/
**/iteration-*/
**/with_skill/
**/without_skill/

# Packaged skill output
*.skill

# Local project files (drafts, notes, assets — never pushed)
_local/
article-*.md

# Claude Code local settings
.claude/

# Local MCP server wiring — points at binaries installed on this machine
.mcp.json

# OS files
.DS_Store
Thumbs.db

# ChatGPT knowledge staging (generated by copy-knowledge-files.sh)
chatgpt/knowledge/

# Google Search Console local OAuth (scripts/gsc_export.py)
gsc-oauth-token.json
gsc-client-secrets.json

# GA4 local OAuth token (scripts/ga4_report.py reads it from the repo root)
ga4-oauth-token.json

# Google service-account keys. scripts/gsc_query.py and gsc_export.py accept
# GOOGLE_APPLICATION_CREDENTIALS pointing at an arbitrary path, and the common
# habit is to drop the key in the repo root. These are long-lived credentials
# with no expiry — worse to leak than the OAuth token above, which at least
# refreshes. Patterns checked against every tracked .json: none collide.
service-account*.json
*-service-account.json
sa.json
credentials.json
*-credentials.json
client_secret*.json
*.pem
*.p12

# Python
__pycache__/
*.pyc
*.pyo
.venv/
venv/

# Planning brief written against v1.10.0; contains a personal machine path.
# Every feature it proposed (F1-F8, S1-S2) has since shipped, so it is a record
# of completed work rather than a plan. Named explicitly, not globbed — a
# *brief*.md pattern would also swallow output from scripts/content_brief.py.
tier-3-4-implementation-brief.md

# Cursor rules that contain personal machine paths
.cursor/rules/filesystem-access.mdc
ultimate-seo-geo-workspace/
