戻せない変更の PR は「戻せる PR」と「戻せない一歩だけの PR」に分けさせる
DB の列削除や API の破壊的変更のような「一方通行のドア」を含む PR を、エージェントに expand/contract(広げてから縮める)の2段に分割させるプロンプト。
どんな時に使う?
- エージェントが作った PR に、マイグレーションやスキーマ変更、外部 API の互換性を切る変更が混ざっている
- レビューで「これ、問題が出たら戻せる?」と聞かれて答えに詰まる
プロンプト(@mattpocockuk の「Prompt of the day」を日本語にしたもの)
text
この「一方通行のドア」を含む PR を2つに分けて:
1. すべてを実装するが、簡単に revert できる PR(双方向のドア)
2. その上に積む後続 PR で、実際に一方通行のドアを通る変更だけを行う
いわゆる expand/contract。必要ならフィーチャーフラグを使って。分け方の例
- 列の名前を変える: 1つ目で新しい列を足し、両方に書き込み、読み込みをフラグで切り替える。2つ目で古い列を消す
- API のフィールドを廃止: 1つ目で新フィールドを足して利用側を移す。2つ目で古いフィールドを消す
- 1つ目をデプロイして様子を見てから2つ目をマージする。2つ目だけが「戻せない」ので、そこに確認を集中できる
注意点
- 2段に分けると一時的にコードが二重になる。2つ目の PR を忘れないよう、1つ目の説明に後続 PR へのリンクか TODO を残させる
- 関連: CI の AI コードレビューは「専門レビュアー+取りまとめ役」に分け、差分の大きさで人数を変える