Run Database Migration
SkillAI & modelsApplies pending Supabase migrations to the local or production database. This skill is strictly additive — it only applies new migrations and NEVER resets, truncates, or drops existing data.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Run Database Migration skill
About this capability
Gradient Bang is an online multiplayer universe where you explore, trade, battle, and collaborate with other players and with LLMs
What this skill tells your AI
The instructions your AI receives, as published by pipecat-ai/gradient-bang in .claude/skills/migrate/SKILL.md and read by ahel’s review.
Applies pending Supabase migrations to the local or production database. This skill is strictly additive — it only applies new migrations and NEVER resets, truncates, or drops existing data.
Safety rules — READ BEFORE PROCEEDING
You MUST follow every rule below. No exceptions.
- NEVER run
supabase db reset,supabase db reset --linked, or any command that drops/recreates the database. - NEVER run
DROP TABLE,DROP SCHEMA,TRUNCATE, orDELETE FROMagainst any table unless it is explicitly part of the migration SQL the user has already reviewed. - NEVER pass
--linkedtodb reset. There is no safe use ofdb resetin this skill. - NEVER modify or overwrite an existing migration file. Migrations that have already been applied are immutable.
- ALWAYS show the user the exact SQL that will run before applying it.
- ALWAYS confirm with the user before applying migrations to production.
- NEVER rely on
--linkedfor remote targets. The currently linked project may belong to a different environment than the one the user asked for. Always target the database explicitly via--db-url "$POSTGRES_POOLER_URL"(sourced from the env file for the requested environment). - If anything looks destructive or risky, STOP and ask the user before continuing.
Parameters
The user specifies the environment as an argument: /migrate local, /migrate dev, or /migrate prod. If not provided, ask which environment.
local→ env file:.env.supabasedev→ env file:.env.cloud.devprod→ env file:.env.cloud
Steps
1. Source environment variables
set -a && source <env-file> && set +a
2. Check for pending migrations
List which migrations have already been applied and which are pending.
For local:
npx supabase migration list --workdir deployment --local
For dev or prod, target the env's database directly via --db-url — never rely on --linked:
npx supabase migration list --workdir deployment --db-url "$POSTGRES_POOLER_URL"
POSTGRES_POOLER_URL comes from the env file sourced in step 1; it embeds the password and project host, so this command is unambiguous about which database it hits regardless of what supabase link last pointed at.
Show the user the list of pending (not yet applied) migrations.
3. Review migration SQL
For each pending migration, read the file from deployment/supabase/migrations/ and display its contents to the user. Summarise what the migration does. Flag anything that looks destructive (drops, truncates, deletes) and ask the user to confirm.
4. Apply the migrations
For local — apply pending migrations to the running local Supabase instance:
npx supabase migration up --workdir deployment --local
For dev or prod — push pending migrations directly to the env's database via --db-url:
npx supabase db push --workdir deployment --db-url "$POSTGRES_POOLER_URL" --include-all
Do NOT use --linked for remote pushes. Targeting --db-url from the just-sourced env file guarantees the push lands on the env the user asked for, even if supabase link was last run against a different project.
Production only: Before running db push, ask the user for explicit confirmation one more time. Show them exactly which migrations will be applied.
5. Verify
After applying, re-run the migration list command from step 2 and confirm all migrations now show as applied. Report the result to the user.
Creating a new migration
If the user wants to create a new migration (not just apply existing ones):
- Generate a timestamped migration file:
npx supabase migration new <migration_name> --workdir deployment
- Open the newly created file for the user to write the SQL.
- After the SQL is written, follow steps 2–5 above to review and apply it.
Important notes
- Migrations live in
deployment/supabase/migrations/and follow the naming conventionYYYYMMDDhhmmss_description.sql. - For local development, Supabase must already be running (
npx supabase start --workdir deployment/). - Each cloud env file (
.env.cloud.dev,.env.cloud) definesPOSTGRES_POOLER_URLfor its project. The skill targets that URL via--db-url, so there is nosupabase linkstep and no risk of pushing to the wrong project because the link points elsewhere. If a future env file is missing this var, surface that to the user instead of falling back to--linked. - All command output should be redirected to files when it may be verbose. Do NOT use
tee. - This skill is only for schema migrations. For seeding runtime config (e.g. combat cron), use the
reset-worldordeployskills instead.
Signals
- GitHub stars
- 419
- Forks
- 67
- Last commit
- Jun 2026
Advanced
- Catalog kind
- skill
- Gateway key
migrate-pipecat-ai- Source
- github.com/pipecat-ai/gradient-bang