GitHub Skill

vercel-cli

Deploy and manage Vercel projects via CLI. Use when deploying apps, managing environment variables, configuring domains, or pushing secrets to Vercel. Triggers on deploy, vercel, env vars, production.

skillrecordings☆ 0 仓库 Stars0 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

Vercel CLI Skill

Deploy and manage Vercel projects via CLI. Org: skillrecordings.

⚠️ CRITICAL: Environment Variable Newlines

NEVER use heredocs (<<<) or plain echo to pipe values to vercel env add.

These add trailing newlines that WILL break secrets silently:

# ❌ BAD - adds newline
echo "secret" | vercel env add MY_VAR production
vercel env add MY_VAR production <<< "secret"

# ✅ GOOD - no newline
echo -n 'secret' | vercel env add MY_VAR production

Always use echo -n (no newline flag) when piping values.

Prerequisites

bun add -g vercel
vercel login

Project Setup (Monorepo)

This is a Turborepo. Each app deploys as a separate Vercel project.

Link all projects at once (preferred)
vercel link --repo

This links all apps to their Vercel projects using Git integration.

Link individual app
cd apps/web
vercel link --project support-web
First-time project creation
cd apps/web
vercel --yes
# Creates project, prompts for settings

Deployments

Preview deployment (PR/branch)
vercel
# or from root:
vercel --cwd apps/web
Production deployment
vercel --prod
# or from root:
vercel --cwd apps/web --prod
Deploy without waiting
vercel --no-wait
Force rebuild (skip cache)
vercel --force
Deploy with build logs
vercel --logs

Environment Variables

List env vars
vercel env ls
vercel env ls production
vercel env ls preview feature-branch
Add env var
# Interactive (prompts for value)
vercel env add MY_VAR

# With value piped (MUST use echo -n to avoid newline!)
echo -n 'secret-value' | vercel env add MY_VAR production

# Sensitive (hidden in dashboard)
vercel env add API_KEY --sensitive
Push from local .env to Vercel

To push all vars from a local .env file:

# Parse .env and push each var (excludes comments and empty lines)
while IFS='=' read -r key value; do
  [[ -z "$key" || "$key" =~ ^# ]] && continue
  echo -n "$value" | vercel env add "$key" production
done < .env.local

Or push specific vars:

# Read from .env.local and push to production
source .env.local
echo -n "$FRONT_API_TOKEN" | vercel env add FRONT_API_TOKEN production
echo -n "$INNGEST_SIGNING_KEY" | vercel env add INNGEST_SIGNING_KEY production
Pull env vars to local file
vercel env pull .env.local
vercel env pull --environment=preview .env.preview
Run command with env vars (no file)
vercel env run -- bun run dev
vercel env run -e production -- bun run build
Remove env var
vercel env rm MY_VAR production
Update existing env var
# Remove then add (no update command exists)
vercel env rm MY_VAR production -y
echo -n 'new-value' | vercel env add MY_VAR production

Project Management

List projects
vercel project ls
vercel project ls --json
Inspect project
vercel project inspect
vercel project inspect support-web
Remove project
vercel project rm support-web

Domains

List domains
vercel domains ls
Webhook URLs (no wildcards)

Use the exact Vercel app domain for webhooks. Wildcards are not supported by most providers.

# Find the exact production domain for the current project
vercel project inspect | rg -n "Domains|domain"

# Or list deployments and pick the latest
vercel ls
Add domain
vercel domains add example.com
Alias deployment to domain
vercel alias <deployment-url> my-custom-domain.com

Logs

View deployment logs
vercel logs <deployment-url>
vercel logs <deployment-url> --follow

CI/CD Usage

Use VERCEL_TOKEN env var or --token flag:

vercel --token $VERCEL_TOKEN --prod

Monorepo vercel.json

Each app should have its own vercel.json:

{
  "$schema": "https://openapi.vercel.sh/vercel.json",
  "framework": "nextjs"
}

Root vercel.json for shared settings (optional):

{
  "$schema": "https://openapi.vercel.sh/vercel.json",
  "ignoreCommand": "npx turbo-ignore"
}

Common Patterns

Deploy only if app changed (turbo-ignore)
bun add -D turbo-ignore

In app's vercel.json:

{
  "ignoreCommand": "npx turbo-ignore"
}
Capture deployment URL in CI
DEPLOY_URL=$(vercel --prod 2>&1)
echo "Deployed to: $DEPLOY_URL"
Promote preview to production
vercel promote <deployment-url>

Scope

Always deploy to skillrecordings org:

vercel --scope skillrecordings

Or set globally:

vercel switch skillrecordings

Troubleshooting

Clear local Vercel cache
rm -rf .vercel
vercel link
Check current link status
cat .vercel/project.json
Redeploy with fresh build
vercel --force --logs

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!