
Vercel Deploy
- 24 installs
- 40 repo stars
- Updated August 4, 2026
- akillness/skills-template
Vercel Deploy is a skill that deploys applications and websites to Vercel with no authentication and returns a live preview URL plus a claimable deployment link.
About
A skill that deploys applications and websites to Vercel without requiring authentication. It packages the project into a tarball (excluding node_modules and .git), auto-detects the framework from package.json, and returns a live Preview URL plus a claimable deployment link. Developers use it to push an app live or create a preview deployment quickly.
- Deploys any project to Vercel with no authentication required
- Auto-detects the framework from package.json
- Returns a live Preview URL and a claimable deployment link
Vercel Deploy by the numbers
- 24 all-time installs (skills.sh)
- Ranked #893 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
vercel-deploy capabilities & compatibility
- Capabilities
- devops · ci cd
- Works with
- vercel
- Use cases
- devops · ci cd
- Pricing
- Free
What vercel-deploy says it does
Deploy any project to Vercel instantly. No authentication required.
Returns **Preview URL** (live site) and **Claim URL** (transfer to your Vercel account)
npx skills add https://github.com/akillness/skills-template --skill vercel-deployAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 24 |
|---|---|
| repo stars | ★ 40 |
| Last updated | August 4, 2026 |
| Repository | akillness/skills-template ↗ |
What it does
Deploy an app or website to Vercel and get a live preview URL and claimable deployment link.
Who is it for?
Instantly pushing a project live or creating a preview deployment on Vercel
Skip if: CI/CD pipelines and Docker/Kubernetes deployments, which route to deployment-automation
When should I use this skill?
Asked to deploy an app, push it live, or create a preview deployment
What you get
A live Preview URL and a Claim URL to transfer the deployment to a Vercel account
- Preview URL
- Claim URL
- deployment JSON output
Files
Vercel Deploy
Deploy any project to Vercel instantly. No authentication required.
When to use this skill
- App deployment: when asked "Deploy my app"
- Preview deployment: when asked "Create a preview deployment"
- Production deployment: when asked "Deploy this to production"
- Share link: when asked "Deploy and give me the link"
How It Works
1. Packages your project into a tarball (excludes node_modules and .git) 2. Auto-detects framework from package.json 3. Uploads to deployment service 4. Returns Preview URL (live site) and Claim URL (transfer to your Vercel account)
Instructions
Step 1: Prepare Project
Confirm the project directory to deploy.
Supported frameworks:
- React: Next.js, Gatsby, Create React App, Remix, React Router
- Vue: Nuxt, Vitepress, Vuepress, Gridsome
- Svelte: SvelteKit, Svelte, Sapper
- Other Frontend: Astro, Solid Start, Angular, Ember, Preact, Docusaurus
- Backend: Express, Hono, Fastify, NestJS, Elysia, h3, Nitro
- Build Tools: Vite, Parcel
- And more: Blitz, Hydrogen, RedwoodJS, Storybook, Sanity, etc.
Step 2: Run Deployment
Use the script (claude.ai environment):
bash /mnt/skills/user/vercel-deploy/scripts/deploy.sh [path]Arguments:
path- Directory to deploy, or a.tgzfile (defaults to current directory)
Examples:
# Deploy current directory
bash /mnt/skills/user/vercel-deploy/scripts/deploy.sh
# Deploy specific project
bash /mnt/skills/user/vercel-deploy/scripts/deploy.sh /path/to/project
# Deploy existing tarball
bash /mnt/skills/user/vercel-deploy/scripts/deploy.sh /path/to/project.tgzStep 3: Verify Result
On successful deployment, two URLs are returned:
- Preview URL: live site you can access immediately
- Claim URL: transfer this deployment to your Vercel account
Output Format
Console Output
Preparing deployment...
Detected framework: nextjs
Creating deployment package...
Deploying...
✓ Deployment successful!
Preview URL: https://skill-deploy-abc123.vercel.app
Claim URL: https://vercel.com/claim-deployment?code=...JSON Output (for automation)
{
"previewUrl": "https://skill-deploy-abc123.vercel.app",
"claimUrl": "https://vercel.com/claim-deployment?code=...",
"deploymentId": "dpl_...",
"projectId": "prj_..."
}Static HTML Projects
For projects without a package.json:
- If there's a single
.htmlfile not namedindex.html, it gets renamed automatically - This ensures the page is served at the root URL (
/)
Present Results to User
Always show both URLs:
✓ Deployment successful!
Preview URL: https://skill-deploy-abc123.vercel.app
Claim URL: https://vercel.com/claim-deployment?code=...
View your site at the Preview URL.
To transfer this deployment to your Vercel account, visit the Claim URL.Troubleshooting
Network Egress Error
If deployment fails due to network restrictions (common on claude.ai), tell the user:
Deployment failed due to network restrictions. To fix this:
1. Go to https://claude.ai/settings/capabilities
2. Add *.vercel.com to the allowed domains
3. Try deploying againFramework Not Detected
If the framework is not detected: 1. Check that package.json exists 2. Check that your dependencies include the framework package 3. Manually set the framework parameter
Constraints
Required Rules (MUST)
1. Show both URLs: show both the Preview URL and Claim URL to the user 2. Framework detection: auto-detect from package.json 3. Show error messages: show a clear error message if deployment fails
Prohibited (MUST NOT)
1. Include node_modules: do not include node_modules in the tarball 2. Include .git: do not include the .git directory in the tarball 3. Hardcode credentials: no authentication required (claimable deploy)
Best practices
1. Automatic framework detection: pick optimal settings by analyzing package.json 2. Clean Tarball: exclude node_modules and .git for faster uploads 3. Clear output: clearly distinguish the Preview URL and Claim URL
References
Metadata
Version
- Current version: 1.0.0
- Last updated: 2026-01-22
- Supported platforms: Claude (claude.ai)
- Source: vercel/agent-skills
Related Skills
- deployment-automation: CI/CD and Docker/K8s deployments
Tags
#deployment #vercel #preview #production #hosting #serverless #infrastructure
#!/bin/bash
# Vercel Deployment Script (via claimable deploy endpoint)
# Usage: ./deploy.sh [project-path]
# Returns: JSON with previewUrl, claimUrl, deploymentId, projectId
set -e
DEPLOY_ENDPOINT="https://claude-skills-deploy.vercel.com/api/deploy"
# Detect framework from package.json
detect_framework() {
local pkg_json="$1"
if [ ! -f "$pkg_json" ]; then
echo "null"
return
fi
local content=$(cat "$pkg_json")
# Helper to check if a package exists in dependencies or devDependencies
has_dep() {
echo "$content" | grep -q "\"$1\""
}
# Order matters - check more specific frameworks first
# Blitz
if has_dep "blitz"; then echo "blitzjs"; return; fi
# Next.js
if has_dep "next"; then echo "nextjs"; return; fi
# Gatsby
if has_dep "gatsby"; then echo "gatsby"; return; fi
# Remix
if has_dep "@remix-run/"; then echo "remix"; return; fi
# React Router (v7 framework mode)
if has_dep "@react-router/"; then echo "react-router"; return; fi
# TanStack Start
if has_dep "@tanstack/start"; then echo "tanstack-start"; return; fi
# Astro
if has_dep "astro"; then echo "astro"; return; fi
# Hydrogen (Shopify)
if has_dep "@shopify/hydrogen"; then echo "hydrogen"; return; fi
# SvelteKit
if has_dep "@sveltejs/kit"; then echo "sveltekit-1"; return; fi
# Svelte (standalone)
if has_dep "svelte"; then echo "svelte"; return; fi
# Nuxt
if has_dep "nuxt"; then echo "nuxtjs"; return; fi
# Vue with Vitepress
if has_dep "vitepress"; then echo "vitepress"; return; fi
# Vue with Vuepress
if has_dep "vuepress"; then echo "vuepress"; return; fi
# Gridsome
if has_dep "gridsome"; then echo "gridsome"; return; fi
# SolidStart
if has_dep "@solidjs/start"; then echo "solidstart-1"; return; fi
# Docusaurus
if has_dep "@docusaurus/core"; then echo "docusaurus-2"; return; fi
# RedwoodJS
if has_dep "@redwoodjs/"; then echo "redwoodjs"; return; fi
# Hexo
if has_dep "hexo"; then echo "hexo"; return; fi
# Eleventy
if has_dep "@11ty/eleventy"; then echo "eleventy"; return; fi
# Angular / Ionic Angular
if has_dep "@ionic/angular"; then echo "ionic-angular"; return; fi
if has_dep "@angular/core"; then echo "angular"; return; fi
# Ionic React
if has_dep "@ionic/react"; then echo "ionic-react"; return; fi
# Create React App
if has_dep "react-scripts"; then echo "create-react-app"; return; fi
# Ember
if has_dep "ember-cli" || has_dep "ember-source"; then echo "ember"; return; fi
# Dojo
if has_dep "@dojo/framework"; then echo "dojo"; return; fi
# Polymer
if has_dep "@polymer/"; then echo "polymer"; return; fi
# Preact
if has_dep "preact"; then echo "preact"; return; fi
# Stencil
if has_dep "@stencil/core"; then echo "stencil"; return; fi
# UmiJS
if has_dep "umi"; then echo "umijs"; return; fi
# Sapper (legacy Svelte)
if has_dep "sapper"; then echo "sapper"; return; fi
# Saber
if has_dep "saber"; then echo "saber"; return; fi
# Sanity
if has_dep "sanity"; then echo "sanity-v3"; return; fi
if has_dep "@sanity/"; then echo "sanity"; return; fi
# Storybook
if has_dep "@storybook/"; then echo "storybook"; return; fi
# NestJS
if has_dep "@nestjs/core"; then echo "nestjs"; return; fi
# Elysia
if has_dep "elysia"; then echo "elysia"; return; fi
# Hono
if has_dep "hono"; then echo "hono"; return; fi
# Fastify
if has_dep "fastify"; then echo "fastify"; return; fi
# h3
if has_dep "h3"; then echo "h3"; return; fi
# Nitro
if has_dep "nitropack"; then echo "nitro"; return; fi
# Express
if has_dep "express"; then echo "express"; return; fi
# Vite (generic - check last among JS frameworks)
if has_dep "vite"; then echo "vite"; return; fi
# Parcel
if has_dep "parcel"; then echo "parcel"; return; fi
# No framework detected
echo "null"
}
# Parse arguments
INPUT_PATH="${1:-.}"
# Create temp directory for packaging
TEMP_DIR=$(mktemp -d)
TARBALL="$TEMP_DIR/project.tgz"
CLEANUP_TEMP=true
cleanup() {
if [ "$CLEANUP_TEMP" = true ]; then
rm -rf "$TEMP_DIR"
fi
}
trap cleanup EXIT
echo "Preparing deployment..." >&2
# Check if input is a .tgz file or a directory
FRAMEWORK="null"
if [ -f "$INPUT_PATH" ] && [[ "$INPUT_PATH" == *.tgz ]]; then
# Input is already a tarball, use it directly
echo "Using provided tarball..." >&2
TARBALL="$INPUT_PATH"
CLEANUP_TEMP=false
# Can't detect framework from tarball, leave as null
elif [ -d "$INPUT_PATH" ]; then
# Input is a directory, need to tar it
PROJECT_PATH=$(cd "$INPUT_PATH" && pwd)
# Detect framework from package.json
FRAMEWORK=$(detect_framework "$PROJECT_PATH/package.json")
# Check if this is a static HTML project (no package.json)
if [ ! -f "$PROJECT_PATH/package.json" ]; then
# Find HTML files in root
HTML_FILES=$(find "$PROJECT_PATH" -maxdepth 1 -name "*.html" -type f)
HTML_COUNT=$(echo "$HTML_FILES" | grep -c . || echo 0)
# If there's exactly one HTML file and it's not index.html, rename it
if [ "$HTML_COUNT" -eq 1 ]; then
HTML_FILE=$(echo "$HTML_FILES" | head -1)
BASENAME=$(basename "$HTML_FILE")
if [ "$BASENAME" != "index.html" ]; then
echo "Renaming $BASENAME to index.html..." >&2
mv "$HTML_FILE" "$PROJECT_PATH/index.html"
fi
fi
fi
# Create tarball of the project (excluding node_modules and .git)
echo "Creating deployment package..." >&2
tar -czf "$TARBALL" -C "$PROJECT_PATH" --exclude='node_modules' --exclude='.git' .
else
echo "Error: Input must be a directory or a .tgz file" >&2
exit 1
fi
if [ "$FRAMEWORK" != "null" ]; then
echo "Detected framework: $FRAMEWORK" >&2
fi
# Deploy
echo "Deploying..." >&2
RESPONSE=$(curl -s -X POST "$DEPLOY_ENDPOINT" -F "file=@$TARBALL" -F "framework=$FRAMEWORK")
# Check for error in response
if echo "$RESPONSE" | grep -q '"error"'; then
ERROR_MSG=$(echo "$RESPONSE" | grep -o '"error":"[^"]*"' | cut -d'"' -f4)
echo "Error: $ERROR_MSG" >&2
exit 1
fi
# Extract URLs from response
PREVIEW_URL=$(echo "$RESPONSE" | grep -o '"previewUrl":"[^"]*"' | cut -d'"' -f4)
CLAIM_URL=$(echo "$RESPONSE" | grep -o '"claimUrl":"[^"]*"' | cut -d'"' -f4)
if [ -z "$PREVIEW_URL" ]; then
echo "Error: Could not extract preview URL from response" >&2
echo "$RESPONSE" >&2
exit 1
fi
echo "" >&2
echo "Deployment successful!" >&2
echo "" >&2
echo "Preview URL: $PREVIEW_URL" >&2
echo "Claim URL: $CLAIM_URL" >&2
echo "" >&2
# Output JSON for programmatic use
echo "$RESPONSE"
N:vercel-deploy
D:Deploy apps to Vercel instantly. No authentication required - package as a tarball and return a Preview URL (live site) and Claim URL (transfer to your account). Supports Next.js/React/Vue/Svelte/Express and more.
G:deployment vercel preview production hosting serverless
U[4]:
App deployment — when asked "Deploy my app"
Preview deployment — when asked "Create a preview deployment"
Production deployment — when asked "Deploy this to production"
Share link — provide both Preview URL and Claim URL
S[3]{n,action,details}:
1,Prepare,Confirm project directory to deploy; auto-detect framework from package.json
2,Deploy,bash /mnt/skills/user/vercel-deploy/scripts/deploy.sh [path] (claude.ai environment)
3,Present Results,Show the user both Preview URL (live immediately) + Claim URL (transfer to Vercel account)
R[4]:
Always show both Preview URL and Claim URL
Do not include node_modules or .git in the tarball
Do not hardcode credentials (claimable deploy flow)
On deployment failure, show a clear error message and how to fix it
E[3]{desc,in,out}:
"Deploy current directory","bash /mnt/skills/user/vercel-deploy/scripts/deploy.sh","✓ Deployment successful!\nPreview URL: https://skill-deploy-abc123.vercel.app\nClaim URL: https://vercel.com/claim-deployment?code=..."
"Deploy specific project","bash /mnt/skills/user/vercel-deploy/scripts/deploy.sh /path/to/project","Detected framework (nextjs) + deployment complete + returned both URLs"
"When there's a network error","Deployment failed due to network restrictions","In claude.ai/settings/capabilities, add *.vercel.com to allowed domains and retry"
Related skills
FAQ
Do I need a Vercel account to deploy?
No authentication is required; the deployment returns a Claim URL to transfer it to a Vercel account later.
Which frameworks are supported?
Next.js, Nuxt, SvelteKit, Astro, Express, Hono, NestJS and many more, auto-detected from package.json.