# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
# Both forms on purpose. "node_modules/" matches a real directory; a bare
# "node_modules" also matches a SYMLINK, which is what a git worktree gets
# when you link it back to the main checkout. Without the second line those
# symlinks are not ignored, and a `git add -A` commits them.
node_modules/
node_modules
.pnp
.pnp.js

# testing
/coverage

# next.js
.next/
out/
build/
dist/

# python
__pycache__/
*.pyc
*.egg-info/

# production
/build

# misc
.DS_Store
*.pem

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

# env
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# vercel
.vercel

# local Cursor MCP config (holds the Pushary API key)
.cursor/mcp.json

# generated at build time: editor plugins bundled into the agent-hooks package
packages/agent-hooks/data/cursor-plugin/
packages/agent-hooks/data/vscode-plugin/

# typescript
*.tsbuild info

# turbo
.turbo

# Old Shopify extension directory (deprecated)
shopify-theme-extension/
*.egg-info/

# Prospect/outreach data
prospect_list.csv
prospect_research_report.txt

# Launch planning docs
PRODUCTHUNT_LAUNCH_PLAN.md
AI-CODING-REMODEL-PLAN.md

# HyperFrames launch video (separate project)
video-launch/

# Remotion render outputs
video/public/logos/out/
.gstack/

# Local video render outputs (HyperFrames/Remotion projects, multi-GB, keep local)
videos/

# local AI-agent tooling (installed skills + plugin config, machine-local)
.agents/
.claude/
.cursor/rules/
pushary-app/.agents/
pushary-app/skills-lock.json

# stray empty Expo stub at repo root (real config is pushary-app/app.config.ts)
/app.json

# Play Store listing assets (large, iterating screenshots - keep local)
pushary-app/play-assets/

# TypeScript incremental build cache. Generated, machine-specific, and it
# conflicted on every rebase while it was tracked.
*.tsbuildinfo

# Scratch tree for scripts/ci/sweep-cli.mjs
.sweep-tmp/

# `pushary doctor --report` writes one of these per run, wherever it was run from.
pushary-diagnostics-*.json

# Rendered ad creative. 172 MB of mp4 across four variants plus 7 MB of jpg
# stills, all regenerable from the HTML sources and the Remotion projects. Git
# history is permanent, so a 57 MB video committed once is 57 MB forever, and
# GitHub warns above 50 MB. The copy.txt briefs and the strategy docs beside
# them are tracked, because those are the work product.
marketing/**/*.mp4
marketing/**/*.jpg

# Working clones of two public mirrors, sitting at the repo root. Their sources are
# `packages/cowork-plugin` and `packages/safe-commands`; these are checkouts of the
# published repos, each with its own .git. Ignored so a nested repo can never be
# committed into this one, and so `git status` stops reporting them as new work.
# `safe-commands-repo/` is additionally stale: it predates retargeting the eval
# corpus at @pushary/contracts. See packages/safe-commands/FOUNDER-PUBLISH.md.
/cowork-plugin/
/safe-commands-repo/

# tsup writes this next to the config during a build and does not reliably clean
# it up. One got committed in packages/sdk, and its inline sourcemap carried an
# absolute path from the machine that built it, home directory included, which
# would have shipped to a public mirror.
tsup.config.bundled_*.mjs
