Skip to main content

vercel-cli-token-deploy

Deploys projects to Vercel using the Vercel CLI with token-based authentication for CI/CD environments, preview deployments, and production releases.

跳到安装

来源信息

仓库
paulpas/agent-skill-router
最近来源活动
2026年6月9日 16:28
检测到的 SKILL.md 语言
英语
星标
4
分支
1

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
vercel-cli-token-deploy
description
Deploys projects to Vercel using the Vercel CLI with token-based authentication for CI/CD environments, preview deployments, and production releases.
license
MIT
compatibility
opencode
archetypes
["tactical","generation"]
anti_triggers
["brainstorming","vague ideation","manual deployment walkthrough"]
response_profile
{"verbosity":"low","directive_strength":"high","abstraction_level":"operational"}
metadata
{"version":"1.0.0","domain":"coding","triggers":"vercel cli, vercel token, vercel deploy, vercel ci/cd, token-based deployment, vercel automation, deploy to vercel","role":"implementation","scope":"implementation","output-format":"code","content-types":["code","guidance","do-dont","config"],"related-skills":"vercel-deploy, vercel-api, ci-cd-pipeline-design","author":"vercel","source":"https://github.com/vercel-labs/agent-skills"}
# Vercel CLI Token-Based Deployment Deploys projects to Vercel using the Vercel CLI with token-based authentication, enabling automated deployments in CI/CD pipelines, headless CMS webhooks, and script-driven release workflows. Covers production and preview targets, build caching, deployment verification, and error recovery. ## TL;DR Checklist - [ ] Set `VERCEL_TOKEN`, `VERCEL_ORG_ID`, `VERCEL_PROJECT_ID` as environment variables — never hardcode - [ ] Scope Vercel tokens to specific teams, not personal accounts - [ ] Use `--prebuilt` flag to leverage build caching and reduce deployment time - [ ] Always handle deployment failure with retry logic and clear error reporting - [ ] Add `.vercel` to `.gitignore` to prevent checking in build artifacts - [ ] Verify deployment with `vercel inspect` or status API before confirming success --- ## When to Use Use this skill when: - Automating Vercel deployments from CI/CD pipelines (GitHub Actions, GitLab CI, Jenkins) - Integrating Vercel deployments into headless CMS workflows or webhook-driven processes - Implementing preview deployments for pull requests in script-based workflows - Setting up production deployment automation that does not rely on Vercel's Git integration - Building custom deployment tooling that requires programmatic control over the Vercel CLI - Running deployments in ephemeral environments where Git integration is unavailable --- ## When NOT to Use Avoid this skill for: - Manual one-off deployments — use `vercel` interactive CLI or Vercel Dashboard instead - Projects already using Vercel's automatic Git integration — no token-based setup needed - Deploying without build caching — always prefer `--prebuilt` for speed - Situations where fine-grained API control is needed — use `vercel-api` skill instead - Environments where the Vercel CLI is not installed or cannot be added --- ## Core Workflow 1. **Set Up Authentication** — Configure `VERCEL_TOKEN`, `VERCEL_ORG_ID`, and `VERCEL_PROJECT_ID` as environment variables in your CI/CD platform or deployment environment. The token must be scoped to the target Vercel team. **Checkpoint:** Verify the token has the correct scope by running `vercel whoami --token=$VERCEL_TOKEN`. 2. **Link Project** — If no `.vercel/project.json` exists, run `vercel link --token=$VERCEL_TOKEN --scope=<team-slug>` to link the local directory to the Vercel project. Alternatively, create `.vercel/project.json` manually with `projectId` and `orgId` from the Vercel project settings. **Checkpoint:** Confirm `.vercel/project.json` exists and contains valid IDs. 3. **Build Project** — Run the project's build command (usually `vercel build` or a framework-specific build script). This produces the output directory that `--prebuilt` will deploy. Verify the build output directory (e.g., `.vercel/output/static`) exists and is non-empty. 4. **Deploy with Prebuilt** — Execute `vercel deploy --prebuilt --token=$VERCEL_TOKEN` for production or `vercel deploy --prebuilt --token=$VERCEL_TOKEN --archive=tgz` for preview. Capture the deployment URL from the command output. **Checkpoint:** The deployment URL should follow the pattern `https://<project-name>-<hash>.vercel.app`. 5. **Assign Alias or Promote** — For production deployments, aliases are automatically assigned when `VERCEL_PROJECT_ID` is set. For preview deployments, note the generated URL for sharing. To promote a preview to production explicitly, use `vercel alias set <deployment-url> <production-domain>`. 6. **Verify Deployment** — Poll `vercel inspect <deployment-url> --token=$VERCEL_TOKEN` until the status is `READY`. Implement a timeout (e.g., 120 seconds) and fail the deployment if the status does not become `READY` within the window. --- ## Implementation Patterns ### Pattern 1: Production Deployment Script ```bash #!/usr/bin/env bash set -euo pipefail # Production deployment to Vercel using token-based authentication # Prerequisites: VERCEL_TOKEN, VERCEL_ORG_ID, VERCEL_PROJECT_ID env vars deploy_production() { local max_retries="${1:-3}" local retry_delay="${2:-10}" # Validate required environment variables if [[ -z "${VERCEL_TOKEN:-}" ]]; then echo "Error: VERCEL_TOKEN is not set" >&2 exit 1 fi if [[ -z "${VERCEL_ORG_ID:-}" ]] || [[ -z "${VERCEL_PROJECT_ID:-}" ]]; then echo "Error: VERCEL_ORG_ID and VERCEL_PROJECT_ID must be set" >&2 exit 1 fi # Build the project echo "Building project..." npm run build # Ensure .vercel directory exists with project link if [[ ! -f ".vercel/project.json" ]]; then echo "Linking project to Vercel..." npx vercel link --token="$VERCEL_TOKEN" --scope="${VERCEL_ORG_ID}" --yes fi # Deploy with retry logic local attempt=1 local deploy_url="" while [[ $attempt -le $max_retries ]]; do echo "Deploy attempt $attempt of $max_retries..." if deploy_url=$(npx vercel deploy --prebuilt \ --token="$VERCEL_TOKEN" \ --scope="${VERCEL_ORG_ID}" 2>&1); then echo "Deployment succeeded: $deploy_url" break else echo "Deployment failed (attempt $attempt)" >&2 if [[ $attempt -eq $max_retries ]]; then echo "Error: All deployment attempts failed" >&2 exit 1 fi sleep "$retry_delay" fi ((attempt++)) done # Wait for deployment to be ready echo "Waiting for deployment to be ready..." local timeout=120 local elapsed=0 while [[ $elapsed -lt $timeout ]]; do local status status=$(npx vercel inspect "$deploy_url" \ --token="$VERCEL_TOKEN" --scope="${VERCEL_ORG_ID}" \ 2>&1 | grep -oP "(?<=Status: )\w+" || echo "PENDING") if [[ "$status" == "READY" ]]; then echo "Deployment is ready: $deploy_url" return 0 fi sleep 5 ((elapsed+=5)) done echo "Error: Deployment did not become READY within ${timeout}s" >&2 exit 1 } deploy_production "$@" ``` ### Pattern 2: Preview Deployment with Archive ```bash #!/usr/bin/env bash set -euo pipefail # Preview deployment to Vercel using archive for faster uploads # Returns the preview URL for use in CI/CD status checks deploy_preview() { local branch_name="${1:-$(git rev-parse --abbrev-ref HEAD)}" local commit_hash="${2:-$(git rev-parse --short HEAD)}" if [[ -z "${VERCEL_TOKEN:-}" ]]; then echo "Error: VERCEL_TOKEN environment variable is required" >&2 exit 1 fi # Build for preview echo "Building preview for branch: $branch_name" npx vercel build --token="$VERCEL_TOKEN" # Deploy with archive=tgz for faster upload on large projects echo "Deploying preview..." local preview_url preview_url=$(npx vercel deploy --prebuilt \ --archive=tgz \ --token="$VERCEL_TOKEN" \ --scope="${VERCEL_ORG_ID}") # Verify deployment local ready_url ready_url=$(npx vercel inspect "$preview_url" \ --token="$VERCEL_TOKEN" \ --scope="${VERCEL_ORG_ID}" \ | grep -oP 'https://[^\s]+') echo "Preview URL: $ready_url" echo "Commit: $commit_hash" echo "Branch: $branch_name" # Output the URL for CI/CD to consume printf '%s' "$ready_url" > .vercel/preview-url.txt } deploy_preview "$@" ``` ### Pattern 3: CI/CD Integration (GitHub Actions) ```yaml # .github/workflows/deploy-vercel.yml name: Deploy to Vercel on: push: branches: [main] pull_request: branches: [main] env: VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: npm - name: Install dependencies run: npm ci - name: Deploy to Vercel run: | if [[ "${{ github.event_name }}" == "pull_request" ]]; then ./scripts/deploy-preview.sh else ./scripts/deploy-production.sh fi ``` --- ## Constraints ### MUST DO - Store `VERCEL_TOKEN` in CI/CD secrets or environment variables — never hardcode in source code - Scope Vercel tokens to the specific team that owns the project using Vercel dashboard token settings - Use `vercel deploy --prebuilt` to leverage build caching, reducing deployment time by 60-80% - Implement retry logic with exponential backoff for transient deployment failures - Add `.vercel` directory to `.gitignore` to prevent checking in build artifacts and project links - Verify deployment status (`READY` state) before marking deployment as successful - Pin the Vercel CLI version in `package.json` or CI configuration to avoid breaking changes ### MUST NOT DO - Hardcode Vercel tokens in deployment scripts, configuration files, or source code - Use personal Vercel tokens for CI/CD — always create team-scoped tokens - Skip build verification — an incomplete build produces a non-functional deployment - Deploy without the `--prebuilt` flag in CI/CD — it rebuilds unnecessarily and wastes time - Assume the deployment URL follows a fixed pattern — always capture it from the CLI output - Ignore non-zero exit codes from the Vercel CLI — a failed deploy must halt the pipeline --- ## Related Skills | Skill | Purpose | |---|---| | `vercel-deploy` | Git-integrated deployments via Vercel dashboard and automatic branch previews | | `vercel-api` | Direct Vercel REST API usage for programmatic control beyond CLI capabilities | | `ci-cd-pipeline-design` | General CI/CD pipeline patterns for integrating Vercel deployments | --- ## Live References > Authoritative documentation links for this skill's domain. The model follows markdown links at load time to resolve external references and inline content. - [Vercel CLI Documentation](https://vercel.com/docs/cli) - [Vercel Token-Based Deployments](https://vercel.com/docs/deployments/deploy-command#token-based-deployments) - [Vercel Environment Variables Reference](https://vercel.com/docs/projects/environment-variables) - [Vercel Project Linking](https://vercel.com/docs/cli/project-linking) - [Vercel Deployment Retries](https://vercel.com/docs/deployments/retries) - [Vercel CLI Global Options](https://vercel.com/docs/cli/global-options) - [GitHub Actions Vercel Deploy Example](https://vercel.com/docs/deployments/git#vercel-for-git-platforms)
在 GitHub 查看