Vibe Coding Prompts
That Actually Ship.
β‘ Most Copied Prompt
Architecture Decision Prompt
You are a senior software architect. I'm building a [describe your app]. Expected users: [N]. Key features: [list]. Budget: [$/mo]. Compare: (a) Next.js + Supabase + Vercel, (b) Remix + PlanetScale + Fly.io, (c) SvelteKit + Turso + Cloudflare. For each option, list pros, cons, cost, and scalability ceiling. Recommend one with explicit reasoning.
Uses Role Assignment + Chain-of-Thought. Works on any AI tool.
Your tool is only as good as the context you give it. These prompts are engineered by technique β not by tool β so you understand why they work and can adapt them to any situation.
Prompt Anatomy
Every high-output prompt has the same 5 components. Miss one and the AI guesses.
Example: Full anatomy
[You are a senior security engineer] [reviewing a Next.js app with Supabase] [audit /api routes for auth bypass vulnerabilities] [do not suggest architectural rewrites] [output: list of findings with severity and fix for each]
The 5 Techniques
Master these and you can engineer any prompt from scratch.
Context Layering
Stack project context, file structure, and constraints so AI understands exactly where it's working
When to use
When starting a feature from scratch or working in a complex codebase
Structure
[Project context] + [Existing files/schema] + [What to build] + [Tech constraints]
7 prompts using this technique below β
Stepwise
Break the task into numbered steps. AI executes each one sequentially β no skipped logic
When to use
Multi-part features: auth flow, payment flow, onboarding sequences
Structure
[Overall goal] + [Step 1] + [Step 2] + [Step 3] + [Expected output per step]
7 prompts using this technique below β
Role Assignment
Tell AI who it is before it writes. Role shapes the vocabulary, priorities, and trade-offs it makes
When to use
Code review, architecture decisions, security audits
Structure
[You are a {expert role}] + [Context] + [Task] + [Output format]
5 prompts using this technique below β
Constraint Anchoring
Explicit DONT's stop AI hallucinating alternative solutions or breaking existing code
When to use
Refactors, performance fixes, any time AI might 'helpfully' add unwanted changes
Structure
[Task] + [CONSTRAINTS: what NOT to do] + [Target metric] + [Output format]
6 prompts using this technique below β
Chain-of-Thought
Ask AI to reason through the problem before implementing. Catches logic errors before they reach code
When to use
Complex queries, architecture choices, anything with tricky edge cases
Structure
[Think through X] + [Consider: options A, B, C] + [Then implement the best one] + [Show reasoning]
5 prompts using this technique below β
Context Layering
Stack project context, file structure, and constraints so AI understands exactly where it's working
Create a new Next.js 14 App Router project with TypeScript, Tailwind CSS, Supabase Auth, and Stripe billing. Scaffold the folder structure: /app, /components, /lib, /hooks. Add a root layout with a Navbar and a placeholder dashboard page. Include a README with setup steps.
Design a Supabase PostgreSQL schema for a multi-tenant SaaS. Tables needed: users (extends auth.users), organizations, memberships (userβorg with role), subscriptions, and usage_events. Include: primary keys (uuid), foreign keys with cascade, created_at/updated_at triggers, and indexes on common query patterns. Output as SQL.
Build a dark-mode SaaS landing page. Sections: Hero (headline + CTA + waitlist form), Features (3-column grid with icons), Pricing (3 tiers: Free / Pro / Team), FAQ accordion, Footer with links. Use purple as the accent colour. Make it fully responsive. Connect the waitlist form to Supabase table 'waitlist'.
Add Next.js middleware to protect routes by role. Read the user's role from the Supabase JWT claim 'user_role'. Protect /admin/* for 'admin' role, /dashboard/* for any authenticated user. Redirect unauthorised users to /auth/login with a ?redirect param. Place the middleware in /middleware.ts.
Install and configure shadcn/ui in this Next.js project. Set the theme to dark mode by default. Add the following components: Button, Card, Input, Badge, Dialog, Dropdown Menu. Place them in /components/ui. Show me a demo page at /ui-preview that renders each component.
Build a kanban board with 4 columns: Backlog, In Progress, Review, Done. Cards should be draggable between columns using @dnd-kit/core. Each card shows: title, assignee avatar, priority badge, due date. Add a 'New Card' button per column. Store state in Zustand. Dark theme.
Set up a blog at /blog using MDX files in /content/blog. Each post has frontmatter: title, description, date, tags, ogImage. Build a /blog/[slug] page that renders MDX with syntax highlighting (rehype-pretty-code). Add a /blog index with cards sorted by date. Include reading time estimate.
Stepwise
Break the task into numbered steps. AI executes each one sequentially β no skipped logic
Create a Stripe webhook handler at /app/api/webhooks/stripe/route.ts. Handle events: checkout.session.completed, customer.subscription.updated, customer.subscription.deleted. Verify the webhook signature with STRIPE_WEBHOOK_SECRET. On checkout.completed, upsert user subscription in Supabase table 'subscriptions'.
Build a 4-step onboarding form at /app/onboarding/page.tsx using React Hook Form and Zod. Steps: (1) profile name + avatar upload, (2) use-case selection (checkboxes), (3) plan selection, (4) confirmation. Show a progress bar. On submit, call the /api/onboarding server action and redirect to /dashboard.
Integrate Stripe checkout into this app. Add a /pricing page with 3 plans. On 'Upgrade' click, call a Supabase edge function that creates a Stripe Checkout session and returns the URL. Redirect the user to Stripe. On success, handle the webhook to update 'subscriptions' table and redirect to /dashboard?upgrade=success.
Write a Supabase Edge Function at /functions/create-checkout that: (1) verifies the user JWT, (2) looks up their Stripe customer ID from 'profiles', (3) creates a Stripe Checkout session for the given price_id, (4) returns the session URL. Use Deno and the Stripe Deno SDK. Handle errors with proper HTTP status codes.
Plan a zero-downtime migration for this database change: [describe change β e.g. rename column, add non-null column, split table]. Use the expand-contract pattern. Write the migration SQL, a backfill script, and the cleanup migration. Identify the deployment sequence and any app-code changes needed at each step.
Add Google and GitHub OAuth to this Supabase auth setup. Step 1: Add provider buttons on the login page with correct icons. Step 2: On redirect back, check if this is a new user β if so, redirect to /onboarding. Step 3: If returning user, go to /dashboard. Step 4: Handle the auth callback at /auth/callback.
Add OpenGraph and Twitter Card metadata to every page in /app. Use Next.js generateMetadata() for dynamic pages (pass title, description, image). For static pages use the metadata export. Default OG image: /public/og-default.png. Ensure each page has a unique title and description.
Role Assignment
Tell AI who it is before it writes. Role shapes the vocabulary, priorities, and trade-offs it makes
You are a senior security engineer reviewing a pull request. Review the following code for vulnerabilities: SQL injection, XSS, CSRF, insecure direct object references, missing auth checks, exposed secrets, and error messages that leak internals. For each issue found, explain the risk level (critical/high/medium/low) and provide a fixed version.
You are a Next.js expert. I'm getting a React hydration mismatch error: "Text content did not match." Act as if you're pair programming with me. Inspect my layout.tsx and any components that render conditional content. Find the cause β likely a date, random value, or browser-only API β and fix it without adding 'use client' to the root layout.
You are a Supabase security expert. Write Row Level Security policies for the 'documents' table. Rules: owners can do anything, org members with 'editor' role can update, org members with 'viewer' role can only select, public documents (is_public=true) are readable by anyone. Use auth.uid() and a helper function get_user_org_role(). Test with SQL examples that verify each rule.
You are a senior software architect. I'm building a [describe your app]. Expected users: [N]. Key features: [list]. Budget: [$/mo]. Compare: (a) Next.js + Supabase + Vercel, (b) Remix + PlanetScale + Fly.io, (c) SvelteKit + Turso + Cloudflare. For each option, list pros, cons, cost, and scalability ceiling. Recommend one with explicit reasoning.
You are a React performance specialist. This page has a slow initial render (>2s TTI). Audit and identify: unnecessary re-renders, missing useMemo/useCallback, waterfall data fetching, large unoptimised images, and missing code splitting. Fix each issue with code. Prioritise by impact. Target <500ms TTI.
Constraint Anchoring
Explicit DONT's stop AI hallucinating alternative solutions or breaking existing code
Add infinite scroll to /app/tools/page.tsx. Use the Intersection Observer API. Fetch the next page from /api/tools?page=N&limit=20. Show a loading spinner at the bottom. Stop fetching when there are no more results. CONSTRAINTS: client-side only β no external library. Do not break existing filter/search functionality. Keep TypeScript strict mode.
Add rate limiting to all /app/api routes using Upstash Redis. Limit to 20 requests per minute per IP. Return 429 with Retry-After header when exceeded. CONSTRAINTS: create a reusable rateLimit() helper in /lib/rateLimit.ts. Do not change existing route logic β just wrap it. No new dependencies beyond @upstash/redis.
Refactor all /app/api/* route handlers into Next.js Server Actions. Move them to /app/actions/. Replace every fetch('/api/...') call in client components with direct server action calls. CONSTRAINTS: keep error handling identical. Do not change the UI components. Do not add new dependencies. Show the diff clearly.Analyse this Next.js project's bundle. Identify the top 5 largest dependencies. CONSTRAINTS: for each, suggest either (a) a lighter alternative, (b) dynamic import, or (c) tree-shaking fix. Implement only the changes that don't require API changes or UI rewrites. Show before/after sizes. Target 30% reduction.
Write a Supabase seed.sql file that populates: 3 test users (with hashed passwords via auth schema), 2 organizations, memberships linking users to orgs with different roles, 10 sample posts per org, and a free-tier subscription for each org. CONSTRAINTS: use CTEs to avoid hardcoding UUIDs. Must be safe to re-run (INSERT ... ON CONFLICT DO NOTHING). No external tooling β pure SQL.
Build a reusable <DataTable /> component using @tanstack/react-table v8. It should support: sortable columns, pagination (10/25/50 rows), global search, and row selection. Make it generic with TypeScript generics. CONSTRAINTS: add an export-to-CSV button. No extra UI library. Place it in /components/DataTable.tsx.
Chain-of-Thought
Ask AI to reason through the problem before implementing. Catches logic errors before they reach code
Look at my Supabase table definition in /lib/db/schema.ts. Think through each column's type, nullability, and constraints. Then generate Zod validation schemas for each table: insert schema, update schema, and select schema. Explain your reasoning for each type choice. Export them from /lib/validators/. Use strict mode and add JSDoc comments.
Think through the best full-text search approach for the 'posts' table, then implement it. Consider: tsvector column vs pg_trgm vs external search. Choose tsvector. Create a search_vector column combining title (weight A) and content (weight B). Add a GIN index. Write a trigger to keep it updated. Create a Supabase RPC function 'search_posts(query text)' returning ranked results. Show the Next.js integration.
Think through the data types in this Next.js app and what caching layer fits each one. Consider: Next.js full-route cache, React cache(), unstable_cache, Redis for shared state, CDN headers for static assets, and SWR/React Query on the client. For each data type, reason through the right cache layer and TTL. Show code examples for each recommendation.
Think through the failure modes of a daily billing cron job, then implement it safely. The job should: (1) mark subscriptions past their end_date as 'expired', (2) send expiry emails via an Edge Function, (3) log the run result to 'cron_logs'. Consider: idempotency, partial failures, email deduplication. Schedule it at 00:05 UTC using pg_cron. Show the full SQL and edge function code.
This Supabase query is slow (>500ms): [paste query]. Walk through the execution plan with EXPLAIN ANALYZE. Identify each bottleneck: missing indexes, N+1 patterns, unnecessary columns in SELECT *, missing foreign key indexes. For each issue found, explain why it's slow, then rewrite with the fix. Show before/after explain output.
Prompts That Break AI
5 anti-patterns that guarantee bad output β and how to fix them.
The Vague Request
AI doesn't know your stack, data shape, or what 'dashboard' means to you. You'll get a generic component that doesn't fit.
β Breaks AI
"Add a dashboard to my app"
β Works every time
"Add a dashboard at /dashboard showing: MRR (from 'subscriptions' table), active users (last 30d from 'events' table), and a line chart of signups by day. Use Recharts. Fetch data server-side via Supabase. Dark theme matching the existing design."
The Everything Prompt
AI will scaffold the happiest-path version of each feature with no regard for your existing code, schema, or preferences. Guaranteed to need a full rewrite.
β Breaks AI
"Build me a complete SaaS app with auth, payments, dashboard, onboarding, settings, and an API"
β Works every time
One feature per prompt. Sequence them. Start with scaffold β auth β schema β first feature β payments.
Context-Free Debug
AI guesses. It'll suggest generic fixes that may not apply to your setup β or worse, break working parts.
β Breaks AI
"Fix my Stripe webhook β it's not working"
β Works every time
"My Stripe webhook at /api/webhook returns 400. Here's the code: [paste]. Here's the error: 'Webhook signature verification failed'. My STRIPE_WEBHOOK_SECRET is set. What's wrong?"
Missing Output Spec
AI doesn't know if you want insert/update/select variants, where to put them, or how strict to be. You get one generic schema that may not match your use case.
β Breaks AI
"Generate Zod schemas for my database"
β Works every time
"Generate Zod schemas from /lib/db/schema.ts. For each table: insert schema (required fields only), update schema (all optional), select schema (full). Export from /lib/validators/[table].ts. Use strict mode."
No Constraint Guardrails
AI might suggest completely rewriting the query, adding an ORM, or changing your schema β when you just needed an index.
β Breaks AI
"Optimise this slow query"
β Works every time
"This query is slow. Add indexes to fix it. CONSTRAINTS: do not rewrite the query logic, do not add new tables, do not use any ORM. Show only the ALTER TABLE / CREATE INDEX statements."
Expand Your Knowledge β
These tactical guides pair perfectly with the engineering blueprints above.
Social Channel
Got a prompt that ships?
Submit your best engineered prompt to the community. If it makes the cutoff, we'll feature it.
Submit Blueprint