supabase-cli

This skill provides complete guidance for using Supabase CLI across all development workflows. It covers database initialization, migration management, type generation, API key retrieval, direct database access, and deployment strategies.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "supabase-cli" with this command: npx skills add xiyo/zheon/xiyo-zheon-supabase-cli

Supabase CLI

Overview

This skill provides complete guidance for using Supabase CLI across all development workflows. It covers database initialization, migration management, type generation, API key retrieval, direct database access, and deployment strategies.

Use this skill when:

  • Setting up new Supabase projects

  • Managing database migrations

  • Generating TypeScript types from database schema

  • Retrieving API keys and connection details

  • Executing SQL queries directly

  • Troubleshooting local development issues

  • Deploying schema changes to production

Quick Start

Initial Project Setup

Initialize a new Supabase project:

supabase init

Start local development stack:

supabase start

Get connection details and API keys:

supabase status

Link to remote project:

supabase link --project-ref PROJECT_REF

Database Initialization

Creating New Local Database

Start fresh local Supabase instance:

supabase init supabase start

This creates:

  • Local PostgreSQL database on port 54322

  • Studio dashboard at http://localhost:54323

  • API server on port 54321

  • All Supabase services (Auth, Storage, Realtime, etc.)

Resetting Database

Reset database to clean state with all migrations applied:

supabase db reset

Reset without running seed data:

supabase db reset --no-seed

Checking Status

View all running services and connection details:

supabase status

Export connection details as environment variables:

supabase status -o env > .env.local

Migration Management

Creating Migrations

Method 1: Manual SQL File

Create new migration file:

supabase migration new create_users_table

Edit supabase/migrations/<timestamp>_create_users_table.sql :

CREATE TABLE users ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email TEXT UNIQUE NOT NULL, created_at TIMESTAMPTZ DEFAULT now() );

Apply migration:

supabase db reset

Method 2: Auto-Generate from Diff

