Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ndisisnd/cook --skill supabasegit clone --depth 1 https://github.com/ndisisnd/cookWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ndisisnd/cook/supabase)<a href="https://agentmods.dev/skills/ndisisnd/cook/supabase"><img src="https://agentmods.dev/badge/skills/ndisisnd/cook/supabase/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ndisisnd/cook/supabase"><img src="https://agentmods.dev/badge/skills/ndisisnd/cook/supabase.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00071 | $0.02089 |
| Opus 5.5 | $0.00028 | $0.00836 |
| Sonnet 5.5 | $0.00014 | $0.00418 |
| Haiku 4.5 | $0.00007 | $0.00209 |
Grade A, and why
supabase scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 153 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Supabase Standards
Supabase is Postgres underneath, so this domain co-loads with database (generic
Postgres) and the auth / security concerns. It owns only the platform
contract: RLS, the key boundary, Postgres/Edge function security, and the CLI
migration workflow. Generic Postgres rules (types, constraints, indexing-in-general,
expand-contract, N+1, transactions) live in database; auth flows (JWT verification,
OAuth, password reset) live in global/refs/auth.md — this domain links to them
rather than restating them.
Priority: P0 — Row-Level Security
- RLS is OFF by default. Every table reachable through the API/PostgREST must
ENABLE ROW LEVEL SECURITYin the same migration that creates it. A table left unguarded behind a publicanonkey is a full data leak. Signal: acreate tableinsupabase/migrationswith no matchingalter table … enable row level security. - RLS-on denies by default — write an explicit policy per operation
(
select/insert/update/delete). Don't rely on onefor allpolicy where operations need different predicates. Signal: a table with RLS enabled and no policy, or a blanketfor all using (true). - Pair every
UPDATE/DELETEpolicy with aSELECTpolicy. Postgres must read the existing row to evaluate theUSINGclause; withoutSELECTthe row is invisible and the write silently affects nothing. Signal: anupdate/deletepolicy on a table with noselectpolicy. - Use
WITH CHECKonINSERT/UPDATEso a user can't write a row they couldn't own or read (e.g. inserting someone else'suser_id). Signal: aninsert/updatepolicy withusingbut nowith check. - Wrap auth calls as
(select auth.uid())/(select auth.jwt())in policy predicates so the planner caches the result per-statement instead of re-evaluating per row. Signal: a bareauth.uid()in a policy on a table that gets scanned. - Never base a policy on
auth.jwt() -> 'user_metadata'—user_metadatais editable by the authenticated user. Useapp_metadata(server-controlled) or a roles table joined via asecurity definerhelper. Signal: a policy readinguser_metadatafor an authorization decision. - Index every column referenced in an RLS predicate (
user_id,tenant_id, …). RLS turns these into per-query filters; an unindexed predicate column is a full scan on every request. (Sharpens thedatabaseindexing rule.) Signal: an RLS predicate column absent from any index.
What ships with it
7 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 153 lines · 71 tokens per session scan A 2b0789465af2
supabase is a skill published in the GitHub repository ndisisnd/cook (2 stars, last pushed 2d ago), licensed MIT. It adds 71 tokens to every session and 2,089 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
sc-supabase
(STUB / NOT IMPLEMENTED YET) Supabase backend as an alternative to self-hosted Convex. Create project, apply migrations from supabase/migrations, deploy Edge Functions, generate types. For projects where Postgres + Row-Level-Security is a better fit than Convex's reactive query model.
supabase-cli
CLI automation for Supabase development workflows. Provides scripts for migrations, Edge Functions, secrets management, type generation, and SQL execution with safety checks.
devlab-dao-sql-compat
A workflow for finding and fixing SQL dialect differences in the data-access layer of an application. SQL is the language used to query databases, and Oracle, PostgreSQL, and MySQL each have variations; the workflow supports MyBatis, JPA, MyBatis-Plus, and SQLAlchemy.
backend-setup-stack
Bootstraps a local Node.js backend development stack with Docker, PostgreSQL, and an ORM (Prisma or Sequelize). Use this skill whenever the user wants to: initialize a new backend project, set up a Dockerized database locally, wire up an ORM with automated migrations, scaffold an Express server with a health endpoint…
backend-setup-stack
Use this skill when the user wants to initialize a local development environment using Docker, PostgreSQL, an npm server, and an ORM (Prisma/Sequelize) with automated migration workflows, including detection of existing migration metadata and database readiness checks.
centia-provisioning
Provisioning and schema lifecycle guidance for Centia BaaS, including schema/table/column/index/constraint operations, migration structure, SQL API limits, and destructive-change safety.