supabase
Set up, extend, or audit Supabase schema, grants, RLS, migrations, typed clients, storage, and external auth. Use when integrating Supabase or repairing data access and tenant isolation.
- Category
- devops
- Package
- supabase/SKILL.md
- License
- MIT
- Author
- @tushaarmehtaa
- Tags
- supabasepostgresrlsauthmigrationstypescript
Install
Swipe for more runtimes.
Codex
Skills directory: ~/.agents/skills
Install globally
npx skills add tushaarmehtaa/tushar-skills --skill supabase -g -a codex -yInvoke
$supabase or /skillsYou can also describe the task naturally; runtimes may select the skill from its description.
Required access
Claude Code
Skills directory: ~/.claude/skills
Install globally
npx skills add tushaarmehtaa/tushar-skills --skill supabase -g -a claude-code -yInvoke
/supabaseYou can also describe the task naturally; runtimes may select the skill from its description.
Required access
Cursor
Skills directory: ~/.agents/skills
Install globally
npx skills add tushaarmehtaa/tushar-skills --skill supabase -g -a cursor -yInvoke
/supabaseYou can also describe the task naturally; runtimes may select the skill from its description.
Required access
local coding agent required
This skill requires project files, terminal commands, and network access. Uploading it to a chat app does not provide equivalent execution.
ChatGPT Skills
This workflow needs a local coding environment or capabilities that a chat-only Skills upload does not provide.
Why local agent required →Instructions
Source: SKILL.mdSupabase
Build a migration-backed, typed Supabase integration with explicit authorization boundaries.
Workflow
- Inspect
supabase/, migrations, generated types, installed Supabase packages/versions, framework/runtime, environment-variable names without printing values, auth/session flow, schemas exposed through the Data API, and existing grants/RLS. - Infer table ownership and tenant relationships from the domain model. Ask only when ownership, collaboration, deletion, retention, or external-auth behavior is ambiguous. Do not add
user_idor four CRUD policies to every table mechanically. - Design keys, foreign keys, constraints, indexes, timestamps, lifecycle/deletion behavior, and server-generated ownership defaults appropriate to each table. Use external provider subject IDs as text unless a local identity mapping is intentionally modeled.
- Create named migrations. Use
supabase migration newor a revieweddb difffor local changes, verify with a local reset/test database, inspectdb push --dry-run, and usedb pushonly when remote deployment is explicitly in scope.migration upis not a substitute for remote deployment. - Secure every exposed object with both Postgres grants and RLS. Scope policies to roles, use indexed predicates, add
with checkfor inserts/updates, review views/functions separately, and set a safesearch_pathonsecurity definerfunctions. - Match auth strategy:
- Supabase Auth: use
auth.uid()/auth.jwt()and current SSR session guidance. - Clerk or another supported third-party provider: configure the native integration, pass the provider token through the client, and use the actual JWT
sub/claims. Do not assume an RLS expression alone configures token verification. - Server administration: use a dedicated server-only client with explicit authorization; never expose secret/service credentials.
- Supabase Auth: use
- For current
@supabase/ssr, create a client per request, use the supported cookiegetAll/setAlladapter, await async framework cookie APIs, and add the required proxy/middleware refresh flow. Do not use legacy single-cookie adapters. - Generate TypeScript types after applying migrations to the target used for generation, then run type checks and update typed queries. Avoid
anyand handle{ data, error }explicitly.
Verification
Run local migration reset/apply, schema/type drift checks, and repository lint/type/test/build. For each policy, test allowed owner/member/admin/service access and denied anonymous/other-user/other-tenant reads and mutations, including attempts to change ownership. Test session refresh/expiry and external-provider tokens in the target runtime.
Output
Report tables/functions/storage changed, migration files, grants and RLS policies with auth strategy, client/session changes, type-generation command/result, negative authorization tests, and remaining linked-project/dashboard/production steps.