Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".
# 1. Check for a git remote
git remote get-url origin 2>/dev/null
# 2. Check if locally linked to a Vercel project (either file means linked)
cat .vercel/project.json 2>/dev/null || cat .vercel/repo.json 2>/dev/null
# 3. Check if the Vercel CLI is installed and authenticated
vercel whoami 2>/dev/null
# 4. List available teams (if authenticated)
vercel teams list --format json 2>/dev/null
--scope on all subsequent CLI commands (vercel deploy, vercel link, vercel inspect, etc.):vercel deploy [path] -y --no-wait --scope <team-slug>
.vercel/project.json or .vercel/repo.json exists), the orgId in those files determines the team — no need to ask again. If there is only one team (or just a personal account), skip the prompt and use it directly..vercel/ directory: A linked project has either:.vercel/project.json — created by vercel link (single project linking). Contains projectId and orgId..vercel/repo.json — created by vercel link --repo (repo-based linking). Contains orgId, remoteName, and a projects array mapping directories to Vercel project IDs.vercel project inspect, vercel ls, or vercel link to detect state in an unlinked directory — without a .vercel/ config, they will interactively prompt (or with --yes, silently link as a side-effect). Only vercel whoami is safe to run anywhere..vercel/ exists) + has git remote → Git PushThis project is connected to Vercel via git. I can commit and push to
trigger a deployment. Want me to proceed?
git add .
git commit -m "deploy: <description of changes>"
git push
main) gets a production deployment.sleep 5
vercel ls --format json
deployments array. Find the latest entry — its url field is the preview URL..vercel/ exists) + no git remote → vercel deployvercel deploy [path] -y --no-wait
--no-wait so the CLI returns immediately with the deployment URL instead of blocking until the build finishes (builds can take a while). Then check on the deployment status with:vercel inspect <deployment-url>
vercel deploy [path] --prod -y --no-wait
Linking this project to <team name> on Vercel. This will create a Vercel
project to deploy to and enable automatic deployments on future git pushes.
vercel link --repo --scope <team-slug>
.vercel/repo.json. This is much more reliable than vercel link (without --repo), which tries to match by directory name and often fails when the local folder and Vercel project are named differently.vercel link --scope <team-slug>
.vercel/project.json.vercel deploy [path] -y --no-wait --scope <team-slug>, then vercel inspect <url> to check statusnpm install -g vercel
vercel login
vercel teams list --format json as a bulleted list. If only one team / personal account, skip. Once selected, proceed immediately.--repo if a git remote exists, plain vercel link otherwise):vercel link --repo --scope <team-slug> # if git remote exists
vercel link --scope <team-slug> # if no git remote
vercel deploy -y --no-wait --scope <team-slug>, then vercel inspect <url> to check status).bash /mnt/skills/user/deploy-to-vercel/resources/deploy.sh [path]
path - Directory to deploy, or a .tgz file (defaults to current directory)# Deploy current directory
bash /mnt/skills/user/deploy-to-vercel/resources/deploy.sh
# Deploy specific project
bash /mnt/skills/user/deploy-to-vercel/resources/deploy.sh /path/to/project
# Deploy existing tarball
bash /mnt/skills/user/deploy-to-vercel/resources/deploy.sh /path/to/project.tgz
package.json, packages the project (excluding node_modules, .git, .env), uploads it, and waits for the build to complete.command -v vercel
vercel is installed, try deploying with the CLI:vercel deploy [path] -y --no-wait
vercel is not installed, or the CLI fails with "No existing credentials found", use the fallback script:skill_dir="<path-to-skill>"
# Deploy current directory
bash "$skill_dir/resources/deploy-codex.sh"
# Deploy specific project
bash "$skill_dir/resources/deploy-codex.sh" /path/to/project
# Deploy existing tarball
bash "$skill_dir/resources/deploy-codex.sh" /path/to/project.tgz
previewUrl and claimUrl.sandbox_permissions=require_escalated). Do not escalate the command -v vercel check./mnt/skills/ path. Follow the decision flow above using the CLI directly.bash ~/.claude/skills/deploy-to-vercel/resources/deploy.sh [path]
vercel login or git push. Go directly to the no-auth fallback — claude.ai sandbox.vercel ls --format json to find the preview URL. If the CLI isn't authenticated, tell the user to check the Vercel dashboard or commit status checks.vercel deploy --no-wait. Use vercel inspect <url> to check build status and report it to the user.Deployment successful!
Preview URL: https://my-app-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.
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 again
sandbox_permissions=require_escalated). Do not escalate the initial CLI availability check — only escalate the actual deploy command.The deploy needs escalated network access to deploy to Vercel. I can rerun
the command with escalated permissions — want me to proceed?
vercel login or vercel deploy fails with authentication errors, fall back to the no-auth deploy script (claude.ai or Codex variant, depending on the environment).