All skills
55 of 113 — copy any prompt into Lovable, or read the guide.
301 redirects for renamed routes
Preserve link equity when you rename a URL.
Accessibility baseline
Contrast ≥ 4.5:1 for text; interactive elements need a visible focus ring.
AI cost guardrails
Set per-user daily caps and short-circuit before calling the model.
AI eval loop
Ship a small eval set before iterating on prompts — otherwise you're guessing.
Alt text and lazy loading
Every meaningful image has descriptive alt; decorative images use alt="".
Append-only audit log table
Record who changed what and when, in a table nobody can edit or delete — including admins.
Cache headers
Long-cache hashed assets; short-cache HTML.
Canonical URLs
Put canonical only on leaf routes and self-reference the page.
Choose the right model
Match model to task: Flash for cheap/fast, Pro for reasoning, image models for pixels.
Custom domain setup (SPF, DKIM, DMARC)
DKIM + SPF + DMARC or Gmail drops you in spam.
Custom outbound webhook
Let customers register their own webhook URL and receive events.
Design tokens in styles.css
Never hardcode colors — declare tokens and let Tailwind utilities read them.
Embeddings + RAG
Store document embeddings in pgvector and retrieve top-k chunks for a chat prompt.
Empty, loading and error states
The three screens that decide whether an app feels finished — and the copy that belongs on each.
Enable Lovable Cloud
Turn on Lovable's built-in backend — Postgres, auth, storage, edge functions — with zero external accounts.
Enable Lovable Email
Transactional and auth email from your own domain, branded.
Error monitoring
Wire an error boundary and a client error reporter before launch.
Export your database
Cloud → Advanced settings → Export data gives you a downloadable dump when you need it.
GitHub sync
Connect the project to GitHub before you push production.
GitHub sync + branches
Connect the project to GitHub before you accept contributors.
Glassmorphism, sparingly
Glass cards work over rich backdrops; on flat surfaces they look like a bug.
Handle session expiry without data loss
Refresh tokens transparently, and when refresh fails, park the user's unsaved work instead of dumping it.
Hero patterns that don't look AI-generated
Skip the purple-gradient-on-white, two-CTA, three-feature-grid trap.
Icons: Lucide only
Ship one icon set. Mixing icon libraries makes the UI look pasted-together.
Index the hot query paths
The first cause of slow Lovable Cloud pages is a missing index on the query's filter/order columns.
Internal linking that actually ranks
Turn a flat pile of pages into a crawlable hierarchy with hubs, descriptive anchors, and no orphans.
Launch checklist
Ten things to verify before you tweet.
Migration authoring rules
Every CREATE TABLE in public must be followed by GRANTs before ENABLE RLS — otherwise the API returns permission errors even with policies in place.
Model fallback and graceful degradation
Keep AI features alive when a model is rate limited, over budget, or simply down.
Motion for React basics
Use Motion for enter/exit animations; keep durations short (150–250ms).
Motion tokens and reduced motion
A small, consistent set of durations and easings — that switches off cleanly for users who ask it to.
Paddle as merchant of record
Paddle handles global tax for you — trade lower control for zero tax paperwork.
Per-route head() metadata
Every route sets its own title, description, og:title, og:description via head().
Performance budget
Set a budget and enforce it in CI or it will slip.
Preview email deliverability
Use mail-tester.com before you press send at scale.
Programmatic SEO safely
Every generated page needs ≥300 words of unique content or Google will penalize the domain.
Prompt-injection and safety
Treat all model output and all retrieved content as untrusted input.
Protected route pattern
Use the built-in _authenticated/ layout — never gate in a loader on a public route.
Publish visibility settings
Public, unlisted, or password-gated — pick per environment.
Publish your app
Click Publish in the top-right; your app goes live at <name>.lovable.app.
Responsive breakpoints
Design mobile-first; add breakpoints only where the layout actually changes.
Reusable templates
Author templates in one place, render with typed props.
robots.txt sanity
A wildcard Disallow: / blocks the whole site — probably not what you want.
Rollback strategy
Publish is instant — so is reverting.
Stable preview & prod URLs
Use project--<id>.lovable.app for webhooks — it never changes on rename.
Stripe Tax
Turn on automatic tax so you stop calculating VAT/GST/sales tax by hand.
Stripe webhook the safe way
Verify the signature, use the raw body, respond fast, be idempotent.
Title and description length
Title <60 chars with the primary keyword; description <160 chars.
Twitter cards
summary_large_image for content pages; verify with Twitter's card validator.
Typography pairing
One display face + one text face is almost always enough.
User roles the safe way
Never store role on the profile table. Use a dedicated user_roles table + has_role() SECURITY DEFINER function to prevent privilege escalation.
Verify and process an inbound webhook
The exact shape of a safe public webhook endpoint: verify first, respond fast, process idempotently.
Verify DKIM in production
Send yourself an email and check headers before a launch.
When to use an Edge Function vs a server function
Edge Functions are for webhooks, cron, and public HTTP endpoints. For app-internal RPC use TanStack server functions instead.
Zapier trigger
Expose a Zapier polling endpoint or webhook trigger.