すべてのPRで移行チェックリストを徹底する
Devinが破壊的な操作を検出し、ロールバックの安全性を確認し、PRでデータベースマイグレーションに変更があったときにスキーマ変更を検証するリポジトリスキルを構築します。マイグレーションチェックリストスキルを作成する
リポジトリスキルとは、任意のリポジトリ内の このファイルをコミットすると、Devin はそれを利用可能なスキルとして認識します。このリポジトリ内のマイグレーションファイルをセッションが扱うたびに、Devin が自動的にそのチェックリストを起動できますし、必要なときに任意のタイミングで手動実行することもできます。
.agents/skills/<your-skill>/ にコミットする Markdown ファイルのことです。Devin は、接続されているすべてのリポジトリに存在するすべてのスキルを把握しており、手動でトリガーすることも、関連する状況を検知したときに自動的にトリガーさせることもできます。このスキルは、PR を作成または更新する前にデータベースマイグレーションをどのようにレビューすべきかを Devin に正確に指示し、通常のコードレビューでは見逃されがちなミスも検知できるようにします。.agents/skills/migration-checklist/migration-checklist.md をあなたのリポジトリにコミットしてください。実際のマイグレーションでスキルトリガーを確認する
Devin がマイグレーションファイルを追加・変更するタスクに取り組むときは、diff を読み取り、マイグレーションチェックリストスキルに該当すると判断し、PR を開く前にチェックリストに従います。実際の流れは次のとおりです。
- diff をスキャンする — Devin は
db/migrate/に新しいファイルがあることに気づき、マイグレーションチェックリストスキルを有効化します - 破壊的な操作を検知する — マイグレーションで
legacy_emailカラムを削除しています。Devin は PR コメントを追加します:remove_column :users, :legacy_emailは破壊的な操作です。 確認結果: マイグレーションには、削除前に値をuser_archivesにコピーするデータバックアップ手順が含まれています。 - 不足しているインデックスを追加する — マイグレーションは
invoicesテーブルにaccount_idを追加しますが、インデックスがありません。Devin はマイグレーションファイルにadd_index :invoices, :account_idを追記します - ロールバックを実行する — Devin はテストデータベースに対して
bin/rails db:migrate:rollback STEP=1を実行します。問題なく完了します - スキーマを再生成する — Devin は
bin/rails db:schema:dumpを実行し、db/schema.rbに diff があることを検出して、更新されたファイルをコミットに含めます - モデルテストを実行する — すべてのモデルテストが成功します。Devin は各チェックの要約付きで PR を作成します
スキルを自分のORMやスタック向けにカスタマイズする
上のチェックリストは Rails を対象にしていますが、同じ構成は任意の ORM で利用できます。Devin に、あなたのスタック向けにこのスキルを書き換えるよう指示してください:
