Prompt library · 2026 edition

Advanced prompts for Lovable & friends

Copy-ready prompts for the moves that separate generic AI-built sites from Awwwards-grade work — design systems, real 3D and motion, AEO architecture, and backend that won't leak. Tested across Lovable, Cursor, v0, Bolt, and Claude.

01.Design systems & visual polish

Use these when the UI looks generic. They force the model to design tokens, type scales, and motion as a system instead of styling components ad hoc.

Establish a real design system

Stops the model from sprinkling Tailwind classes randomly. Forces semantic tokens.

Lovablev0Cursor
Audit the entire app for visual consistency. Then:
1. Define a complete semantic token set in src/styles.css using oklch — background, foreground, primary, primary-foreground, secondary, muted, accent, destructive, border, ring, plus gradients and shadows. Include a dark mode variant.
2. Remove every hardcoded color class from components (text-white, bg-black, text-gray-500, etc.) and replace with semantic tokens.
3. Define a type scale (display, h1–h4, body, caption) as Tailwind utilities or a Typography component.
4. Define motion tokens (duration-fast/normal/slow, ease-out-expo) and use them via CVA variants on Button, Card, Dialog.
5. Print a short report of every token added and every component refactored.

Do not introduce new colors outside the token set. Do not skip the audit.

Awwwards-grade hero refinement

Pushes past the default 'centered headline + button' hero.

Lovablev0
Refine the hero section to Awwwards-grade quality. Use these moves:
- Asymmetric layout with at least one element breaking the grid.
- Real depth: layered gradients, soft noise texture, a 3D or canvas element behind the headline.
- Variable-weight typography with one oversized display character or ligature as a graphic.
- Micro-interaction: cursor-reactive parallax on the background, magnetic CTA button.
- Entry animation choreographed in <600ms — text mask reveal, then CTA fade, then peripheral elements.

Constraints: no stock illustrations, no centered hero, no gradient text on top of gradient backgrounds. Keep the existing copy.

Brutalist + editorial hybrid

Useful when the brand needs to feel premium without looking like every SaaS site.

