mcpField
M
migrate

migrate

github.com/hainrixzデータ・データベース2269 回インストール6 日前に更新
リポジトリ

migrate について

migrateは、デフォルトで読み取り専用のデータベース移行安全スキルです。既存または生成された移行を分析し、ロック、テーブル再書き換え、可逆性、データ損失のリスクを評価します。破壊的変更を書き込むには、委任されたエージェントによる実行と対象名の厳密な確認が必要です。

主な機能

  1. 01既存の移行ファイルを検査
  2. 02スキーマ差分を生成して分類
  3. 03ロック、再書き換え、可逆性を評価
  4. 04破壊的変更とデータ損失手順を特定
  5. 05Expand-contract方式の展開手順を提案
  6. 06破壊的な書き込みに対象名の確認を要求

活用シーン

  1. 01適用前に移行をレビュー
  2. 022つのスキーマパスを比較して生成変更を確認
  3. 03リスクの高いスキーマ変更を安全に展開する計画
  4. 04破壊的な移行の誤実行を防止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hainrixz/claude-db --skill migrate

インストール後、Claude Code で/migrateを入力して読み込まれたか確認します。

詳細

/claude-db:migrate

db-migration-safety(M22、axis performance)モジュールが所有する、マイグレーションの安全性に関するリンターです。チェックには db-migration-safety / MSA を使用します。デフォルトは読み取り専用モードです。分析と説明のみを行い、マイグレーションは実行しません。

$ARGUMENTS には次の2つの形式があります。

  • 単一ファイルのリンター — <migration-file|migration-dir> [flags]:既存のマイグレーションを解析して分類します(下記参照)。
  • 差分モード — <from-schema> <to-schema> [flags]:2つのスキーマパスを指定します。node scripts/schema-diff.mjs --from <from-schema> --to <to-schema> を実行して up/down マイグレーションを生成し、生成されたマイグレーションを単一ファイルモードと同様に分類します。

引数が指定されていない場合は、引数を尋ねるか、プロジェクトのマイグレーションディレクトリを案内してください。

差分モード(<from-schema> <to-schema>)

  1. node scripts/schema-diff.mjs --from <A> --to <B> を実行して、up マイグレーションと down マイグレーションを生成します。schema-diff.mjs は破壊的な手順にフラグを付けます。
  2. 生成された up/down マイグレーションを、各手順の平易な要約とともにユーザーに提示します。
  3. schema-diff.mjs が破壊的と判断したすべての手順(DROP TABLE/COLUMN、型の縮小)は、何かを書き込む前に、以下のデータ損失確認手順に進めます。
  4. その後、生成されたマイグレーションを、単一ファイルモードと同じロック/書き換え/可逆性の分析で分類します。

実施内容(単一ファイルのリンター)

  1. マイグレーションを解析します(生の SQL または生成された ORM マイグレーション)。エンジンを検出し、エンジン固有のロック/書き換えルールを読み込みます。
  2. 各ステートメントを分類します。
    • ロックレベル — 例:Postgres の ACCESS EXCLUSIVE(読み取りと書き込みをブロック)と SHARE UPDATE EXCLUSIVE の違い、およびテーブルが処理中ずっとブロックされるかどうか。
    • テーブルの書き換え — 変更によってすべての行が書き換えられるかどうか(例:古いエンジンで volatile default を持つ NOT NULL 列を追加する場合、または列の型を変更する場合)。書き換えのコストはテーブルサイズに応じて増加します。
    • 可逆性 — きれいに down マイグレーションできるか、または一方向の操作か(データがすでに削除または変換されているか)。
    • 破壊的/データ損失 — DROP COLUMN/TABLE、TRUNCATE、型の縮小、enum 値の削除、不可逆な変換。
  3. schema/finding.schema.json に従って所見を出力します(status/severity/機密情報を伏せたうえで問題のステートメントを引用する evidence.observed/verification.reproduce/expected_impact.axis=performance+confidence+magnitude)。可逆性または expand-contract のない破壊的なマイグレーションは severity-5 となります(Performance に上限を設定)。行数やロック時間を捏造してはいけません。magnitude は high|medium|low の段階で示し、テーブルサイズに応じて評価します。テーブルサイズを創作してはいけません。
  4. リスクのある変更には expand-contract によるロールアウトを提案します。expand(新しい nullable 列/新しいテーブルを追加する、またはデュアル書き込みを行う)、migrate(オンラインでバッチごとにバックフィルする)、contract(制約を切り替え、古い構造を削除する)の各段階を、ロックレベルを明記した個別の可逆な手順として提示します。

安全性/確認手順

  • このコマンドが単独でマイグレーションを適用することはありません。--apply は適用を要求するだけです。
  • データ損失/破壊的と分類された手順には、明示的なトークン確認が必要です。対象となる正確なステートメントと不可逆な結果を提示し、その後、ユーザーに影響を受けるオブジェクト名をそのまま入力するよう求めます。yes/no ではありません。例:DROP TABLE orders を確認するには、ユーザーは orders と入力する必要があります。列 email を削除する場合は、email と入力します。オブジェクト名と完全一致しない返信の場合、その手順は中止されます。確認ルールについては references/migration-safety.md を参照してください。
  • 実際の書き込みは db-migration-writer サブエージェント(Write/Edit を持つ唯一のエージェント)にのみ委任し、確認手順を終えた後に限って実行します。デフォルトは読み取り専用です。

コメント