Vibe Index
🎯

supabase-cli

🎯Skill

from xiyo/zheon

supabase-cli skill from xiyo/zheon

supabase-cli

Installation

Install skill:
npx skills add https://github.com/xiyo/zheon --skill supabase-cli
Stars0
AddedJan 25, 2026

Skill Details

SKILL.md

Comprehensive guide for Supabase CLI usage covering database initialization, migrations, type generation, API key management, and direct query execution. Use this skill when working with Supabase local development, database schema management, or any CLI command usage.

Overview

# 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:

```bash

supabase init

```

Start local development stack:

```bash

supabase start

```

Get connection details and API keys:

```bash

supabase status

```

Link to remote project:

```bash

supabase link --project-ref PROJECT_REF

```

---

Database Initialization

Creating New Local Database

Start fresh local Supabase instance:

```bash

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:

```bash

supabase db reset

```

Reset without running seed data:

```bash

supabase db reset --no-seed

```

Checking Status

View all running services and connection details:

```bash

supabase status

```

Export connection details as environment variables:

```bash

supabase status -o env > .env.local

```

---

Migration Management

Creating Migrations

Method 1: Manual SQL File

Create new migration file:

```bash

supabase migration new create_users_table

```

Edit supabase/migrations/_create_users_table.sql:

```sql

CREATE TABLE users (

id UUID PRIMARY KEY DEFAULT gen_random_uuid(),

email TEXT UNIQUE NOT NULL,

created_at TIMESTAMPTZ DEFAULT now()

);

```

Apply migration:

```bash

supabase db reset

```

Method 2: Auto-Generate from Diff

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

```bash

supabase db diff -f add_users_table

```

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

```bash

supabase db reset

```

Deploying Migrations

Preview changes before deployment:

```bash

supabase db push --linked --dry-run

```

Deploy to remote:

```bash

supabase db push --linked

```

Deploy with seed data:

```bash

supabase db push --linked --include-seed

```

Deploy with custom roles:

```bash

supabase db push --linked --include-roles

```

Pulling Remote Schema

Import existing remote schema to local:

```bash

supabase link --project-ref PROJECT_REF

supabase db pull initial_schema

supabase db reset

```

Pull specific schemas only:

```bash

supabase db pull -s public,extensions

```

Migration Best Practices

Always follow this workflow:

  1. Create migration locally
  2. Apply with supabase db reset
  3. Generate types
  4. Test application
  5. Commit migration file
  6. Deploy with supabase db push --linked --dry-run first
  7. Deploy with supabase db push --linked

---

Type Generation

TypeScript Types

Generate types from local database:

```bash

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

```

Generate from remote:

```bash

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

```

Generate specific schemas:

```bash

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

```

Other Languages

Generate Go types:

```bash

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

```

Generate Swift types:

```bash

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

```

Automation

Regenerate types after every schema change:

```bash

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:

```bash

supabase status

```

Extract keys to environment file:

```bash

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:

```bash

supabase login

```

Link to project:

```bash

supabase link --project-ref PROJECT_REF

```

Retrieve API keys:

```bash

supabase projects api-keys --project-ref PROJECT_REF

```

---

Direct Database Access

Using psql

Connect to local database:

```bash

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

```

Execute single query:

```bash

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

```

Run SQL file:

```bash

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

```

Connection Details

Get database URL from status:

```bash

supabase status

```

Extract only database URL:

```bash

supabase status | grep "DB URL"

```

Running Migrations Manually

Apply specific SQL file:

```bash

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

```

---

Common Workflows

Standard Development Cycle

Daily workflow:

```bash

# 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:

```bash

# 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:

```bash

git pull

supabase db reset

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

```

Production Deployment

Safe deployment pattern:

```bash

# 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:

```toml

[api]

port = 55321

[db]

port = 55322

[studio]

port = 55323

```

Then restart:

```bash

supabase stop

supabase start

```

Database in Bad State

Reset completely:

```bash

supabase stop

docker volume prune

supabase start

supabase db reset

```

Migration Conflicts

Pull remote changes first:

```bash

supabase db pull remote_changes

```

Resolve conflicts in migration files, then:

```bash

supabase db reset

supabase db push --linked

```

Type Mismatches

Regenerate types from current schema:

```bash

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:

```bash

# 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