Home › Rules › Supabase app

Supabase app rules: AGENTS.md, CLAUDE.md & Cursor rules

Free to copy. File formats checked against the official docs on Oct 19, 2026 (sources).

Supabase is safe when Row Level Security is on and the secret key stays secret. It's wide open when either slips. These rules make both non-negotiable.

Stack these rules assume: Supabase (Postgres, Auth, Storage), any front end. Different stack? Customize it in the generator.

Want the full step-by-step kit?

MVP Spec-to-Build Pack ($7): A fill-in 1-page spec, a landing page prompt, a 7-prompt build sequence in the right order, a "did I leak user data?" checklist, and cheap fix-it prompts.

Get the kit for $7 on Gumroad → See what's inside

or get all 5 kits for $25 (save $14) →

One markdown file, instant download. 7-day refund, no questions asked.

Quick start

  1. Copy the AGENTS.md below into your project's root folder.
  2. Fill in the three [bracketed] lines under "Project". Delete any rule that doesn't fit.
  3. Start your first chat with: "Read AGENTS.md and follow it for this whole session."

AGENTS.md (works across tools)

Read by OpenAI Codex, Cursor, GitHub Copilot, Claude Code (when there's no CLAUDE.md) and many other agents.

AGENTS.md
# AGENTS.md: Supabase app

Instructions for AI coding agents working on this project. Replace anything in [brackets].

## Project
- What it is: [one sentence: what you are building and who it is for]
- Stack: Supabase (Postgres, Auth, Storage), any front end
- Version 1 only needs to: [the ONE thing it must do]

## Commands
- Start the local stack (needs Docker): `supabase start`
- Create a migration: `supabase migration new <name>`
- Apply migrations to the linked project: `supabase db push`

## Project rules
- Turn on Row Level Security for every table in the same migration that creates it, with explicit policies.
- The service_role / secret key is server-only (backend, edge functions, scripts). The front end only ever uses the anon / publishable key.
- Every schema change is a migration file. Never change the production database by hand or with ad-hoc SQL unless I ask.
- Ask before any migration that drops or renames a column or table.
- Storage buckets are private by default. Ask before making one public.
- When you add a query, say which RLS policy allows it.

## How to work
- Do one task per request. If my request is really several tasks, list them and do only the first.
- Before writing code, give a 3-line plan: what you'll change, which files, and how I'll test it.
- Make the smallest change that works. Don't refactor, rename, or reformat code I didn't ask about.
- Ask before adding a dependency, deleting or moving files, changing the data/database structure, or touching more than 3 files.
- If you're not sure a library, API, or setting exists in the version we use, say so and check the installed package or the docs instead of guessing.
- Never say something works unless you ran it or I confirmed it. Report errors exactly.
- Secrets (API keys, tokens, passwords) live only in environment variables or a .env file listed in .gitignore. Never print, hardcode, or commit them.
- Never run destructive commands (rm -rf, git reset --hard, force-push, dropping tables) without asking first.

## Finish every task with
1. What changed (list the files).
2. How to run or test it in under a minute, and what I should see.
3. A suggested git commit message.

Want the full step-by-step kit?

MVP Spec-to-Build Pack ($7): A fill-in 1-page spec, a landing page prompt, a 7-prompt build sequence in the right order, a "did I leak user data?" checklist, and cheap fix-it prompts.

Get the kit for $7 on Gumroad → See what's inside

or get all 5 kits for $25 (save $14) →

One markdown file, instant download. 7-day refund, no questions asked.

Why each rule exists

Use it as CLAUDE.md (Claude Code)

Pick one:

  1. Do nothing. Current Claude Code versions read AGENTS.md when the project has no CLAUDE.md. Run /memory in a session to check it loaded.
  2. Import it (best if you want Claude-only extras, or you're on an older Claude Code). Create CLAUDE.md next to AGENTS.md:
CLAUDE.md (imports AGENTS.md)
@AGENTS.md

## Claude Code
- Use plan mode before any change that touches more than 3 files.
  1. Claude only? Save the same AGENTS.md text as CLAUDE.md instead. Don't keep two separate copies; they drift apart.

Heads-up: if a project has both files and CLAUDE.md doesn't import AGENTS.md, Claude Code reads only CLAUDE.md by default. More in AGENTS.md vs CLAUDE.md.

Use it as Cursor rules (.cursor/rules/*.mdc)

Cursor reads AGENTS.md too, so the file above already works. If you prefer Cursor's own Project Rules, split it into two .mdc files. The .mdc extension and frontmatter are required; Cursor ignores plain .md files in .cursor/rules.

.cursor/rules/core.mdc
---
description: Project overview and working rules for Supabase app
alwaysApply: true
---

# Supabase app

Instructions for AI coding agents working on this project. Replace anything in [brackets].

## Project
- What it is: [one sentence: what you are building and who it is for]
- Stack: Supabase (Postgres, Auth, Storage), any front end
- Version 1 only needs to: [the ONE thing it must do]

## Commands
- Start the local stack (needs Docker): `supabase start`
- Create a migration: `supabase migration new <name>`
- Apply migrations to the linked project: `supabase db push`

## How to work
- Do one task per request. If my request is really several tasks, list them and do only the first.
- Before writing code, give a 3-line plan: what you'll change, which files, and how I'll test it.
- Make the smallest change that works. Don't refactor, rename, or reformat code I didn't ask about.
- Ask before adding a dependency, deleting or moving files, changing the data/database structure, or touching more than 3 files.
- If you're not sure a library, API, or setting exists in the version we use, say so and check the installed package or the docs instead of guessing.
- Never say something works unless you ran it or I confirmed it. Report errors exactly.
- Secrets (API keys, tokens, passwords) live only in environment variables or a .env file listed in .gitignore. Never print, hardcode, or commit them.
- Never run destructive commands (rm -rf, git reset --hard, force-push, dropping tables) without asking first.

## Finish every task with
1. What changed (list the files).
2. How to run or test it in under a minute, and what I should see.
3. A suggested git commit message.

The project rules only attach when a matching file is in the chat (globs with alwaysApply: false). Want them on all the time? Change it to alwaysApply: true.

.cursor/rules/supabase-app.mdc
---
globs: supabase/**/*.sql, src/**/*.ts, src/**/*.tsx
alwaysApply: false
---

# Project rules: Supabase app

- Turn on Row Level Security for every table in the same migration that creates it, with explicit policies.
- The service_role / secret key is server-only (backend, edge functions, scripts). The front end only ever uses the anon / publishable key.
- Every schema change is a migration file. Never change the production database by hand or with ad-hoc SQL unless I ask.
- Ask before any migration that drops or renames a column or table.
- Storage buckets are private by default. Ask before making one public.
- When you add a query, say which RLS policy allows it.

Use either AGENTS.md or these .mdc files, not both, so you don't send the same rules twice. See Cursor rules vs AGENTS.md.

Use it in Lovable or Bolt

Browser builders don't read files from your computer, so paste the rules into the project's persistent instructions:

This version drops the Commands section, since the builder runs the project for you.

Project Knowledge (paste into Lovable or Bolt)
# Project rules: Supabase app

Instructions for AI coding agents working on this project. Replace anything in [brackets].

## Project
- What it is: [one sentence: what you are building and who it is for]
- Stack: Supabase (Postgres, Auth, Storage), any front end
- Version 1 only needs to: [the ONE thing it must do]

## Project rules
- Turn on Row Level Security for every table in the same migration that creates it, with explicit policies.
- The service_role / secret key is server-only (backend, edge functions, scripts). The front end only ever uses the anon / publishable key.
- Every schema change is a migration file. Never change the production database by hand or with ad-hoc SQL unless I ask.
- Ask before any migration that drops or renames a column or table.
- Storage buckets are private by default. Ask before making one public.
- When you add a query, say which RLS policy allows it.

## How to work
- Do one task per request. If my request is really several tasks, list them and do only the first.
- Before writing code, give a 3-line plan: what you'll change, which files, and how I'll test it.
- Make the smallest change that works. Don't refactor, rename, or reformat code I didn't ask about.
- Ask before adding a dependency, deleting or moving files, changing the data/database structure, or touching more than 3 files.
- If you're not sure a library, API, or setting exists in the version we use, say so and check the installed package or the docs instead of guessing.
- Never say something works unless you ran it or I confirmed it. Report errors exactly.
- Secrets (API keys, tokens, passwords) live only in environment variables or a .env file listed in .gitignore. Never print, hardcode, or commit them.
- Never run destructive commands (rm -rf, git reset --hard, force-push, dropping tables) without asking first.

## Finish every task with
1. What changed (list the files).
2. How to run or test it in under a minute, and what I should see.
3. A suggested git commit message.

Building this in a browser app builder? These rules work as Project Knowledge in both. Try Lovable · Try Bolt

Disclosure: the Bolt link is an affiliate (referral) link. If you sign up or buy through it, VibeKits may earn a commission at no extra cost to you. The Lovable link is a plain link. It never changes our pick.

Related

Get the free Starter Rules, emailed instantly

  • A copy-paste rules file to save as AGENTS.md or CLAUDE.md, or paste into Lovable, Bolt, v0 or Replit: small steps, ask before risky changes, no fake "it works", secrets kept out of code.
  • A kickoff prompt that makes your AI ask up to 3 questions and plan 5 to 8 small, testable steps before it writes any code.
  • The habit that saves projects: work, test, commit.

After that, an occasional email when we publish a new guide or rules file.

Free. No spam. Unsubscribe anytime. See our privacy note.