Cursor prompt for a SaaS landing page
Drop this into Cursor and it builds a landing page inside your existing repo — matching your framework, styling system, and naming conventions instead of importing new ones. Features and pricing render from typed data files, so future edits are one-line diffs. The customizer's style, palette, type, and motion tokens set the look; your codebase sets the rules.
Last updated
In this repo, build our marketing landing page for {{product}}, targeting {{audience}}. Before writing anything, detect the existing stack — framework, styling approach, component conventions — and match it exactly; do not introduce a new UI library or CSS system. Put the page at the root route and split sections into files under the components directory, following whatever naming convention neighboring files already use.
Section sequence:
1. Nav — reuse the app's existing header component if one exists; otherwise create one with logo, links, and the CTA.
2. Hero — headline formula: {{product}} plus the painful task it removes, under 10 words; subhead answers "how" in one sentence; primary CTA with a secondary link to docs.
3. Social proof — a single testimonial in its own component with a quote prop (skip logo walls unless brand assets already exist in the repo).
4. Features — three items rendered from a typed array (title, description, icon) defined in one data file, mapped rather than hand-written.
5. Product shot — a screenshot component with a bordered frame and alt text describing the actual screen.
6. Pricing teaser — the cheapest and the most popular tiers only, driven by the same data-file pattern.
7. FAQ — four items, semantic details elements or the repo's existing accordion.
8. Final CTA band and footer.
Visual direction:
{{style}}
Palette: {{palette}}
Typography: {{type}}
Motion: {{motion}}
Spacing and responsive:
- Derive spacing from the repo's existing scale or tokens; separate sections by the largest step and intra-section groups by two steps down. If no scale exists, establish 96/64/32.
- On mobile, features and pricing stack single-column and nav links move into a disclosure menu.
The primary call to action is "{{cta}}" wherever a signup button appears.
Apply everything as one reviewable set of diffs across the new files plus route registration. Afterwards verify: the app still builds with zero type errors; no new dependencies were added to package.json; the features array renders all three entries; the page inherits the repo's global layout without duplicating header or footer.Customize it
Runs in your browser. Nothing you type here is sent anywhere.
In this repo, build our marketing landing page for a project management SaaS, targeting engineering managers at startups. Before writing anything, detect the existing stack — framework, styling approach, component conventions — and match it exactly; do not introduce a new UI library or CSS system. Put the page at the root route and split sections into files under the components directory, following whatever naming convention neighboring files already use. Section sequence: 1. Nav — reuse the app's existing header component if one exists; otherwise create one with logo, links, and the CTA. 2. Hero — headline formula: a project management SaaS plus the painful task it removes, under 10 words; subhead answers "how" in one sentence; primary CTA with a secondary link to docs. 3. Social proof — a single testimonial in its own component with a quote prop (skip logo walls unless brand assets already exist in the repo). 4. Features — three items rendered from a typed array (title, description, icon) defined in one data file, mapped rather than hand-written. 5. Product shot — a screenshot component with a bordered frame and alt text describing the actual screen. 6. Pricing teaser — the cheapest and the most popular tiers only, driven by the same data-file pattern. 7. FAQ — four items, semantic details elements or the repo's existing accordion. 8. Final CTA band and footer. Visual direction: Minimal dark style. Near-black canvas (#0A0A0B) with one elevated surface tone (#141416) for cards — never more than two surface steps. Hairline borders (1px, white at 8% opacity) instead of shadows; if a shadow is unavoidable use 0 1px 2px rgba(0,0,0,0.4) and nothing softer. Text in exactly three steps: white at 92% for headings, 60% for body, 40% for captions. Generous negative space — section padding at least 120px on desktop, 64px on mobile. The accent color appears only on interactive elements and one hero highlight, nowhere else. Palette: a strict neutral ramp (white, #F5F5F5, #E5E5E5, #737373, #171717) carries the entire interface; pick one accent and use it only for primary CTAs, active states, and a single hero highlight. If the accent appears more than five times per viewport it stops being an accent. Keep semantic colors (success, error) desaturated so the accent stays in charge. Typography: one geometric sans (a Futura/Poppins-class face) at three weights maximum (400/500/700). Scale: 64-88px hero, 32px section heads, 18px lede, 16px body, 13px caps labels with 0.08em tracking. Tight headline leading (1.05-1.1), relaxed body (1.6). Let the geometry carry the personality — no italics; weight and size do all hierarchy. Motion: none. Zero scroll animations, zero entrance effects — the page is fully composed the instant it paints. Spend the motion budget on input feedback instead: 120-150ms ease-out color and transform transitions on hover and press states only. Hold this constraint absolutely; it is a statement, not an omission. Spacing and responsive: - Derive spacing from the repo's existing scale or tokens; separate sections by the largest step and intra-section groups by two steps down. If no scale exists, establish 96/64/32. - On mobile, features and pricing stack single-column and nav links move into a disclosure menu. The primary call to action is "start a free trial" wherever a signup button appears. Apply everything as one reviewable set of diffs across the new files plus route registration. Afterwards verify: the app still builds with zero type errors; no new dependencies were added to package.json; the features array renders all three entries; the page inherits the repo's global layout without duplicating header or footer.
Same task in other tools
Questions about this prompt
My repo doesn't use Tailwind — will this prompt still work?
Yes, by design. The prompt orders Cursor to detect and match your existing styling approach rather than importing a new one, so a CSS-modules or styled-components repo gets the same sections in its own idiom. The check that no new dependencies appear in package.json is your guardrail.
Why render features and pricing from typed data files?
Because future edits become one-line diffs instead of markup surgery, and Cursor's agent can extend the array in place when you add a fourth feature. The typed shape also fails the build if a field is missing — cheaper than spotting a blank card in review.
How should I review what Composer changed?
Ask for the change as a single reviewable diff set, as the prompt does, then read it file by file before accepting — pay closest attention to route registration and anything touching the global layout. If one file went wrong, reject just that diff and re-prompt with the failing verification item.
Part of the Cursor landing-page cluster — start from the main Cursor landing page prompt.