VE

vercel-multi-env-setup

Guides the configuration of scoped environment variables and branch-based deployment isolation on Vercel.

Install

mkdir -p .claude/skills/vercel-multi-env-setup && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3371" && unzip -o skill.zip -d .claude/skills/vercel-multi-env-setup && rm skill.zip

Installs to .claude/skills/vercel-multi-env-setup

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Configure Vercel across development, preview, and production environments
73 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Scope environment variables to Development, Preview, and Production environments
  • Add environment variables using the Vercel CLI
  • Manage environment variables programmatically via the Vercel REST API
  • Create custom environments for staging or QA
  • Assign custom domains to specific Git branches
  • Detect the current Vercel environment within application code

How it works

The skill uses Vercel CLI commands and REST API calls to scope environment variables, create custom environments, and assign branch-specific domains. It also provides code examples for detecting the active environment at runtime.

Inputs & outputs

You give it
Environment variable names and values, target environments, custom environment configurations, domain names
You get back
Vercel project configured with environment-specific variables, custom environments, branch-specific domains, and runtime environment detection

When to use vercel-multi-env-setup

  • Configure production-specific database secrets
  • Set up staging environment variables
  • Isolate dev/preview configurations
  • Manage environment variable overrides

About this skill

Vercel Multi-Env Setup

Overview

Configure Vercel's three built-in environments (Development, Preview, Production) with scoped environment variables, branch-specific preview URLs, and custom environments for staging. Uses Vercel's native environment system and the REST API for automation.

Prerequisites

  • Vercel project linked and deployed
  • Separate database instances per environment (recommended)
  • Access to Vercel dashboard or VERCEL_TOKEN for API

Instructions

Step 1: Understand Vercel's Environment Model

Vercel provides three built-in environments:

EnvironmentTriggerURL PatternUse Case
ProductionPush to production branchyourdomain.comLive traffic
PreviewPush to any other branchproject-git-branch-team.vercel.appPR review
Developmentvercel dev locallylocalhost:3000Local dev

Step 2: Scope Environment Variables

# Add a variable scoped to Production only
vercel env add DATABASE_URL production
# Enter: postgres://prod-host:5432/myapp

# Add a variable scoped to Preview only
vercel env add DATABASE_URL preview
# Enter: postgres://staging-host:5432/myapp_staging

# Add a variable scoped to Development only
vercel env add DATABASE_URL development
# Enter: postgres://localhost:5432/myapp_dev

# Add a variable available in ALL environments
vercel env add NEXT_PUBLIC_APP_NAME production preview development
# Enter: My App

# List all env vars with their scopes
vercel env ls

Step 3: Via REST API (Automation)

# Create env vars with specific scoping
curl -X POST "https://api.vercel.com/v9/projects/my-app/env" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "key": "DATABASE_URL",
    "value": "postgres://prod-host:5432/myapp",
    "type": "encrypted",
    "target": ["production"]
  }'

# Upsert — update if exists, create if not
curl -X POST "https://api.vercel.com/v9/projects/my-app/env?upsert=true" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "key": "DATABASE_URL",
    "value": "postgres://staging-host:5432/myapp_staging",
    "type": "encrypted",
    "target": ["preview"]
  }'

# List all env vars for a project
curl -s -H "Authorization: Bearer $VERCEL_TOKEN" \
  "https://api.vercel.com/v9/projects/my-app/env" \
  | jq '.envs[] | {key, target, type}'

Step 4: Custom Environments (Beyond Dev/Preview/Prod)

Vercel supports custom environments for staging, QA, etc.:

# Create a custom environment via API
curl -X POST "https://api.vercel.com/v1/projects/my-app/custom-environments" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Staging",
    "slug": "staging",
    "branchPattern": "staging"
  }'

Or in the dashboard: Settings > Environments > Create Environment

Custom environments let you:

  • Link a specific Git branch to the environment
  • Scope environment variables to it
  • Assign a custom domain (e.g., staging.yourdomain.com)

Step 5: Branch-Specific Preview Domains

# Assign a custom domain to a specific branch
# In dashboard: Settings > Domains > Add
# Set Git Branch: "staging"
# Domain: staging.yourdomain.com

# Via API — add domain to project with branch targeting
curl -X POST "https://api.vercel.com/v9/projects/my-app/domains" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "staging.yourdomain.com",
    "gitBranch": "staging"
  }'

