Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Automate Supabase database queries, table management, project administration, storage, edge functions, and SQL execution via Rube MCP (Composio). Always search tools first for current schemas.
.claude/skills/davepoon-supabase-automation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 145% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 126% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 182% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 276% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 239% | 0% |
Automate Supabase operations including database queries, table schema inspection, SQL execution, project and organization management, storage buckets, edge functions, and service health monitoring through Composio's Supabase toolkit.
Toolkit docs: composio.dev/toolkits/supabase
RUBE_MANAGE_CONNECTIONS with toolkit supabaseRUBE_SEARCH_TOOLS first to get current tool schemasGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit supabaseWhen to use: User wants to read data from tables, inspect schemas, or perform CRUD operations
Tool sequence:
SUPABASE_LIST_ALL_PROJECTS - List projects to find the target project_ref Prerequisite]SUPABASE_LIST_TABLES - List all tables and views in the database Prerequisite]SUPABASE_GET_TABLE_SCHEMAS - Get detailed column types, constraints, and relationships Prerequisite for writes]SUPABASE_SELECT_FROM_TABLE - Query rows with filtering, sorting, and pagination Required for reads]SUPABASE_BETA_RUN_SQL_QUERY - Execute arbitrary SQL for complex queries, inserts, updates, or deletes Required for writes]Key parameters for SELECT_FROM_TABLE:
project_ref: 20-character lowercase project referencetable: Table or view name to queryselect: Comma-separated column list (supports nested selections and JSON paths like profile->avatar_url)filters: Array of filter objects with column, operator, valueorder: Sort expression like created_at.desclimit: Max rows to return (minimum 1)offset: Rows to skip for paginationPostgREST filter operators:
eq, neq: Equal / not equalgt, gte, lt, lte: Comparison operatorslike, ilike: Pattern matching (case-sensitive / insensitive)is: IS check (for null, true, false)in: In a list of valuescs, cd: Contains / contained by (arrays)fts, plfts, phfts, wfts: Full-text search variantsKey parameters for RUN_SQL_QUERY:
ref: Project reference (20 lowercase letters, pattern ^[a-z]{20}$)query: Valid PostgreSQL SQL statementread_only: Boolean to force read-only transaction (safer for SELECTs)Pitfalls:
project_ref must be exactly 20 lowercase letters (a-z only, no numbers or hyphens)SELECT_FROM_TABLE is read-only; use RUN_SQL_QUERY for INSERT, UPDATE, DELETE operationsARRAY['item1', 'item2'] or '{"item1", "item2"}' syntax, NOT JSON array syntax '["item1", "item2"]'When to use: User wants to list projects, inspect configurations, or manage organizations
Tool sequence:
SUPABASE_LIST_ALL_ORGANIZATIONS - List all organizations (IDs and names) Required]SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION - Get detailed org info by slug Optional]SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION - List org members with roles and MFA status Optional]SUPABASE_LIST_ALL_PROJECTS - List all projects with metadata Required]SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG - Get database configuration Optional]SUPABASE_GETS_PROJECT_S_AUTH_CONFIG - Get authentication configuration Optional]SUPABASE_GET_PROJECT_API_KEYS - Get API keys (sensitive -- handle carefully) Optional]SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUS - Check service health Optional]Key parameters:
ref: Project reference for project-specific toolsslug: Organization slug (URL-friendly identifier) for org toolsservices: Array of services for health check: auth, db, db_postgres_user, pg_bouncer, pooler, realtime, rest, storagePitfalls:
LIST_ALL_ORGANIZATIONS returns both id and slug; LIST_MEMBERS_OF_AN_ORGANIZATION expects slug, not idGET_PROJECT_API_KEYS returns live secrets -- NEVER log, display, or persist full key valuesGETS_PROJECT_S_SERVICE_HEALTH_STATUS requires a non-empty services array; empty array causes invalid_request errorWhen to use: User wants to understand table structure, columns, constraints, or generate types
Tool sequence:
SUPABASE_LIST_ALL_PROJECTS - Find the target project Prerequisite]SUPABASE_LIST_TABLES - Enumerate all tables and views with metadata Required]SUPABASE_GET_TABLE_SCHEMAS - Get detailed schema for specific tables Required]SUPABASE_GENERATE_TYPE_SCRIPT_TYPES - Generate TypeScript types from schema Optional]Key parameters for LIST_TABLES:
project_ref: Project referenceschemas: Array of schema names to search (e.g., ["public"]); omit for all non-system schemasinclude_views: Include views alongside tables (default true)include_metadata: Include row count estimates and sizes (default true)include_system_schemas: Include pg_catalog, information_schema, etc. (default false)Key parameters for GET_TABLE_SCHEMAS:
project_ref: Project referencetable_names: Array of table names (max 20 per request); supports schema prefix like public.users, auth.usersinclude_relationships: Include foreign key info (default true)include_indexes: Include index info (default true)exclude_null_values: Cleaner output by hiding null fields (default true)Key parameters for GENERATE_TYPE_SCRIPT_TYPES:
ref: Project referenceincluded_schemas: Comma-separated schema names (default "public")Pitfalls:
public schemarow_count and size_bytes from LIST_TABLES may be null for views or recently created tables; treat as unknown, not zeroWhen to use: User wants to list, inspect, or work with Supabase Edge Functions
Tool sequence:
SUPABASE_LIST_ALL_PROJECTS - Find the project reference Prerequisite]SUPABASE_LIST_ALL_FUNCTIONS - List all edge functions with metadata Required]SUPABASE_RETRIEVE_A_FUNCTION - Get detailed info for a specific function Optional]Key parameters:
ref: Project referencePitfalls:
LIST_ALL_FUNCTIONS returns metadata only, not function code or logscreated_at and updated_at may be epoch milliseconds; convert to human-readable timestampsWhen to use: User wants to list storage buckets or manage file storage
Tool sequence:
SUPABASE_LIST_ALL_PROJECTS - Find the project reference Prerequisite]SUPABASE_LISTS_ALL_BUCKETS - List all storage buckets Required]Key parameters:
ref: Project referencePitfalls:
LISTS_ALL_BUCKETS returns bucket list only, not bucket contents or access policiesSUPABASE_RESUMABLE_UPLOAD_SIGN_OPTIONS_WITH_ID handles CORS preflight for TUS resumable uploads onlyproxy_execute with the Supabase storage APISUPABASE_LIST_ALL_PROJECTS -- extract ref field (20 lowercase letters)SUPABASE_LIST_ALL_ORGANIZATIONS -- use slug (not id) for downstream org toolsSUPABASE_LIST_TABLES -- enumerate available tables before queryingSUPABASE_GET_TABLE_SCHEMAS -- inspect columns and constraints before writesSUPABASE_SELECT_FROM_TABLE: Uses offset + limit pagination. Increment offset by limit until fewer rows than limit are returned.SUPABASE_LIST_ALL_PROJECTS: May paginate for large accounts; follow cursors/pages until exhausted.SUPABASE_LIST_TABLES: May paginate for large databases.SUPABASE_GET_TABLE_SCHEMAS or SUPABASE_LIST_TABLES before writing SQLread_only: true for SELECT queries to prevent accidental mutationsSELECT * FROM "MyTable" not SELECT * FROM MyTableARRAY['a', 'b'] not ['a', 'b']^[a-z]{20}$id (UUID) and slug (URL-friendly string); tools vary in which they acceptLIST_MEMBERS_OF_AN_ORGANIZATION requires slug, not idBETA_RUN_SQL_QUERY has ~60 second timeout for complex operationsARRAY['item'] or '{"item"}', NOT JSON syntax '["item"]'GET_PROJECT_API_KEYS returns service-role keys -- NEVER expose full valuesrow_count and size_bytes from LIST_TABLES can be null; do not treat as zeroinclude_system_schemas: true to see theminclude_views: falseGETS_PROJECT_S_SERVICE_HEALTH_STATUS fails with empty services array -- always specify at least one| Task | Tool Slug | Key Params | |------|-----------|------------| | List organizations | SUPABASE_LIST_ALL_ORGANIZATIONS | (none) | | Get org info | SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION | slug | | List org members | SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION | slug | | List projects | SUPABASE_LIST_ALL_PROJECTS | (none) | | List tables | SUPABASE_LIST_TABLES | project_ref, schemas | | Get table schemas | SUPABASE_GET_TABLE_SCHEMAS | project_ref, table_names | | Query table | SUPABASE_SELECT_FROM_TABLE | project_ref, table, select, filters | | Run SQL | SUPABASE_BETA_RUN_SQL_QUERY | ref, query, read_only | | Generate TS types | SUPABASE_GENERATE_TYPE_SCRIPT_TYPES | ref, included_schemas | | Postgres config | SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG | ref | | Auth config | SUPABASE_GETS_PROJECT_S_AUTH_CONFIG | ref | | Get API keys | SUPABASE_GET_PROJECT_API_KEYS | ref | | Service health | SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUS | ref, services | | List edge functions | SUPABASE_LIST_ALL_FUNCTIONS | ref | | Get edge function | SUPABASE_RETRIEVE_A_FUNCTION | ref, function slug | | List storage buckets | SUPABASE_LISTS_ALL_BUCKETS | ref | | List DB branches | SUPABASE_LIST_ALL_DATABASE_BRANCHES | ref |
Powered by Composio
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 8,934 | 4,866 | -46% | 1 | 1 | 0% | 1,847 | 3,759 | +104% | 0 | 0 | — |
case-02 | fail→fail | 9,962 | 4,358 | -56% | 1 | 1 | 0% | 1,934 | 3,609 | +87% | 0 | 0 | — |
case-03 | fail→fail | 10,156 | 4,164 | -59% | 1 | 1 | 0% | 1,857 | 3,628 | +95% | 0 | 0 | — |
case-04 | fail→pass | 10,647 | 8,039 | -24% | 1 | 1 | 0% | 2,016 | 4,940 | +145% | 0 | 0 | — |
case-05 | fail→pass | 11,073 | 2,162 | -80% | 1 | 1 | 0% | 1,718 | 3,881 | +126% | 0 | 0 | — |
case-06 | pass→pass | 7,378 | 3,004 | -59% | 1 | 1 | 0% | 1,335 | 3,918 | +193% | 0 | 0 | — |
case-07 | fail→pass | 8,466 | 4,301 | -49% | 1 | 1 | 0% | 1,436 | 4,048 | +182% | 0 | 0 | — |
case-08 | fail→pass | 7,116 | 4,763 | -33% | 1 | 1 | 0% | 1,134 | 4,262 | +276% | 0 | 0 | — |
case-09 | pass→pass | 6,057 | 5,759 | -5% | 1 | 1 | 0% | 1,152 | 4,436 | +285% | 0 | 0 | — |
case-10 | fail→pass | 6,552 | 4,406 | -33% | 1 | 1 | 0% | 1,232 | 4,177 | +239% | 0 | 0 | — |
case-11 | pass→pass | 12,038 | 7,762 | -36% | 1 | 1 | 0% | 2,151 | 4,729 | +120% | 0 | 0 | — |
case-12 | pass→pass | 4,708 | 4,922 | +5% | 1 | 1 | 0% | 838 | 4,178 | +399% | 0 | 0 | — |
case-13 | fail→pass | 4,742 | 3,530 | -26% | 1 | 1 | 0% | 818 | 4,046 | +395% | 0 | 0 | — |
case-14 | pass→pass | 6,261 | 2,761 | -56% | 1 | 1 | 0% | 1,111 | 3,891 | +250% | 0 | 0 | — |
case-15 | pass→pass | 3,916 | 1,732 | -56% | 1 | 1 | 0% | 713 | 3,652 | +412% | 0 | 0 | — |
case-16 | pass→pass | 9,448 | 6,096 | -35% | 1 | 1 | 0% | 1,575 | 4,305 | +173% | 0 | 0 | — |
case-17 | fail→fail | 11,750 | 2,805 | -76% | 1 | 1 | 0% | 1,805 | 3,888 | +115% | 0 | 0 | — |
case-18 | pass→fail | 12,583 | 5,753 | -54% | 1 | 1 | 0% | 2,270 | 3,721 | +64% | 0 | 0 | — |
case-19 | pass→pass | 11,585 | 7,124 | -39% | 1 | 1 | 0% | 2,095 | 4,647 | +122% | 0 | 0 | — |
case-20 | pass→fail | 9,482 | 12,265 | +29% | 1 | 1 | 0% | 1,744 | 5,006 | +187% | 0 | 0 | — |
case-21 | pass→pass | 10,179 | 7,490 | -26% | 1 | 1 | 0% | 1,739 | 4,765 | +174% | 0 | 0 | — |
case-22 | pass→pass | 6,158 | 3,636 | -41% | 1 | 1 | 0% | 1,117 | 4,116 | +268% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +18 percentage points is the difference between those two pass rates over the 18 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.