AGENT SKILLBY SHIPSHITDEV
Landing page (Vercel)
AT A GLANCE
Landing page (Vercel) is a CRO skill for AI agents. Scaffolds a production-ready static landing page with working email capture form, analytics, and responsive design. It is published by shipshitdev in the shipshitdev/skills GitHub repository (35 stars), which does not specify a license. Install it with: npx skills add shipshitdev/skills --skill landing-page-vercel
- SOURCE REPOSITORY
- shipshitdev/skills (opens GitHub in a new tab)
- REPO STARS
- SOURCE REPOSITORY
- LICENSE
- Not specifiedCHECK THE REPO
- CATEGORIES
- SKILL.MD SIZE
- 11.4 KB425 LINES
QUICK ANSWER
- WHAT IT IS01
- Scaffolds a production-ready static landing page with working email capture form, analytics, and responsive design. The value is a focused slice of conversion optimization judgment, useful when several similar skills cover the same ground.
- INPUTS02
- Context for conversion optimization: your goals, audience, constraints, and any source material the skill asks for.
- OUTPUT03
- A ready-to-use result for conversion optimization: the analysis, copy, or recommendations the agent produces.
INSTALL
One command adds this skill from its source repository.
npx skills add shipshitdev/skills --skill landing-page-vercelREAD THE SKILL.MD BELOW BEFORE YOU RUN IT. SKILLS INSTRUCT YOUR AGENT.
SKILL.MD
The full file, as published in the source repository. Copy it, download it or open it on GitHub.
ON THIS PAGE · 24
Landing Page (Vercel)#
Create a static landing page with:
Contract#
Inputs:
- Product name, tagline, audience, offer, and CTA
- Destination directory
- Form provider and analytics preference
Outputs:
- Static landing page files
- Form/analytics setup notes
- Deployment instructions
Creates/Modifies:
- Local landing page files and Vercel config
- Does not deploy production unless explicitly requested
External Side Effects:
- None during scaffolding
- May deploy to Vercel only after explicit deploy request
Confirmation Required:
- Before using external form/analytics identifiers
- Before running Vercel deploy commands
- Before overwriting an existing landing page directory
Delegates To:
-
project-init-orchestrator/npx @shipshitdev/v0for full Shipshit.dev product repos -
frontend-designfor custom visual design -
deployment-composerordeployfor deployment -
Structure: Semantic HTML5 + Modern CSS + Vanilla JS
-
Form: Working email capture (Formspree or custom endpoint)
-
Analytics: Plausible/Fathom ready
-
Design: Responsive, accessible, performant
-
Deploy: One-click Vercel deployment
What Makes This Different#
This skill generates working landing pages, not empty templates:
- Real email capture form that actually submits
- Analytics integration ready to activate
- Responsive design tested on mobile
- Accessibility basics (WCAG 2.1 AA)
- Content from your PRD brief
Workflow#
Phase 1: PRD Brief Intake#
Ask the user for product details, then extract and confirm: product name, tagline, hero headline/subheadline/CTA, 3-5 features with descriptions, CTA type (Waitlist/Sign Up/Demo Request/Contact), and social proof preference (Testimonials/Logos/Stats/None). See references/full-guide.md (§ PRD Brief Intake Template) for the confirmation message format.
Phase 2: Content Generation#
Generate complete landing page content across these sections:
- Hero - Headline, subheadline, CTA button, optional hero image
- Features - 3-5 feature cards with icons
- How It Works - 3-step process (optional)
- Social Proof - Testimonials or logos (optional)
- FAQ - 4-6 common questions (optional)
- CTA - Final call to action with form
- Footer - Links, copyright, social icons
Phase 3: Form Integration#
Choose an email capture option:
- Formspree (Recommended - Free tier) - no backend needed, instant setup, email notifications
- Custom Endpoint - your own API, full control, requires backend
- Waitlist Service - Waitlist.email, Loops.so, ConvertKit
Phase 4: Quality Verification#
Verify before handoff:
- HTML validates (W3C)
- Responsive on mobile
- Form submits successfully
- Analytics placeholders present
- Lighthouse score 90+
Usage#
# Create landing page with PRD
python3 scripts/scaffold.py \
--out ./my-landing-page \
--name "ProductName" \
--tagline "Your compelling value proposition" \
--features "Feature1,Feature2,Feature3"
# Interactive mode
python3 scripts/scaffold.py --out ./my-landing-page --interactiveGenerates index.html, styles.css, script.js, data.json, vercel.json, and an assets/ directory. See references/full-guide.md (§ Generated Structure) for the full file tree.
Key Patterns#
Form submission handles loading/success/error states via fetch against the form's action URL; content lives in data.json (hero, features, faq) so copy edits never touch markup. See references/full-guide.md (§ Form Handling (JavaScript), § Data Structure (data.json)) for the full implementations.
Form Integration Guide#
Formspree (Recommended): create a free account at formspree.io (opens in a new tab), create a form, and replace YOUR_FORM_ID in the HTML with the generated form ID.
Custom Endpoint: post { email } as JSON to a self-hosted API and handle the response. See references/full-guide.md (§ Option 2: Custom Endpoint) for the full snippet.
Analytics Setup#
Add one script tag to the page head: Plausible (data-domain + plausible.io/js/script.js) for privacy-friendly analytics, or Fathom (cdn.usefathom.com/script.js + data-site). See references/full-guide.md (§ Analytics Setup) for both tags.
Deployment#
cd my-landing-page
bunx vercel # Deploy (no global install needed)
bunx vercel --prod # Production deployvercel.json maps all static assets through @vercel/static, routes everything to index.html, and sets baseline security headers (X-Content-Type-Options, X-Frame-Options, X-XSS-Protection). See references/full-guide.md (§ Vercel Configuration (vercel.json)) for the full config.
CSS Variables#
Theme tokens (--color-primary, --color-bg, --font-sans, --spacing-*, --max-width) drive the whole stylesheet — see references/full-guide.md (§ CSS Variables) for the full :root block.
Accessibility Checklist#
- Semantic HTML structure
- Proper heading hierarchy (h1 → h2 → h3)
- Alt text for images
- Focus states for interactive elements
- Color contrast ratio 4.5:1 minimum
- Form labels and error messages
- Skip link for keyboard navigation
- Responsive text sizing (no fixed px for body text)
Performance Checklist#
- No external CSS frameworks
- Minimal JavaScript
- Optimized images (WebP with fallback)
- System fonts (no web font loading)
- Lazy loading for below-fold images
- Preconnect for external resources
References#
scripts/scaffold.py- Generation script (templates are inline)references/full-guide.md- Full PRD template, generated file tree, form/analytics/deploy config dumps, and CSS variable set
Supporting file: plugin.json#
{ "name": "landing-page-vercel", "version": "1.0.1", "description": "Scaffold a production-ready static landing page with working email capture form, analytics, and resp", "author": { "name": "Ship Shit Dev", "email": "hello@shipshit.dev", "url": "https://shipshit.dev (opens in a new tab)" }, "license": "MIT", "skills": "." }
Supporting file: references/full-guide.md#
Landing Page (Vercel) — Full Guide#
Full templates, config dumps, and integration snippets for the landing-page-vercel skill. See SKILL.md for the Contract, workflow phases, and quality checklists.
PRD Brief Intake Template#
I'll help you create a landing page. Based on your description:
**Product:** [Name]
**Tagline:** [One-line value proposition]
**Hero Section:**
- Headline: [Main headline]
- Subheadline: [Supporting text]
- CTA: [Button text]
**Features:** (3-5)
1. [Feature 1]: [Description]
2. [Feature 2]: [Description]
3. [Feature 3]: [Description]
**CTA Type:** [Waitlist / Sign Up / Demo Request / Contact]
**Social Proof:** [Testimonials / Logos / Stats / None]
Is this correct? Any adjustments?Generated Structure#
my-landing-page/
├── index.html # Main landing page
├── styles.css # All styles (no framework)
├── script.js # Form handling + interactions
├── data.json # Content data (easy to edit)
├── vercel.json # Vercel configuration
├── assets/
│ ├── favicon.ico
│ └── og-image.png # Social sharing image
└── README.md # Deployment instructionsForm Handling (JavaScript)#
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('signup-form');
const button = form.querySelector('button[type="submit"]');
const messageEl = document.getElementById('form-message');
form.addEventListener('submit', async (e) => {
e.preventDefault();
const originalText = button.textContent;
try {
button.textContent = 'Submitting...';
button.disabled = true;
const response = await fetch(form.action, {
method: 'POST',
body: new FormData(form),
headers: { 'Accept': 'application/json' }
});
if (response.ok) {
// Hide form and show success message
form.style.display = 'none';
messageEl.textContent = 'Thanks! We will be in touch.';
messageEl.classList.add('success');
} else {
throw new Error('Form submission failed');
}
} catch (error) {
button.textContent = originalText;
button.disabled = false;
messageEl.textContent = 'Something went wrong. Please try again.';
messageEl.classList.add('error');
}
});
});Data Structure (data.json)#
{
"name": "ProductName",
"tagline": "Your compelling value proposition",
"hero": {
"headline": "Build something amazing",
"subheadline": "The easiest way to create, launch, and grow your product.",
"cta": "Join the Waitlist"
},
"features": [
{
"icon": "zap",
"title": "Lightning Fast",
"description": "Built for speed from the ground up."
},
{
"icon": "shield",
"title": "Secure by Default",
"description": "Enterprise-grade security included."
},
{
"icon": "sparkles",
"title": "AI-Powered",
"description": "Smart features that learn from you."
}
],
"faq": [
{
"question": "When will you launch?",
"answer": "We're aiming for Q1 2026. Join the waitlist to be first to know."
}
]
}Form Integration Guide#
Option 1: Formspree (Recommended)#
- Go to formspree.io (opens in a new tab)
- Create a free account
- Create a new form
- Copy your form ID
- Replace
YOUR_FORM_IDin the HTML
Option 2: Custom Endpoint#
// In script.js, update the form action
const API_URL = 'https://your-api.com/api/waitlist';
form.addEventListener('submit', async (e) => {
e.preventDefault();
const email = form.querySelector('input[name="email"]').value;
const response = await fetch(API_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email })
});
// Handle response...
});Analytics Setup#
Plausible (Privacy-friendly)#
<!-- Add to head section -->
<script defer data-domain="yourdomain.com" src="https://plausible.io/js/script.js"></script>Fathom#
<!-- Add to head section -->
<script src="https://cdn.usefathom.com/script.js" data-site="YOUR_SITE_ID" defer></script>Deployment#
Vercel (One-click)#
cd my-landing-page
bunx vercel # Deploy (no global install needed)
bunx vercel --prod # Production deployVercel Configuration (vercel.json)#
{
"version": 2,
"builds": [
{ "src": "*.html", "use": "@vercel/static" },
{ "src": "*.css", "use": "@vercel/static" },
{ "src": "*.js", "use": "@vercel/static" },
{ "src": "assets/**", "use": "@vercel/static" }
],
"routes": [
{ "src": "/(.*)", "dest": "/index.html" }
],
"headers": [
{
"source": "/(.*)",
"headers": [
{ "key": "X-Content-Type-Options", "value": "nosniff" },
{ "key": "X-Frame-Options", "value": "DENY" },
{ "key": "X-XSS-Protection", "value": "1; mode=block" }
]
}
]
}CSS Variables#
:root {
--color-primary: #3b82f6;
--color-primary-dark: #2563eb;
--color-bg: #0f172a;
--color-bg-secondary: #1e293b;
--color-text: #f8fafc;
--color-text-muted: #94a3b8;
--font-sans: system-ui, -apple-system, sans-serif;
--max-width: 1200px;
--spacing-sm: 0.5rem;
--spacing-md: 1rem;
--spacing-lg: 2rem;
--spacing-xl: 4rem;
}FAQ
07 QUESTIONS
01What is the Landing page (Vercel) agent skill?
Scaffolds a production-ready static landing page with working email capture form, analytics, and responsive design. It is listed under CRO in the 100xLab agent skills directory.
02How do I install Landing page (Vercel) in Cursor, Claude Code, or Codex?
Run npx skills add shipshitdev/skills --skill landing-page-vercel in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only Landing page (Vercel), not every skill in the repository.
03What does the Landing page (Vercel) SKILL.md cover?
The SKILL.md includes sections on Contract, What Makes This Different, Workflow, Phase 1: PRD Brief Intake, Phase 2: Content Generation and Phase 3: Form Integration. Read the full text on this page or in plain markdown at /resources/agent-skills/shipshitdev-skills--landing-page-vercel--1a3458g/raw.
04Which agents can use Landing page (Vercel)?
Landing page (Vercel) installs with the cross-agent skills installer (npx skills add), which sets it up for agents such as Claude Code, Cursor and Codex. Each agent loads the SKILL.md when you ask for the skill by name.
05What license is Landing page (Vercel) under?
No license was detected on the shipshitdev/skills repository, so the license is not specified. Check with shipshitdev before you redistribute or build on the skill.
06Is Landing page (Vercel) free to use?
Reading and installing Landing page (Vercel) costs nothing, because it is published in a public GitHub repository. The repository specifies no license, so ask shipshitdev before you reuse or redistribute it.
07Where is the source of Landing page (Vercel)?
Landing page (Vercel) comes from https://github.com/shipshitdev/skills, which has 35 GitHub stars. The SKILL.md is at https://github.com/shipshitdev/skills/blob/HEAD/skills/landing-page-vercel/SKILL.md. The author is shipshitdev.
Need an agent workflow built around your stack?
Tell us the workflow you want automated. We reply within 4 working hours (IST).
ATTRIBUTION
Landing page (Vercel) was written by its original authors and is published in shipshitdev/skills (opens GitHub in a new tab) under no license stated in the repository. All rights stay with the original authors.
100xLab did not write, maintain or endorse this skill. This page lists it for discovery. Repo stars belong to the source repository, not to the skill. Review any skill before you install it.