Step 6: Environment Detection in Code

// src/lib/env.ts — detect environment at runtime
export function getEnvironment(): 'production' | 'preview' | 'development' {
  return (process.env.VERCEL_ENV as any) ?? 'development';
}

// Environment-specific behavior
export function getApiBaseUrl(): string {
  switch (getEnvironment()) {
    case 'production':
      return 'https://api.yourdomain.com';
    case 'preview':
      return `https://${process.env.VERCEL_URL}`;
    case 'development':
      return 'http://localhost:3000';
  }
}

// Production safeguards
export function assertNotProduction(operation: string): void {
  if (getEnvironment() === 'production') {
    throw new Error(`Dangerous operation "${operation}" blocked in production`);
  }
}

Step 7: Pull Env Vars for Local Development

# Pull Development-scoped vars to local file
vercel env pull .env.development.local

# Pull Preview-scoped vars (for testing preview behavior locally)
vercel env pull --environment=preview .env.preview.local

# .gitignore these files
echo '.env*.local' >> .gitignore

Environment Variable Types

TypeDashboard VisibilityLog VisibilityUse Case
plainVisibleVisibleNon-sensitive config
encryptedHidden after saveHiddenAPI keys, secrets
sensitiveAlways hiddenHiddenHigh-security secrets
systemAuto-set by VercelVisibleVERCEL_ENV, VERCEL_URL

Output

  • Environment variables scoped per environment (dev/preview/prod)
  • Custom staging environment with dedicated branch and domain
  • Environment detection logic for runtime behavior switching
  • Local development env vars pulled from Vercel

Error Handling

ErrorCauseSolution
Env var undefined in previewNot scoped to Preview targetRe-add with Preview in target array
Wrong database in productionPreview DB URL used in prodCheck env var scoping per environment
vercel env pull emptyNo Development-scoped varsAdd vars with Development target
Custom env not triggeringBranch pattern doesn't matchCheck branch name matches environment slug
Sensitive var can't be readtype=sensitive hides valueRe-add the var if value is lost

Resources

Next Steps

For observability and monitoring, see vercel-observability.

Prerequisites

Vercel project linked and deployedSeparate database instances per environment (recommended)Access to Vercel dashboard or VERCEL_TOKEN for API

Limitations

  • Environment variables may be undefined if not scoped to the correct target
  • Wrong database in production can occur if Preview DB URL is used in prod
  • `vercel env pull` may be empty if no Development-scoped variables exist

How it compares

This skill provides a structured approach to configuring Vercel's multi-environment features using both CLI and API, offering more control and automation than manual dashboard configuration.

Compared to similar skills

vercel-multi-env-setup side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
vercel-multi-env-setup (this skill)124dCautionIntermediate
workflow42moReviewIntermediate
langfuse-deploy-integration124dReviewIntermediate
inngest06moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

More by jeremylongshore

View all by jeremylongshore

analyzing-logs

jeremylongshore

Analyze application logs to detect performance issues, identify error patterns, and improve stability by extracting key insights.

14123

ollama-setup

jeremylongshore

Configure auto-configure Ollama when user needs local LLM deployment, free AI alternatives, or wants to eliminate hosted API costs. Trigger phrases: "install ollama", "local AI", "free LLM", "self-hosted AI", "replace OpenAI", "no API costs". Use when appropriate context detected. Trigger with relevant phrases based on skill purpose.

1167

backtesting-trading-strategies

jeremylongshore

Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".

1071

generating-database-seed-data

jeremylongshore

Process this skill enables AI assistant to generate realistic test data and database seed scripts for development and testing environments. it uses faker libraries to create realistic data, maintains relational integrity, and allows configurable data volumes. u... Use when working with databases or data models. Trigger with phrases like 'database', 'query', or 'schema'.

1033

cursor-codebase-indexing

jeremylongshore

Execute set up and optimize Cursor codebase indexing. Triggers on "cursor index setup", "codebase indexing", "index codebase", "cursor semantic search". Use when working with cursor codebase indexing functionality. Trigger with phrases like "cursor codebase indexing", "cursor indexing", "cursor".

885

testing-mobile-apps

jeremylongshore

Execute mobile app testing on iOS and Android devices/simulators. Use when performing specialized testing. Trigger with phrases like "test mobile app", "run iOS tests", or "validate Android functionality".

810

Search skills

Search the agent skills registry