Landing Page Architect
Build high-converting, psychologically-optimized landing pages as
single-file, production-ready HTML with embedded CSS and minimal JS.
Prioritize conversion rate above aesthetics, clarity above cleverness.
Phase 0 — Gather Context (before writing any code)
Ask the user for the following if not already provided. Collect all answers in
one shot; do not ask one question at a time.
| # |
Question |
Why it matters |
| 1 |
What is the product / service / offer? |
Core value proposition |
| 2 |
Who is the primary audience? Pain points? |
Empathy copy, language match |
| 3 |
What is the ONE action the visitor must take? |
CTA design |
| 4 |
What proof exists? (testimonials, metrics, logos, case studies) |
Social proof sections |
| 5 |
Is there a real deadline, limited seats, or limited stock? |
Urgency triggers |
| 6 |
What is the price point / offer structure? |
Anchor pricing, value stack |
| 7 |
Any brand colors, fonts, or tone guidelines? |
Design system seed |
| 8 |
Which analytics/tracking pixels are needed? (GA4, GTM, Meta Pixel) |
Tag placement |
| 9 |
Where does the form submit? (webhook URL, email, CRM) |
Form action |
If the user says "just build it" or provides a brief, infer reasonable defaults
and state assumptions clearly at the top of your response.
Phase 1 — Strategy Brief (output before writing code)
Before the first line of HTML, output a compact brief:
STRATEGY BRIEF
──────────────
Audience : [who they are + core pain]
Promise : [headline value proposition in one sentence]
Primary CTA : [exact button label + action]
Urgency lever : [real scarcity or manufactured? which type?]
Proof type : [testimonials / numbers / logos / case study]
Tone : [e.g. authoritative, empathetic, urgent, playful]
Design anchor : [color palette seed + font pairing decision]
Phase 2 — Page Architecture
Build sections in this exact order. Never skip sections; collapse into minimal
variants if content is unavailable.
1. HERO
- Headline: Outcome-focused, ≤ 10 words. Speak the transformation, not the
tool. Use the user's own language.
- Subheadline: One sentence expanding the promise. Address the primary pain.
- Primary CTA button: High-contrast, action verb + benefit
(e.g. "Start My Free Trial", "Get Instant Access").
- Trust micro-copy directly below CTA: e.g. "No credit card required · Cancel
anytime · 2,400+ customers"
- Hero visual: Describe what image/illustration to use; output a placeholder
<div> with alt text and aspect-ratio if no image URL is provided.
2. PROBLEM AWARENESS
- 3 short paragraphs or a 3-column icon grid.
- Mirror the user's internal monologue. Use "You know that feeling when…"
structure.
- End with a pivot sentence: "There's a better way."
3. SOLUTION BRIDGE
- One-paragraph narrative: product as the bridge from pain → outcome.
- Avoid feature lists here; focus on the transformation.
4. BENEFITS (Outcome-focused)
- 4–6 bullets. Format: Bold outcome — supporting detail sentence.
- Lead with the most emotionally resonant benefit.
- No feature names; translate every feature into a user result.
5. SOCIAL PROOF — Block A
- 3 testimonials minimum. Each must contain:
- Verbatim quote (or placeholder in
[BRACKETS])
- Name, title, company (real or placeholder)
- Star rating (⭐⭐⭐⭐⭐ or SVG stars)
- Optional avatar placeholder
- Position immediately after benefits to validate the promise just made.
6. HOW IT WORKS
- Exactly 3 steps. Numbered. Icon + title + one-sentence description.
- Use active verbs: "Connect", "Configure", "Launch" — not "Step 1: …"
- Optional: animated progress indicator (CSS-only).
7. OFFER DETAILS / VALUE STACK
- List everything included. Use ✓ checkmarks.
- Show total perceived value with strikethrough prices if applicable:
~~R$1.200~~ Incluído gratuitamente
- Anchor the price visually against the value stack.
8. SOCIAL PROOF — Block B (near CTA)
- 1 featured case study or standout metric:
"We increased conversions by 312% in 30 days" — [Name, Company]
- Or a logo strip if B2B: "Trusted by teams at [Logo] [Logo] [Logo]"
9. OBJECTION HANDLING / FAQ
- 5–7 questions. Use
<details><summary> accordion pattern.
- Answer the real objection, not the surface question.
- Final FAQ entry must be a risk-reversal guarantee.
10. GUARANTEE BLOCK
- Prominent badge or callout box.
- Specific: "30-day money-back guarantee, no questions asked."
- Include a trust badge icon (SVG inline).
11. FINAL CTA SECTION
- Restate the core promise in 1 sentence.
- Repeat the primary CTA button (identical label, same style).
- Add urgency trigger: countdown timer (JS) or scarcity copy.
- Repeat trust micro-copy from hero.
Phase 3 — Behavioral Psychology Checklist
Apply every trigger. Mark each as implemented in a comment block at end of file.
| Trigger |
Implementation |
| Loss aversion |
"Don't miss out", limited offer framing |
| Social proof |
Testimonials, logos, user counts |
| Authority |
Expert credentials, media mentions, certifications |
| Scarcity |
Limited seats / stock / time |
| Urgency |
Countdown timer or deadline copy |
| Commitment |
Low-friction first step ("Free", "No CC required") |
| Clarity bias |
One CTA per section; no navigation links |
| Cognitive fluency |
Short sentences, bullet lists, scannable headers |
Phase 4 — UX & Design System Rules
Typography
- Display font: distinctive, character-rich (e.g. Fraunces, Instrument Serif,
Syne, Familjen Grotesk). Never Inter, Roboto, or Arial.
- Body font: high-readability companion (e.g. DM Sans, Plus Jakarta Sans,
Outfit).
- Scale:
--text-xs 12px → --text-6xl 72px (8-step scale, 1.25 ratio).
- Line height: 1.15 for headlines, 1.65 for body.
Color System (CSS custom properties)
:root {
--color-brand: /* primary — high saturation */;
--color-accent: /* CTA — maximum contrast against brand */;
--color-bg: /* page background */;
--color-surface: /* card / section background */;
--color-text: /* body text — min 4.5:1 contrast ratio */;
--color-muted: /* secondary text */;
--color-border: /* subtle dividers */;
}
Spacing Scale
Use --space-{n} tokens: 4, 8, 12, 16, 24, 32, 48, 64, 96, 128px.
CTA Button Standards
- Background:
var(--color-accent)
- Padding:
16px 40px desktop, 14px 28px mobile
- Border-radius: 8px (rounded but not pill unless brand demands it)
- Font-weight: 700
- Text-transform: none (sentence case converts better than ALL CAPS)
- Hover:
brightness(1.1) + translateY(-2px) + box-shadow
- Transition:
all 0.2s ease
- Min tap target: 44×44px
Layout
- Mobile-first. Breakpoints: 375px → 768px → 1280px.
- Max content width:
1100px, centered with margin: 0 auto.
- Section vertical padding:
clamp(64px, 10vw, 128px).
- No horizontal scrolling on any viewport.
Phase 5 — Performance Requirements
- Zero external CSS frameworks (no Bootstrap, no Tailwind CDN bloat).
- Inline all critical CSS in
<style> inside <head>.
- Defer all non-critical JS with
defer or type="module".
- Use
loading="lazy" on all images below the fold.
- Use
<picture> + webp with jpg fallback for hero images.
- Font loading:
font-display: swap; load max 2 font families.
- No jQuery. Vanilla JS only.
- Cumulative Layout Shift (CLS) < 0.1: set explicit
width and height on all
media elements.
Phase 6 — Analytics & Tracking Template
Insert the following placeholder blocks in the correct positions:
<!-- HEAD: Google Tag Manager -->
<!-- Replace GTM-XXXXXXX with real container ID -->
<script>(function(w,d,s,l,i){...})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>
<!-- HEAD: Meta Pixel -->
<script>!function(f,b,e,v,n,t,s){...}('YOUR_PIXEL_ID');</script>
<!-- BODY open: GTM noscript fallback -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"...></iframe></noscript>
<!-- FORM: conversion event on submit -->
<script>
document.getElementById('lead-form').addEventListener('submit', () => {
gtag('event', 'generate_lead', { event_category: 'form' });
fbq('track', 'Lead');
});
</script>
Phase 7 — Form Engineering
- Minimum fields: name + email only (default). Add phone only if explicitly
required.
autocomplete attributes on every input.
- Real-time inline validation (no alert boxes).
- Submit button: show spinner on click, disable to prevent double-submit.
- Success state: replace form with confirmation message inline (no redirect
unless required).
- Error state: field-level error copy in red below the input.
- Submission target: use
fetch() POST to action URL or webhook.
<form id="lead-form" novalidate>
<input type="text" name="name" autocomplete="given-name" required>
<input type="email" name="email" autocomplete="email" required>
<button type="submit" id="cta-submit">
<span class="btn-label">Get Instant Access</span>
<span class="btn-spinner" aria-hidden="true" hidden>⟳</span>
</button>
<p class="form-microcopy">🔒 Your data is safe. We never spam.</p>
</form>
Phase 8 — Sticky CTA Bar (optional, recommended for long pages)
<div id="sticky-cta" class="sticky-bar" aria-label="Call to action bar">
<p class="sticky-bar__copy"><!-- restate core benefit in 6 words --></p>
<a href="#lead-form" class="btn btn--accent">Get Started Now</a>
</div>
Show after 600px scroll. Hide when primary hero CTA is visible (use
IntersectionObserver). CSS position: fixed; bottom: 0; width: 100%.
Phase 9 — Countdown Timer (urgency)
function startCountdown(targetDate) {
const el = document.getElementById('countdown');
const tick = () => {
const diff = targetDate - Date.now();
if (diff <= 0) { el.textContent = 'Offer expired'; return; }
const h = Math.floor(diff / 3.6e6);
const m = Math.floor((diff % 3.6e6) / 60000);
const s = Math.floor((diff % 60000) / 1000);
el.textContent = `${h}h ${m}m ${s}s remaining`;
setTimeout(tick, 1000);
};
tick();
}
// Usage: startCountdown(new Date('2025-12-31T23:59:59'));
If no real deadline exists, use a session-based timer (expires when tab closes).
Never fake a permanent countdown that resets — it destroys trust.
Phase 10 — SEO Baseline
<title>[Primary Keyword] — [Benefit Statement] | [Brand]</title>
<meta name="description" content="[130–160 chars: who it's for + core benefit + CTA]">
<link rel="canonical" href="https://yourdomain.com/landing-page-slug">
<meta property="og:title" content="...">
<meta property="og:description" content="...">
<meta property="og:image" content="https://...1200x630.jpg">
<meta property="og:type" content="website">
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "Product", ... }
</script>
Output Format
Deliver the final result in this order:
- Strategy Brief (plain text block, see Phase 1)
- Complete single-file HTML — all CSS in
<style>, all JS in <script defer> before </body>, no external dependencies except Google Fonts @import.
- CRO Notes — 3–5 bullet points of specific optimizations applied and why.
- A/B Test Suggestions — 2–3 hypotheses to test (headline variants, CTA
copy, hero image).
Quality Gate
Before returning output, verify:
1---2name: skill-landingpage-claude-opus3description: Build high-converting landing pages with persuasive copywriting, CRO best practices, and production-ready HTML/CSS/JS. Use this skill whenever the user asks to create a landing page, sales page, lead capture page, product page, waitlist page, or any single-page marketing asset — even if they only describe an offer, audience, or goal without explicitly saying "landing page". Triggers on phrases like "quero uma página de vendas", "cria uma LP", "página de captura", "página de produto", "landing page para…", or when the user describes a product/service and wants to promote or sell it online. Always use this skill before writing any landing page markup or copy.4---56# Landing Page Architect78Build high-converting, psychologically-optimized landing pages as9**single-file, production-ready HTML** with embedded CSS and minimal JS.10Prioritize conversion rate above aesthetics, clarity above cleverness.1112---1314## Phase 0 — Gather Context (before writing any code)1516Ask the user for the following if not already provided. Collect all answers in17one shot; do not ask one question at a time.1819| # | Question | Why it matters |20|---|----------|----------------|21| 1 | What is the product / service / offer? | Core value proposition |22| 2 | Who is the primary audience? Pain points? | Empathy copy, language match |23| 3 | What is the ONE action the visitor must take? | CTA design |24| 4 | What proof exists? (testimonials, metrics, logos, case studies) | Social proof sections |25| 5 | Is there a real deadline, limited seats, or limited stock? | Urgency triggers |26| 6 | What is the price point / offer structure? | Anchor pricing, value stack |27| 7 | Any brand colors, fonts, or tone guidelines? | Design system seed |28| 8 | Which analytics/tracking pixels are needed? (GA4, GTM, Meta Pixel) | Tag placement |29| 9 | Where does the form submit? (webhook URL, email, CRM) | Form action |3031If the user says "just build it" or provides a brief, infer reasonable defaults32and state assumptions clearly at the top of your response.3334---3536## Phase 1 — Strategy Brief (output before writing code)3738Before the first line of HTML, output a compact brief:3940```41STRATEGY BRIEF42──────────────43Audience : [who they are + core pain]44Promise : [headline value proposition in one sentence]45Primary CTA : [exact button label + action]46Urgency lever : [real scarcity or manufactured? which type?]47Proof type : [testimonials / numbers / logos / case study]48Tone : [e.g. authoritative, empathetic, urgent, playful]49Design anchor : [color palette seed + font pairing decision]50```5152---5354## Phase 2 — Page Architecture5556Build sections in this exact order. Never skip sections; collapse into minimal57variants if content is unavailable.5859### 1. HERO60- **Headline**: Outcome-focused, ≤ 10 words. Speak the transformation, not the61 tool. Use the user's own language.62- **Subheadline**: One sentence expanding the promise. Address the primary pain.63- **Primary CTA button**: High-contrast, action verb + benefit64 (e.g. "Start My Free Trial", "Get Instant Access").65- **Trust micro-copy** directly below CTA: e.g. "No credit card required · Cancel66 anytime · 2,400+ customers"67- **Hero visual**: Describe what image/illustration to use; output a placeholder68 `<div>` with alt text and aspect-ratio if no image URL is provided.6970### 2. PROBLEM AWARENESS71- 3 short paragraphs or a 3-column icon grid.72- Mirror the user's internal monologue. Use "You know that feeling when…"73 structure.74- End with a pivot sentence: "There's a better way."7576### 3. SOLUTION BRIDGE77- One-paragraph narrative: product as the bridge from pain → outcome.78- Avoid feature lists here; focus on the transformation.7980### 4. BENEFITS (Outcome-focused)81- 4–6 bullets. Format: **Bold outcome** — supporting detail sentence.82- Lead with the most emotionally resonant benefit.83- No feature names; translate every feature into a user result.8485### 5. SOCIAL PROOF — Block A86- 3 testimonials minimum. Each must contain:87 - Verbatim quote (or placeholder in `[BRACKETS]`)88 - Name, title, company (real or placeholder)89 - Star rating (⭐⭐⭐⭐⭐ or SVG stars)90 - Optional avatar placeholder91- Position immediately after benefits to validate the promise just made.9293### 6. HOW IT WORKS94- Exactly 3 steps. Numbered. Icon + title + one-sentence description.95- Use active verbs: "Connect", "Configure", "Launch" — not "Step 1: …"96- Optional: animated progress indicator (CSS-only).9798### 7. OFFER DETAILS / VALUE STACK99- List everything included. Use ✓ checkmarks.100- Show total perceived value with strikethrough prices if applicable:101 `~~R$1.200~~ Incluído gratuitamente`102- Anchor the price visually against the value stack.103104### 8. SOCIAL PROOF — Block B (near CTA)105- 1 featured case study or standout metric:106 `"We increased conversions by 312% in 30 days" — [Name, Company]`107- Or a logo strip if B2B: "Trusted by teams at [Logo] [Logo] [Logo]"108109### 9. OBJECTION HANDLING / FAQ110- 5–7 questions. Use `<details><summary>` accordion pattern.111- Answer the real objection, not the surface question.112- Final FAQ entry must be a risk-reversal guarantee.113114### 10. GUARANTEE BLOCK115- Prominent badge or callout box.116- Specific: "30-day money-back guarantee, no questions asked."117- Include a trust badge icon (SVG inline).118119### 11. FINAL CTA SECTION120- Restate the core promise in 1 sentence.121- Repeat the primary CTA button (identical label, same style).122- Add urgency trigger: countdown timer (JS) or scarcity copy.123- Repeat trust micro-copy from hero.124125---126127## Phase 3 — Behavioral Psychology Checklist128129Apply every trigger. Mark each as implemented in a comment block at end of file.130131| Trigger | Implementation |132|---------|----------------|133| **Loss aversion** | "Don't miss out", limited offer framing |134| **Social proof** | Testimonials, logos, user counts |135| **Authority** | Expert credentials, media mentions, certifications |136| **Scarcity** | Limited seats / stock / time |137| **Urgency** | Countdown timer or deadline copy |138| **Commitment** | Low-friction first step ("Free", "No CC required") |139| **Clarity bias** | One CTA per section; no navigation links |140| **Cognitive fluency** | Short sentences, bullet lists, scannable headers |141142---143144## Phase 4 — UX & Design System Rules145146### Typography147- Display font: distinctive, character-rich (e.g. Fraunces, Instrument Serif,148 Syne, Familjen Grotesk). Never Inter, Roboto, or Arial.149- Body font: high-readability companion (e.g. DM Sans, Plus Jakarta Sans,150 Outfit).151- Scale: `--text-xs` 12px → `--text-6xl` 72px (8-step scale, 1.25 ratio).152- Line height: 1.15 for headlines, 1.65 for body.153154### Color System (CSS custom properties)155```css156:root {157 --color-brand: /* primary — high saturation */;158 --color-accent: /* CTA — maximum contrast against brand */;159 --color-bg: /* page background */;160 --color-surface: /* card / section background */;161 --color-text: /* body text — min 4.5:1 contrast ratio */;162 --color-muted: /* secondary text */;163 --color-border: /* subtle dividers */;164}165```166167### Spacing Scale168Use `--space-{n}` tokens: 4, 8, 12, 16, 24, 32, 48, 64, 96, 128px.169170### CTA Button Standards171- Background: `var(--color-accent)`172- Padding: `16px 40px` desktop, `14px 28px` mobile173- Border-radius: 8px (rounded but not pill unless brand demands it)174- Font-weight: 700175- Text-transform: none (sentence case converts better than ALL CAPS)176- Hover: `brightness(1.1)` + `translateY(-2px)` + box-shadow177- Transition: `all 0.2s ease`178- Min tap target: 44×44px179180### Layout181- Mobile-first. Breakpoints: 375px → 768px → 1280px.182- Max content width: `1100px`, centered with `margin: 0 auto`.183- Section vertical padding: `clamp(64px, 10vw, 128px)`.184- No horizontal scrolling on any viewport.185186---187188## Phase 5 — Performance Requirements189190- Zero external CSS frameworks (no Bootstrap, no Tailwind CDN bloat).191- Inline all critical CSS in `<style>` inside `<head>`.192- Defer all non-critical JS with `defer` or `type="module"`.193- Use `loading="lazy"` on all images below the fold.194- Use `<picture>` + `webp` with `jpg` fallback for hero images.195- Font loading: `font-display: swap`; load max 2 font families.196- No jQuery. Vanilla JS only.197- Cumulative Layout Shift (CLS) < 0.1: set explicit `width` and `height` on all198 media elements.199200---201202## Phase 6 — Analytics & Tracking Template203204Insert the following placeholder blocks in the correct positions:205206```html207<!-- HEAD: Google Tag Manager -->208<!-- Replace GTM-XXXXXXX with real container ID -->209<script>(function(w,d,s,l,i){...})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>210211<!-- HEAD: Meta Pixel -->212<script>!function(f,b,e,v,n,t,s){...}('YOUR_PIXEL_ID');</script>213214<!-- BODY open: GTM noscript fallback -->215<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"...></iframe></noscript>216217<!-- FORM: conversion event on submit -->218<script>219 document.getElementById('lead-form').addEventListener('submit', () => {220 gtag('event', 'generate_lead', { event_category: 'form' });221 fbq('track', 'Lead');222 });223</script>224```225226---227228## Phase 7 — Form Engineering229230- Minimum fields: name + email only (default). Add phone only if explicitly231 required.232- `autocomplete` attributes on every input.233- Real-time inline validation (no alert boxes).234- Submit button: show spinner on click, disable to prevent double-submit.235- Success state: replace form with confirmation message inline (no redirect236 unless required).237- Error state: field-level error copy in red below the input.238- Submission target: use `fetch()` POST to `action` URL or webhook.239240```html241<form id="lead-form" novalidate>242 <input type="text" name="name" autocomplete="given-name" required>243 <input type="email" name="email" autocomplete="email" required>244 <button type="submit" id="cta-submit">245 <span class="btn-label">Get Instant Access</span>246 <span class="btn-spinner" aria-hidden="true" hidden>⟳</span>247 </button>248 <p class="form-microcopy">🔒 Your data is safe. We never spam.</p>249</form>250```251252---253254## Phase 8 — Sticky CTA Bar (optional, recommended for long pages)255256```html257<div id="sticky-cta" class="sticky-bar" aria-label="Call to action bar">258 <p class="sticky-bar__copy"><!-- restate core benefit in 6 words --></p>259 <a href="#lead-form" class="btn btn--accent">Get Started Now</a>260</div>261```262263Show after 600px scroll. Hide when primary hero CTA is visible (use264`IntersectionObserver`). CSS position: `fixed; bottom: 0; width: 100%`.265266---267268## Phase 9 — Countdown Timer (urgency)269270```js271function startCountdown(targetDate) {272 const el = document.getElementById('countdown');273 const tick = () => {274 const diff = targetDate - Date.now();275 if (diff <= 0) { el.textContent = 'Offer expired'; return; }276 const h = Math.floor(diff / 3.6e6);277 const m = Math.floor((diff % 3.6e6) / 60000);278 const s = Math.floor((diff % 60000) / 1000);279 el.textContent = `${h}h ${m}m ${s}s remaining`;280 setTimeout(tick, 1000);281 };282 tick();283}284// Usage: startCountdown(new Date('2025-12-31T23:59:59'));285```286287If no real deadline exists, use a session-based timer (expires when tab closes).288Never fake a permanent countdown that resets — it destroys trust.289290---291292## Phase 10 — SEO Baseline293294```html295<title>[Primary Keyword] — [Benefit Statement] | [Brand]</title>296<meta name="description" content="[130–160 chars: who it's for + core benefit + CTA]">297<link rel="canonical" href="https://yourdomain.com/landing-page-slug">298<meta property="og:title" content="...">299<meta property="og:description" content="...">300<meta property="og:image" content="https://...1200x630.jpg">301<meta property="og:type" content="website">302<script type="application/ld+json">303 { "@context": "https://schema.org", "@type": "Product", ... }304</script>305```306307---308309## Output Format310311Deliver the final result in this order:3123131. **Strategy Brief** (plain text block, see Phase 1)3142. **Complete single-file HTML** — all CSS in `<style>`, all JS in `<script315 defer>` before `</body>`, no external dependencies except Google Fonts `@import`.3163. **CRO Notes** — 3–5 bullet points of specific optimizations applied and why.3174. **A/B Test Suggestions** — 2–3 hypotheses to test (headline variants, CTA318 copy, hero image).319320---321322## Quality Gate323324Before returning output, verify:325326- [ ] One and only one primary CTA per above-the-fold viewport327- [ ] No navigation links (they leak conversions)328- [ ] CTA button appears in Hero, after Benefits, after FAQ, and in Final section329- [ ] All images have `alt` text and `width`/`height` attributes330- [ ] Color contrast ≥ 4.5:1 for body text, ≥ 3:1 for large text331- [ ] Page renders correctly at 375px, 768px, and 1280px332- [ ] Zero `console.error` from inline JS333- [ ] `<html lang="pt-BR">` (or correct locale) is set334- [ ] Behavioral psychology checklist comment block present at end of file