From 4d497b64982b9cbc8eafc2f267bf6f21b60a8e30 Mon Sep 17 00:00:00 2001 From: Pedro Rodrigues <44656907+Rodriguespn@users.noreply.github.com> Date: Thu, 9 Apr 2026 01:52:22 +0100 Subject: [PATCH] feat(blog): add Supabase Agent Skills blog post (#44641) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Docs update — new blog post. ## What is the current behavior? No blog post exists for the Supabase Agent Skills release. ## What is the new behavior? Adds a new blog post: **"AI Agents Know About Supabase. They Don't Always Use It Right."** The post covers: - What Supabase Agent Skills teaches (docs access, security checklist, tooling, schema management) - How the skill was designed (why everything critical lives in `SKILL.md`) - How we test it (eval framework, LLM judge, results table across Claude and GPT models) - Lessons for skill authors - Installation instructions for `npx skills add` and Claude Code plugin ## Summary by CodeRabbit * **Documentation** * Published a new blog post introducing Supabase Agent Skills: installation options, core skill areas (docs access, security/RLS safeguards, tooling/workflow, schema-management guidance), testing and evaluation methodology with example results, and links for getting started and reporting issues. * **Chores** * Updated app build configuration to enforce consistent React module resolution, improving build stability across environments. --------- Co-authored-by: Claude Sonnet 4.6 (1M context) --- .../2026-04-07-supabase-agent-skills.mdx | 208 ++++++++++++++++++ .../2026-04-07-supabase-agent-skills/og.png | Bin 0 -> 46386 bytes .../thumb.png | Bin 0 -> 30370 bytes 3 files changed, 208 insertions(+) create mode 100644 apps/www/_blog/2026-04-07-supabase-agent-skills.mdx create mode 100644 apps/www/public/images/blog/2026-04-07-supabase-agent-skills/og.png create mode 100644 apps/www/public/images/blog/2026-04-07-supabase-agent-skills/thumb.png diff --git a/apps/www/_blog/2026-04-07-supabase-agent-skills.mdx b/apps/www/_blog/2026-04-07-supabase-agent-skills.mdx new file mode 100644 index 00000000000..10c6ac950d5 --- /dev/null +++ b/apps/www/_blog/2026-04-07-supabase-agent-skills.mdx @@ -0,0 +1,208 @@ +--- +title: "AI Agents Know About Supabase. They Don't Always Use It Right." +description: 'Introducing Supabase Agent Skills: an open-source set of instructions that teach AI coding agents how to build on Supabase correctly.' +author: pedro_rodrigues +imgSocial: 2026-04-07-supabase-agent-skills/og.png +imgThumb: 2026-04-07-supabase-agent-skills/thumb.png +categories: + - product +tags: + - ai + - skills + - security + - postgres +date: '2026-04-09' +toc_depth: 2 +--- + +Today we're releasing Supabase Agent Skills, an open-source set of instructions that teach AI coding agents how to build on Supabase correctly. If you use Claude Code, Codex, GitHub Copilot, Cursor, or any of the agents that support [Agent Skills Open Standard](https://agentskills.io/), you can install the skill in one command and get better results on every Supabase task. + +AI agents already know a lot about Supabase. We hit [100k stars on GitHub](https://supabase.com/blog/100000-github-stars), and most models have seen plenty of Supabase code in their training data. But knowing about Supabase and using it correctly are two different things. We kept seeing agents skip RLS policies on exposed schemas, hallucinate CLI commands that don't exist (like `supabase db execute`), create views without `security_invoker = true` (which silently bypasses RLS), and ignore the docs entirely, relying on training data that may be months out of date. + +This is a follow-up to our earlier work on [Postgres best practices for AI agents](https://supabase.com/blog/postgres-best-practices-for-ai-agents). That release focused on general Postgres patterns. Supabase Agent Skills goes further: it covers all Supabase products, encodes security requirements inline, and teaches agents to check the docs before implementing anything. + +Install it with one command: + +```bash +npx skills add supabase/agent-skills +``` + +Or install as a Claude Code plugin: + +```bash +# 1. Install supabase/agent-skill marketplace +claude plugin marketplace add supabase/agent-skills + +# 2. Install the supabase plugin +claude plugin install supabase@supabase-agent-skills +``` + +## What the skill teaches + +The skill covers four areas: documentation access, security, tooling workflow, and schema management. Everything critical lives directly inside `SKILL.md`, about 100 lines total. We put it there on purpose. + +### Docs and product knowledge + +The core principle: verify against current docs before implementing. + +Supabase moves fast. Config options, product documentation and API conventions are examples of things that will change over time. An agent working from training data alone is essentially working from a snapshot — one that could be months or years old. + +The skill instructs agents to look up documentation before writing any Supabase-specific code, using three methods in priority order: + +1. **MCP `search_docs` tool**: returns relevant snippets ordered by relevance +2. **Fetch docs as markdown**: use bash tools like `curl` to fetch Supabase docs as markdown files. Supabase docs pages can be fetched as markdown by appending `.md` to its URL +3. **Native web search tools**: freely search the web whenever the other two options are not available + +The skill doesn't tell agents what the current API looks like. It tells them how to find out. This keeps the skill small, maintainable, and always accurate — the docs are the source of truth, and they're already maintained. There's no value in replicating them inside the skill. + +### Security and RLS + +Supabase has specific security configurations that the agent might miss. These instructions are described in detail in our documentation. The skill instructs agents to check the Supabase docs before implementing anything, but agents are lazy about it: even with `search_docs` available, they can choose to keep it offline and go with what they already know from training data rather than making an extra round-trip. That means security configurations and patterns might get missed even when the correct guidance exists in the docs. + +To ensure agents never skip these, the skill includes an inline checklist of security requirements that apply to every Supabase project. These aren't pulled from docs on demand — they're loaded with the skill, so the agent has no excuse to miss them: + +- **Never use `user_metadata` for authorization.** It's user-editable. Use `app_metadata` instead. +- **Never expose the `service_role` key on the frontend.** In Next.js, any `NEXT_PUBLIC_` env var is sent to the browser. +- **Views bypass RLS by default.** Use `security_invoker = true`. +- **UPDATE requires a SELECT policy.** Without one, updates silently return 0 rows. No error, just no change. +- **Storage upsert requires INSERT + SELECT + UPDATE.** Granting only INSERT makes file replacement silently fail. +- **Deleting a user doesn't invalidate their JWT.** You must revoke sessions first. + +We originally put security guidance in separate reference files. Agents sometimes skipped them. So we moved everything critical into `SKILL.md` itself, where the agent reads it the moment the skill loads. + +### Tooling + +Agents have two main ways to work with Supabase: through the Supabase MCP server, or through the Supabase CLI when they have access to a bash environment. + +For humans, the command line is still the most common way to interact with a service from the terminal. CLIs expose functionality through shell commands, and well-designed commands typically document themselves through the `--help` flag. That makes the interface discoverable and self-documenting. For an agent, this is especially useful: instead of guessing how a command works, it can inspect `--help`, follow the documented options, and use that information to troubleshoot when something goes wrong. + +MCP, by contrast, is designed specifically for agents. An MCP server exposes a service through structured tools that an agent can call directly, without needing terminal access. This makes the interface more natural for agentic workflows. However, an MCP server still has to be configured by a human before the agent can use it. To bridge that gap, the skill includes a short troubleshooting guide that helps the agent assist with common Supabase MCP server connection issues. + +In practice, the skill provides targeted guidance for both interfaces: + +- **CLI**: always discover commands through `--help`; never guess. The skill also documents known gotchas, such as the `supabase db query` command requiring CLI version 2.79.0 or later. +- **MCP server**: step-by-step guidance for diagnosing and resolving connection issues. + +### Schema management + +Agents are becoming increasingly autonomous, and we're growing more comfortable giving them direct access to our databases—whether to ship new features or troubleshoot issues. For example, Replit has previously described how its agents autonomously [manage database schema](https://blog.replit.com/production-databases-automated-migrations) changes in development environments. + +Supabase enables agents to access databases through both the MCP server and the CLI. While this gives agents the necessary access, it doesn't by itself provide a clear or efficient workflow for managing schema changes. + +To address this, the skill introduces an opinionated approach to schema management. Instead of relying on migration-based workflows for every change, agents are encouraged to modify the schema directly using the `execute_sql` MCP tool or the `supabase db query` CLI command. This avoids creating a new migration entry for every DDL operation and enables faster iteration during development. + +Once the agent determines that the schema has stabilized, it should run the [Supabase database advisors](https://supabase.com/docs/guides/database/database-advisors) to catch potential security or performance issues early. Only after passing these checks should the agent formalize the changes by committing a migration. + + + +We strongly discourage connecting the Supabase MCP server to your production database. This workflow was designed to run against a local or staging database. + + + +## How we designed it + +We tried different formats and reference file structures before landing on the current approach. + +We learned that agents are lazy about reading reference files. When they do read one, they tend not to read more. Problems that require knowledge from multiple areas get missed. + +So we moved all critical information into `SKILL.md` itself. About 100 lines. The agent gets everything it needs the moment the skill loads. Only one reference file remains: `skill-feedback.md`, a meta-workflow for users to report issues on the [GitHub repo](https://github.com/supabase/agent-skills). + +The skill teaches agents _how_ to find current information, not _what_ the current information is. This keeps the skill maintainable and always accurate. + +## How we test it + +We followed OpenAI's [framework for evaluating agent skills](https://developers.openai.com/blog/eval-skills): define success criteria, manually test, then advance to automated evaluation. As the skill matured, we moved to testing it systematically with an internal tool that runs evaluations automatically across agents and conditions. + +### What we measure + +- **Skill loading**: does the agent discover and load the skill? This tests whether the name and description work as triggers. +- **Task completeness**: does the agent finish the task? An LLM judge reviews the full transcript and generated files, separating requirements into primary (the core deliverable) and secondary (verification steps, workflow compliance). The judge checks for concrete evidence: actual tool calls, SQL statements, and valid outputs. Not just the agent saying it will do something. + +For example, in Postgres, views execute as their creator by default, which means they can bypass Row Level Security (RLS) policies defined on the underlying tables. This can lead to subtle security issues if a view is exposed without the correct configuration. + +In this case, the agent is expected to create the view with `security_invoker = true` so that it respects the RLS policies of the querying user. + +A typical prompt for the agent might look like: + +> Create a view called `reports_view` that returns all reports from the reports table. + +When evaluating the agent's performance in this scenario, we use an LLM as a judge to determine whether the task was completed according to the defined success criteria. In this case, the success criteria is that the agent creates the view with `security_invoker = true`. + +```sql +-- expected result +create view public.reports_view +with (security_invoker = true) +as +select + id, + title, + created_at +from public.reports; +``` + +### Test conditions + +To understand the performance gains from using the skill—compared to relying only on MCP or the agent's native capabilities—we ran a series of experiments across different scenarios. + +Each scenario was evaluated under three conditions to isolate what the skill actually contributes: + +- **Baseline**: no tools and no skill (the agent relies purely on its pretrained knowledge) +- **MCP only**: the agent has access to Supabase MCP tools, but no skill +- **MCP + Skill**: the agent has both MCP tools and the skill loaded + +We ran these experiments across models from Anthropic (Claude) and OpenAI (GPT) to compare performance across different agent architectures. + +Here's what we observed: + +| Agent | Baseline | MCP only | MCP + Skill | +| ------------------------ | -------- | -------- | ----------- | +| Claude Code (Opus 4.6) | 58% | 50% | **67%** | +| Claude Code (Sonnet 4.6) | 46% | 58% | **71%** | +| Codex (GPT-5.4) | 71% | 71% | **88%** | +| Codex (GPT-5.4 Mini) | 42% | 63% | **71%** | + +_Scored by an LLM judge on Braintrust across six Supabase scenarios per condition. These are early results with a small sample size, but they show consistent improvement across all agents and models tested._ + +### What we learned + +Three things stood out: + +1. **MCP alone is not enough.** Without workflows or guidelines, agents guess at how to combine tools. +2. **Agents default to training data.** Even with `search_docs` available, the MCP-only agent never called it. The skill steers agents to verify against current docs first. +3. **The bottleneck is context, not capability.** Every model applied `security_invoker` correctly when the skill was available. They knew how to implement it. They just didn't know when. + +## If you're writing a skill + +If you're building skills for your own product, here's what we learned: + +- **Fetch the docs, don't replicate them.** Your docs already exist and are maintained. Teach agents how to find them. +- **Keep the essential inside `SKILL.md`.** Agents are lazy about reading reference files. Put critical knowledge where they can't miss it. +- **Be opinionated.** You know your product best. The skill encodes the judgment calls that training data can't. +- **Test across agents and conditions.** What helps one model might not help another. Evals keep you honest. +- **Start simple, expand later.** This is `v0.1.0`. We'll iterate based on eval results and community feedback. + +## Get started + +Install all skills: + +```bash +npx skills add supabase/agent-skills +``` + +Or install a specific skill: + +```bash +npx skills add supabase/agent-skills --skill supabase +npx skills add supabase/agent-skills --skill supabase-postgres-best-practices +``` + +Claude Code users can also install as a plugin: + +```bash +claude plugin marketplace add supabase/agent-skills +``` + +- [Supabase Agent Skills Docs](https://supabase.com/docs/guides/getting-started/ai-skills) +- [GitHub repo](https://github.com/supabase/agent-skills) + +Found something the skill should cover? [Open an issue](https://github.com/supabase/agent-skills/issues) on the repo. We read each one. diff --git a/apps/www/public/images/blog/2026-04-07-supabase-agent-skills/og.png b/apps/www/public/images/blog/2026-04-07-supabase-agent-skills/og.png new file mode 100644 index 0000000000000000000000000000000000000000..1f229e0ec27756aa1f8e554502dbc6d3f8caddfb GIT binary patch literal 46386 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 VY~S(UQz5Uqf3L%Lr8Zs{{|98E1wa4* literal 0 HcmV?d00001 diff --git a/apps/www/public/images/blog/2026-04-07-supabase-agent-skills/thumb.png b/apps/www/public/images/blog/2026-04-07-supabase-agent-skills/thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..b45ccb127b31fe753359491b29e76547bb3b93e8 GIT binary patch literal 30370 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 literal 0 HcmV?d00001