- Home
- Skills
- Code Quality & Review
- Launch Gate — Security & Production-Readiness Audit
Works with the AI Agents you already use
Launch Gate — Security & Production-Readiness Audit
Pre-launch security & readiness audit for AI-built apps: leaked keys, Supabase RLS, Stripe webhooks, unprotected AI routes → 0–100 score, SHIP/FIX/HOLD verdict, exact fixes.
$9
Launch Gate — Security & Production-Readiness Audit
Example session with this skill installed
/launch-gate . — we launch Friday, Next.js + Supabase + Stripe + OpenAI, built mostly with Cursor.
- Read your context and instructions
- Compiled the launch gate
Stack detected: Next.js 15.1 (App Router) · Supabase (DB+Auth+Storage) · Stripe · OpenAI via Vercel AI SDK · Vercel
Modules loaded: 1, 2 (Supabase), 3, 4 (Stripe), 5 (AI), 6 · Files in scope: 212
LAUNCH GATE: HOLD — 41/100 — 2 critical · 3 high · 4 medium · 2 low · 3 to verify
Reason: HOLD — Stripe webhook accepts unsigned events; AI route has no auth
Do these three first
- LG-PAY-1 Critical — /api/stripe/webhook trusts req.json() without constructEvent → anyone can grant themselves Pro. Fix: raw body + signature + idempotency (patched handler below). 25 min
- LG-AI-1 Critical — /api/chat calls OpenAI with no session check and no rate limit → open bill. Fix: requireUser + Upstash limiter + credits decrement (code below). 40 min
- LG-DB-2 High — public.profiles policy
using (true)exposes every user's email & stripe_customer_id. Fix:auth.uid() = idpolicy (SQL below). 10 min
Findings — 1. Secrets & env
| LG-SEC-1 | High | .env.local was committed in 3f2a9c1 and later removed → rotate STRIPE_SECRET_KEY, OPENAI_API_KEY, SUPABASE_SERVICE_ROLE_KEY ... |
...
What passed
- RLS enabled on 9/9 tables; service_role used only in supabase/functions/*
- Checkout prices come from a server-side allow-list; client_reference_id binds sessions to users
- Env validated at boot with zod; separate Supabase projects for preview and prod
...
To verify (dashboard): Supabase → Auth → Settings → leaked-password protection; Stripe → Webhooks → endpoint is live-mode and subscribed to customer.subscription.* ...
Connects securely to your tools. The creator never sees your data.
About this skill
The problem
You built it with Lovable, Bolt, v0, Cursor or Claude Code. It works. You're about to put it in front of paying users — and you have a feeling: is the service_role key in the bundle? Did the agent ever write an RLS policy? Can someone POST a fake checkout.session.completed? What happens when a bot hits /api/chat 10,000 times tonight?
Independent scans in 2026 found that more than 9 in 10 AI-generated apps shipped with at least one critical vulnerability, and that around 1 in 10 indie launches exposed Supabase credentials in the frontend. Free security prompts tell your agent to "look for issues". They don't give you a verdict, and they don't tell you what to fix first.
What it does
Launch Gate turns your coding agent into the last reviewer before go-live. It detects your stack, runs an offline pre-scan (Python stdlib, no network, no env access), then reads the code module by module and returns:
- A 0–100 score and a binding verdict — SHIP / FIX FIRST / HOLD — computed by fixed rules, not vibes.
- Findings per file with severity, why it matters, the patched code, how to verify, and effort.
- "Do these three first" — the highest-impact fixes with time estimates.
- What passed — the controls that are fine, so you (or your client) can see the full picture.
- 12-point production-readiness checklist — monitoring, logging, backups, env separation, headers, dependencies, DB rails, cost controls, legal pages, AI disclosure.
- Dashboard checks it can't see from the repo, with exact click paths (Supabase backups/auth settings, Stripe webhook mode, provider spend caps).
- Optional client-facing report for freelancers and agencies (
--client-report).
Six modules, loaded only when they match your stack:
- Secrets & env — keys in source/bundles/git,
NEXT_PUBLIC_/VITE_secrets,service_roleon the client, secrets in logs and error responses, rotation checklist. - Database access — Supabase RLS (tables, policies, storage, views, RPC, realtime) with read-only SQL you can paste; Firebase Rules; Convex; Prisma/Drizzle IDOR and mass assignment; Mongo operator injection.
- Auth & sessions — server-side user resolution, scoped queries, Server Actions, middleware-only auth and CVE-2025-29927, cron/internal routes, cookies; Supabase Auth / Clerk / Auth.js specifics.
- Payments & webhooks — Stripe signature on raw body, idempotency, entitlements from events not success pages, server-owned prices, subscription lifecycle; Lemon Squeezy, Paddle, Polar, Svix.
- API & AI abuse — unauthenticated or unlimited AI routes ("cost bombs"), per-user quotas, rate limits,
max_tokens, model allow-lists, tool-scoped agents, prompt-injection paths, SSRF, uploads, XSS, CORS. - Production readiness — the 12-point checklist with copy-paste snippets (security headers, fail-fast env schema, health endpoint, AI disclosure copy).
Stacks covered: Next.js (App/Pages), Remix, Nuxt, SvelteKit, Vite SPAs, Express/Fastify/Hono, FastAPI/Django · Supabase, Firebase, Convex, Prisma, Drizzle, Mongo · Supabase Auth, Clerk, Auth.js, Firebase Auth · Stripe, Lemon Squeezy, Paddle, Polar · OpenAI, Anthropic, Gemini, Vercel AI SDK and more · Vercel, Netlify, Cloudflare, Fly, Railway, Docker.
Why this beats prompting it yourself
- Deterministic verdict. Severity definitions and the score formula are written down; two runs on the same code give the same answer. A prompt gives you a different essay every time.
- It knows the 2026 failure modes. Stripe webhooks parsed with
req.json(), success pages that upgrade accounts,dangerouslyAllowBrowser: true, RLSusing (true), the Next.js middleware bypass, AI routes with no quota — each has a check, a severity and a fix template. - Offline pre-scan that respects secrets. Decodes Supabase JWTs to tell
anonfromservice_rolewithout ever printing the key; masks everything after 6 characters. - Read-only by design. Nothing is changed unless you say "apply the fixes", one diff at a time.
- Client mode. Agencies get an executive summary with risk → impact → remedy → effort, and a technical appendix.
Use cases
- Solo founder launching a Lovable/Bolt/v0 SaaS this week.
- Freelancer asked to "just check" a client's vibe-coded app before it goes live — bill the report.
- Agency adding a security gate to every delivery.
- Team migrating a prototype to production: run it in CI-like fashion before each release.
- Anyone who just added payments or an AI feature to an existing app.
Known limitations
- Static review of the repository; dashboard settings and live infrastructure are reported as VERIFY items with click paths.
- Tables created in a BaaS dashboard rather than in migrations are invisible to the scanner — the skill hands you SQL to check them.
- Not a penetration test of a live URL; not a substitute for one if you process regulated data.
- Severity rules are strict on purpose: HOLD means "fix before launch", not "bad code".
How to use
Skills on Agensi run inside your AI agent. Copy the prompt, paste it into your agent, and it connects to Agensi and installs this skill for you. If a payment is needed, your agent shows it to you first.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill passes our trust checks below.
Security scanned
Passed our 8-point scan before listing
Fresh listing
Recently published to Agensi
Money-back guarantee
Doesn't do what its page promises? You get your money back.
Trust & safety
Security scanned
Verified clean 3 days ago
- Passed all security checks, Safe to install
Requires