| name | supabase-orchestrator |
| description | 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. |
| cluster | supabase |
| version | 1.0.0 |
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).