Generate a deliverable landing-page HTML file (NOT a screenshot artifact). 1440px design width, mobile-responsive (CSS-only, no JS). Sections: hero (full-viewport) + 3 feature blocks + CTA. Designed to be opened in a browser, iterated on, and deployed as-is. Reads ./design/<brand-slug>/DESIGN.md, tokens.css, and components.html. Triggers include "landing page for X", "marketing page", "product landing", "/landing-page".
Produces a deliverable landing-page HTML file at 1440px design width, fully responsive (CSS-only, no JavaScript). This is NOT a screenshot-target artifact like the platform skills — it's a real page meant to be opened in a browser, iterated on, and (eventually) deployed. There is no .canvas div. The page IS the page.
The anti-pattern rules apply with extra force here. Landing pages are the format where AI-default templates are most obvious: centered hero with template "[Big Word] [Subheading] [Button]", icon-grid features with circles, blue CTA buttons. This skill exists to NOT produce that.
When to use
User is launching a product, service, project, or initiative and needs a landing page
A DESIGN.md exists for the brand
Inputs
Required: brand slug, page topic / thing being launched, hero claim (sentence-case ending in period)
Required: 3 feature points (each: short name + 2-sentence description)
Required: CTA text + destination (e.g. "Read the documentation" → URL)
Optional: logo / brand mark variant, footer details, supporting hero copy
1. Page topic — what is this landing page for? (1 sentence)
2. Hero claim — the dominant headline, sentence-case ending in period (max ~14 words)
3. Optional supporting hero copy — 1-2 sentence dek
4. Three feature points:
a. <name>: <2-sentence description>
b. <name>: <2-sentence description>
c. <name>: <2-sentence description>
5. CTA text + destination URL (e.g. "Read the documentation" → /docs)
6. Footer details — copyright line, secondary links (about, contact, GitHub, etc.)
3. Pick variation — HERO archetype is the lever
The hero section carries the page's identity. Pick ONE:
headline-led — display headline dominates; everything else subordinated. Most editorial.
inverse-text — full hero in dark inversion (canonical v2 feature treatment). Reads as confident.
object-of-content — the hero looks like a fragment of the actual product (a screenshot-style mock, a transcript, a code excerpt). The page sells the thing by SHOWING it.
pattern-led — typographic pattern fills hero; headline is the punctum. Risky for landing pages — may confuse first-time visitors. Use only if the brand has earned it.
chrome-led — eyebrow + headline + dek + CTA-row — the AI-editorial default. Last resort. If you reach for this, ask why.
Feature blocks always use a CONSISTENT layout (3-column grid OR vertical stack) — the variation lever is on the hero only. Feature blocks don't get cards-with-icons-in-circles.
CTA section uses the brand's accent color ONLY on the action — never on a button background. The CTA is a .btn-arrow (text + arrow), not a filled button.
Page renders at 1440px AND at 375px (mobile) without horizontal scroll
Hero archetype documented — NOT chrome-led unless explicitly justified
Feature blocks have NO icons-in-circles, NO cards-with-shadows, NO centered-template layouts — just numbered text blocks
CTA is .btn-arrow (text link with arrow) — NOT a filled blue button
.accent color used on AT MOST one word in the hero headline
Read ../../design-anti-patterns.md and verify the page violates none of its rules. Pay special attention to sections 1 (no orbs, no gradients, no isometric illustrations, no stock photo cliches), 2 (no italics-emphasis OR single-word color emphasis as default), 4 (architecture must reach inner blocks; no center-aligned hero with template), and 6 (no marketing-phrase clichés — "single pane of glass", "digital transformation", "next-generation")
No animation on scroll (no fade-ins, no parallax, no slide-up)
All copy is sentence-case ending in period per brand voice
No exclamation points anywhere
Landing page generated at ./design/<brand-slug>/artifacts/landing-page-YYYY-MM-DD-<slug>.html.
Hero archetype: <picked>. Open in a browser at 1440px AND 375px to verify responsive behavior. Iterate by editing the file directly — there is no canvas to screenshot.
To deploy: drop the file on any static host (GitHub Pages, Netlify, Vercel). It works as-is.
Anti-Slop Rules
Governed by three shared canonical references — read them, do not restate them:
../../design-anti-patterns.md — the hard floor. Wins every conflict.
../../design-principles.md — the craft floor (typographic hierarchy, spatial rhythm, color theory, layout logic, visual tension).
../../design-variation-sop.md — the named-aesthetic roster + the procedure for varying every invocation.
Forbidden (fast scan — the references hold the full list):
Indigo/violet/purple as default accent or primary — the hsl(230–280) family on a near-white surface. The single loudest AI tell.
Glassmorphism without an explicit AA-contrast scrim; floating gradient "blobs" as atmosphere.
The three-up icon-card feature grid; the "hero → 3 cards → CTA" median skeleton.
One global border-radius on every element; timid evenly-weighted low-contrast palette.
Inter / Roboto / Arial / Open Sans / Lato / Helvetica / system as the primary family (Space Grotesk = yellow flag). Use a category-matched stack from the variation roster.
Value-free CTAs ("Get Started", "Learn More", "Sign Up"); the two-CTA hero. Name the real action and its value.
Required variation (every invocation):
Make at least two intentional decisions that differ from the safe defaults (palette, layout structure, typographic voice, or spatial density) AND from the most recent artifact in this brand.
Never default to "clean / minimal / modern" — that is the absence of a direction (variation-sop Rule 1).
Sketch three distinct directions, offer them as a one-line menu, generate the best-fit by default, all three only if asked (variation-sop Rule 3).
Authenticity: prefer specific over generic everywhere — real datelines (not "today"), the brand's actual voice (not "build the future" filler), concrete CTAs over placeholders.
Rules
Deliverable HTML, not a screenshot artifact. No .canvas div. The page IS the deliverable.
CSS-only responsive. No JavaScript for layout. The page works with JS disabled.
Hero archetype must NOT default to chrome-led. That's the AI-editorial template — pick a different archetype unless the brand specifically requires it.
Feature blocks have no icons. Numbered text blocks only. Icons-in-circles are the SaaS-template tell this skill exists to avoid.
CTA is text + arrow. No filled buttons. The brand uses .btn-arrow; this skill respects that.
Token-pure. Every visual value via var(--*) from tokens.css. Only literal values: 1px for hairlines.
Anti-pattern compliance. This skill defers to three shared canonical references: ../../design-anti-patterns.md (the hard floor — wins every conflict), ../../design-principles.md (the craft floor), and ../../design-variation-sop.md (direction roster + offer-3 procedure). The anti-patterns file is the canonical anti-tell list. Landing pages are the highest-risk format for AI-default tells; verify carefully.
1---2name: design-landing-page3description: Generate a deliverable landing-page HTML file (NOT a screenshot artifact). 1440px design width, mobile-responsive (CSS-only, no JS). Sections: hero (full-viewport) + 3 feature blocks + CTA. Designed to be opened in a browser, iterated on, and deployed as-is. Reads ./design/<brand-slug>/DESIGN.md, tokens.css, and components.html. Triggers include "landing page for X", "marketing page", "product landing", "/landing-page".4---56# Skill: landing-page78Produces a deliverable landing-page HTML file at 1440px design width, fully responsive (CSS-only, no JavaScript). This is **NOT** a screenshot-target artifact like the platform skills — it's a real page meant to be opened in a browser, iterated on, and (eventually) deployed. There is no `.canvas` div. The page IS the page.910The anti-pattern rules apply with extra force here. Landing pages are the format where AI-default templates are most obvious: centered hero with template "[Big Word] [Subheading] [Button]", icon-grid features with circles, blue CTA buttons. This skill exists to NOT produce that.1112## When to use1314- User is launching a product, service, project, or initiative and needs a landing page15- A `DESIGN.md` exists for the brand1617## Inputs1819- **Required:** brand slug, page topic / thing being launched, hero claim (sentence-case ending in period)20- **Required:** 3 feature points (each: short name + 2-sentence description)21- **Required:** CTA text + destination (e.g. "Read the documentation" → URL)22- **Optional:** logo / brand mark variant, footer details, supporting hero copy2324## Output2526`./design/<brand-slug>/artifacts/landing-page-YYYY-MM-DD-<slug>.html`2728## Steps2930### 1. Verify brand exists3132```bash33test -f ./design/<brand-slug>/tokens.css34```3536### 2. Gather the brief3738Ask in one message:3940```411. Page topic — what is this landing page for? (1 sentence)422. Hero claim — the dominant headline, sentence-case ending in period (max ~14 words)433. Optional supporting hero copy — 1-2 sentence dek444. Three feature points:45 a. <name>: <2-sentence description>46 b. <name>: <2-sentence description>47 c. <name>: <2-sentence description>485. CTA text + destination URL (e.g. "Read the documentation" → /docs)496. Footer details — copyright line, secondary links (about, contact, GitHub, etc.)50```5152### 3. Pick variation — HERO archetype is the lever5354The hero section carries the page's identity. Pick ONE:5556- `headline-led` — display headline dominates; everything else subordinated. Most editorial.57- `inverse-text` — full hero in dark inversion (canonical v2 feature treatment). Reads as confident.58- `object-of-content` — the hero looks like a fragment of the actual product (a screenshot-style mock, a transcript, a code excerpt). The page sells the thing by SHOWING it.59- `pattern-led` — typographic pattern fills hero; headline is the punctum. Risky for landing pages — may confuse first-time visitors. Use only if the brand has earned it.60- `chrome-led` — eyebrow + headline + dek + CTA-row — the AI-editorial default. **Last resort.** If you reach for this, ask why.6162Feature blocks always use a CONSISTENT layout (3-column grid OR vertical stack) — the variation lever is on the hero only. Feature blocks don't get cards-with-icons-in-circles.6364CTA section uses the brand's accent color ONLY on the action — never on a button background. The CTA is a `.btn-arrow` (text + arrow), not a filled button.6566### 4. Generate the HTML6768Template:6970```html71<!DOCTYPE html>72<html lang="en">73<head>74<meta charset="utf-8">75<meta name="viewport" content="width=device-width, initial-scale=1">76<title><Page topic></title>77<meta name="description" content="<dek or summary>">78<link rel="preconnect" href="https://fonts.googleapis.com">79<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>80<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=<families>&display=swap">81<style>82/* Embed tokens.css verbatim */83<contents of tokens.css>8485* { box-sizing: border-box; }86html, body { margin: 0; }87body {88 background: var(--color-surface);89 color: var(--color-ink);90 font-family: var(--type-sans-family);91 font-size: 17px;92 line-height: 1.65;93 font-feature-settings: 'ss01', 'cv11', 'kern';94}9596/* Layout container — 1180px max width, 24px gutter, mobile responsive */97.container {98 max-width: 1180px;99 margin: 0 auto;100 padding: 0 24px;101}102103/* === Site header === */104.site-header { padding: 24px 0; }105.site-header__bar { display: flex; justify-content: space-between; align-items: baseline; }106.wordmark { font-family: var(--type-display-family); font-weight: 600; font-size: 22px; letter-spacing: -0.005em; color: var(--color-ink); }107108/* === Hero — per chosen archetype === */109.hero {110 padding: 96px 0 144px;111 /* If `inverse-text` archetype: */112 /* background: var(--color-ink); color: var(--color-surface); margin-top: -24px; padding-top: 120px; */113}114.hero h1 {115 font-family: var(--type-display-family);116 font-weight: 400;117 font-size: clamp(48px, 9vw, 120px);118 line-height: 1.0;119 letter-spacing: -0.02em;120 margin: 0;121 max-width: 18ch;122}123.hero h1 .accent { color: var(--color-accent); }124.hero .dek {125 font-size: 19px;126 line-height: 1.55;127 color: var(--color-ink-soft);128 max-width: 56ch;129 margin: 32px 0 48px;130}131132/* === Feature blocks — consistent grid, NO icons-in-circles === */133.features {134 padding: 96px 0;135 border-top: 1px solid var(--color-rule);136}137.features__head { margin-bottom: 64px; }138.features__head h2 {139 font-family: var(--type-display-family);140 font-weight: 500;141 font-size: clamp(36px, 5vw, 56px);142 line-height: 1.1;143 letter-spacing: -0.015em;144 margin: 0;145 max-width: 28ch;146}147.features__grid {148 display: grid;149 grid-template-columns: repeat(3, 1fr);150 gap: 48px;151}152.feature {153 /* No card. No icon. No circle. Just a numbered text block. */154}155.feature__num {156 font-family: var(--type-mono-family);157 font-size: 12px; letter-spacing: 0.06em;158 color: var(--color-ink-3);159 margin-bottom: 16px;160}161.feature__num .pos { color: var(--color-ink); }162.feature h3 {163 font-family: var(--type-display-family);164 font-weight: 500;165 font-size: 24px;166 line-height: 1.3;167 letter-spacing: -0.012em;168 margin: 0 0 12px;169}170.feature p {171 font-size: 16px;172 line-height: 1.55;173 color: var(--color-ink-soft);174 margin: 0;175}176177/* === CTA === */178.cta {179 padding: 96px 0 144px;180 border-top: 1px solid var(--color-rule);181}182.cta h2 {183 font-family: var(--type-display-family);184 font-weight: 400;185 font-size: clamp(36px, 6vw, 64px);186 line-height: 1.1;187 letter-spacing: -0.018em;188 margin: 0 0 32px;189 max-width: 24ch;190}191.btn-arrow {192 display: inline; font-size: 19px; color: var(--color-ink);193 text-decoration: underline; text-decoration-color: var(--color-rule); text-decoration-thickness: 1px;194 text-underline-offset: 5px;195}196.btn-arrow::after { content: ' →'; font-family: var(--type-mono-family); font-size: 0.85em; }197.btn-arrow:hover { text-decoration-color: var(--color-ink); }198.btn-arrow--accent { color: var(--color-accent); text-decoration-color: var(--color-accent-hover); }199200/* === Footer === */201.site-foot {202 padding: 48px 0;203 border-top: 1px solid var(--color-rule);204 display: flex;205 justify-content: space-between;206 align-items: baseline;207 font-family: var(--type-mono-family);208 font-size: 12px;209 letter-spacing: 0.06em;210 color: var(--color-ink-3);211}212.site-foot .pos { color: var(--color-ink); }213214/* === Responsive — mobile-first override === */215@media (max-width: 720px) {216 .container { padding: 0 20px; }217 .hero { padding: 64px 0 96px; }218 .features__grid { grid-template-columns: 1fr; gap: 48px; }219 .features { padding: 64px 0; }220 .cta { padding: 64px 0 96px; }221}222</style>223</head>224<body>225226<header class="site-header">227 <div class="container site-header__bar">228 <span class="wordmark">[brand wordmark]</span>229 <nav><!-- optional inline links: about, docs, contact --></nav>230 </div>231</header>232233<main>234 <!-- === HERO === -->235 <section class="hero">236 <div class="container">237 <h1>[hero claim, with optional <span class="accent">[one word]</span> in accent]</h1>238 <p class="dek">[supporting dek — 1-2 sentences]</p>239 <a class="btn-arrow btn-arrow--accent" href="[CTA destination]">[primary CTA text]</a>240 </div>241 </section>242243 <!-- === FEATURES === -->244 <section class="features">245 <div class="container">246 <div class="features__head">247 <h2>[features section headline — sentence-case ending in period]</h2>248 </div>249 <div class="features__grid">250 <div class="feature">251 <p class="feature__num"><span class="pos">01</span> · [feature short label]</p>252 <h3>[feature 1 name]</h3>253 <p>[feature 1 description]</p>254 </div>255 <div class="feature">256 <p class="feature__num"><span class="pos">02</span> · [feature short label]</p>257 <h3>[feature 2 name]</h3>258 <p>[feature 2 description]</p>259 </div>260 <div class="feature">261 <p class="feature__num"><span class="pos">03</span> · [feature short label]</p>262 <h3>[feature 3 name]</h3>263 <p>[feature 3 description]</p>264 </div>265 </div>266 </div>267 </section>268269 <!-- === CTA === -->270 <section class="cta">271 <div class="container">272 <h2>[secondary CTA framing — invitation, sentence-case ending in period]</h2>273 <a class="btn-arrow btn-arrow--accent" href="[CTA destination]">[primary CTA text]</a>274 </div>275 </section>276</main>277278<footer class="site-foot">279 <div class="container site-foot__inner" style="display: flex; justify-content: space-between; align-items: baseline;">280 <span>[copyright line]</span>281 <span><span class="pos">[brand handle]</span> · [secondary link]</span>282 </div>283</footer>284285</body>286</html>287```288289### 5. Verify290291- [ ] Page renders at 1440px AND at 375px (mobile) without horizontal scroll292- [ ] Hero archetype documented — NOT `chrome-led` unless explicitly justified293- [ ] Feature blocks have NO icons-in-circles, NO cards-with-shadows, NO centered-template layouts — just numbered text blocks294- [ ] CTA is `.btn-arrow` (text link with arrow) — NOT a filled blue button295- [ ] `.accent` color used on AT MOST one word in the hero headline296- [ ] **Read `../../design-anti-patterns.md` and verify the page violates none of its rules.** Pay special attention to sections 1 (no orbs, no gradients, no isometric illustrations, no stock photo cliches), 2 (no italics-emphasis OR single-word color emphasis as default), 4 (architecture must reach inner blocks; no center-aligned hero with template), and 6 (no marketing-phrase clichés — "single pane of glass", "digital transformation", "next-generation")297- [ ] No animation on scroll (no fade-ins, no parallax, no slide-up)298- [ ] All copy is sentence-case ending in period per brand voice299- [ ] No exclamation points anywhere300301> Landing page generated at `./design/<brand-slug>/artifacts/landing-page-YYYY-MM-DD-<slug>.html`.302>303> Hero archetype: `<picked>`. Open in a browser at 1440px AND 375px to verify responsive behavior. Iterate by editing the file directly — there is no canvas to screenshot.304>305> To deploy: drop the file on any static host (GitHub Pages, Netlify, Vercel). It works as-is.306307## Anti-Slop Rules308309Governed by three shared canonical references — read them, do not restate them:310311- **`../../design-anti-patterns.md`** — the hard floor. Wins every conflict.312- **`../../design-principles.md`** — the craft floor (typographic hierarchy, spatial rhythm, color theory, layout logic, visual tension).313- **`../../design-variation-sop.md`** — the named-aesthetic roster + the procedure for varying every invocation.314315**Forbidden (fast scan — the references hold the full list):**316317- Indigo/violet/purple as default accent or primary — the `hsl(230–280)` family on a near-white surface. The single loudest AI tell.318- Purple→blue / "aurora" / gradient-mesh backgrounds; gradient-fill text.319- Glassmorphism without an explicit AA-contrast scrim; floating gradient "blobs" as atmosphere.320- The three-up icon-card feature grid; the "hero → 3 cards → CTA" median skeleton.321- One global border-radius on every element; timid evenly-weighted low-contrast palette.322- Inter / Roboto / Arial / Open Sans / Lato / Helvetica / system as the primary family (Space Grotesk = yellow flag). Use a category-matched stack from the variation roster.323- Value-free CTAs ("Get Started", "Learn More", "Sign Up"); the two-CTA hero. Name the real action and its value.324325**Required variation (every invocation):**326327- Make at least **two** intentional decisions that differ from the safe defaults (palette, layout structure, typographic voice, or spatial density) AND from the most recent artifact in this brand.328- Never default to "clean / minimal / modern" — that is the absence of a direction (variation-sop Rule 1).329- Sketch **three distinct directions**, offer them as a one-line menu, generate the best-fit by default, all three only if asked (variation-sop Rule 3).330331**Authenticity:** prefer specific over generic everywhere — real datelines (not "today"), the brand's actual voice (not "build the future" filler), concrete CTAs over placeholders.332333## Rules334335- **Deliverable HTML, not a screenshot artifact.** No `.canvas` div. The page IS the deliverable.336- **CSS-only responsive.** No JavaScript for layout. The page works with JS disabled.337- **Hero archetype must NOT default to `chrome-led`.** That's the AI-editorial template — pick a different archetype unless the brand specifically requires it.338- **Feature blocks have no icons.** Numbered text blocks only. Icons-in-circles are the SaaS-template tell this skill exists to avoid.339- **CTA is text + arrow.** No filled buttons. The brand uses `.btn-arrow`; this skill respects that.340- **Token-pure.** Every visual value via `var(--*)` from tokens.css. Only literal values: `1px` for hairlines.341- **Anti-pattern compliance.** This skill defers to three shared canonical references: `../../design-anti-patterns.md` (the hard floor — wins every conflict), `../../design-principles.md` (the craft floor), and `../../design-variation-sop.md` (direction roster + offer-3 procedure). The anti-patterns file is the canonical anti-tell list. Landing pages are the highest-risk format for AI-default tells; verify carefully.
Run npx skillmds@latest add slogsdon/design-landing-page in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Generate a deliverable landing-page HTML file (NOT a screenshot artifact). 1440px design width, mobile-responsive (CSS-only, no JS). Sections: hero (full-viewport) + 3 feature blocks + CTA. Designed to be opened in a browser, iterated on, and deployed as-is. Reads ./design/<brand-slug>/DESIGN.md, tokens.css, and components.html. Triggers include "landing page for X", "marketing page", "product landing", "/landing-page". It is listed under Marketing & Growth on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
slogsdon (@slogsdon) published this skill. Their other Agent Skills are listed on their SkillMD profile.