Skip to main content

migrate

Run/create DB migrations (Alembic, Prisma, Laravel, Django, Flyway, Drizzle); checks backup. Triggers: apply migration, rollback, generate migration.

소스 정보

저장소
softspark/ai-toolkit
최근 소스 활동
2026년 9월 4일 09:36
감지된 SKILL.md 언어
영어
스타
177
포크
21

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
migrate
description
Run/create DB migrations (Alembic, Prisma, Laravel, Django, Flyway, Drizzle); checks backup. Triggers: apply migration, rollback, generate migration.
effort
medium
disable-model-invocation
true
argument-hint
[direction]
allowed-tools
Bash, Read
hooks
{"PreToolUse":[{"matcher":"Bash","hooks":"[Truncated]"}]}
scripts
["scripts/migration-status.py"]
# /migrate - Database Migration Workflow $ARGUMENTS ## What This Command Does Create, run, or manage database migrations with auto-detection of the migration tool. ## Project context - Migration tools: !`ls alembic.ini prisma/ database/migrations/ manage.py 2>/dev/null` ## Migration Status Script Detect migration tool and report status: ```bash python3 ${CLAUDE_SKILL_DIR}/scripts/migration-status.py [directory] ``` Returns JSON with: `tool`, `config_file`, `migrations_dir`, `total_migrations`, `latest`, `commands{}` (status/create/upgrade/downgrade). ## Auto-Detection | File Found | Tool | Commands | |------------|------|----------| | `alembic.ini` | Alembic | `alembic revision`, `alembic upgrade` | | `prisma/schema.prisma` | Prisma | `npx prisma migrate dev` | | `database/migrations/` + `artisan` | Laravel | `php artisan migrate` | | `manage.py` | Django | `python manage.py migrate` | | `flyway.conf` | Flyway | `flyway migrate` | | `drizzle.config.ts` | Drizzle | `npx drizzle-kit push` | ## Workflow ### Create New Migration 1. Detect migration tool 2. Generate migration from model/schema changes 3. Review generated SQL 4. Validate syntax ### Run Migrations 1. Show pending migrations 2. Dry-run if supported (`--pretend`, `--sql`) 3. Backup reminder 4. Apply with user confirmation 5. Verify success ### Rollback 1. Show last applied migration 2. Confirm rollback scope 3. Execute rollback 4. Verify state ## Safety Checks (MANDATORY) - [ ] Migration tested on development/staging first - [ ] Rollback path verified - [ ] No data loss in forward or backward direction - [ ] Large table operations use concurrent/online DDL - [ ] Backup exists or reminder given ## Usage Examples ``` /migrate # Show migration status /migrate create add_users # Create new migration /migrate run # Apply pending migrations /migrate rollback # Rollback last migration /migrate status # Show applied/pending migrations ``` ## Reference Skill Use `migration-patterns` skill for zero-downtime strategies and best practices. ## Rules - **MUST** verify a recent backup exists (or confirmed in-progress) before any forward migration on production - **MUST** show the generated SQL (dry-run / `--pretend` / `--sql`) before applying — the user approves the diff, not just the command - **NEVER** run destructive migrations (DROP TABLE/COLUMN, NOT NULL on existing column, type change) without a tested rollback path - **NEVER** mix schema changes and data backfill in the same migration — they fail differently and roll back differently - **CRITICAL**: large-table operations use the concurrent/online variant (`ALTER TABLE ... ALGORITHM=INPLACE`, `CREATE INDEX CONCURRENTLY`) — table locks in production cause outages, not slowdowns - **MANDATORY**: migrations test on a non-production environment first with representative data volume ## Gotchas - `alembic upgrade head` silently skips migrations with `branches` if the branch head is not explicit. Multi-head migrations need `alembic upgrade <revision>@head` or a merge migration first. - Prisma's `prisma migrate dev` auto-generates migrations AND applies them AND reseeds the dev database. Running it on a production-connected config destroys data. Always use `prisma migrate deploy` in non-dev. - Laravel's `migrate` command without `--force` refuses to run in `APP_ENV=production`. Scripts that blindly run `migrate` hang on interactive prompts in prod — always use `artisan migrate --force` in automation. - Django's `migrate --fake` marks a migration as applied **without running it**. Intended for manual data fixes, but accidentally using it skips real schema changes and silently diverges production from code. - `CREATE INDEX CONCURRENTLY` (Postgres) cannot run inside a transaction. Alembic wraps each migration in a transaction by default — concurrent index creation needs `op.execute()` with `autocommit_block()` or a manual `COMMIT`. - Rolling back a forward migration that added a NOT NULL column deletes the column; data in that column is gone. "Rollback" is not "undo" if the column held user data during the forward window. ## When NOT to Use - For **zero-downtime schema evolution** strategy (expand-contract, double-write) — use `/migration-patterns` - For designing the schema from scratch — use `/database-patterns` - For application-layer rollback (deploying previous code) — use `/rollback` - For CI-triggered migrations — use `/ci` or `/deploy` - When no migration tool is detected — propose one from `/app-builder` instead of ad-hoc SQL
GitHub에서 보기