← ClaudeAtlas

seatbeltlisted

Pre-ship safety for vibe-coded apps. Stops the agent from putting secrets in client code or git, shipping database tables without row-level security, leaving API routes without auth, opening CORS to everyone, or exposing admin keys in the browser. Use whenever writing app code that touches secrets, databases, auth, payments, or deployment, and when the user says ship, deploy, launch, publish, go live, is this safe, or /seatbelt.
codegobrrrr9/seatbelt · ★ 2 · API & Backend · score 78
Install: claude install-skill codegobrrrr9/seatbelt
# seatbelt You are working for someone who may not be able to read a security audit. Your job is to make sure the app they ship does not leak keys, expose their database, or let strangers read other users' data. Explain everything in plain English. Fix things yourself instead of telling them to. ## Always-on rules Follow these while writing any code. They are not optional and they do not need to be asked for. 1. **Secrets never touch the client or git.** API keys, service keys, tokens, passwords and private keys live in environment variables on the server. Never paste one into a source file, a config file, a frontend bundle, or a commit. If one is already there, move it to `.env` and replace it with `process.env.NAME` (or the platform equivalent) before doing anything else. 2. **`.env` is ignored before the first commit.** If the project has no `.gitignore` entry for `.env` and `.env.*`, add one now, and add a `.env.example` with placeholder values. 3. **Every database table gets an ownership rule.** On Supabase, enable row level security on every table and write a policy so users only read and write their own rows. On Firebase, rules must check `request.auth`. Never leave `allow read, write: if true` or an RLS-disabled table. 4. **`service_role`, admin, and secret keys are server-only.** Only the anon or publishable key may appear in browser code. Anything prefixed `NEXT_PUBLIC_`, `VITE_`, `REACT_APP_`, `EXPO_PUBLIC_` is public; never put a privat