Agent skill
policyengine-vercel-deployment
Deploying PolicyEngine frontend apps to Vercel - naming, scope, team settings
Install this agent skill to your Project
npx add-skill https://github.com/PolicyEngine/policyengine-claude/tree/main/skills/tools-and-apis/policyengine-vercel-deployment-skill
SKILL.md
PolicyEngine Vercel Deployment
Standard patterns for deploying frontend apps (interactive tools, dashboards, static sites) to Vercel under the PolicyEngine team.
Deployment
Team and scope
All PE apps deploy under the policy-engine Vercel team:
vercel link --scope policy-engine
vercel --prod --yes --scope policy-engine
Naming convention
Projects use the pattern policyengine--{repo-name}:
policyengine--marriage.vercel.app
policyengine--aca-calc.vercel.app
policyengine--state-legislative-tracker.vercel.app
Vercel auto-assigns a random production URL (e.g., marriage-zeta-beryl.vercel.app). Use that in apps.json as the source URL since custom aliases may have deployment protection issues.
First deploy
cd my-project
# Link to team (creates .vercel/)
vercel link --scope policy-engine
# Deploy
vercel --prod --yes
Subsequent deploys
vercel --prod --yes --scope policy-engine
Environment variables
For apps with API backends (e.g., Modal):
# Set env var (Next.js uses NEXT_PUBLIC_* prefix)
vercel env add NEXT_PUBLIC_API_URL production
# Must force-redeploy after changing env vars
vercel --prod --force --yes --scope policy-engine
Next.js apps access env vars via process.env.NEXT_PUBLIC_API_URL.
Verify deployment
curl -s -o /dev/null -w "%{http_code}" https://your-app.vercel.app/
# Should return 200
Common issues
Deployed to personal account: If vercel --prod goes to your personal account, delete .vercel/ and re-link:
rm -rf .vercel
vercel link --scope policy-engine
vercel --prod --yes
Deployment protection (401): Team deployment protection may block unauthenticated access to alias URLs. Use the auto-assigned production URL instead, or configure in Vercel dashboard > Settings > Deployment Protection.
Generic project names: Never use generic names like app or site — they can steal domains from other projects. Always use descriptive names.
vercel.json
Must be at repo root. For Next.js static exports, configure rewrites as needed:
{
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}
Didn't find tool you were looking for?