Lovablev0Bolt
Rebuild the landing page in a brutalist-editorial hybrid:
- Off-black background (#0d0d0d), warm cream text (#f5f0e0), one saturated accent.
- Heavy display serif for H1 (Instrument Serif or DM Serif Display), mono for labels, neutral sans for body.
- Hard 1px borders, no rounded corners above 4px, generous negative space.
- Editorial grid: 12-col with at least 3 spans breaking convention (e.g. text in col 2-5, image in col 7-12).
- Replace all icons with numeric labels (01, 02, 03) in monospace.

Keep all existing routes and content. Only restyle.

02.3D, WebGL & motion

Specific enough that the model installs the right packages, sets up the canvas correctly, and respects performance.

React Three Fiber hero scene

Most '3D hero' prompts produce a static sphere. This one specifies the actual composition.

LovableCursorv0
Add an interactive 3D hero behind the headline using @react-three/fiber and @react-three/drei.

Scene spec:
- 4 floating distorted icosahedrons in brand colors (orange, hot pink, electric blue, violet), each with MeshDistortMaterial.
- ~200 additive-blended particles drifting in the background.
- Sunset Environment preset for reflections.
- Two directional lights + one rim point light in the brand accent.
- Float wrapper for organic motion, Suspense + lazy import, ClientOnly wrapper to avoid SSR window errors.
- Canvas dpr=[1,2], antialias on, high-performance powerPreference.
- Keep the existing hero image as a poster underneath for LCP and as a fallback.

Do not use OrbitControls. Do not add a loading spinner. Do not exceed 60fps cost on a mid-tier laptop.

GSAP scroll-triggered storytelling

Forces a real choreography instead of fade-in-on-scroll spam.

CursorLovable
Install gsap and @gsap/react. Build a scroll-triggered narrative for the page:
1. Pin the hero for one viewport height; animate the 3D scene's camera dolly-in as the user scrolls.
2. On release, the first section's heading enters with a SplitText character mask from below.
3. Each subsequent section pins briefly and reveals its content as a horizontal scrub.
4. A persistent progress indicator (1px line, brand accent) tracks scroll progress at the top.

Use useGSAP for cleanup. Disable all scroll animations on prefers-reduced-motion. Do not animate layout-shifting properties (width/height) — only transform and opacity.

Shader-based aurora background

Replaces the lazy 'three big blurred circles' aurora with a real fragment shader.

CursorLovable
Replace the current AuroraBackground component with a fullscreen WebGL fragment shader:
- Plane geometry filling the viewport, orthographic camera.
- Fragment shader: layered simplex noise modulating a 4-stop gradient (orange → pink → blue → violet), time-uniform driven, with a subtle film-grain overlay.
- Uniforms: u_time, u_resolution, u_mouse (lerped).
- Render at 0.5x resolution and upscale via CSS for perf.
- Pause the requestAnimationFrame loop when the canvas is off-screen (IntersectionObserver).
- Provide a static CSS-gradient fallback for browsers without WebGL.

03.SEO & AEO architecture

These are the prompts that move sites from 'crawlable' to 'selectable' by AI answer engines.

Full SSR + structured data sweep

Forces the model to wire per-route metadata, JSON-LD, sitemap, and llms.txt as one system.

LovableCursor
Audit and upgrade the project for AI search visibility:
1. Confirm every public route has its own head() with unique title, description, og:title, og:description, og:image, and canonical link.
2. Add JSON-LD scripts per route type: Organization on root, Article on posts, BreadcrumbList on deep routes, FAQPage where applicable.
3. Generate /sitemap.xml as a server route that reads the actual route tree plus any dynamic content.
4. Generate /robots.txt with a Sitemap directive.
5. Generate /llms.txt with publisher, purpose, main topics, key pages, entity notes.
6. Verify SSR renders all of the above by curling the route and grepping for the meta tags.

Print a per-route table at the end: route | title | description | has og:image | has canonical | JSON-LD types.

Entity-grade About + Author pages

AI engines rank entities they can disambiguate. This builds the entity graph.

LovableCursor
Create /about and /authors/[slug] routes structured as entity pages:
- /about: Organization JSON-LD with sameAs links to LinkedIn, X, GitHub, Crunchbase, Wikidata if available. Founding date, founders, location, areas of expertise.
- /authors/[slug]: Person JSON-LD with sameAs links, jobTitle, worksFor (linking the Organization @id), knowsAbout array, alumniOf.
- Cross-link: every Article schema's author.@id points to the Person @id; every Person's worksFor.@id points to the Organization @id.
- Render the same facts as human-readable copy on the page — schema mirrors content, not the other way around.

This is the BackTier entity-architecture pattern. Do not invent facts; leave placeholders the user must fill.

AEO-ready FAQ + answer blocks

Optimizes for ChatGPT/Perplexity citation, not just Google snippets.

LovableCursorv0
For the top 5 pages, add an "Answers" section near the top:
- Each answer is a single declarative sentence (≤25 words) that directly answers a likely user question.
- Followed by a 2–3 sentence elaboration with one specific number, name, or date.
- Wrap each Q&A in FAQPage JSON-LD.
- Use semantic HTML: <h3> question, <p> answer.
- Avoid hedging language ("it depends", "various factors"). AI engines cite confident, specific sentences.

Print the 5 selected pages and the 3–5 questions chosen for each.

04.Backend & architecture

For when 'just make it work' produces a tangle of edge functions and leaky RLS.

Server functions, not edge functions

Keeps logic typed, colocated, and inside the TanStack Start runtime.

LovableCursor
Refactor all backend logic to TanStack Start server functions:
1. Move any Supabase edge function logic into createServerFn handlers under src/lib/*.functions.ts.
2. Use requireSupabaseAuth middleware for any user-scoped operation.
3. Use supabaseAdmin from client.server.ts only for webhooks and admin tasks, and only after verifying the caller.
4. Validate every input with zod inside .inputValidator().
5. Call from components via useServerFn + useQuery, never from public-route loaders.

Print a mapping: old edge function → new server function path.

Bulletproof RLS with roles in a separate table

Prevents the classic privilege-escalation bug from storing role on profiles.

LovableCursor
Implement role-based access:
1. Create enum app_role ('admin','moderator','user').
2. Create user_roles table (user_id, role, unique pair).
3. Enable RLS on user_roles.
4. Create security-definer function public.has_role(_user_id uuid, _role app_role) returns boolean.
5. Replace any role checks in client code or other tables with has_role(auth.uid(), 'admin') inside RLS policies.
6. Verify by querying as a non-admin and confirming the row is hidden.

Never store role on the profiles table. Never check admin status from localStorage.

05.Meta-prompts for working with AI builders

Use these as the *first* message of a session. They set guardrails the model will respect for the rest of the conversation.

Plan-then-build contract

Stops the model from one-shotting a 12-file change you didn't agree to.

LovableCursorClaude
For the rest of this conversation, follow this contract:
1. For any request that touches more than 2 files OR adds a dependency, respond first with a numbered plan. Do not write code.
2. Wait for my "go" before implementing.
3. After implementing, end with a 3-bullet summary: what changed, what to verify, what's still open.
4. If you discover something mid-task that changes the plan, stop and tell me — don't silently expand scope.
5. If you're uncertain about a name, schema, or API, ask one specific question instead of guessing.

Acknowledge with "Contract accepted" and the current understanding of the task.

Senior-review pass

Turns the model into a critic of its own output.

LovableCursorClaude
Review the code you just wrote as if you were a senior engineer doing PR review. For each file changed, list:
- One thing that's genuinely good.
- One thing that's mediocre and why.
- One bug, race, or security issue (or "none found" with the specific checks you performed: auth, input validation, error handling, race conditions, N+1).
- One refactor that would make it 30% simpler.

Then apply the fixes for the bugs and the refactors. Do not apply stylistic-only changes.

Anti-bloat prompt

Counters the model's tendency to add 5 components, 3 hooks, and a context provider for a checkbox.

Lovablev0Cursor
Constraints for this task:
- No new dependencies unless I approve.
- No new files unless the change exceeds 80 lines or has a clear reuse case.
- No abstraction (custom hook, context, HOC) until there are 3 concrete callers.
- Inline the simplest version first. We'll extract later if it earns it.

If you think a constraint is wrong for this specific task, say so before implementing and I'll lift it.