[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-vercel-labs-deploy-to-vercel":3,"mdc-gsn77f-key":30,"related-repo-vercel-labs-deploy-to-vercel":2243,"related-org-vercel-labs-deploy-to-vercel":2338},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":19,"repoUrl":20,"updatedAt":21,"license":22,"forks":23,"topics":24,"repo":25,"sourceUrl":28,"mdContent":29},"deploy-to-vercel","deploy applications to Vercel","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\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"vercel-labs","Vercel Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fvercel-labs.png",[12,16],{"name":13,"slug":14,"type":15},"Vercel","vercel","tag",{"name":17,"slug":18,"type":15},"Deployment","deployment",28993,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-skills","2026-07-17T06:08:41.18374",null,2597,[],{"repoUrl":20,"stars":19,"forks":23,"topics":26,"description":27},[],"Vercel's official collection of agent skills","https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fdeploy-to-vercel","---\nname: deploy-to-vercel\ndescription: 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\".\nmetadata:\n  author: vercel\n  version: \"3.0.0\"\n---\n\n# Deploy to Vercel\n\nDeploy any project to Vercel. **Always deploy as preview** (not production) unless the user explicitly asks for production.\n\nThe goal is to get the user into the best long-term setup: their project linked to Vercel with git-push deploys. Every method below tries to move the user closer to that state.\n\n## Step 1: Gather Project State\n\nRun all four checks before deciding which method to use:\n\n```bash\n# 1. Check for a git remote\ngit remote get-url origin 2>\u002Fdev\u002Fnull\n\n# 2. Check if locally linked to a Vercel project (either file means linked)\ncat .vercel\u002Fproject.json 2>\u002Fdev\u002Fnull || cat .vercel\u002Frepo.json 2>\u002Fdev\u002Fnull\n\n# 3. Check if the Vercel CLI is installed and authenticated\nvercel whoami 2>\u002Fdev\u002Fnull\n\n# 4. List available teams (if authenticated)\nvercel teams list --format json 2>\u002Fdev\u002Fnull\n```\n\n### Team selection\n\nIf the user belongs to multiple teams, present all available team slugs as a bulleted list and ask which one to deploy to. Once the user picks a team, proceed immediately to the next step — do not ask for additional confirmation.\n\nPass the team slug via `--scope` on all subsequent CLI commands (`vercel deploy`, `vercel link`, `vercel inspect`, etc.):\n\n```bash\nvercel deploy [path] -y --no-wait --scope \u003Cteam-slug>\n```\n\nIf the project is already linked (`.vercel\u002Fproject.json` or `.vercel\u002Frepo.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.\n\n**About the `.vercel\u002F` directory:** A linked project has either:\n- `.vercel\u002Fproject.json` — created by `vercel link` (single project linking). Contains `projectId` and `orgId`.\n- `.vercel\u002Frepo.json` — created by `vercel link --repo` (repo-based linking). Contains `orgId`, `remoteName`, and a `projects` array mapping directories to Vercel project IDs.\n\nEither file means the project is linked. Check for both.\n\n**Do NOT** use `vercel project inspect`, `vercel ls`, or `vercel link` to detect state in an unlinked directory — without a `.vercel\u002F` config, they will interactively prompt (or with `--yes`, silently link as a side-effect). Only `vercel whoami` is safe to run anywhere.\n\n## Step 2: Choose a Deploy Method\n\n### Linked (`.vercel\u002F` exists) + has git remote → Git Push\n\nThis is the ideal state. The project is linked and has git integration.\n\n1. **Ask the user before pushing.** Never push without explicit approval:\n   ```\n   This project is connected to Vercel via git. I can commit and push to\n   trigger a deployment. Want me to proceed?\n   ```\n\n2. **Commit and push:**\n   ```bash\n   git add .\n   git commit -m \"deploy: \u003Cdescription of changes>\"\n   git push\n   ```\n   Vercel automatically builds from the push. Non-production branches get preview deployments; the production branch (usually `main`) gets a production deployment.\n\n3. **Retrieve the preview URL.** If the CLI is authenticated:\n   ```bash\n   sleep 5\n   vercel ls --format json\n   ```\n   The JSON output has a `deployments` array. Find the latest entry — its `url` field is the preview URL.\n\n   If the CLI is not authenticated, tell the user to check the Vercel dashboard or the commit status checks on their git provider for the preview URL.\n\n---\n\n### Linked (`.vercel\u002F` exists) + no git remote → `vercel deploy`\n\nThe project is linked but there's no git repo. Deploy directly with the CLI.\n\n```bash\nvercel deploy [path] -y --no-wait\n```\n\nUse `--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:\n\n```bash\nvercel inspect \u003Cdeployment-url>\n```\n\nFor production deploys (only if user explicitly asks):\n```bash\nvercel deploy [path] --prod -y --no-wait\n```\n\n---\n\n### Not linked + CLI is authenticated → Link first, then deploy\n\nThe CLI is working but the project isn't linked yet. This is the opportunity to get the user into the best state.\n\n1. **Ask the user which team to deploy to.** Present the team slugs from Step 1 as a bulleted list. If there's only one team (or just a personal account), skip this step.\n\n2. **Once a team is selected, proceed directly to linking.** Tell the user what will happen but do not ask for separate confirmation:\n   ```\n   Linking this project to \u003Cteam name> on Vercel. This will create a Vercel\n   project to deploy to and enable automatic deployments on future git pushes.\n   ```\n\n3. **If a git remote exists**, use repo-based linking with the selected team scope:\n   ```bash\n   vercel link --repo --scope \u003Cteam-slug>\n   ```\n   This reads the git remote URL and matches it to existing Vercel projects that deploy from that repo. It creates `.vercel\u002Frepo.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.\n\n   **If there is no git remote**, fall back to standard linking:\n   ```bash\n   vercel link --scope \u003Cteam-slug>\n   ```\n   This prompts the user to select or create a project. It creates `.vercel\u002Fproject.json`.\n\n4. **Then deploy using the best available method:**\n   - If a git remote exists → commit and push (see git push method above)\n   - If no git remote → `vercel deploy [path] -y --no-wait --scope \u003Cteam-slug>`, then `vercel inspect \u003Curl>` to check status\n\n---\n\n### Not linked + CLI not authenticated → Install, auth, link, deploy\n\nThe Vercel CLI isn't set up at all.\n\n1. **Install the CLI (if not already installed):**\n   ```bash\n   npm install -g vercel\n   ```\n\n2. **Authenticate:**\n   ```bash\n   vercel login\n   ```\n   The user completes auth in their browser. If running in a non-interactive environment where login is not possible, skip to the **no-auth fallback** below.\n\n3. **Ask which team to deploy to** — present team slugs from `vercel teams list --format json` as a bulleted list. If only one team \u002F personal account, skip. Once selected, proceed immediately.\n\n4. **Link the project** with the selected team scope (use `--repo` if a git remote exists, plain `vercel link` otherwise):\n   ```bash\n   vercel link --repo --scope \u003Cteam-slug>   # if git remote exists\n   vercel link --scope \u003Cteam-slug>          # if no git remote\n   ```\n\n5. **Deploy** using the best available method (git push if remote exists, otherwise `vercel deploy -y --no-wait --scope \u003Cteam-slug>`, then `vercel inspect \u003Curl>` to check status).\n\n---\n\n### No-Auth Fallback — claude.ai sandbox\n\n**When to use:** Last resort when the CLI can't be installed or authenticated in the claude.ai sandbox. This requires no authentication — it returns a **Preview URL** (live site) and a **Claim URL** (transfer to your Vercel account).\n\n```bash\nbash \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh [path]\n```\n\n**Arguments:**\n- `path` - Directory to deploy, or a `.tgz` file (defaults to current directory)\n\n**Examples:**\n```bash\n# Deploy current directory\nbash \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh\n\n# Deploy specific project\nbash \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh \u002Fpath\u002Fto\u002Fproject\n\n# Deploy existing tarball\nbash \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh \u002Fpath\u002Fto\u002Fproject.tgz\n```\n\nThe script auto-detects the framework from `package.json`, packages the project (excluding `node_modules`, `.git`, `.env`), uploads it, and waits for the build to complete.\n\n**Tell the user:** \"Your deployment is ready at [previewUrl]. Claim it at [claimUrl] to manage your deployment.\"\n\n---\n\n### No-Auth Fallback — Codex sandbox\n\n**When to use:** In the Codex sandbox where the CLI may not be authenticated. Codex runs in a sandboxed environment by default — try the CLI first, and fall back to the deploy script if auth fails.\n\n1. **Check whether the Vercel CLI is installed** (no escalation needed for this check):\n   ```bash\n   command -v vercel\n   ```\n\n2. **If `vercel` is installed**, try deploying with the CLI:\n   ```bash\n   vercel deploy [path] -y --no-wait\n   ```\n\n3. **If `vercel` is not installed, or the CLI fails with \"No existing credentials found\"**, use the fallback script:\n   ```bash\n   skill_dir=\"\u003Cpath-to-skill>\"\n\n   # Deploy current directory\n   bash \"$skill_dir\u002Fresources\u002Fdeploy-codex.sh\"\n\n   # Deploy specific project\n   bash \"$skill_dir\u002Fresources\u002Fdeploy-codex.sh\" \u002Fpath\u002Fto\u002Fproject\n\n   # Deploy existing tarball\n   bash \"$skill_dir\u002Fresources\u002Fdeploy-codex.sh\" \u002Fpath\u002Fto\u002Fproject.tgz\n   ```\n\nThe script handles framework detection, packaging, and deployment. It waits for the build to complete and returns JSON with `previewUrl` and `claimUrl`.\n\n**Tell the user:** \"Your deployment is ready at [previewUrl]. Claim it at [claimUrl] to manage your deployment.\"\n\n**Escalated network access:** Only escalate the actual deploy command if sandboxing blocks the network call (`sandbox_permissions=require_escalated`). Do **not** escalate the `command -v vercel` check.\n\n---\n\n## Agent-Specific Notes\n\n### Claude Code \u002F terminal-based agents\n\nYou have full shell access. Do NOT use the `\u002Fmnt\u002Fskills\u002F` path. Follow the decision flow above using the CLI directly.\n\nFor the no-auth fallback, run the deploy script from the skill's installed location:\n```bash\nbash ~\u002F.claude\u002Fskills\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh [path]\n```\nThe path may vary depending on where the user installed the skill.\n\n### Sandboxed environments (claude.ai)\n\nYou likely cannot run `vercel login` or `git push`. Go directly to the **no-auth fallback — claude.ai sandbox**.\n\n### Codex\n\nCodex runs in a sandbox. Check if the CLI is available first, then fall back to the deploy script. Go to the **no-auth fallback — Codex sandbox**.\n\n---\n\n## Output\n\nAlways show the user the deployment URL.\n\n- **Git push:** Use `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.\n- **CLI deploy:** Show the URL returned by `vercel deploy --no-wait`. Use `vercel inspect \u003Curl>` to check build status and report it to the user.\n- **No-auth fallback:** Show both the preview URL and the claim URL:\n  ```\n  Deployment successful!\n\n  Preview URL: https:\u002F\u002Fmy-app-abc123.vercel.app\n  Claim URL:   https:\u002F\u002Fvercel.com\u002Fclaim-deployment?code=...\n\n  View your site at the Preview URL.\n  To transfer this deployment to your Vercel account, visit the Claim URL.\n  ```\n\n**Do not** curl or fetch the deployed URL to verify it works. Just return the link.\n\n---\n\n## Troubleshooting\n\n### Network Egress Error (claude.ai)\n\nIf deployment fails due to network restrictions on claude.ai, tell the user:\n\n```\nDeployment failed due to network restrictions. To fix this:\n\n1. Go to https:\u002F\u002Fclaude.ai\u002Fsettings\u002Fcapabilities\n2. Add *.vercel.com to the allowed domains\n3. Try deploying again\n```\n\n### Escalated Network Access (Codex \u002F sandboxed environments)\n\nIf deployment fails due to network issues (timeouts, DNS errors, connection resets) in a sandboxed environment, rerun with escalated permissions (`sandbox_permissions=require_escalated`). Do not escalate the initial CLI availability check — only escalate the actual deploy command.\n\nExample guidance to the user:\n```\nThe deploy needs escalated network access to deploy to Vercel. I can rerun\nthe command with escalated permissions — want me to proceed?\n```\n\n### CLI Auth Failure\n\nIf `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).\n",{"data":31,"body":34},{"name":4,"description":6,"metadata":32},{"author":14,"version":33},"3.0.0",{"type":35,"children":36},"root",[37,45,59,64,71,76,293,300,305,341,381,410,428,504,509,564,570,583,588,780,784,801,806,829,842,880,885,908,911,917,922,1134,1137,1143,1148,1378,1381,1387,1411,1435,1443,1465,1473,1562,1597,1621,1624,1630,1639,1886,1903,1921,1954,1957,1963,1969,1982,1987,2010,2015,2021,2047,2053,2064,2067,2073,2078,2143,2153,2156,2162,2168,2173,2182,2188,2200,2205,2214,2220,2237],{"type":38,"tag":39,"props":40,"children":41},"element","h1",{"id":4},[42],{"type":43,"value":44},"text","Deploy to Vercel",{"type":38,"tag":46,"props":47,"children":48},"p",{},[49,51,57],{"type":43,"value":50},"Deploy any project to Vercel. ",{"type":38,"tag":52,"props":53,"children":54},"strong",{},[55],{"type":43,"value":56},"Always deploy as preview",{"type":43,"value":58}," (not production) unless the user explicitly asks for production.",{"type":38,"tag":46,"props":60,"children":61},{},[62],{"type":43,"value":63},"The goal is to get the user into the best long-term setup: their project linked to Vercel with git-push deploys. Every method below tries to move the user closer to that state.",{"type":38,"tag":65,"props":66,"children":68},"h2",{"id":67},"step-1-gather-project-state",[69],{"type":43,"value":70},"Step 1: Gather Project State",{"type":38,"tag":46,"props":72,"children":73},{},[74],{"type":43,"value":75},"Run all four checks before deciding which method to use:",{"type":38,"tag":77,"props":78,"children":83},"pre",{"className":79,"code":80,"language":81,"meta":82,"style":82},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 1. Check for a git remote\ngit remote get-url origin 2>\u002Fdev\u002Fnull\n\n# 2. Check if locally linked to a Vercel project (either file means linked)\ncat .vercel\u002Fproject.json 2>\u002Fdev\u002Fnull || cat .vercel\u002Frepo.json 2>\u002Fdev\u002Fnull\n\n# 3. Check if the Vercel CLI is installed and authenticated\nvercel whoami 2>\u002Fdev\u002Fnull\n\n# 4. List available teams (if authenticated)\nvercel teams list --format json 2>\u002Fdev\u002Fnull\n","bash","",[84],{"type":38,"tag":85,"props":86,"children":87},"code",{"__ignoreMap":82},[88,100,137,147,156,202,210,219,240,248,257],{"type":38,"tag":89,"props":90,"children":93},"span",{"class":91,"line":92},"line",1,[94],{"type":38,"tag":89,"props":95,"children":97},{"style":96},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[98],{"type":43,"value":99},"# 1. Check for a git remote\n",{"type":38,"tag":89,"props":101,"children":103},{"class":91,"line":102},2,[104,110,116,121,126,132],{"type":38,"tag":89,"props":105,"children":107},{"style":106},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[108],{"type":43,"value":109},"git",{"type":38,"tag":89,"props":111,"children":113},{"style":112},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[114],{"type":43,"value":115}," remote",{"type":38,"tag":89,"props":117,"children":118},{"style":112},[119],{"type":43,"value":120}," get-url",{"type":38,"tag":89,"props":122,"children":123},{"style":112},[124],{"type":43,"value":125}," origin",{"type":38,"tag":89,"props":127,"children":129},{"style":128},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[130],{"type":43,"value":131}," 2>",{"type":38,"tag":89,"props":133,"children":134},{"style":112},[135],{"type":43,"value":136},"\u002Fdev\u002Fnull\n",{"type":38,"tag":89,"props":138,"children":140},{"class":91,"line":139},3,[141],{"type":38,"tag":89,"props":142,"children":144},{"emptyLinePlaceholder":143},true,[145],{"type":43,"value":146},"\n",{"type":38,"tag":89,"props":148,"children":150},{"class":91,"line":149},4,[151],{"type":38,"tag":89,"props":152,"children":153},{"style":96},[154],{"type":43,"value":155},"# 2. Check if locally linked to a Vercel project (either file means linked)\n",{"type":38,"tag":89,"props":157,"children":159},{"class":91,"line":158},5,[160,165,170,174,179,184,189,194,198],{"type":38,"tag":89,"props":161,"children":162},{"style":106},[163],{"type":43,"value":164},"cat",{"type":38,"tag":89,"props":166,"children":167},{"style":112},[168],{"type":43,"value":169}," .vercel\u002Fproject.json",{"type":38,"tag":89,"props":171,"children":172},{"style":128},[173],{"type":43,"value":131},{"type":38,"tag":89,"props":175,"children":176},{"style":112},[177],{"type":43,"value":178},"\u002Fdev\u002Fnull",{"type":38,"tag":89,"props":180,"children":181},{"style":128},[182],{"type":43,"value":183}," ||",{"type":38,"tag":89,"props":185,"children":186},{"style":106},[187],{"type":43,"value":188}," cat",{"type":38,"tag":89,"props":190,"children":191},{"style":112},[192],{"type":43,"value":193}," .vercel\u002Frepo.json",{"type":38,"tag":89,"props":195,"children":196},{"style":128},[197],{"type":43,"value":131},{"type":38,"tag":89,"props":199,"children":200},{"style":112},[201],{"type":43,"value":136},{"type":38,"tag":89,"props":203,"children":205},{"class":91,"line":204},6,[206],{"type":38,"tag":89,"props":207,"children":208},{"emptyLinePlaceholder":143},[209],{"type":43,"value":146},{"type":38,"tag":89,"props":211,"children":213},{"class":91,"line":212},7,[214],{"type":38,"tag":89,"props":215,"children":216},{"style":96},[217],{"type":43,"value":218},"# 3. Check if the Vercel CLI is installed and authenticated\n",{"type":38,"tag":89,"props":220,"children":222},{"class":91,"line":221},8,[223,227,232,236],{"type":38,"tag":89,"props":224,"children":225},{"style":106},[226],{"type":43,"value":14},{"type":38,"tag":89,"props":228,"children":229},{"style":112},[230],{"type":43,"value":231}," whoami",{"type":38,"tag":89,"props":233,"children":234},{"style":128},[235],{"type":43,"value":131},{"type":38,"tag":89,"props":237,"children":238},{"style":112},[239],{"type":43,"value":136},{"type":38,"tag":89,"props":241,"children":243},{"class":91,"line":242},9,[244],{"type":38,"tag":89,"props":245,"children":246},{"emptyLinePlaceholder":143},[247],{"type":43,"value":146},{"type":38,"tag":89,"props":249,"children":251},{"class":91,"line":250},10,[252],{"type":38,"tag":89,"props":253,"children":254},{"style":96},[255],{"type":43,"value":256},"# 4. List available teams (if authenticated)\n",{"type":38,"tag":89,"props":258,"children":260},{"class":91,"line":259},11,[261,265,270,275,280,285,289],{"type":38,"tag":89,"props":262,"children":263},{"style":106},[264],{"type":43,"value":14},{"type":38,"tag":89,"props":266,"children":267},{"style":112},[268],{"type":43,"value":269}," teams",{"type":38,"tag":89,"props":271,"children":272},{"style":112},[273],{"type":43,"value":274}," list",{"type":38,"tag":89,"props":276,"children":277},{"style":112},[278],{"type":43,"value":279}," --format",{"type":38,"tag":89,"props":281,"children":282},{"style":112},[283],{"type":43,"value":284}," json",{"type":38,"tag":89,"props":286,"children":287},{"style":128},[288],{"type":43,"value":131},{"type":38,"tag":89,"props":290,"children":291},{"style":112},[292],{"type":43,"value":136},{"type":38,"tag":294,"props":295,"children":297},"h3",{"id":296},"team-selection",[298],{"type":43,"value":299},"Team selection",{"type":38,"tag":46,"props":301,"children":302},{},[303],{"type":43,"value":304},"If the user belongs to multiple teams, present all available team slugs as a bulleted list and ask which one to deploy to. Once the user picks a team, proceed immediately to the next step — do not ask for additional confirmation.",{"type":38,"tag":46,"props":306,"children":307},{},[308,310,316,318,324,326,332,333,339],{"type":43,"value":309},"Pass the team slug via ",{"type":38,"tag":85,"props":311,"children":313},{"className":312},[],[314],{"type":43,"value":315},"--scope",{"type":43,"value":317}," on all subsequent CLI commands (",{"type":38,"tag":85,"props":319,"children":321},{"className":320},[],[322],{"type":43,"value":323},"vercel deploy",{"type":43,"value":325},", ",{"type":38,"tag":85,"props":327,"children":329},{"className":328},[],[330],{"type":43,"value":331},"vercel link",{"type":43,"value":325},{"type":38,"tag":85,"props":334,"children":336},{"className":335},[],[337],{"type":43,"value":338},"vercel inspect",{"type":43,"value":340},", etc.):",{"type":38,"tag":77,"props":342,"children":344},{"className":79,"code":343,"language":81,"meta":82,"style":82},"vercel deploy [path] -y --no-wait --scope \u003Cteam-slug>\n",[345],{"type":38,"tag":85,"props":346,"children":347},{"__ignoreMap":82},[348],{"type":38,"tag":89,"props":349,"children":350},{"class":91,"line":92},[351,355,360,366,371,376],{"type":38,"tag":89,"props":352,"children":353},{"style":106},[354],{"type":43,"value":14},{"type":38,"tag":89,"props":356,"children":357},{"style":112},[358],{"type":43,"value":359}," deploy",{"type":38,"tag":89,"props":361,"children":363},{"style":362},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[364],{"type":43,"value":365}," [path] -y --no-wait --scope ",{"type":38,"tag":89,"props":367,"children":368},{"style":128},[369],{"type":43,"value":370},"\u003C",{"type":38,"tag":89,"props":372,"children":373},{"style":362},[374],{"type":43,"value":375},"team-slug",{"type":38,"tag":89,"props":377,"children":378},{"style":128},[379],{"type":43,"value":380},">\n",{"type":38,"tag":46,"props":382,"children":383},{},[384,386,392,394,400,402,408],{"type":43,"value":385},"If the project is already linked (",{"type":38,"tag":85,"props":387,"children":389},{"className":388},[],[390],{"type":43,"value":391},".vercel\u002Fproject.json",{"type":43,"value":393}," or ",{"type":38,"tag":85,"props":395,"children":397},{"className":396},[],[398],{"type":43,"value":399},".vercel\u002Frepo.json",{"type":43,"value":401}," exists), the ",{"type":38,"tag":85,"props":403,"children":405},{"className":404},[],[406],{"type":43,"value":407},"orgId",{"type":43,"value":409}," 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.",{"type":38,"tag":46,"props":411,"children":412},{},[413,426],{"type":38,"tag":52,"props":414,"children":415},{},[416,418,424],{"type":43,"value":417},"About the ",{"type":38,"tag":85,"props":419,"children":421},{"className":420},[],[422],{"type":43,"value":423},".vercel\u002F",{"type":43,"value":425}," directory:",{"type":43,"value":427}," A linked project has either:",{"type":38,"tag":429,"props":430,"children":431},"ul",{},[432,465],{"type":38,"tag":433,"props":434,"children":435},"li",{},[436,441,443,448,450,456,458,463],{"type":38,"tag":85,"props":437,"children":439},{"className":438},[],[440],{"type":43,"value":391},{"type":43,"value":442}," — created by ",{"type":38,"tag":85,"props":444,"children":446},{"className":445},[],[447],{"type":43,"value":331},{"type":43,"value":449}," (single project linking). Contains ",{"type":38,"tag":85,"props":451,"children":453},{"className":452},[],[454],{"type":43,"value":455},"projectId",{"type":43,"value":457}," and ",{"type":38,"tag":85,"props":459,"children":461},{"className":460},[],[462],{"type":43,"value":407},{"type":43,"value":464},".",{"type":38,"tag":433,"props":466,"children":467},{},[468,473,474,480,482,487,488,494,496,502],{"type":38,"tag":85,"props":469,"children":471},{"className":470},[],[472],{"type":43,"value":399},{"type":43,"value":442},{"type":38,"tag":85,"props":475,"children":477},{"className":476},[],[478],{"type":43,"value":479},"vercel link --repo",{"type":43,"value":481}," (repo-based linking). Contains ",{"type":38,"tag":85,"props":483,"children":485},{"className":484},[],[486],{"type":43,"value":407},{"type":43,"value":325},{"type":38,"tag":85,"props":489,"children":491},{"className":490},[],[492],{"type":43,"value":493},"remoteName",{"type":43,"value":495},", and a ",{"type":38,"tag":85,"props":497,"children":499},{"className":498},[],[500],{"type":43,"value":501},"projects",{"type":43,"value":503}," array mapping directories to Vercel project IDs.",{"type":38,"tag":46,"props":505,"children":506},{},[507],{"type":43,"value":508},"Either file means the project is linked. Check for both.",{"type":38,"tag":46,"props":510,"children":511},{},[512,517,519,525,526,532,534,539,541,546,548,554,556,562],{"type":38,"tag":52,"props":513,"children":514},{},[515],{"type":43,"value":516},"Do NOT",{"type":43,"value":518}," use ",{"type":38,"tag":85,"props":520,"children":522},{"className":521},[],[523],{"type":43,"value":524},"vercel project inspect",{"type":43,"value":325},{"type":38,"tag":85,"props":527,"children":529},{"className":528},[],[530],{"type":43,"value":531},"vercel ls",{"type":43,"value":533},", or ",{"type":38,"tag":85,"props":535,"children":537},{"className":536},[],[538],{"type":43,"value":331},{"type":43,"value":540}," to detect state in an unlinked directory — without a ",{"type":38,"tag":85,"props":542,"children":544},{"className":543},[],[545],{"type":43,"value":423},{"type":43,"value":547}," config, they will interactively prompt (or with ",{"type":38,"tag":85,"props":549,"children":551},{"className":550},[],[552],{"type":43,"value":553},"--yes",{"type":43,"value":555},", silently link as a side-effect). Only ",{"type":38,"tag":85,"props":557,"children":559},{"className":558},[],[560],{"type":43,"value":561},"vercel whoami",{"type":43,"value":563}," is safe to run anywhere.",{"type":38,"tag":65,"props":565,"children":567},{"id":566},"step-2-choose-a-deploy-method",[568],{"type":43,"value":569},"Step 2: Choose a Deploy Method",{"type":38,"tag":294,"props":571,"children":573},{"id":572},"linked-vercel-exists-has-git-remote-git-push",[574,576,581],{"type":43,"value":575},"Linked (",{"type":38,"tag":85,"props":577,"children":579},{"className":578},[],[580],{"type":43,"value":423},{"type":43,"value":582}," exists) + has git remote → Git Push",{"type":38,"tag":46,"props":584,"children":585},{},[586],{"type":43,"value":587},"This is the ideal state. The project is linked and has git integration.",{"type":38,"tag":589,"props":590,"children":591},"ol",{},[592,612,702],{"type":38,"tag":433,"props":593,"children":594},{},[595,600,602],{"type":38,"tag":52,"props":596,"children":597},{},[598],{"type":43,"value":599},"Ask the user before pushing.",{"type":43,"value":601}," Never push without explicit approval:",{"type":38,"tag":77,"props":603,"children":607},{"className":604,"code":606,"language":43},[605],"language-text","This project is connected to Vercel via git. I can commit and push to\ntrigger a deployment. Want me to proceed?\n",[608],{"type":38,"tag":85,"props":609,"children":610},{"__ignoreMap":82},[611],{"type":43,"value":606},{"type":38,"tag":433,"props":613,"children":614},{},[615,620,688,692,694,700],{"type":38,"tag":52,"props":616,"children":617},{},[618],{"type":43,"value":619},"Commit and push:",{"type":38,"tag":77,"props":621,"children":623},{"className":79,"code":622,"language":81,"meta":82,"style":82},"git add .\ngit commit -m \"deploy: \u003Cdescription of changes>\"\ngit push\n",[624],{"type":38,"tag":85,"props":625,"children":626},{"__ignoreMap":82},[627,644,676],{"type":38,"tag":89,"props":628,"children":629},{"class":91,"line":92},[630,634,639],{"type":38,"tag":89,"props":631,"children":632},{"style":106},[633],{"type":43,"value":109},{"type":38,"tag":89,"props":635,"children":636},{"style":112},[637],{"type":43,"value":638}," add",{"type":38,"tag":89,"props":640,"children":641},{"style":112},[642],{"type":43,"value":643}," .\n",{"type":38,"tag":89,"props":645,"children":646},{"class":91,"line":102},[647,651,656,661,666,671],{"type":38,"tag":89,"props":648,"children":649},{"style":106},[650],{"type":43,"value":109},{"type":38,"tag":89,"props":652,"children":653},{"style":112},[654],{"type":43,"value":655}," commit",{"type":38,"tag":89,"props":657,"children":658},{"style":112},[659],{"type":43,"value":660}," -m",{"type":38,"tag":89,"props":662,"children":663},{"style":128},[664],{"type":43,"value":665}," \"",{"type":38,"tag":89,"props":667,"children":668},{"style":112},[669],{"type":43,"value":670},"deploy: \u003Cdescription of changes>",{"type":38,"tag":89,"props":672,"children":673},{"style":128},[674],{"type":43,"value":675},"\"\n",{"type":38,"tag":89,"props":677,"children":678},{"class":91,"line":139},[679,683],{"type":38,"tag":89,"props":680,"children":681},{"style":106},[682],{"type":43,"value":109},{"type":38,"tag":89,"props":684,"children":685},{"style":112},[686],{"type":43,"value":687}," push\n",{"type":38,"tag":689,"props":690,"children":691},"br",{},[],{"type":43,"value":693},"Vercel automatically builds from the push. Non-production branches get preview deployments; the production branch (usually ",{"type":38,"tag":85,"props":695,"children":697},{"className":696},[],[698],{"type":43,"value":699},"main",{"type":43,"value":701},") gets a production deployment.",{"type":38,"tag":433,"props":703,"children":704},{},[705,710,712,754,757,759,765,767,773,775,778],{"type":38,"tag":52,"props":706,"children":707},{},[708],{"type":43,"value":709},"Retrieve the preview URL.",{"type":43,"value":711}," If the CLI is authenticated:",{"type":38,"tag":77,"props":713,"children":715},{"className":79,"code":714,"language":81,"meta":82,"style":82},"sleep 5\nvercel ls --format json\n",[716],{"type":38,"tag":85,"props":717,"children":718},{"__ignoreMap":82},[719,733],{"type":38,"tag":89,"props":720,"children":721},{"class":91,"line":92},[722,727],{"type":38,"tag":89,"props":723,"children":724},{"style":106},[725],{"type":43,"value":726},"sleep",{"type":38,"tag":89,"props":728,"children":730},{"style":729},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[731],{"type":43,"value":732}," 5\n",{"type":38,"tag":89,"props":734,"children":735},{"class":91,"line":102},[736,740,745,749],{"type":38,"tag":89,"props":737,"children":738},{"style":106},[739],{"type":43,"value":14},{"type":38,"tag":89,"props":741,"children":742},{"style":112},[743],{"type":43,"value":744}," ls",{"type":38,"tag":89,"props":746,"children":747},{"style":112},[748],{"type":43,"value":279},{"type":38,"tag":89,"props":750,"children":751},{"style":112},[752],{"type":43,"value":753}," json\n",{"type":38,"tag":689,"props":755,"children":756},{},[],{"type":43,"value":758},"The JSON output has a ",{"type":38,"tag":85,"props":760,"children":762},{"className":761},[],[763],{"type":43,"value":764},"deployments",{"type":43,"value":766}," array. Find the latest entry — its ",{"type":38,"tag":85,"props":768,"children":770},{"className":769},[],[771],{"type":43,"value":772},"url",{"type":43,"value":774}," field is the preview URL.",{"type":38,"tag":689,"props":776,"children":777},{},[],{"type":43,"value":779},"If the CLI is not authenticated, tell the user to check the Vercel dashboard or the commit status checks on their git provider for the preview URL.",{"type":38,"tag":781,"props":782,"children":783},"hr",{},[],{"type":38,"tag":294,"props":785,"children":787},{"id":786},"linked-vercel-exists-no-git-remote-vercel-deploy",[788,789,794,796],{"type":43,"value":575},{"type":38,"tag":85,"props":790,"children":792},{"className":791},[],[793],{"type":43,"value":423},{"type":43,"value":795}," exists) + no git remote → ",{"type":38,"tag":85,"props":797,"children":799},{"className":798},[],[800],{"type":43,"value":323},{"type":38,"tag":46,"props":802,"children":803},{},[804],{"type":43,"value":805},"The project is linked but there's no git repo. Deploy directly with the CLI.",{"type":38,"tag":77,"props":807,"children":809},{"className":79,"code":808,"language":81,"meta":82,"style":82},"vercel deploy [path] -y --no-wait\n",[810],{"type":38,"tag":85,"props":811,"children":812},{"__ignoreMap":82},[813],{"type":38,"tag":89,"props":814,"children":815},{"class":91,"line":92},[816,820,824],{"type":38,"tag":89,"props":817,"children":818},{"style":106},[819],{"type":43,"value":14},{"type":38,"tag":89,"props":821,"children":822},{"style":112},[823],{"type":43,"value":359},{"type":38,"tag":89,"props":825,"children":826},{"style":362},[827],{"type":43,"value":828}," [path] -y --no-wait\n",{"type":38,"tag":46,"props":830,"children":831},{},[832,834,840],{"type":43,"value":833},"Use ",{"type":38,"tag":85,"props":835,"children":837},{"className":836},[],[838],{"type":43,"value":839},"--no-wait",{"type":43,"value":841}," 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:",{"type":38,"tag":77,"props":843,"children":845},{"className":79,"code":844,"language":81,"meta":82,"style":82},"vercel inspect \u003Cdeployment-url>\n",[846],{"type":38,"tag":85,"props":847,"children":848},{"__ignoreMap":82},[849],{"type":38,"tag":89,"props":850,"children":851},{"class":91,"line":92},[852,856,861,866,871,876],{"type":38,"tag":89,"props":853,"children":854},{"style":106},[855],{"type":43,"value":14},{"type":38,"tag":89,"props":857,"children":858},{"style":112},[859],{"type":43,"value":860}," inspect",{"type":38,"tag":89,"props":862,"children":863},{"style":128},[864],{"type":43,"value":865}," \u003C",{"type":38,"tag":89,"props":867,"children":868},{"style":112},[869],{"type":43,"value":870},"deployment-ur",{"type":38,"tag":89,"props":872,"children":873},{"style":362},[874],{"type":43,"value":875},"l",{"type":38,"tag":89,"props":877,"children":878},{"style":128},[879],{"type":43,"value":380},{"type":38,"tag":46,"props":881,"children":882},{},[883],{"type":43,"value":884},"For production deploys (only if user explicitly asks):",{"type":38,"tag":77,"props":886,"children":888},{"className":79,"code":887,"language":81,"meta":82,"style":82},"vercel deploy [path] --prod -y --no-wait\n",[889],{"type":38,"tag":85,"props":890,"children":891},{"__ignoreMap":82},[892],{"type":38,"tag":89,"props":893,"children":894},{"class":91,"line":92},[895,899,903],{"type":38,"tag":89,"props":896,"children":897},{"style":106},[898],{"type":43,"value":14},{"type":38,"tag":89,"props":900,"children":901},{"style":112},[902],{"type":43,"value":359},{"type":38,"tag":89,"props":904,"children":905},{"style":362},[906],{"type":43,"value":907}," [path] --prod -y --no-wait\n",{"type":38,"tag":781,"props":909,"children":910},{},[],{"type":38,"tag":294,"props":912,"children":914},{"id":913},"not-linked-cli-is-authenticated-link-first-then-deploy",[915],{"type":43,"value":916},"Not linked + CLI is authenticated → Link first, then deploy",{"type":38,"tag":46,"props":918,"children":919},{},[920],{"type":43,"value":921},"The CLI is working but the project isn't linked yet. This is the opportunity to get the user into the best state.",{"type":38,"tag":589,"props":923,"children":924},{},[925,935,954,1097],{"type":38,"tag":433,"props":926,"children":927},{},[928,933],{"type":38,"tag":52,"props":929,"children":930},{},[931],{"type":43,"value":932},"Ask the user which team to deploy to.",{"type":43,"value":934}," Present the team slugs from Step 1 as a bulleted list. If there's only one team (or just a personal account), skip this step.",{"type":38,"tag":433,"props":936,"children":937},{},[938,943,945],{"type":38,"tag":52,"props":939,"children":940},{},[941],{"type":43,"value":942},"Once a team is selected, proceed directly to linking.",{"type":43,"value":944}," Tell the user what will happen but do not ask for separate confirmation:",{"type":38,"tag":77,"props":946,"children":949},{"className":947,"code":948,"language":43},[605],"Linking this project to \u003Cteam name> on Vercel. This will create a Vercel\nproject to deploy to and enable automatic deployments on future git pushes.\n",[950],{"type":38,"tag":85,"props":951,"children":952},{"__ignoreMap":82},[953],{"type":43,"value":948},{"type":38,"tag":433,"props":955,"children":956},{},[957,962,964,1011,1014,1016,1021,1023,1028,1030,1036,1038,1041,1046,1048,1086,1089,1091,1096],{"type":38,"tag":52,"props":958,"children":959},{},[960],{"type":43,"value":961},"If a git remote exists",{"type":43,"value":963},", use repo-based linking with the selected team scope:",{"type":38,"tag":77,"props":965,"children":967},{"className":79,"code":966,"language":81,"meta":82,"style":82},"vercel link --repo --scope \u003Cteam-slug>\n",[968],{"type":38,"tag":85,"props":969,"children":970},{"__ignoreMap":82},[971],{"type":38,"tag":89,"props":972,"children":973},{"class":91,"line":92},[974,978,983,988,993,997,1002,1007],{"type":38,"tag":89,"props":975,"children":976},{"style":106},[977],{"type":43,"value":14},{"type":38,"tag":89,"props":979,"children":980},{"style":112},[981],{"type":43,"value":982}," link",{"type":38,"tag":89,"props":984,"children":985},{"style":112},[986],{"type":43,"value":987}," --repo",{"type":38,"tag":89,"props":989,"children":990},{"style":112},[991],{"type":43,"value":992}," --scope",{"type":38,"tag":89,"props":994,"children":995},{"style":128},[996],{"type":43,"value":865},{"type":38,"tag":89,"props":998,"children":999},{"style":112},[1000],{"type":43,"value":1001},"team-slu",{"type":38,"tag":89,"props":1003,"children":1004},{"style":362},[1005],{"type":43,"value":1006},"g",{"type":38,"tag":89,"props":1008,"children":1009},{"style":128},[1010],{"type":43,"value":380},{"type":38,"tag":689,"props":1012,"children":1013},{},[],{"type":43,"value":1015},"This reads the git remote URL and matches it to existing Vercel projects that deploy from that repo. It creates ",{"type":38,"tag":85,"props":1017,"children":1019},{"className":1018},[],[1020],{"type":43,"value":399},{"type":43,"value":1022},". This is much more reliable than ",{"type":38,"tag":85,"props":1024,"children":1026},{"className":1025},[],[1027],{"type":43,"value":331},{"type":43,"value":1029}," (without ",{"type":38,"tag":85,"props":1031,"children":1033},{"className":1032},[],[1034],{"type":43,"value":1035},"--repo",{"type":43,"value":1037},"), which tries to match by directory name and often fails when the local folder and Vercel project are named differently.",{"type":38,"tag":689,"props":1039,"children":1040},{},[],{"type":38,"tag":52,"props":1042,"children":1043},{},[1044],{"type":43,"value":1045},"If there is no git remote",{"type":43,"value":1047},", fall back to standard linking:",{"type":38,"tag":77,"props":1049,"children":1051},{"className":79,"code":1050,"language":81,"meta":82,"style":82},"vercel link --scope \u003Cteam-slug>\n",[1052],{"type":38,"tag":85,"props":1053,"children":1054},{"__ignoreMap":82},[1055],{"type":38,"tag":89,"props":1056,"children":1057},{"class":91,"line":92},[1058,1062,1066,1070,1074,1078,1082],{"type":38,"tag":89,"props":1059,"children":1060},{"style":106},[1061],{"type":43,"value":14},{"type":38,"tag":89,"props":1063,"children":1064},{"style":112},[1065],{"type":43,"value":982},{"type":38,"tag":89,"props":1067,"children":1068},{"style":112},[1069],{"type":43,"value":992},{"type":38,"tag":89,"props":1071,"children":1072},{"style":128},[1073],{"type":43,"value":865},{"type":38,"tag":89,"props":1075,"children":1076},{"style":112},[1077],{"type":43,"value":1001},{"type":38,"tag":89,"props":1079,"children":1080},{"style":362},[1081],{"type":43,"value":1006},{"type":38,"tag":89,"props":1083,"children":1084},{"style":128},[1085],{"type":43,"value":380},{"type":38,"tag":689,"props":1087,"children":1088},{},[],{"type":43,"value":1090},"This prompts the user to select or create a project. It creates ",{"type":38,"tag":85,"props":1092,"children":1094},{"className":1093},[],[1095],{"type":43,"value":391},{"type":43,"value":464},{"type":38,"tag":433,"props":1098,"children":1099},{},[1100,1105],{"type":38,"tag":52,"props":1101,"children":1102},{},[1103],{"type":43,"value":1104},"Then deploy using the best available method:",{"type":38,"tag":429,"props":1106,"children":1107},{},[1108,1113],{"type":38,"tag":433,"props":1109,"children":1110},{},[1111],{"type":43,"value":1112},"If a git remote exists → commit and push (see git push method above)",{"type":38,"tag":433,"props":1114,"children":1115},{},[1116,1118,1124,1126,1132],{"type":43,"value":1117},"If no git remote → ",{"type":38,"tag":85,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":43,"value":1123},"vercel deploy [path] -y --no-wait --scope \u003Cteam-slug>",{"type":43,"value":1125},", then ",{"type":38,"tag":85,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":43,"value":1131},"vercel inspect \u003Curl>",{"type":43,"value":1133}," to check status",{"type":38,"tag":781,"props":1135,"children":1136},{},[],{"type":38,"tag":294,"props":1138,"children":1140},{"id":1139},"not-linked-cli-not-authenticated-install-auth-link-deploy",[1141],{"type":43,"value":1142},"Not linked + CLI not authenticated → Install, auth, link, deploy",{"type":38,"tag":46,"props":1144,"children":1145},{},[1146],{"type":43,"value":1147},"The Vercel CLI isn't set up at all.",{"type":38,"tag":589,"props":1149,"children":1150},{},[1151,1189,1228,1246,1354],{"type":38,"tag":433,"props":1152,"children":1153},{},[1154,1159],{"type":38,"tag":52,"props":1155,"children":1156},{},[1157],{"type":43,"value":1158},"Install the CLI (if not already installed):",{"type":38,"tag":77,"props":1160,"children":1162},{"className":79,"code":1161,"language":81,"meta":82,"style":82},"npm install -g vercel\n",[1163],{"type":38,"tag":85,"props":1164,"children":1165},{"__ignoreMap":82},[1166],{"type":38,"tag":89,"props":1167,"children":1168},{"class":91,"line":92},[1169,1174,1179,1184],{"type":38,"tag":89,"props":1170,"children":1171},{"style":106},[1172],{"type":43,"value":1173},"npm",{"type":38,"tag":89,"props":1175,"children":1176},{"style":112},[1177],{"type":43,"value":1178}," install",{"type":38,"tag":89,"props":1180,"children":1181},{"style":112},[1182],{"type":43,"value":1183}," -g",{"type":38,"tag":89,"props":1185,"children":1186},{"style":112},[1187],{"type":43,"value":1188}," vercel\n",{"type":38,"tag":433,"props":1190,"children":1191},{},[1192,1197,1216,1219,1221,1226],{"type":38,"tag":52,"props":1193,"children":1194},{},[1195],{"type":43,"value":1196},"Authenticate:",{"type":38,"tag":77,"props":1198,"children":1200},{"className":79,"code":1199,"language":81,"meta":82,"style":82},"vercel login\n",[1201],{"type":38,"tag":85,"props":1202,"children":1203},{"__ignoreMap":82},[1204],{"type":38,"tag":89,"props":1205,"children":1206},{"class":91,"line":92},[1207,1211],{"type":38,"tag":89,"props":1208,"children":1209},{"style":106},[1210],{"type":43,"value":14},{"type":38,"tag":89,"props":1212,"children":1213},{"style":112},[1214],{"type":43,"value":1215}," login\n",{"type":38,"tag":689,"props":1217,"children":1218},{},[],{"type":43,"value":1220},"The user completes auth in their browser. If running in a non-interactive environment where login is not possible, skip to the ",{"type":38,"tag":52,"props":1222,"children":1223},{},[1224],{"type":43,"value":1225},"no-auth fallback",{"type":43,"value":1227}," below.",{"type":38,"tag":433,"props":1229,"children":1230},{},[1231,1236,1238,1244],{"type":38,"tag":52,"props":1232,"children":1233},{},[1234],{"type":43,"value":1235},"Ask which team to deploy to",{"type":43,"value":1237}," — present team slugs from ",{"type":38,"tag":85,"props":1239,"children":1241},{"className":1240},[],[1242],{"type":43,"value":1243},"vercel teams list --format json",{"type":43,"value":1245}," as a bulleted list. If only one team \u002F personal account, skip. Once selected, proceed immediately.",{"type":38,"tag":433,"props":1247,"children":1248},{},[1249,1254,1256,1261,1263,1268,1270],{"type":38,"tag":52,"props":1250,"children":1251},{},[1252],{"type":43,"value":1253},"Link the project",{"type":43,"value":1255}," with the selected team scope (use ",{"type":38,"tag":85,"props":1257,"children":1259},{"className":1258},[],[1260],{"type":43,"value":1035},{"type":43,"value":1262}," if a git remote exists, plain ",{"type":38,"tag":85,"props":1264,"children":1266},{"className":1265},[],[1267],{"type":43,"value":331},{"type":43,"value":1269}," otherwise):",{"type":38,"tag":77,"props":1271,"children":1273},{"className":79,"code":1272,"language":81,"meta":82,"style":82},"vercel link --repo --scope \u003Cteam-slug>   # if git remote exists\nvercel link --scope \u003Cteam-slug>          # if no git remote\n",[1274],{"type":38,"tag":85,"props":1275,"children":1276},{"__ignoreMap":82},[1277,1318],{"type":38,"tag":89,"props":1278,"children":1279},{"class":91,"line":92},[1280,1284,1288,1292,1296,1300,1304,1308,1313],{"type":38,"tag":89,"props":1281,"children":1282},{"style":106},[1283],{"type":43,"value":14},{"type":38,"tag":89,"props":1285,"children":1286},{"style":112},[1287],{"type":43,"value":982},{"type":38,"tag":89,"props":1289,"children":1290},{"style":112},[1291],{"type":43,"value":987},{"type":38,"tag":89,"props":1293,"children":1294},{"style":112},[1295],{"type":43,"value":992},{"type":38,"tag":89,"props":1297,"children":1298},{"style":128},[1299],{"type":43,"value":865},{"type":38,"tag":89,"props":1301,"children":1302},{"style":112},[1303],{"type":43,"value":1001},{"type":38,"tag":89,"props":1305,"children":1306},{"style":362},[1307],{"type":43,"value":1006},{"type":38,"tag":89,"props":1309,"children":1310},{"style":128},[1311],{"type":43,"value":1312},">",{"type":38,"tag":89,"props":1314,"children":1315},{"style":96},[1316],{"type":43,"value":1317},"   # if git remote exists\n",{"type":38,"tag":89,"props":1319,"children":1320},{"class":91,"line":102},[1321,1325,1329,1333,1337,1341,1345,1349],{"type":38,"tag":89,"props":1322,"children":1323},{"style":106},[1324],{"type":43,"value":14},{"type":38,"tag":89,"props":1326,"children":1327},{"style":112},[1328],{"type":43,"value":982},{"type":38,"tag":89,"props":1330,"children":1331},{"style":112},[1332],{"type":43,"value":992},{"type":38,"tag":89,"props":1334,"children":1335},{"style":128},[1336],{"type":43,"value":865},{"type":38,"tag":89,"props":1338,"children":1339},{"style":112},[1340],{"type":43,"value":1001},{"type":38,"tag":89,"props":1342,"children":1343},{"style":362},[1344],{"type":43,"value":1006},{"type":38,"tag":89,"props":1346,"children":1347},{"style":128},[1348],{"type":43,"value":1312},{"type":38,"tag":89,"props":1350,"children":1351},{"style":96},[1352],{"type":43,"value":1353},"          # if no git remote\n",{"type":38,"tag":433,"props":1355,"children":1356},{},[1357,1362,1364,1370,1371,1376],{"type":38,"tag":52,"props":1358,"children":1359},{},[1360],{"type":43,"value":1361},"Deploy",{"type":43,"value":1363}," using the best available method (git push if remote exists, otherwise ",{"type":38,"tag":85,"props":1365,"children":1367},{"className":1366},[],[1368],{"type":43,"value":1369},"vercel deploy -y --no-wait --scope \u003Cteam-slug>",{"type":43,"value":1125},{"type":38,"tag":85,"props":1372,"children":1374},{"className":1373},[],[1375],{"type":43,"value":1131},{"type":43,"value":1377}," to check status).",{"type":38,"tag":781,"props":1379,"children":1380},{},[],{"type":38,"tag":294,"props":1382,"children":1384},{"id":1383},"no-auth-fallback-claudeai-sandbox",[1385],{"type":43,"value":1386},"No-Auth Fallback — claude.ai sandbox",{"type":38,"tag":46,"props":1388,"children":1389},{},[1390,1395,1397,1402,1404,1409],{"type":38,"tag":52,"props":1391,"children":1392},{},[1393],{"type":43,"value":1394},"When to use:",{"type":43,"value":1396}," Last resort when the CLI can't be installed or authenticated in the claude.ai sandbox. This requires no authentication — it returns a ",{"type":38,"tag":52,"props":1398,"children":1399},{},[1400],{"type":43,"value":1401},"Preview URL",{"type":43,"value":1403}," (live site) and a ",{"type":38,"tag":52,"props":1405,"children":1406},{},[1407],{"type":43,"value":1408},"Claim URL",{"type":43,"value":1410}," (transfer to your Vercel account).",{"type":38,"tag":77,"props":1412,"children":1414},{"className":79,"code":1413,"language":81,"meta":82,"style":82},"bash \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh [path]\n",[1415],{"type":38,"tag":85,"props":1416,"children":1417},{"__ignoreMap":82},[1418],{"type":38,"tag":89,"props":1419,"children":1420},{"class":91,"line":92},[1421,1425,1430],{"type":38,"tag":89,"props":1422,"children":1423},{"style":106},[1424],{"type":43,"value":81},{"type":38,"tag":89,"props":1426,"children":1427},{"style":112},[1428],{"type":43,"value":1429}," \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh",{"type":38,"tag":89,"props":1431,"children":1432},{"style":362},[1433],{"type":43,"value":1434}," [path]\n",{"type":38,"tag":46,"props":1436,"children":1437},{},[1438],{"type":38,"tag":52,"props":1439,"children":1440},{},[1441],{"type":43,"value":1442},"Arguments:",{"type":38,"tag":429,"props":1444,"children":1445},{},[1446],{"type":38,"tag":433,"props":1447,"children":1448},{},[1449,1455,1457,1463],{"type":38,"tag":85,"props":1450,"children":1452},{"className":1451},[],[1453],{"type":43,"value":1454},"path",{"type":43,"value":1456}," - Directory to deploy, or a ",{"type":38,"tag":85,"props":1458,"children":1460},{"className":1459},[],[1461],{"type":43,"value":1462},".tgz",{"type":43,"value":1464}," file (defaults to current directory)",{"type":38,"tag":46,"props":1466,"children":1467},{},[1468],{"type":38,"tag":52,"props":1469,"children":1470},{},[1471],{"type":43,"value":1472},"Examples:",{"type":38,"tag":77,"props":1474,"children":1476},{"className":79,"code":1475,"language":81,"meta":82,"style":82},"# Deploy current directory\nbash \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh\n\n# Deploy specific project\nbash \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh \u002Fpath\u002Fto\u002Fproject\n\n# Deploy existing tarball\nbash \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh \u002Fpath\u002Fto\u002Fproject.tgz\n",[1477],{"type":38,"tag":85,"props":1478,"children":1479},{"__ignoreMap":82},[1480,1488,1500,1507,1515,1531,1538,1546],{"type":38,"tag":89,"props":1481,"children":1482},{"class":91,"line":92},[1483],{"type":38,"tag":89,"props":1484,"children":1485},{"style":96},[1486],{"type":43,"value":1487},"# Deploy current directory\n",{"type":38,"tag":89,"props":1489,"children":1490},{"class":91,"line":102},[1491,1495],{"type":38,"tag":89,"props":1492,"children":1493},{"style":106},[1494],{"type":43,"value":81},{"type":38,"tag":89,"props":1496,"children":1497},{"style":112},[1498],{"type":43,"value":1499}," \u002Fmnt\u002Fskills\u002Fuser\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh\n",{"type":38,"tag":89,"props":1501,"children":1502},{"class":91,"line":139},[1503],{"type":38,"tag":89,"props":1504,"children":1505},{"emptyLinePlaceholder":143},[1506],{"type":43,"value":146},{"type":38,"tag":89,"props":1508,"children":1509},{"class":91,"line":149},[1510],{"type":38,"tag":89,"props":1511,"children":1512},{"style":96},[1513],{"type":43,"value":1514},"# Deploy specific project\n",{"type":38,"tag":89,"props":1516,"children":1517},{"class":91,"line":158},[1518,1522,1526],{"type":38,"tag":89,"props":1519,"children":1520},{"style":106},[1521],{"type":43,"value":81},{"type":38,"tag":89,"props":1523,"children":1524},{"style":112},[1525],{"type":43,"value":1429},{"type":38,"tag":89,"props":1527,"children":1528},{"style":112},[1529],{"type":43,"value":1530}," \u002Fpath\u002Fto\u002Fproject\n",{"type":38,"tag":89,"props":1532,"children":1533},{"class":91,"line":204},[1534],{"type":38,"tag":89,"props":1535,"children":1536},{"emptyLinePlaceholder":143},[1537],{"type":43,"value":146},{"type":38,"tag":89,"props":1539,"children":1540},{"class":91,"line":212},[1541],{"type":38,"tag":89,"props":1542,"children":1543},{"style":96},[1544],{"type":43,"value":1545},"# Deploy existing tarball\n",{"type":38,"tag":89,"props":1547,"children":1548},{"class":91,"line":221},[1549,1553,1557],{"type":38,"tag":89,"props":1550,"children":1551},{"style":106},[1552],{"type":43,"value":81},{"type":38,"tag":89,"props":1554,"children":1555},{"style":112},[1556],{"type":43,"value":1429},{"type":38,"tag":89,"props":1558,"children":1559},{"style":112},[1560],{"type":43,"value":1561}," \u002Fpath\u002Fto\u002Fproject.tgz\n",{"type":38,"tag":46,"props":1563,"children":1564},{},[1565,1567,1573,1575,1581,1582,1588,1589,1595],{"type":43,"value":1566},"The script auto-detects the framework from ",{"type":38,"tag":85,"props":1568,"children":1570},{"className":1569},[],[1571],{"type":43,"value":1572},"package.json",{"type":43,"value":1574},", packages the project (excluding ",{"type":38,"tag":85,"props":1576,"children":1578},{"className":1577},[],[1579],{"type":43,"value":1580},"node_modules",{"type":43,"value":325},{"type":38,"tag":85,"props":1583,"children":1585},{"className":1584},[],[1586],{"type":43,"value":1587},".git",{"type":43,"value":325},{"type":38,"tag":85,"props":1590,"children":1592},{"className":1591},[],[1593],{"type":43,"value":1594},".env",{"type":43,"value":1596},"), uploads it, and waits for the build to complete.",{"type":38,"tag":46,"props":1598,"children":1599},{},[1600,1605,1607,1612,1614,1619],{"type":38,"tag":52,"props":1601,"children":1602},{},[1603],{"type":43,"value":1604},"Tell the user:",{"type":43,"value":1606}," \"Your deployment is ready at ",{"type":38,"tag":89,"props":1608,"children":1609},{},[1610],{"type":43,"value":1611},"previewUrl",{"type":43,"value":1613},". Claim it at ",{"type":38,"tag":89,"props":1615,"children":1616},{},[1617],{"type":43,"value":1618},"claimUrl",{"type":43,"value":1620}," to manage your deployment.\"",{"type":38,"tag":781,"props":1622,"children":1623},{},[],{"type":38,"tag":294,"props":1625,"children":1627},{"id":1626},"no-auth-fallback-codex-sandbox",[1628],{"type":43,"value":1629},"No-Auth Fallback — Codex sandbox",{"type":38,"tag":46,"props":1631,"children":1632},{},[1633,1637],{"type":38,"tag":52,"props":1634,"children":1635},{},[1636],{"type":43,"value":1394},{"type":43,"value":1638}," In the Codex sandbox where the CLI may not be authenticated. Codex runs in a sandboxed environment by default — try the CLI first, and fall back to the deploy script if auth fails.",{"type":38,"tag":589,"props":1640,"children":1641},{},[1642,1677,1715],{"type":38,"tag":433,"props":1643,"children":1644},{},[1645,1650,1652],{"type":38,"tag":52,"props":1646,"children":1647},{},[1648],{"type":43,"value":1649},"Check whether the Vercel CLI is installed",{"type":43,"value":1651}," (no escalation needed for this check):",{"type":38,"tag":77,"props":1653,"children":1655},{"className":79,"code":1654,"language":81,"meta":82,"style":82},"command -v vercel\n",[1656],{"type":38,"tag":85,"props":1657,"children":1658},{"__ignoreMap":82},[1659],{"type":38,"tag":89,"props":1660,"children":1661},{"class":91,"line":92},[1662,1668,1673],{"type":38,"tag":89,"props":1663,"children":1665},{"style":1664},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1666],{"type":43,"value":1667},"command",{"type":38,"tag":89,"props":1669,"children":1670},{"style":112},[1671],{"type":43,"value":1672}," -v",{"type":38,"tag":89,"props":1674,"children":1675},{"style":112},[1676],{"type":43,"value":1188},{"type":38,"tag":433,"props":1678,"children":1679},{},[1680,1692,1694],{"type":38,"tag":52,"props":1681,"children":1682},{},[1683,1685,1690],{"type":43,"value":1684},"If ",{"type":38,"tag":85,"props":1686,"children":1688},{"className":1687},[],[1689],{"type":43,"value":14},{"type":43,"value":1691}," is installed",{"type":43,"value":1693},", try deploying with the CLI:",{"type":38,"tag":77,"props":1695,"children":1696},{"className":79,"code":808,"language":81,"meta":82,"style":82},[1697],{"type":38,"tag":85,"props":1698,"children":1699},{"__ignoreMap":82},[1700],{"type":38,"tag":89,"props":1701,"children":1702},{"class":91,"line":92},[1703,1707,1711],{"type":38,"tag":89,"props":1704,"children":1705},{"style":106},[1706],{"type":43,"value":14},{"type":38,"tag":89,"props":1708,"children":1709},{"style":112},[1710],{"type":43,"value":359},{"type":38,"tag":89,"props":1712,"children":1713},{"style":362},[1714],{"type":43,"value":828},{"type":38,"tag":433,"props":1716,"children":1717},{},[1718,1729,1731],{"type":38,"tag":52,"props":1719,"children":1720},{},[1721,1722,1727],{"type":43,"value":1684},{"type":38,"tag":85,"props":1723,"children":1725},{"className":1724},[],[1726],{"type":43,"value":14},{"type":43,"value":1728}," is not installed, or the CLI fails with \"No existing credentials found\"",{"type":43,"value":1730},", use the fallback script:",{"type":38,"tag":77,"props":1732,"children":1734},{"className":79,"code":1733,"language":81,"meta":82,"style":82},"skill_dir=\"\u003Cpath-to-skill>\"\n\n# Deploy current directory\nbash \"$skill_dir\u002Fresources\u002Fdeploy-codex.sh\"\n\n# Deploy specific project\nbash \"$skill_dir\u002Fresources\u002Fdeploy-codex.sh\" \u002Fpath\u002Fto\u002Fproject\n\n# Deploy existing tarball\nbash \"$skill_dir\u002Fresources\u002Fdeploy-codex.sh\" \u002Fpath\u002Fto\u002Fproject.tgz\n",[1735],{"type":38,"tag":85,"props":1736,"children":1737},{"__ignoreMap":82},[1738,1765,1772,1779,1804,1811,1818,1845,1852,1859],{"type":38,"tag":89,"props":1739,"children":1740},{"class":91,"line":92},[1741,1746,1751,1756,1761],{"type":38,"tag":89,"props":1742,"children":1743},{"style":362},[1744],{"type":43,"value":1745},"skill_dir",{"type":38,"tag":89,"props":1747,"children":1748},{"style":128},[1749],{"type":43,"value":1750},"=",{"type":38,"tag":89,"props":1752,"children":1753},{"style":128},[1754],{"type":43,"value":1755},"\"",{"type":38,"tag":89,"props":1757,"children":1758},{"style":112},[1759],{"type":43,"value":1760},"\u003Cpath-to-skill>",{"type":38,"tag":89,"props":1762,"children":1763},{"style":128},[1764],{"type":43,"value":675},{"type":38,"tag":89,"props":1766,"children":1767},{"class":91,"line":102},[1768],{"type":38,"tag":89,"props":1769,"children":1770},{"emptyLinePlaceholder":143},[1771],{"type":43,"value":146},{"type":38,"tag":89,"props":1773,"children":1774},{"class":91,"line":139},[1775],{"type":38,"tag":89,"props":1776,"children":1777},{"style":96},[1778],{"type":43,"value":1487},{"type":38,"tag":89,"props":1780,"children":1781},{"class":91,"line":149},[1782,1786,1790,1795,1800],{"type":38,"tag":89,"props":1783,"children":1784},{"style":106},[1785],{"type":43,"value":81},{"type":38,"tag":89,"props":1787,"children":1788},{"style":128},[1789],{"type":43,"value":665},{"type":38,"tag":89,"props":1791,"children":1792},{"style":362},[1793],{"type":43,"value":1794},"$skill_dir",{"type":38,"tag":89,"props":1796,"children":1797},{"style":112},[1798],{"type":43,"value":1799},"\u002Fresources\u002Fdeploy-codex.sh",{"type":38,"tag":89,"props":1801,"children":1802},{"style":128},[1803],{"type":43,"value":675},{"type":38,"tag":89,"props":1805,"children":1806},{"class":91,"line":158},[1807],{"type":38,"tag":89,"props":1808,"children":1809},{"emptyLinePlaceholder":143},[1810],{"type":43,"value":146},{"type":38,"tag":89,"props":1812,"children":1813},{"class":91,"line":204},[1814],{"type":38,"tag":89,"props":1815,"children":1816},{"style":96},[1817],{"type":43,"value":1514},{"type":38,"tag":89,"props":1819,"children":1820},{"class":91,"line":212},[1821,1825,1829,1833,1837,1841],{"type":38,"tag":89,"props":1822,"children":1823},{"style":106},[1824],{"type":43,"value":81},{"type":38,"tag":89,"props":1826,"children":1827},{"style":128},[1828],{"type":43,"value":665},{"type":38,"tag":89,"props":1830,"children":1831},{"style":362},[1832],{"type":43,"value":1794},{"type":38,"tag":89,"props":1834,"children":1835},{"style":112},[1836],{"type":43,"value":1799},{"type":38,"tag":89,"props":1838,"children":1839},{"style":128},[1840],{"type":43,"value":1755},{"type":38,"tag":89,"props":1842,"children":1843},{"style":112},[1844],{"type":43,"value":1530},{"type":38,"tag":89,"props":1846,"children":1847},{"class":91,"line":221},[1848],{"type":38,"tag":89,"props":1849,"children":1850},{"emptyLinePlaceholder":143},[1851],{"type":43,"value":146},{"type":38,"tag":89,"props":1853,"children":1854},{"class":91,"line":242},[1855],{"type":38,"tag":89,"props":1856,"children":1857},{"style":96},[1858],{"type":43,"value":1545},{"type":38,"tag":89,"props":1860,"children":1861},{"class":91,"line":250},[1862,1866,1870,1874,1878,1882],{"type":38,"tag":89,"props":1863,"children":1864},{"style":106},[1865],{"type":43,"value":81},{"type":38,"tag":89,"props":1867,"children":1868},{"style":128},[1869],{"type":43,"value":665},{"type":38,"tag":89,"props":1871,"children":1872},{"style":362},[1873],{"type":43,"value":1794},{"type":38,"tag":89,"props":1875,"children":1876},{"style":112},[1877],{"type":43,"value":1799},{"type":38,"tag":89,"props":1879,"children":1880},{"style":128},[1881],{"type":43,"value":1755},{"type":38,"tag":89,"props":1883,"children":1884},{"style":112},[1885],{"type":43,"value":1561},{"type":38,"tag":46,"props":1887,"children":1888},{},[1889,1891,1896,1897,1902],{"type":43,"value":1890},"The script handles framework detection, packaging, and deployment. It waits for the build to complete and returns JSON with ",{"type":38,"tag":85,"props":1892,"children":1894},{"className":1893},[],[1895],{"type":43,"value":1611},{"type":43,"value":457},{"type":38,"tag":85,"props":1898,"children":1900},{"className":1899},[],[1901],{"type":43,"value":1618},{"type":43,"value":464},{"type":38,"tag":46,"props":1904,"children":1905},{},[1906,1910,1911,1915,1916,1920],{"type":38,"tag":52,"props":1907,"children":1908},{},[1909],{"type":43,"value":1604},{"type":43,"value":1606},{"type":38,"tag":89,"props":1912,"children":1913},{},[1914],{"type":43,"value":1611},{"type":43,"value":1613},{"type":38,"tag":89,"props":1917,"children":1918},{},[1919],{"type":43,"value":1618},{"type":43,"value":1620},{"type":38,"tag":46,"props":1922,"children":1923},{},[1924,1929,1931,1937,1939,1944,1946,1952],{"type":38,"tag":52,"props":1925,"children":1926},{},[1927],{"type":43,"value":1928},"Escalated network access:",{"type":43,"value":1930}," Only escalate the actual deploy command if sandboxing blocks the network call (",{"type":38,"tag":85,"props":1932,"children":1934},{"className":1933},[],[1935],{"type":43,"value":1936},"sandbox_permissions=require_escalated",{"type":43,"value":1938},"). Do ",{"type":38,"tag":52,"props":1940,"children":1941},{},[1942],{"type":43,"value":1943},"not",{"type":43,"value":1945}," escalate the ",{"type":38,"tag":85,"props":1947,"children":1949},{"className":1948},[],[1950],{"type":43,"value":1951},"command -v vercel",{"type":43,"value":1953}," check.",{"type":38,"tag":781,"props":1955,"children":1956},{},[],{"type":38,"tag":65,"props":1958,"children":1960},{"id":1959},"agent-specific-notes",[1961],{"type":43,"value":1962},"Agent-Specific Notes",{"type":38,"tag":294,"props":1964,"children":1966},{"id":1965},"claude-code-terminal-based-agents",[1967],{"type":43,"value":1968},"Claude Code \u002F terminal-based agents",{"type":38,"tag":46,"props":1970,"children":1971},{},[1972,1974,1980],{"type":43,"value":1973},"You have full shell access. Do NOT use the ",{"type":38,"tag":85,"props":1975,"children":1977},{"className":1976},[],[1978],{"type":43,"value":1979},"\u002Fmnt\u002Fskills\u002F",{"type":43,"value":1981}," path. Follow the decision flow above using the CLI directly.",{"type":38,"tag":46,"props":1983,"children":1984},{},[1985],{"type":43,"value":1986},"For the no-auth fallback, run the deploy script from the skill's installed location:",{"type":38,"tag":77,"props":1988,"children":1990},{"className":79,"code":1989,"language":81,"meta":82,"style":82},"bash ~\u002F.claude\u002Fskills\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh [path]\n",[1991],{"type":38,"tag":85,"props":1992,"children":1993},{"__ignoreMap":82},[1994],{"type":38,"tag":89,"props":1995,"children":1996},{"class":91,"line":92},[1997,2001,2006],{"type":38,"tag":89,"props":1998,"children":1999},{"style":106},[2000],{"type":43,"value":81},{"type":38,"tag":89,"props":2002,"children":2003},{"style":112},[2004],{"type":43,"value":2005}," ~\u002F.claude\u002Fskills\u002Fdeploy-to-vercel\u002Fresources\u002Fdeploy.sh",{"type":38,"tag":89,"props":2007,"children":2008},{"style":362},[2009],{"type":43,"value":1434},{"type":38,"tag":46,"props":2011,"children":2012},{},[2013],{"type":43,"value":2014},"The path may vary depending on where the user installed the skill.",{"type":38,"tag":294,"props":2016,"children":2018},{"id":2017},"sandboxed-environments-claudeai",[2019],{"type":43,"value":2020},"Sandboxed environments (claude.ai)",{"type":38,"tag":46,"props":2022,"children":2023},{},[2024,2026,2032,2033,2039,2041,2046],{"type":43,"value":2025},"You likely cannot run ",{"type":38,"tag":85,"props":2027,"children":2029},{"className":2028},[],[2030],{"type":43,"value":2031},"vercel login",{"type":43,"value":393},{"type":38,"tag":85,"props":2034,"children":2036},{"className":2035},[],[2037],{"type":43,"value":2038},"git push",{"type":43,"value":2040},". Go directly to the ",{"type":38,"tag":52,"props":2042,"children":2043},{},[2044],{"type":43,"value":2045},"no-auth fallback — claude.ai sandbox",{"type":43,"value":464},{"type":38,"tag":294,"props":2048,"children":2050},{"id":2049},"codex",[2051],{"type":43,"value":2052},"Codex",{"type":38,"tag":46,"props":2054,"children":2055},{},[2056,2058,2063],{"type":43,"value":2057},"Codex runs in a sandbox. Check if the CLI is available first, then fall back to the deploy script. Go to the ",{"type":38,"tag":52,"props":2059,"children":2060},{},[2061],{"type":43,"value":2062},"no-auth fallback — Codex sandbox",{"type":43,"value":464},{"type":38,"tag":781,"props":2065,"children":2066},{},[],{"type":38,"tag":65,"props":2068,"children":2070},{"id":2069},"output",[2071],{"type":43,"value":2072},"Output",{"type":38,"tag":46,"props":2074,"children":2075},{},[2076],{"type":43,"value":2077},"Always show the user the deployment URL.",{"type":38,"tag":429,"props":2079,"children":2080},{},[2081,2099,2124],{"type":38,"tag":433,"props":2082,"children":2083},{},[2084,2089,2091,2097],{"type":38,"tag":52,"props":2085,"children":2086},{},[2087],{"type":43,"value":2088},"Git push:",{"type":43,"value":2090}," Use ",{"type":38,"tag":85,"props":2092,"children":2094},{"className":2093},[],[2095],{"type":43,"value":2096},"vercel ls --format json",{"type":43,"value":2098}," to find the preview URL. If the CLI isn't authenticated, tell the user to check the Vercel dashboard or commit status checks.",{"type":38,"tag":433,"props":2100,"children":2101},{},[2102,2107,2109,2115,2117,2122],{"type":38,"tag":52,"props":2103,"children":2104},{},[2105],{"type":43,"value":2106},"CLI deploy:",{"type":43,"value":2108}," Show the URL returned by ",{"type":38,"tag":85,"props":2110,"children":2112},{"className":2111},[],[2113],{"type":43,"value":2114},"vercel deploy --no-wait",{"type":43,"value":2116},". Use ",{"type":38,"tag":85,"props":2118,"children":2120},{"className":2119},[],[2121],{"type":43,"value":1131},{"type":43,"value":2123}," to check build status and report it to the user.",{"type":38,"tag":433,"props":2125,"children":2126},{},[2127,2132,2134],{"type":38,"tag":52,"props":2128,"children":2129},{},[2130],{"type":43,"value":2131},"No-auth fallback:",{"type":43,"value":2133}," Show both the preview URL and the claim URL:\n",{"type":38,"tag":77,"props":2135,"children":2138},{"className":2136,"code":2137,"language":43},[605],"Deployment successful!\n\nPreview URL: https:\u002F\u002Fmy-app-abc123.vercel.app\nClaim URL:   https:\u002F\u002Fvercel.com\u002Fclaim-deployment?code=...\n\nView your site at the Preview URL.\nTo transfer this deployment to your Vercel account, visit the Claim URL.\n",[2139],{"type":38,"tag":85,"props":2140,"children":2141},{"__ignoreMap":82},[2142],{"type":43,"value":2137},{"type":38,"tag":46,"props":2144,"children":2145},{},[2146,2151],{"type":38,"tag":52,"props":2147,"children":2148},{},[2149],{"type":43,"value":2150},"Do not",{"type":43,"value":2152}," curl or fetch the deployed URL to verify it works. Just return the link.",{"type":38,"tag":781,"props":2154,"children":2155},{},[],{"type":38,"tag":65,"props":2157,"children":2159},{"id":2158},"troubleshooting",[2160],{"type":43,"value":2161},"Troubleshooting",{"type":38,"tag":294,"props":2163,"children":2165},{"id":2164},"network-egress-error-claudeai",[2166],{"type":43,"value":2167},"Network Egress Error (claude.ai)",{"type":38,"tag":46,"props":2169,"children":2170},{},[2171],{"type":43,"value":2172},"If deployment fails due to network restrictions on claude.ai, tell the user:",{"type":38,"tag":77,"props":2174,"children":2177},{"className":2175,"code":2176,"language":43},[605],"Deployment failed due to network restrictions. To fix this:\n\n1. Go to https:\u002F\u002Fclaude.ai\u002Fsettings\u002Fcapabilities\n2. Add *.vercel.com to the allowed domains\n3. Try deploying again\n",[2178],{"type":38,"tag":85,"props":2179,"children":2180},{"__ignoreMap":82},[2181],{"type":43,"value":2176},{"type":38,"tag":294,"props":2183,"children":2185},{"id":2184},"escalated-network-access-codex-sandboxed-environments",[2186],{"type":43,"value":2187},"Escalated Network Access (Codex \u002F sandboxed environments)",{"type":38,"tag":46,"props":2189,"children":2190},{},[2191,2193,2198],{"type":43,"value":2192},"If deployment fails due to network issues (timeouts, DNS errors, connection resets) in a sandboxed environment, rerun with escalated permissions (",{"type":38,"tag":85,"props":2194,"children":2196},{"className":2195},[],[2197],{"type":43,"value":1936},{"type":43,"value":2199},"). Do not escalate the initial CLI availability check — only escalate the actual deploy command.",{"type":38,"tag":46,"props":2201,"children":2202},{},[2203],{"type":43,"value":2204},"Example guidance to the user:",{"type":38,"tag":77,"props":2206,"children":2209},{"className":2207,"code":2208,"language":43},[605],"The deploy needs escalated network access to deploy to Vercel. I can rerun\nthe command with escalated permissions — want me to proceed?\n",[2210],{"type":38,"tag":85,"props":2211,"children":2212},{"__ignoreMap":82},[2213],{"type":43,"value":2208},{"type":38,"tag":294,"props":2215,"children":2217},{"id":2216},"cli-auth-failure",[2218],{"type":43,"value":2219},"CLI Auth Failure",{"type":38,"tag":46,"props":2221,"children":2222},{},[2223,2224,2229,2230,2235],{"type":43,"value":1684},{"type":38,"tag":85,"props":2225,"children":2227},{"className":2226},[],[2228],{"type":43,"value":2031},{"type":43,"value":393},{"type":38,"tag":85,"props":2231,"children":2233},{"className":2232},[],[2234],{"type":43,"value":323},{"type":43,"value":2236}," fails with authentication errors, fall back to the no-auth deploy script (claude.ai or Codex variant, depending on the environment).",{"type":38,"tag":2238,"props":2239,"children":2240},"style",{},[2241],{"type":43,"value":2242},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2244,"total":242},[2245,2250,2262,2281,2296,2309,2326],{"slug":4,"name":4,"fn":5,"description":6,"org":2246,"tags":2247,"stars":19,"repoUrl":20,"updatedAt":21},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2248,2249],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":2251,"name":2251,"fn":2252,"description":2253,"org":2254,"tags":2255,"stars":19,"repoUrl":20,"updatedAt":2261},"vercel-cli-with-tokens","manage Vercel projects via CLI","Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. \"deploy to vercel\", \"set up vercel\", \"add environment variables to vercel\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2256,2259,2260],{"name":2257,"slug":2258,"type":15},"CLI","cli",{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},"2026-07-17T06:08:41.84179",{"slug":2263,"name":2263,"fn":2264,"description":2265,"org":2266,"tags":2267,"stars":19,"repoUrl":20,"updatedAt":2280},"vercel-composition-patterns","implement scalable React composition patterns","React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2268,2271,2274,2277],{"name":2269,"slug":2270,"type":15},"Best Practices","best-practices",{"name":2272,"slug":2273,"type":15},"Frontend","frontend",{"name":2275,"slug":2276,"type":15},"React","react",{"name":2278,"slug":2279,"type":15},"UI Components","ui-components","2026-07-17T06:05:40.576913",{"slug":2282,"name":2282,"fn":2283,"description":2284,"org":2285,"tags":2286,"stars":19,"repoUrl":20,"updatedAt":2295},"vercel-optimize","optimize Vercel project performance and costs","Use for Vercel cost and performance optimization on deployed projects, especially Next.js, SvelteKit, Nuxt, and limited Astro apps. Collect Vercel metrics, usage, project config, and code scan results first; investigate only metric-backed candidates; produce ranked recommendations grounded in verified files and version-aware Vercel\u002Fframework docs. Trigger for Vercel bill reduction, slow or expensive routes, caching opportunities, Function Invocations, Build Minutes, Fast Data Transfer, Core Web Vitals, Bot Management, Fluid compute, or cost breakdown requests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2287,2290,2291,2294],{"name":2288,"slug":2289,"type":15},"Cost Optimization","cost-optimization",{"name":17,"slug":18,"type":15},{"name":2292,"slug":2293,"type":15},"Performance","performance",{"name":13,"slug":14,"type":15},"2026-07-17T06:04:08.327515",{"slug":2297,"name":2297,"fn":2298,"description":2299,"org":2300,"tags":2301,"stars":19,"repoUrl":20,"updatedAt":2308},"vercel-react-best-practices","optimize React and Next.js performance","React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React\u002FNext.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2302,2303,2306,2307],{"name":2272,"slug":2273,"type":15},{"name":2304,"slug":2305,"type":15},"Next.js","next-js",{"name":2292,"slug":2293,"type":15},{"name":2275,"slug":2276,"type":15},"2026-07-17T06:08:41.518893",{"slug":2310,"name":2310,"fn":2311,"description":2312,"org":2313,"tags":2314,"stars":19,"repoUrl":20,"updatedAt":2325},"vercel-react-native-skills","build performant React Native mobile apps","React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2315,2318,2321,2322],{"name":2316,"slug":2317,"type":15},"Expo","expo",{"name":2319,"slug":2320,"type":15},"Mobile","mobile",{"name":2292,"slug":2293,"type":15},{"name":2323,"slug":2324,"type":15},"React Native","react-native","2026-07-17T06:04:08.681158",{"slug":2327,"name":2327,"fn":2328,"description":2329,"org":2330,"tags":2331,"stars":19,"repoUrl":20,"updatedAt":2337},"vercel-react-view-transitions","implement React View Transitions","Guide for implementing smooth, native-feeling animations using React's View Transition API (`\u003CViewTransition>` component, `addTransitionType`, and CSS view transition pseudo-elements). Use this skill whenever the user wants to add page transitions, animate route changes, create shared element animations, animate enter\u002Fexit of components, animate list reorder, implement directional (forward\u002Fback) navigation animations, or integrate view transitions in Next.js. Also use when the user mentions view transitions, `startViewTransition`, `ViewTransition`, transition types, or asks about animating between UI states in React without third-party animation libraries.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2332,2335,2336],{"name":2333,"slug":2334,"type":15},"Animation","animation",{"name":2272,"slug":2273,"type":15},{"name":2275,"slug":2276,"type":15},"2026-07-26T05:48:25.346984",{"items":2339,"total":2475},[2340,2358,2370,2382,2397,2414,2426,2439,2450,2455,2461,2468],{"slug":2341,"name":2341,"fn":2342,"description":2343,"org":2344,"tags":2345,"stars":2355,"repoUrl":2356,"updatedAt":2357},"agent-browser","automate browser interactions for AI agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to \"open a website\", \"fill out a form\", \"click a button\", \"take a screenshot\", \"scrape data from a page\", \"test this web app\", \"login to a site\", \"automate browser actions\", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2346,2349,2352],{"name":2347,"slug":2348,"type":15},"Agents","agents",{"name":2350,"slug":2351,"type":15},"Automation","automation",{"name":2353,"slug":2354,"type":15},"Browser Automation","browser-automation",38346,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-browser","2026-07-20T05:55:17.314329",{"slug":2359,"name":2359,"fn":2360,"description":2361,"org":2362,"tags":2363,"stars":2355,"repoUrl":2356,"updatedAt":2369},"agentcore","run browser automation on AWS Bedrock","Run agent-browser on AWS Bedrock AgentCore cloud browsers. Use when the user wants to use AgentCore, run browser automation on AWS, use a cloud browser with AWS credentials, or needs a managed browser session backed by AWS infrastructure. Triggers include \"use agentcore\", \"run on AWS\", \"cloud browser with AWS\", \"bedrock browser\", \"agentcore session\", or any task requiring AWS-hosted browser automation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2364,2365,2368],{"name":2350,"slug":2351,"type":15},{"name":2366,"slug":2367,"type":15},"AWS","aws",{"name":2353,"slug":2354,"type":15},"2026-07-17T06:08:33.665276",{"slug":2371,"name":2371,"fn":2372,"description":2373,"org":2374,"tags":2375,"stars":2355,"repoUrl":2356,"updatedAt":2381},"core","navigate and interact with web pages","Core agent-browser usage guide. Read this before running any agent-browser commands. Covers the snapshot-and-ref workflow, navigating pages, interacting with elements (click, fill, type, select), extracting text and data, taking screenshots, managing tabs, handling forms and auth, waiting for content, running multiple browser sessions in parallel, and troubleshooting common failures. Use when the user asks to interact with a website, fill a form, click something, extract data, take a screenshot, log into a site, test a web app, or automate any browser task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2376,2377,2378],{"name":2347,"slug":2348,"type":15},{"name":2353,"slug":2354,"type":15},{"name":2379,"slug":2380,"type":15},"Navigation","navigation","2026-07-26T05:47:42.378419",{"slug":2383,"name":2383,"fn":2384,"description":2385,"org":2386,"tags":2387,"stars":2355,"repoUrl":2356,"updatedAt":2396},"derive-client","reverse engineer internal APIs from browser traffic","Reverse-engineer a website's internal API by recording browser traffic into a HAR file, then generate a standalone client or CLI that calls the endpoints directly, with no browser needed after the first recording. Use when asked to \"derive a client\", \"build a CLI for \u003Csite>\", \"reverse engineer this site's API\", \"record network requests\", \"turn this site into an API\", or when the same site will be automated repeatedly and direct HTTP calls would beat driving the browser every time.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2388,2391,2392,2393],{"name":2389,"slug":2390,"type":15},"API Development","api-development",{"name":2350,"slug":2351,"type":15},{"name":2353,"slug":2354,"type":15},{"name":2394,"slug":2395,"type":15},"Web Scraping","web-scraping","2026-07-20T06:24:11.928835",{"slug":2398,"name":2398,"fn":2399,"description":2400,"org":2401,"tags":2402,"stars":2355,"repoUrl":2356,"updatedAt":2413},"dogfood","perform exploratory testing on web applications","Systematically explore and test a web application to find bugs, UX issues, and other problems. Use when asked to \"dogfood\", \"QA\", \"exploratory test\", \"find issues\", \"bug hunt\", \"test this app\u002Fsite\u002Fplatform\", or review the quality of a web application. Produces a structured report with full reproduction evidence -- step-by-step screenshots, repro videos, and detailed repro steps for every issue -- so findings can be handed directly to the responsible teams.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2403,2404,2407,2410],{"name":2353,"slug":2354,"type":15},{"name":2405,"slug":2406,"type":15},"Debugging","debugging",{"name":2408,"slug":2409,"type":15},"QA","qa",{"name":2411,"slug":2412,"type":15},"Testing","testing","2026-07-17T06:07:41.421482",{"slug":2415,"name":2415,"fn":2416,"description":2417,"org":2418,"tags":2419,"stars":2355,"repoUrl":2356,"updatedAt":2425},"electron","automate Electron desktop applications","Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include \"automate Slack app\", \"control VS Code\", \"interact with Discord app\", \"test this Electron app\", \"connect to desktop app\", or any task requiring automation of a native Electron application.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2420,2421,2422],{"name":2347,"slug":2348,"type":15},{"name":2353,"slug":2354,"type":15},{"name":2423,"slug":2424,"type":15},"Desktop","desktop","2026-07-17T06:08:28.007783",{"slug":2427,"name":2427,"fn":2428,"description":2429,"org":2430,"tags":2431,"stars":2355,"repoUrl":2356,"updatedAt":2438},"slack","interact with Slack workspaces","Interact with Slack workspaces using browser automation. Use when the user needs to check unread channels, navigate Slack, send messages, extract data, find information, search conversations, or automate any Slack task. Triggers include \"check my Slack\", \"what channels have unreads\", \"send a message to\", \"search Slack for\", \"extract from Slack\", \"find who said\", or any task requiring programmatic Slack interaction.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2432,2433,2436],{"name":2353,"slug":2354,"type":15},{"name":2434,"slug":2435,"type":15},"Messaging","messaging",{"name":2437,"slug":2427,"type":15},"Slack","2026-07-17T06:08:27.679015",{"slug":2440,"name":2440,"fn":2441,"description":2442,"org":2443,"tags":2444,"stars":2355,"repoUrl":2356,"updatedAt":2449},"vercel-sandbox","run browser automation in Vercel Sandbox","Run agent-browser + Chrome inside Vercel Sandbox microVMs for browser automation from any Vercel-deployed app. Use when the user needs browser automation in a Vercel app (Next.js, SvelteKit, Nuxt, Remix, Astro, etc.), wants to run headless Chrome without binary size limits, needs persistent browser sessions across commands, or wants ephemeral isolated browser environments. Triggers include \"Vercel Sandbox browser\", \"microVM Chrome\", \"agent-browser in sandbox\", \"browser automation on Vercel\", or any task requiring Chrome in a Vercel Sandbox.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2445,2446,2447,2448],{"name":2350,"slug":2351,"type":15},{"name":2353,"slug":2354,"type":15},{"name":2411,"slug":2412,"type":15},{"name":13,"slug":14,"type":15},"2026-07-17T06:08:28.349899",{"slug":4,"name":4,"fn":5,"description":6,"org":2451,"tags":2452,"stars":19,"repoUrl":20,"updatedAt":21},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2453,2454],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":2251,"name":2251,"fn":2252,"description":2253,"org":2456,"tags":2457,"stars":19,"repoUrl":20,"updatedAt":2261},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2458,2459,2460],{"name":2257,"slug":2258,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":2263,"name":2263,"fn":2264,"description":2265,"org":2462,"tags":2463,"stars":19,"repoUrl":20,"updatedAt":2280},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2464,2465,2466,2467],{"name":2269,"slug":2270,"type":15},{"name":2272,"slug":2273,"type":15},{"name":2275,"slug":2276,"type":15},{"name":2278,"slug":2279,"type":15},{"slug":2282,"name":2282,"fn":2283,"description":2284,"org":2469,"tags":2470,"stars":19,"repoUrl":20,"updatedAt":2295},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2471,2472,2473,2474],{"name":2288,"slug":2289,"type":15},{"name":17,"slug":18,"type":15},{"name":2292,"slug":2293,"type":15},{"name":13,"slug":14,"type":15},100]