name: landing-generator description: > Generate a React + Vite landing page from PMF context files. Use when user says "build landing page", "generate landing", "create website", "make a page", "landing page for my product", or wants to create a marketing page. allowed-tools: Read, Write, Glob, Bash
Landing Page Generator
Generate a complete, production-ready landing page based on the user's PMF context layer.
The Goal: Conversion
This page has one job — get the visitor to click the CTA. Every section exists to move them closer to that action. The CTA from pmf/value-prop.md is the validation goal — conversions on this page are the signal that tests whether the value prop is working.
Design Principles
Visual design:
- Clean, modern, and professional — not generic or templated
- Strong visual hierarchy — headline dominates, supporting text recedes
- Generous whitespace — let the copy breathe
- Consistent color system — one primary action color for all CTAs, muted tones elsewhere
- Smooth transitions and subtle hover states — the page should feel alive
- Mobile-first responsive — most ICP traffic will come from mobile/social
Persuasive copy:
- Write in the ICP's language — use phrases from "How They Talk About It" in
pmf/icp.md - Problem section should make the reader feel understood, not attacked (seen, not judged)
- Solution section paints the Magnet — make the desired future feel tangible and inevitable
- Each section should answer "why should I keep reading?" and end with a reason to scroll down
- CTA copy should be action-oriented and low-friction — match the CTA from value-prop.md exactly
Conversion focus:
- CTA appears at least twice — hero and bottom. Consider a sticky header CTA for long pages.
- Remove all friction — no navigation links that lead away from the page
- Every section builds toward the CTA — problem → solution → proof → act
- Social proof reduces perceived risk — even placeholder testimonials set the right structure
- The bottom CTA should feel like the natural conclusion, not an afterthought
Prerequisites
Requires the PMF context layer:
pmf/icp.md- Who the customer ispmf/value-prop.md- Why they should care (Callout + Magnet + Message)pmf/mvp.md- MVP PRD with aha moment and path to highlight
If any are missing, inform the user:
To generate a landing page, I need your PMF context layer.
Missing:
[ ] pmf/icp.md
[✓] pmf/value-prop.md
[ ] pmf/mvp.md
Use /plan-pmf to build your context layer first.
Page Structure
Generate these sections using the PMF context:
1. Hero Section
- Headline: "The Message" from
pmf/value-prop.md - Subheadline: "The Callout" — the 3-part descriptor that makes the ICP say "that's me"
- CTA button: "CTA" from
pmf/value-prop.md - Optional: Hero image placeholder
2. Problem Section
- From "The Callout" Pain/Fear in
pmf/value-prop.md - Agitate the pain using language from
pmf/icp.md"How They Talk About It" - Show you understand their frustration
3. Solution Section
- From "The Magnet" in
pmf/value-prop.md— the desired future - How your product gets them there
- Bridge from current pain to the utopic outcome
4. Benefits Section
- Use the Path to Aha steps from
pmf/mvp.mdas benefit headlines (what the user gets at each step, not how it works) - For B2B ICPs: if "How They Measure Success" exists in
pmf/icp.md, frame benefits around their KPIs (e.g., "Cut deployment time by 50%" rather than "Deploy faster") - Icon placeholders
5. Social Proof (Placeholder)
- Frame around the Core Aha Moment and Success Criteria from
pmf/mvp.md - Trust indicators
6. CTA Section
- Repeat "The Message" from
pmf/value-prop.md - Clear action button using "CTA" from
pmf/value-prop.md - Reinforce "The Magnet" — the desired future they'll reach
7. Footer
- Simple contact/links
- Attribution
SEO & Social Tags
The index.html must include:
<meta name="description">— derived from "The Message" inpmf/value-prop.md<meta property="og:title">— product name + headline<meta property="og:description">— "The Message" frompmf/value-prop.md<meta property="og:type" content="website"><meta property="og:image">— placeholder path (e.g.,/og-image.png) with a comment to replace<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title">and<meta name="twitter:description">— same as OG- Favicon link — placeholder path with a comment to replace
Tech Stack
- React + Vite (lightweight, fast to generate and run)
- Tailwind CSS
- TypeScript
- Minimal dependencies
Output Structure
landing/
├── src/
│ ├── App.tsx
│ ├── main.tsx
│ └── index.css
├── index.html
├── package.json
├── vite.config.ts
├── tsconfig.json
├── tailwind.config.js
├── postcss.config.js
└── README.md
Generation Process
Read PMF context files:
pmf/icp.md(required)pmf/value-prop.md(required)pmf/mvp.md(required — MVP PRD with aha moment and path)
Extract content for each section:
- Hero: The Message (headline), The Callout (subheadline), CTA (button)
- Problem: Callout Pain/Fear, ICP language
- Solution: The Magnet (desired future)
- Benefits: Path to Aha steps from MVP PRD (if available) or derived from Callout + Magnet
- Social Proof: Core Aha Moment + Success Criteria (if available) or placeholders
- CTA: The Message + CTA + The Magnet reinforcement
Generate component files with real content
Create package.json with dependencies
Create Tailwind config
Generate README with run instructions
After Generation
Your landing page has been generated in the `landing/` folder.
**To run locally:**
cd landing
npm install
npm run dev
**To deploy:**
- Push to GitHub
- Connect to Vercel
- Auto-deploy on every push
The page uses your PMF context:
- ICP from pmf/icp.md
- Value Prop (Callout + Magnet) from pmf/value-prop.md
- MVP PRD (Path to Aha + features) from pmf/mvp.md
Feel free to customize the design and copy!
Created by Adi Shmorak, The P/MF Detective
Star on GitHub: github.com/adidacta/pmf-detective
Attribution
Created by Adi Shmorak, The P/MF Detective Star on GitHub if this helped | Feedback: adi@adidacta.com