Landing Page Experiment
Generate a working three-variant landing-page A/B test with routing logic and an analytics dashboard.
When to trigger this skill
The user wants any of:
- "Build a landing page for [product] and test three messaging angles"
- "Stand up a waitlist with an A/B test"
- "Three variants of [page] with different value props"
- "Landing page experiment for [audience]"
Do NOT trigger this skill when:
- The user just wants copy, no code (use
components/04-launch/* instead)
- The user wants a single landing page with no variants (this skill always builds three)
- The user wants a multi-page funnel (this skill is single-page only)
Inputs you need
Required:
- Product description (one paragraph)
- Target customer (the persona, ideally from
skills/user-persona/)
- Three messaging angles to test (e.g. "time saved," "outcomes delivered," "peace of mind")
Strongly recommended (ask if missing):
- Brand color (hex)
- Pricing tiers (or "waitlist only, no pricing yet")
- Three to five feature bullets, the same across all variants
Workflow
1. Confirm the matchup
Restate the three messaging angles in your own words and ask for confirmation before generating. Variants are easier to interpret if the angles are genuinely distinct, not three flavors of the same idea.
2. Generate the three variants
For each variant (A, B, C):
- Read
template/variant.html and copy it to ~/landing-experiment/<slug>/variant-{a,b,c}.html.
- Replace placeholders:
{{HEADLINE}}, {{SUBHEAD}}, {{FEATURE_N}}, {{CTA_TEXT}}, {{ACCENT_COLOR}}.
- Hold these constant across all three variants: pricing tiers, feature bullets, layout, CTA text, page structure.
- Vary only: headline, subheadline, the order or framing of feature bullets, any hero quote.
3. Wire the router
Copy scripts/router.js to ~/landing-experiment/<slug>/router.js. No edits needed unless the user wants different routes. Default behavior:
- First visit to root (
/): randomly assigns the visitor to variant A, B, or C and sets a cookie that lasts 30 days
- Subsequent visits: the visitor sees the same variant they were assigned to
- Direct links (
/variant-a, /variant-b, /variant-c): override the random assignment for testing or for channel-specific traffic
- Tracking parameter
?v=a appears in every variant's URL after the redirect
4. Generate the admin dashboard
Copy template/admin.html to ~/landing-experiment/<slug>/admin.html. It uses localStorage tracking by default (easy to swap to Plausible / PostHog / Google Analytics later).
The dashboard shows per variant:
- Unique views
- CTA conversions
- Click-through rate
- Average time on page
- A description of what's different about this variant
- A link to the live variant
- CSV export of the raw data
5. QA check
Before reporting done, verify:
- All three variants share identical pricing, feature bullets, and CTA text
- Router cookie persists across page reloads
- Each variant URL includes the tracking parameter
- The admin page is password-gated (placeholder password — the user replaces it)
- Mobile responsive at 375px width
If any of these fail, fix before delivering.
6. Present
Tell the user:
- Where the files live
- That they need at least 100 visitors per variant (300 total) before drawing conclusions
- That they should persist the variant via cookie so the same visitor doesn't see the page switch on them (already wired in
router.js)
- That they should swap localStorage tracking for a real analytics tool before going live
Variant generation rules
Pulled from the Escape Velocity Prompt Library; these are what make the test interpretable.
Vary across variants:
- Primary value prop (time savings vs quality vs outcomes)
- Audience language (technical vs business vs emotional)
- Emotional vs rational appeal
- Headline framing (painpoint-led vs end-state-led vs cost-of-inaction-led)
Hold constant across variants:
- Pricing
- The features listed
- Visual layout and structure
- CTA text (varying this confuses the read)
- Page length
1---2name: landing-page-experiment3description: Build a complete A/B test of three landing-page messaging variants. Generates three HTML variants, the cookie-based router that randomly assigns visitors and respects direct links, and a simple admin dashboard tracking views, conversions, CTR, and time on page. Use when the user wants to validate messaging before building the product, says "build me a landing page," "test 3 variants," "stand up a waitlist with an A/B test," or similar.4---56# Landing Page Experiment78Generate a working three-variant landing-page A/B test with routing logic and an analytics dashboard.910## When to trigger this skill1112The user wants any of:1314- "Build a landing page for [product] and test three messaging angles"15- "Stand up a waitlist with an A/B test"16- "Three variants of [page] with different value props"17- "Landing page experiment for [audience]"1819Do NOT trigger this skill when:2021- The user just wants copy, no code (use `components/04-launch/*` instead)22- The user wants a single landing page with no variants (this skill always builds three)23- The user wants a multi-page funnel (this skill is single-page only)2425## Inputs you need2627**Required:**28- Product description (one paragraph)29- Target customer (the persona, ideally from `skills/user-persona/`)30- Three messaging angles to test (e.g. "time saved," "outcomes delivered," "peace of mind")3132**Strongly recommended (ask if missing):**33- Brand color (hex)34- Pricing tiers (or "waitlist only, no pricing yet")35- Three to five feature bullets, the same across all variants3637## Workflow3839### 1. Confirm the matchup4041Restate the three messaging angles in your own words and ask for confirmation before generating. Variants are easier to interpret if the angles are genuinely distinct, not three flavors of the same idea.4243### 2. Generate the three variants4445For each variant (A, B, C):4647- Read `template/variant.html` and copy it to `~/landing-experiment/<slug>/variant-{a,b,c}.html`.48- Replace placeholders: `{{HEADLINE}}`, `{{SUBHEAD}}`, `{{FEATURE_N}}`, `{{CTA_TEXT}}`, `{{ACCENT_COLOR}}`.49- **Hold these constant across all three variants:** pricing tiers, feature bullets, layout, CTA text, page structure.50- **Vary only:** headline, subheadline, the order or framing of feature bullets, any hero quote.5152### 3. Wire the router5354Copy `scripts/router.js` to `~/landing-experiment/<slug>/router.js`. No edits needed unless the user wants different routes. Default behavior:5556- First visit to root (`/`): randomly assigns the visitor to variant A, B, or C and sets a cookie that lasts 30 days57- Subsequent visits: the visitor sees the same variant they were assigned to58- Direct links (`/variant-a`, `/variant-b`, `/variant-c`): override the random assignment for testing or for channel-specific traffic59- Tracking parameter `?v=a` appears in every variant's URL after the redirect6061### 4. Generate the admin dashboard6263Copy `template/admin.html` to `~/landing-experiment/<slug>/admin.html`. It uses localStorage tracking by default (easy to swap to Plausible / PostHog / Google Analytics later).6465The dashboard shows per variant:6667- Unique views68- CTA conversions69- Click-through rate70- Average time on page71- A description of what's different about this variant72- A link to the live variant73- CSV export of the raw data7475### 5. QA check7677Before reporting done, verify:7879- All three variants share identical pricing, feature bullets, and CTA text80- Router cookie persists across page reloads81- Each variant URL includes the tracking parameter82- The admin page is password-gated (placeholder password — the user replaces it)83- Mobile responsive at 375px width8485If any of these fail, fix before delivering.8687### 6. Present8889Tell the user:9091- Where the files live92- That they need at least 100 visitors per variant (300 total) before drawing conclusions93- That they should persist the variant via cookie so the same visitor doesn't see the page switch on them (already wired in `router.js`)94- That they should swap localStorage tracking for a real analytics tool before going live9596## Variant generation rules9798Pulled from the Escape Velocity Prompt Library; these are what make the test interpretable.99100**Vary across variants:**101- Primary value prop (time savings vs quality vs outcomes)102- Audience language (technical vs business vs emotional)103- Emotional vs rational appeal104- Headline framing (painpoint-led vs end-state-led vs cost-of-inaction-led)105106**Hold constant across variants:**107- Pricing108- The features listed109- Visual layout and structure110- CTA text (varying this confuses the read)111- Page length