# Dependencies
node_modules/
.pnpm-store/

# Build artifacts
dist/
build/
.astro/

# SDK build/test
sdk/dist/
sdk/test-results/
sdk/*.tgz

# Contracts build
contracts/out/
contracts/cache/
contracts/cache_hardhat/
contracts/broadcast/
contracts/artifacts/

# Site build
site/dist/
site/.astro/

# Env files
.env
.env.local
.env.*.local

# Editor
.vscode/
.idea/
*.swp
*.swo

# OS
.DS_Store
Thumbs.db

# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Misc
.cache/
coverage/
.nyc_output/

# Local-only mainnet test scripts (read keys from external .secrets at runtime)
examples/*.local.mjs
examples/**/*.local.mjs
mcp/*.local.mjs

# Playwright MCP scratch (screenshots / snapshots) — local only
.playwright-mcp/

# Local-only secret store (wallet mnemonic + private key). NEVER commit.
.secrets/

# Root build/scratch outputs (Foundry leftovers, packed tarballs, etc.)
/out/
/cache/

# Design asset backups — kept local. (Design masters now live with the skill at
# /.claude/skills/branding/design/, already covered by /.claude/ below.)
/site/asset-backups/

# Local agent workspace. DEFAULT = PRIVATE: everything under .claude/ stays local
# (wallet-audit outputs with test-wallet addresses+balances, third-party outreach
# contacts, internal strategy/plans, ~294MB of node_modules, settings, the README index).
# We ship ONLY an explicit allowlist of audited, contributor-facing material below.
# To publish a NEW skill `foo`: add `!/.claude/skills/foo/`. See .claude/README.md.
# (CLAUDE.md is committed as the public project guide; AGENTS.md is the agent-facing one.)
/.claude/*
!/.claude/commands/
!/.claude/skills/
/.claude/skills/*
!/.claude/skills/add-chain-integration/
!/.claude/skills/branch-protection/
!/.claude/skills/branding/
!/.claude/skills/release/
!/.claude/skills/verify-gate/
!/.claude/skills/deploy/

# Stray local screenshots
screencapture-*.png
Screenshot*.png

# Research & design notes now live under /.claude/ (already ignored above) — local only.

# === Design skill (.claude/skills/branding/design/) — STRICT source-vs-render rule ===
# Every file is exactly one of: SOURCE (templates *.html, scripts *.mjs/*.py, docs *.md —
# TRACKED), PUBLISHED (source/ masters + social/profile/ profile deliverables — TRACKED, incl.
# their PNGs), or RENDER (anything a pipeline generates — IGNORED). The pipelines live under
# social/ and video/, so their generated PNG/MP4/audio, the assets.js bundle, and frame/sample
# dumps are kept out of git (regenerate them with the render scripts). Rule: design/README.md.
.claude/skills/branding/design/social/**/*.png
.claude/skills/branding/design/social/**/*.mp4
# EXCEPT the PUBLISHED profile deliverables (X header + GitHub social card) — uploaded
# externally and must persist, so keep them tracked (negation must follow the rule above).
!.claude/skills/branding/design/social/profile/*.png
# AND the curated EXAMPLE GALLERY — a small, NAMED set of finished renders kept in git as the
# canonical examples (one per card archetype) so the best cards are never lost locally. Everything
# else under social/ stays a regenerable RENDER; only these explicit files track. To add/retire an
# example, edit this list. The matching render script for each lives beside it. See social/README.md.
!.claude/skills/branding/design/social/launch-cards/hermes-launch.png
!.claude/skills/branding/design/social/launch-cards/payai-gasless.png
!.claude/skills/branding/design/social/launch-cards/solana-gasless.png
!.claude/skills/branding/design/social/launch-cards/multichain.png
!.claude/skills/branding/design/social/post-cards/post-open.png
!.claude/skills/branding/design/social/post-cards/post-explainer.png
!.claude/skills/branding/design/social/post-cards/post-plan.png
!.claude/skills/branding/design/social/chain-cards/solana.png
!.claude/skills/branding/design/social/chain-cards/base.png
# chain-cards/ render.mjs writes a debug <chain>.html beside each <chain>.png — both are
# RENDER output here (the template is a string inside render.mjs), so ignore the HTML too.
# (post-cards/ and launch-cards/ .html ARE source templates, so this is scoped to chain-cards.)
.claude/skills/branding/design/social/chain-cards/*.html
.claude/skills/branding/design/video/**/*.png
.claude/skills/branding/design/video/**/*.mp4
.claude/skills/branding/design/video/**/*.wav
.claude/skills/branding/design/video/**/*.mp3
.claude/skills/branding/design/video/assets.js
.claude/skills/branding/design/**/frames/
.claude/skills/branding/design/**/sample/
.claude/skills/branding/design/**/__pycache__/
