Supabase Migration Skill
Overview
This skill helps create and execute Supabase database migrations with proper Row Level Security (RLS) policies.
When to Use
- •Creating new tables
- •Adding columns to existing tables
- •Setting up RLS policies
- •Running migrations in production
Instructions
1. Create Migration File
Create SQL migration in /supabase/migrations/YYYYMMDD_description.sql:
sql
-- ═══════════════════════════════════════════════════════════════════════════
-- MIGRATION: [Description]
-- ═══════════════════════════════════════════════════════════════════════════
-- Create table
CREATE TABLE IF NOT EXISTS public.table_name (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Enable RLS
ALTER TABLE public.table_name ENABLE ROW LEVEL SECURITY;
-- Create policies
CREATE POLICY "Public read access" ON public.table_name
FOR SELECT USING (true);
2. Run Migration
Use browser agent to execute SQL in Supabase dashboard:
- •Navigate to
/sql/new - •Inject SQL via Monaco editor
- •Click Run and confirm
3. Verify
Check Security Advisor at /advisors/security for any new issues.
Policy Templates
Public Read
sql
CREATE POLICY "Public read access" ON public.table_name
FOR SELECT USING (true);
User Owned
sql
CREATE POLICY "Users manage own data" ON public.table_name
FOR ALL USING (auth.uid() = user_id);
System Managed
sql
CREATE POLICY "System manages data" ON public.table_name
FOR ALL USING (true);