# Vercel Deploy

> Deploy any static site directory to Vercel instantly — no authentication required. Use this skill whenever the user wants to deploy, host, publish, or put live any static website, HTML project, or directory containing an index.html. Triggers on "deploy this to Vercel," "put this live," "host this site," "publish this page," "deploy this directory," "I want to see this online," or any request to make a local static site accessible via a public URL. Works with single HTML files, multi-file projects (HTML + CSS + JS), and asset-heavy directories (images, fonts, frames). Returns a live preview URL and a claim URL to transfer ownership.

- Skill: `cyranob/vercel-deploy` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add cyranob/vercel-deploy`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cyranob/vercel-deploy/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: cyranob (https://skillmd.com/u/cyranob)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cyranob/vercel-deploy

---


# Vercel Deploy

Deploy any static site directory to Vercel using claimable deployments. No authentication, no config, no build step — just point at a directory and get a live URL.

## When to use

After generating a static site with any other skill (landing-page-builder, scroll-sequence, or manually), run this to put it live. Also useful when the user has an existing static site directory they want to host.

## Workflow

### 1. Identify the directory

The user provides a path to a directory containing static files. If they don't specify one, look for the most recently generated project (e.g., `/tmp/landing-page/`, or whatever the upstream skill produced).

The directory must contain an `index.html` at the root. If there's a single `.html` file with a different name, the deploy script will rename it automatically.

### 2. Check size

The Vercel deploy endpoint has upload limits. Before deploying, check the total size:

```bash
du -sh <directory>
```

- **Under 4.5MB** (compressed): Deploy directly — this is the Vercel function payload limit
- **Over 4.5MB**: Reduce asset sizes before deploying

For scroll-sequence sites, the 1920px/25fps extraction often exceeds this limit. To fit, re-extract frames at lower resolution and fps:
```bash
ffmpeg -y -i video.mp4 -vf "fps=12,scale=960:-1" -c:v libwebp -quality 65 frames/frame_%04d.webp
```
Then update `FRAME_COUNT` in `js/app.js` to match the new count. A typical 8-second video at 960px/12fps produces ~96 frames at ~2MB compressed — well within limits.

### 3. Deploy

Run the deploy script:

```bash
bash <skill-path>/scripts/deploy.sh <directory-or-tgz>
```

The input can be a directory or a pre-built `.tgz` file. When given a directory, the script packages it automatically (excluding `node_modules` and `.git`).

The script:
- Errors if no `.html` files are found; warns if multiple exist without an `index.html`
- Renames a single non-`index.html` file automatically
- Packages the directory into a `.tgz` and POSTs it to Vercel's claimable deploy endpoint
- Returns JSON with `previewUrl`, `claimUrl`, `deploymentId`, `projectId`

### 4. Present results

Tell the user:

- **Preview URL**: The live site — share this anywhere
- **Claim URL**: Transfer ownership to their Vercel account (optional, expires after 7 days)

If the deploy fails, check:
- Is `curl` available?
- Is the directory path correct?
- Is `index.html` present?
- Is the payload under the size limit?

