Project bootstrapping orchestrator for repos that depend on Vercel-linked resources (databases, auth, and managed integrations). Use when setting up or repairing a repository so linking, environment provisioning, env pulls, and first-run db/dev commands happen in the correct safe order.
64
78%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./plugins/vercel/skills/bootstrap/SKILL.mdExecute bootstrap in strict order. Do not run migrations or development server until project linking and environment verification are complete.
db:push, db:migrate, db:seed, or dev until Vercel linking is complete and env keys are verified.vercel integration ...) for shared resources.vercel --version
vercel whoami.vercel/project.json.vercel teams ls
vercel projects ls --scope <team>
vercel link --yes --scope <team> --project <project>.env.example, .env.sample, .env.template.cp .env.example .env.localvercel integration guide neonvercel integration add neon --scope <team>vercel env ls
vercel env pull .env.local --yesvercel env pull .env.local --yes.Use Neon CLI only when Vercel-managed provisioning is unavailable. After creating resources, add required env vars in Vercel and pull again.
Generate a high-entropy secret without printing it, then store it in Vercel and refresh local env:
AUTH_SECRET="$(node -e "console.log(require('node:crypto').randomBytes(32).toString('base64url'))")"
printf "%s" "$AUTH_SECRET" | vercel env add AUTH_SECRET development preview production
unset AUTH_SECRET
vercel env pull .env.local --yesCompare required keys from template file against .env.local keys (names only, never values):
template_file=""
for candidate in .env.example .env.sample .env.template; do
if [ -f "$candidate" ]; then
template_file="$candidate"
break
fi
done
comm -23 \
<(grep -E '^[A-Za-z_][A-Za-z0-9_]*=' "$template_file" | cut -d '=' -f 1 | sort -u) \
<(grep -E '^[A-Za-z_][A-Za-z0-9_]*=' .env.local | cut -d '=' -f 1 | sort -u)Proceed only when missing key list is empty.
After linkage + env verification:
npm run db:push
npm run db:seed
npm run devUse the repository package manager (npm, pnpm, bun, or yarn) and run only scripts that exist in package.json.
After linkage and env verification, establish the UI foundation before feature work:
npx shadcn@latest add button card input label textarea select switch tabs dialog alert-dialog sheet dropdown-menu badge separator skeleton tablelayout.tsx and globals.css.bg-background text-foreground.Confirm each checkpoint:
vercel whoami succeeds..vercel/project.json exists and matches chosen project.vercel env pull .env.local --yes succeeds.db:push, db:seed, db:migrate, db:generate as applicable).dev command starts without immediate config/auth/env failure.If verification fails, stop and report exact failing step plus remediation.
Return a final bootstrap summary in this format:
## Bootstrap Result
- **Linked Project**: <team>/<project>
- **Resource Path**: vercel-integration-neon | dashboard-neon | neon-cli
- **Env Keys**: <count> required, <count> present, <count> missing
- **Secrets**: AUTH_SECRET set in Vercel (value never shown)
- **Migration Status**: not-run | success | failed (<step>)
- **Dev Result**: not-run | started | failedvercel env pull .env.local --yes.dev fails, resolve runtime errors, then restart with your package manager's run dev.If the project was scaffolded with npx next-forge init (detected by pnpm-workspace.yaml + packages/auth + packages/database + @repo/* imports):
apps/app/.env.local, apps/web/.env.local, apps/api/.env.local) plus packages/database/.env.pnpm migrate (not db:push) — it runs prisma format + prisma generate + prisma db push.DATABASE_URL, CLERK_SECRET_KEY, NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY, NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_WEB_URL, NEXT_PUBLIC_API_URL.@repo/* imports from app env.ts files to avoid validation errors.apps/app, apps/api, apps/web.=> skill: next-forge — Full next-forge monorepo guide
11c74d6
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.