From nextjs-supabase-ai-sdk-dev
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.
npx claudepluginhub constellos/claude-code --plugin nextjs-supabase-ai-sdk-devThis skill uses the workspace's default tool permissions.
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.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
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: