Help us improve
Share bugs, ideas, or general feedback.
From supabase-tools
Guides Supabase database usage: MCP tools for tables/schemas/SQL queries, auth flows, RLS policies, relationships, filters, pagination best practices.
npx claudepluginhub fcakyon/claude-codex-settingsHow this skill is triggered — by the user, by Claude, or both
Slash command
/supabase-tools:supabase-usageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Patterns for working with Supabase databases including Auth, Row Level Security, table relationships, and query best practices.
Provides context and instructions for working with Supabase: database, auth, edge functions, realtime, storage, vectors, cron, queues, client libraries, SSR integrations, CLI, MCP server, schema changes, migrations, security audits, and Postgres extensions.
Automates Supabase database queries, table CRUD, schema inspection, project management, storage, edge functions, and SQL execution via Rube MCP Composio toolkit.
Automates Supabase database queries, table schemas, CRUD operations, project management, storage, edge functions, and SQL execution via Rube MCP (Composio). Use for admin tasks requiring current schemas.
Share bugs, ideas, or general feedback.
Patterns for working with Supabase databases including Auth, Row Level Security, table relationships, and query best practices.
Available tools for database exploration:
mcp__supabase__list_tables - List all tables in the databasemcp__supabase__get_table_schema - Get schema for a specific tablemcp__supabase__execute_sql - Run read-only SQL queriesWorkflow:
list_tables to understand database structureget_table_schema to inspect columns and typesexecute_sql for custom queries (read-only)(select auth.uid()) in RLS policies for performanceTO authenticated in policieson delete cascade for foreign keys to auth.users.select('id, name') not .select('*')auth.uid() directly in policies (use (select auth.uid()))| Filter | JavaScript | Python |
|---|---|---|
| Equals | .eq('col', val) | .eq("col", val) |
| Not equals | .neq('col', val) | .neq("col", val) |
| Greater than | .gt('col', val) | .gt("col", val) |
| Greater or equal | .gte('col', val) | .gte("col", val) |
| Less than | .lt('col', val) | .lt("col", val) |
| Less or equal | .lte('col', val) | .lte("col", val) |
| Pattern match | .ilike('col', '%val%') | .ilike("col", "%val%") |
| In list | .in('col', [a,b]) | .in_("col", [a,b]) |
| Is null | .is('col', null) | .is_("col", "null") |
| OR | .or('a.eq.1,b.eq.2') | .or_("a.eq.1,b.eq.2") |
| Table | Key Columns |
|---|---|
auth.users | id, email, phone, created_at, last_sign_in_at, raw_user_meta_data |
auth.sessions | id, user_id, created_at, updated_at |
auth.identities | id, user_id, provider, identity_data |
create policy "policy_name" on table_name
to authenticated -- or anon, or specific role
for select -- select, insert, update, delete, or all
using ( (select auth.uid()) = user_id )
with check ( (select auth.uid()) = user_id ); -- for insert/update
For detailed patterns and code examples, consult:
references/auth.md - Authentication with JS/Python SDK, user profilesreferences/rls.md - Row Level Security policies and performance tipsreferences/relationships.md - Table relationships and nested queriesreferences/query-patterns.md - Filtering, pagination, counting, indexes