supabase-usage
Supabase Database Patterns
Patterns for working with Supabase databases including Auth, Row Level Security, table relationships, and query best practices.
Overview
- MCP Tools: Query and explore database structure
- Authentication: User management, sessions, auth tables
- Row Level Security: Policy patterns for data access control
- Table Relationships: Foreign keys, joins, nested queries
- Query Patterns: Filtering, pagination, performance
MCP Tools
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 queries
Workflow:
- Start with
list_tablesto understand database structure - Use
get_table_schemato inspect columns and types - Use
execute_sqlfor custom queries (read-only)
Best Practices
DO
- ✓ Enable RLS on all public tables
- ✓ Use
(select auth.uid())in RLS policies for performance - ✓ Add indexes on RLS-checked columns
- ✓ Specify roles with
TO authenticatedin policies - ✓ Use
on delete cascadefor foreign keys to auth.users - ✓ Use cursor-based pagination for large datasets
- ✓ Select only needed columns:
.select('id, name')not.select('*')
DON'T
- ✗ Store sensitive data without RLS
- ✗ Use
auth.uid()directly in policies (use(select auth.uid())) - ✗ Create policies without specifying roles
- ✗ Forget indexes on frequently filtered columns
- ✗ Use offset pagination for deep pages (>1000 rows)
- ✗ Expose auth.users directly via API (use public profiles table)
Quick Reference
Common Filters
| 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") |
Auth Tables Quick Reference
| 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 |
RLS Policy Template
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
Additional Resources
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
More from fcakyon/claude-codex-settings
gcloud-usage
This skill should be used when user asks about "GCloud logs", "Cloud Logging queries", "Google Cloud metrics", "GCP observability", "trace analysis", or "debugging production issues on GCP".
62azure-usage
This skill should be used when user asks to "query Azure resources", "list storage accounts", "manage Key Vault secrets", "work with Cosmos DB", "check AKS clusters", "use Azure MCP", or interact with any Azure service.
48mongodb-usage
This skill should be used when user asks to "query MongoDB", "show database collections", "get collection schema", "list MongoDB databases", "search records in MongoDB", or "check database indexes".
47commit-workflow
This skill should be used when user asks to "commit these changes", "write commit message", "stage and commit", "create a commit", "commit staged files", or runs /commit-staged or /commit-creator commands.
45agent-development
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
33mcp-integration
This skill should be used when the user asks to "add MCP server", "integrate MCP", "configure MCP in plugin", "use .mcp.json", "set up Model Context Protocol", "connect external service", mentions "${CLAUDE_PLUGIN_ROOT} with MCP", or discusses MCP server types (SSE, stdio, HTTP, WebSocket). Provides comprehensive guidance for integrating Model Context Protocol servers into Claude Code plugins for external tool and service integration.
31