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:
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:
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 <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
.htmlfiles are found; warns if multiple exist without anindex.html - Renames a single non-
index.htmlfile automatically - Packages the directory into a
.tgzand 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
curlavailable? - Is the directory path correct?
- Is
index.htmlpresent? - Is the payload under the size limit?