Supabase Orchestrator
The single entry skill for Supabase work. It locates the task on the concern × surface
map and delegates to one of three specialist spokes. The cross-cutting model every Supabase
app shares — authorization lives in Postgres Row-Level Security, the keys/roles that
reach the database, and the schema-change → advisor → migration workflow — lives in
supabase-core; read it before designing tables, writing policies, or shipping a schema change.
Routing map (intent → spoke)
Build a feature end to end
- New full-stack app, or wiring Auth / Storage / Realtime / Edge Functions into one →
supabase-developer
- Designing the schema + RLS policies for a feature, client SDK integration (Next.js, React, Vue) →
supabase-developer
- Phase-by-phase implementation plan (setup → schema → auth → storage → realtime → functions → deploy) →
supabase-developer
Get the current API / product behavior right (verify, don't guess)
- "How does actually work today?" — signatures,
config.toml, conventions that drift between versions → supabase (it fetches live docs before implementing)
- Auth/session correctness:
getSession vs getUser vs getClaims, cookies, JWT, @supabase/ssr → supabase
- Security review of auth, RLS, views, storage, or privileged DB code →
supabase (runs the Supabase-specific security checklist; model in supabase-core)
- CLI or MCP-server usage, troubleshooting, version gotchas →
supabase
- Committing a schema change to a migration (advisors → review →
db pull) → supabase
Make the database fast / correct under load
- Slow query, missing/partial index, query-plan review →
supabase-postgres-best-practices
- Connection pooling / scaling, concurrency & locking, schema-design performance →
supabase-postgres-best-practices
- Monitoring & diagnostics, advanced Postgres features →
supabase-postgres-best-practices
Standard Operating Flow
- Classify the concern: feature-build (
supabase-developer), current-API correctness / security / CLI-MCP (supabase), or database performance (supabase-postgres-best-practices).
- If it touches RLS, auth claims, exposed schemas, views, storage policies, or keys, pull the model from
supabase-core first — these are interlocking security rules, not independent toggles.
- Delegate to the spoke(s). Multi-step asks fan out in lifecycle order (e.g. "build a feature and make it fast" →
supabase-developer for the schema + policies, then supabase-postgres-best-practices for indexes/pooling, then supabase to run advisors and cut the migration).
- Return: chosen spoke(s), any RLS/key/security-surface change implied, the target surface (Data API · Auth · Storage · Realtime · Edge Functions), and the next action.
Guardrails
See supabase-core. In short: RLS-by-default — enable Row-Level Security on every table in
an exposed schema (especially public) and write policies that match the real access model;
never use user-editable user_metadata claims for authorization (use app_metadata); never
expose the service_role/secret key in a public client; keep views security_invoker and
security definer functions out of exposed schemas. Supabase changes frequently — verify
against live docs before implementing, and verify your work with a test query after.
Don't quietly widen the data-access surface.
Loading spokes on demand
To keep CLI startup context lean, this cluster's spokes are not separately registered as skills — only this orchestrator and its *-core are enumerated. When you route to a spoke named above, load it on demand by reading its file:
~/.agents/skill-clusters/skills/<spoke-name>/SKILL.md (or skills/<spoke-name>/SKILL.md inside the skill-clusters repo).
1---2name: supabase-orchestrator3description: Route a Supabase task to the right skill among three specialists — full-stack feature build (Auth, Storage, Realtime, Edge Functions, RLS schema design), live-doc-verified product guidance with the security checklist and CLI/MCP workflow, and Postgres performance/query optimization. USE WHEN a user is building on, securing, or tuning Supabase but hasn't named whether the concern is feature-building, current-API correctness, or database performance.4---56# Supabase Orchestrator78The single entry skill for Supabase work. It locates the task on the **concern × surface**9map and delegates to one of three specialist spokes. The cross-cutting model every Supabase10app shares — **authorization lives in Postgres Row-Level Security**, the keys/roles that11reach the database, and the schema-change → advisor → migration workflow — lives in12`supabase-core`; read it before designing tables, writing policies, or shipping a schema change.1314## Routing map (intent → spoke)1516**Build a feature end to end**17- New full-stack app, or wiring Auth / Storage / Realtime / Edge Functions into one → `supabase-developer`18- Designing the schema + RLS policies for a feature, client SDK integration (Next.js, React, Vue) → `supabase-developer`19- Phase-by-phase implementation plan (setup → schema → auth → storage → realtime → functions → deploy) → `supabase-developer`2021**Get the current API / product behavior right (verify, don't guess)**22- "How does <Supabase feature> actually work *today*?" — signatures, `config.toml`, conventions that drift between versions → `supabase` *(it fetches live docs before implementing)*23- Auth/session correctness: `getSession` vs `getUser` vs `getClaims`, cookies, JWT, `@supabase/ssr` → `supabase`24- **Security review** of auth, RLS, views, storage, or privileged DB code → `supabase` *(runs the Supabase-specific security checklist; model in `supabase-core`)*25- CLI or MCP-server usage, troubleshooting, version gotchas → `supabase`26- Committing a schema change to a migration (advisors → review → `db pull`) → `supabase`2728**Make the database fast / correct under load**29- Slow query, missing/partial index, query-plan review → `supabase-postgres-best-practices`30- Connection pooling / scaling, concurrency & locking, schema-design performance → `supabase-postgres-best-practices`31- Monitoring & diagnostics, advanced Postgres features → `supabase-postgres-best-practices`3233## Standard Operating Flow34351. Classify the concern: **feature-build** (`supabase-developer`), **current-API correctness / security / CLI-MCP** (`supabase`), or **database performance** (`supabase-postgres-best-practices`).362. If it touches **RLS, auth claims, exposed schemas, views, storage policies, or keys**, pull the model from `supabase-core` first — these are interlocking security rules, not independent toggles.373. Delegate to the spoke(s). Multi-step asks fan out in lifecycle order (e.g. "build a feature and make it fast" → `supabase-developer` for the schema + policies, then `supabase-postgres-best-practices` for indexes/pooling, then `supabase` to run advisors and cut the migration).384. Return: chosen spoke(s), any RLS/key/security-surface change implied, the target surface (Data API · Auth · Storage · Realtime · Edge Functions), and the next action.3940## Guardrails4142See `supabase-core`. In short: **RLS-by-default** — enable Row-Level Security on every table in43an exposed schema (especially `public`) and write policies that match the real access model;44never use user-editable `user_metadata` claims for authorization (use `app_metadata`); never45expose the `service_role`/secret key in a public client; keep views `security_invoker` and46`security definer` functions out of exposed schemas. Supabase changes frequently — **verify47against live docs before implementing**, and **verify your work with a test query** after.48Don't quietly widen the data-access surface.4950## Loading spokes on demand5152To keep CLI startup context lean, this cluster's spokes are **not** separately registered as skills — only this orchestrator and its `*-core` are enumerated. When you route to a spoke named above, **load it on demand** by reading its file:5354`~/.agents/skill-clusters/skills/<spoke-name>/SKILL.md` (or `skills/<spoke-name>/SKILL.md` inside the skill-clusters repo).