This skill should be used when the user asks to "start supabase locally", "set up local supabase", "run supabase dev", "initialize supabase project", "configure local database", "start local postgres", "use supabase CLI", "generate database types", or needs guidance on local Supabase development, Docker setup, environment configuration, or database migrations.
Sets up and manages a complete Supabase local development environment with Docker, including database migrations and TypeScript type generation. Claude uses this when users request to start Supabase locally, initialize projects, configure local databases, or need help with the Supabase CLI workflow.
/plugin marketplace add constellos/claude-code-plugins/plugin install enhanced-context@constellos-localThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Supabase Local Development provides a complete local Postgres database with all Supabase services (Auth, Storage, Edge Functions, Realtime) running in Docker containers. This enables offline development, faster iteration, and safe database migrations before deploying to production.
Key benefits:
Official Documentation:
Supabase local development requires a Docker-compatible container runtime:
Verify Docker is running:
docker info
Install via npm (recommended for Next.js projects):
npm install -g supabase
Or via Homebrew (macOS):
brew install supabase/tap/supabase
Verify installation:
supabase --version
supabase init
This creates a supabase/ directory with:
config.toml - Local configurationseed.sql - Optional seed datamigrations/ - Database migrationssupabase start
First run downloads Docker images (~2GB). Subsequent starts are faster.
Services started:
| Service | Local URL | Purpose |
|---|---|---|
| API | http://127.0.0.1:54321 | REST/GraphQL API |
| Studio | http://127.0.0.1:54323 | Database UI |
| Inbucket | http://127.0.0.1:54324 | Email testing |
| Database | postgresql://127.0.0.1:54322 | Direct Postgres |
supabase status -o env
Output:
SUPABASE_URL=http://127.0.0.1:54321
SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ...
SUPABASE_DB_URL=postgresql://postgres:postgres@127.0.0.1:54322/postgres
Add to .env.local:
# Supabase Local Development
NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ...
Note: NEXT_PUBLIC_ prefix exposes variables to the browser.
supabase gen types typescript --local > lib/supabase/database.types.ts
Regenerate after schema changes.
Prefix with NEXT_PUBLIC_:
NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
No prefix required:
SUPABASE_SERVICE_ROLE_KEY=eyJ...
SUPABASE_DB_URL=postgresql://...
| Framework | File | Priority |
|---|---|---|
| Next.js | .env.local | 1st |
| Next.js | .env.development.local | 2nd |
| Generic | .env | 3rd |
| Cloudflare Workers | dev.vars | Special |
supabase db diff -f migration_name
supabase db reset
supabase db push
supabase link --project-ref YOUR_PROJECT_REF
supabase gen types typescript --local > lib/supabase/database.types.ts
supabase gen types typescript --project-id YOUR_PROJECT_ID > lib/supabase/database.types.ts
import { createClient } from "@supabase/supabase-js";
import type { Database } from "@/lib/supabase/database.types";
const supabase = createClient<Database>(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);
| Command | Purpose |
|---|---|
supabase init | Initialize new project |
supabase start | Start local services |
supabase stop | Stop local services |
supabase status | Show service status |
supabase status -o env | Output as environment variables |
supabase db reset | Reset database and apply migrations |
supabase db diff -f name | Create migration from changes |
supabase db push | Push migrations to remote |
supabase gen types typescript --local | Generate types from local |
supabase link --project-ref REF | Link to remote project |
# macOS - Start Docker Desktop
open -a Docker
# Linux - Start Docker daemon
sudo systemctl start docker
If ports are in use:
supabase stop --no-backup
supabase start
Or configure different ports in supabase/config.toml.
supabase stop --no-backup
supabase start
supabase db reset
DO:
supabase db diff for migrations.env.local for local credentials (gitignored)DON'T:
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.