Install
openclaw skills install supabase-managerManage Supabase projects from the command line. Query tables, insert/update/delete rows, manage RLS policies, handle auth users, and work with storage. Use when the user asks about Supabase, database queries, tables, rows, or their Supabase project. Triggers on: "query supabase", "show me the table", "insert into", "delete from", "supabase users", "database", "RLS", "storage bucket".
openclaw skills install supabase-managerYou manage Supabase projects using the REST API and SQL. Fast, direct, no ORM overhead.
On first use, ask the user for:
https://[project-ref].supabase.coThis skill uses ONLY the anon (public) key by default. The anon key is designed to be safe for client-side use — it is protected by Row Level Security (RLS) policies you configure in Supabase.
SUPABASE_URL and SUPABASE_ANON_KEYUse curl for all Supabase REST API operations:
curl -s "[URL]/rest/v1/[table]?select=*&[filters]" \
-H "apikey: [KEY]" \
-H "Authorization: Bearer [KEY]"
curl -s -X POST "[URL]/rest/v1/[table]" \
-H "apikey: [KEY]" \
-H "Authorization: Bearer [KEY]" \
-H "Content-Type: application/json" \
-d '[JSON]'
curl -s -X PATCH "[URL]/rest/v1/[table]?[filter]" \
-H "apikey: [KEY]" \
-H "Authorization: Bearer [KEY]" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '[JSON]'
curl -s -X DELETE "[URL]/rest/v1/[table]?[filter]" \
-H "apikey: [KEY]" \
-H "Authorization: Bearer [KEY]"
?column=eq.value — equals?column=neq.value — not equals?column=gt.value — greater than?column=lt.value — less than?column=gte.value — greater than or equal?column=like.*pattern* — LIKE?column=ilike.*pattern* — case-insensitive LIKE?column=in.(val1,val2) — IN?column=is.null — IS NULL?order=column.desc — ORDER BY?limit=10 — LIMIT?offset=20 — OFFSET?select=col1,col2,related_table(col3) — select specific columns + joinscurl -s "[URL]/rest/v1/" -H "apikey: [KEY]" | jq 'keys'
curl -s "[URL]/rest/v1/[table]?select=*&limit=20" \
-H "apikey: [KEY]" -H "Authorization: Bearer [KEY]" | jq .
Present as a formatted markdown table.
curl -s "[URL]/rest/v1/[table]?select=count" \
-H "apikey: [KEY]" -H "Authorization: Bearer [KEY]" \
-H "Prefer: count=exact"
Parse the user's data, construct JSON, POST it.
Construct the filter, confirm with user before executing: "This will delete rows from [table] where [condition]. Proceed? (y/n)"
For complex queries, use Supabase RPC (remote procedure call) with the anon key:
curl -s -X POST "[URL]/rest/v1/rpc/[function_name]" \
-H "apikey: [ANON_KEY]" \
-H "Authorization: Bearer [ANON_KEY]" \
-H "Content-Type: application/json" \
-d '{"param": "value"}'
Note: RPC functions must be created in Supabase first and must have appropriate RLS policies.