Make schema changes in Studio (http://localhost:54323), then generate migration:

supabase db diff -f add_users_table

Review generated file at supabase/migrations/<timestamp>_add_users_table.sql , then apply:

supabase db reset

Deploying Migrations

Preview changes before deployment:

supabase db push --linked --dry-run

Deploy to remote:

supabase db push --linked

Deploy with seed data:

supabase db push --linked --include-seed

Deploy with custom roles:

supabase db push --linked --include-roles

Pulling Remote Schema

Import existing remote schema to local:

supabase link --project-ref PROJECT_REF supabase db pull initial_schema supabase db reset

Pull specific schemas only:

supabase db pull -s public,extensions

Migration Best Practices

Always follow this workflow:

  • Create migration locally

  • Apply with supabase db reset

  • Generate types

  • Test application

  • Commit migration file

  • Deploy with supabase db push --linked --dry-run first

  • Deploy with supabase db push --linked

Type Generation

TypeScript Types

Generate types from local database:

supabase gen types typescript --local > src/lib/types/database.types.ts

Generate from remote:

supabase gen types typescript --linked > src/lib/types/database.types.ts

Generate specific schemas:

supabase gen types typescript --local --schema public,extensions > src/lib/types/database.types.ts

Other Languages

Generate Go types:

supabase gen types go --local > types/database.go

Generate Swift types:

supabase gen types swift --local --swift-access-control public > Types/Database.swift

Automation

Regenerate types after every schema change:

supabase db reset && supabase gen types typescript --local > src/lib/types/database.types.ts

API Key Management

Getting Local Keys

View all local API keys:

supabase status

Extract keys to environment file:

supabase status -o env > .env.local

Result includes:

  • SUPABASE_URL

  • API endpoint

  • SUPABASE_ANON_KEY

  • Client-side public key

  • SUPABASE_SERVICE_ROLE_KEY

  • Server-side admin key

  • DATABASE_URL

  • Direct database connection

Getting Remote Keys

Authenticate first:

supabase login

Link to project:

supabase link --project-ref PROJECT_REF

Retrieve API keys:

supabase projects api-keys --project-ref PROJECT_REF

Direct Database Access

Using psql

Connect to local database:

psql postgresql://postgres:postgres@localhost:54322/postgres

Execute single query:

psql postgresql://postgres:postgres@localhost:54322/postgres -c "SELECT * FROM users;"

Run SQL file:

psql postgresql://postgres:postgres@localhost:54322/postgres -f query.sql

Connection Details

Get database URL from status:

supabase status

Extract only database URL:

supabase status | grep "DB URL"

Running Migrations Manually

Apply specific SQL file:

psql postgresql://postgres:postgres@localhost:54322/postgres -f supabase/migrations/20230101_my_migration.sql

Common Workflows

Standard Development Cycle

Daily workflow:

Morning: Start stack

supabase start

Make schema changes in Studio or create migration

supabase migration new add_feature

Apply changes

supabase db reset

Regenerate types

supabase gen types typescript --local > src/lib/types/database.types.ts

Test application

npm run dev

Commit changes

git add supabase/migrations/ src/lib/types/database.types.ts git commit -m "feat: add new feature schema"

Deploy to production

supabase db push --linked --dry-run supabase db push --linked

Team Collaboration

New developer setup:

Clone repository

git clone REPO_URL

Install CLI

npm install

Login to Supabase

supabase login

Start local development

supabase start

Apply all migrations

supabase db reset

Generate types

supabase gen types typescript --local > src/lib/types/database.types.ts

After pulling teammate's changes:

git pull supabase db reset supabase gen types typescript --local > src/lib/types/database.types.ts

Production Deployment

Safe deployment pattern:

Link to production project

supabase link --project-ref PRODUCTION_REF

Preview changes

supabase db push --linked --dry-run

Review output carefully

Deploy

supabase db push --linked

Verify deployment

supabase db pull verify_deployment

Troubleshooting

Port Conflicts

If ports are already in use, edit supabase/config.toml :

[api] port = 55321

[db] port = 55322

[studio] port = 55323

Then restart:

supabase stop supabase start

Database in Bad State

Reset completely:

supabase stop docker volume prune supabase start supabase db reset

Migration Conflicts

Pull remote changes first:

supabase db pull remote_changes

Resolve conflicts in migration files, then:

supabase db reset supabase db push --linked

Type Mismatches

Regenerate types from current schema:

supabase gen types typescript --local > src/lib/types/database.types.ts

Command Reference

For complete CLI command reference with all flags and options, see references/cli-commands.md .

For detailed workflow examples and patterns, see references/workflows.md .

Most Used Commands

Setup:

  • supabase init

  • Initialize project

  • supabase login

  • Authenticate

  • supabase link

  • Link to remote project

  • supabase start

  • Start local stack

  • supabase status

  • View connection details

Database:

  • supabase db reset

  • Reset database with migrations

  • supabase db diff -f NAME

  • Generate migration from diff

  • supabase db push --linked

  • Deploy migrations

  • supabase db pull

  • Import remote schema

Migrations:

  • supabase migration new NAME

  • Create new migration

  • supabase migration list

  • List all migrations

Types:

  • supabase gen types typescript --local
  • Generate TypeScript types

Keys:

  • supabase status

  • Get local keys

  • supabase projects api-keys

  • Get remote keys

Cleanup:

  • supabase stop
  • Stop local stack

Resources

references/cli-commands.md

Complete command reference with all flags, options, and examples for every Supabase CLI command. Load this when:

  • Need detailed flag information for specific command

  • Looking up exact syntax

  • Exploring advanced command options

Search patterns:

Find commands related to migrations

grep -i "migration" references/cli-commands.md

Find commands for type generation

grep -i "gen types" references/cli-commands.md

Find database commands

grep -i "supabase db" references/cli-commands.md

references/workflows.md

Comprehensive workflow guides covering:

  • Initial setup patterns

  • Schema development workflows

  • Migration management strategies

  • Type generation automation

  • Team collaboration patterns

  • CI/CD integration

  • Troubleshooting common issues

Load this when:

  • Planning complex workflow

  • Setting up team collaboration

  • Configuring CI/CD pipelines

  • Solving workflow-specific problems

  • Looking for best practices

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

slidev

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

supabase-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

dokidoki

Control interactive BLE devices (scan/connect/playback/timeline) from terminal.

Registry SourceRecently Updated
Coding

code

Comprehensive code review assistant that analyzes code quality, identifies bugs, suggests improvements, and ensures adherence to best practices. Use when rev...

Registry SourceRecently Updated