Deploy doctor
@shipcheck/deploy-doctor
Paste a failed Vercel or Netlify build log and get the most likely cause and a fix you can apply. Recognizes about twenty common failures: letter-case import errors, missing packages, missing env vars, prerender errors, window is not defined, lockfile drift, peer dependency conflicts, wrong Node version, out of memory, wrong output or root folder, oversized functions, and more.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
- 1# Deploy doctor
- 3Paste a failed Vercel or Netlify build log and get the most likely cause, why it worked on your machine, and the exact fix. It knows about twenty of the most common reasons builds fail, and Claude checks your project to confirm before changing anything.
- 5**For:** anyone whose app runs fine locally but fails to deploy. No DevOps background needed.
- 7## Example
- 9Input: a Vercel log that ends in `Error occurred prerendering page "/pricing"` after `Error: supabaseUrl is required.`
- 11Output (`out/deploy-triage.md`):
- 13```markdown
- 14Platform: Vercel | Framework: Next.js | Package manager: npm
- 16## Most likely cause: Environment variable missing at build time
- 17Line 18: Error: supabaseUrl is required.
- 18A required environment variable is not set for this build. Values in your
- 19local .env file are not uploaded to the host.
- 21Fix:
- 221. Add the variable in the host's project settings, under Environment
- 23 Variables, for the environment that failed (Production or Preview).
- 242. Variables with NEXT_PUBLIC_ or VITE_ prefixes are baked in at build
- 25 time, so redeploy after adding them.
- 27## Also seen: A page failed while being prerendered
- 28```
- 30Try it on the bundled logs: `node scripts/triage-log.mjs examples/vercel-nextjs-env.txt` or `examples/netlify-vite-case.txt`.
- 32## What it recognizes
- 34Letter-case imports, missing packages, Node modules on the edge, missing env vars, prerender errors, `window is not defined`, `useSearchParams` without Suspense, dynamic server usage, TypeScript and lint errors, lockfile drift, `ERESOLVE` peer conflicts, wrong Node version, out of memory, missing build script, command not found, wrong output or root folder, oversized functions, Prisma client not generated, and private package auth.
- 36## What it can access
- 38- Reads the log you save to `data/`, plus `package.json`, host config (`vercel.json`, `netlify.toml`), framework config, and your source folders to confirm the cause.
- 39- Writes the triage report to `out/`.
- 40- Can run your production build locally (`npm run build`, `pnpm run build`, or `yarn build`) to reproduce the error.
- 41- No network, no env vars. It never deploys or changes host settings.
- 43## Setup
- 45None. Needs Node 22 or later.
