migration-builder Skill
Generate SQL migration files for Supabase
When to use
Adding/modifying database tables, columns, RLS policies, or indexes
Example
/migration-builder Add contract_url, contract_status, id_photo_url, profile_photo_url to users table
What it does
- •Reads supabase/schema.sql and existing migrations
- •Generates timestamped migration file (YYYYMMDD_description.sql)
- •Includes:
- •ALTER TABLE statements
- •RLS policies (company_id filtering)
- •Indexes for performance
- •Comments explaining each change
- •Follows Supabase naming conventions
- •Includes rollback statements
Quality checks
- •RLS policies filter by company_id for multi-tenancy
- •Enum types for status fields
- •NOT NULL constraints where appropriate
- •Foreign keys with ON DELETE CASCADE/SET NULL
- •Indexes on frequently queried columns
- •Timestamps (created_at, updated_at) with defaults
- •Add deleted_at when soft delete is required
Example output
sql
-- Migration: Add document URLs to users table
-- Date: 2026-01-28
-- Add columns
ALTER TABLE users ADD COLUMN IF NOT EXISTS contract_url TEXT;
ALTER TABLE users ADD COLUMN IF NOT EXISTS contract_status TEXT CHECK (contract_status IN ('approved', 'pending', 'rejected'));
ALTER TABLE users ADD COLUMN IF NOT EXISTS id_photo_url TEXT;
ALTER TABLE users ADD COLUMN IF NOT EXISTS profile_photo_url TEXT;
-- Create RLS policy for document access
CREATE POLICY "Users can view own documents" ON users
FOR SELECT USING (user_id = auth.uid());
-- Rollback (comment out to apply)
-- ALTER TABLE users DROP COLUMN contract_url;
-- ALTER TABLE users DROP COLUMN contract_status;
-- ALTER TABLE users DROP COLUMN id_photo_url;
-- ALTER TABLE users DROP COLUMN profile_photo_url;