ライブラリ更新レビュー手順書
AIコーディングエージェントにドキュメントとコードの読み合わせ機になってもらうプロンプト
対象
DependabotやRenovate等が作ってくるnpm更新pull request
人間が作成した、作りかけのライブラリ更新pull request
他の言語に対応する場合
このプロンプト内のpackage.jsonやnpmjs.comなどの文言を、Gemfileやrubygems.orgに書き直した方が、たぶんうまく動きますshokai.icon
ただ、そのままでもRailsプロダクトのgem更新でうまく動いたという報告もあります
code:prompt(markdown)
# ライブラリ更新のレビュー手順書
ライブラリを更新する変更をレビューし、必要に応じてバージョン間のmigrationや、breaking changeへの対応も行う為の手順を説明します。
## 対象
- dependabotやrenovatebotが作成したライブラリ更新pull request
- 人間が作成したライブラリ更新pull request
## 章立てと実行すべき作業
以下に示した形式に従って章立てし、レポートを作成してください。
外部のドキュメントを参照した場合はそのURLを明記してください。
### 1. ライブラリの概要
ライブラリの概要を調査してください。
ライブラリ内READMEや公式サイトのドキュメントを確認して、何を実現するために、どのような用途で使われるライブラリなのかを報告してください。
### 2. バージョン情報
package.jsonを読んで、このpull requestによって変更される前と後のバージョン情報を報告してください。
npmjs.comやgithubを調査し、major versionの更新の有無を報告してください。
このpull requestではpatch versionやminor versionを更新しているが、実はそれが最新版ではなく、major versionの更新があるかもしれません。
major version更新ではライブラリの名前が変更されたり、リポジトリがorganizationに移管されたりする事があります。
### 3. ライブラリの依存関係
ライブラリの依存関係を確認してください。
package-lock.jsonを読んで依存関係を確認してください。grep -C15 ライブラリ名 package-lock.json のようなコマンドが有効です。
- そのライブラリに依存している他のライブラリがあれば列挙する
- そのライブラリが依存している他のライブラリがあれば列挙する
### 4. ライブラリ使用箇所
ライブラリ使用箇所を調査してください。
リポジトリ内のimport文やrequire文を git grep ライブラリ名 で探して、ファイルパスのリストを作成してください。
### 5. 変更内容の要約
変更内容を要約してください。
ライブラリの公式サイトやGithubを参照し、release noteやchangelog、migration guideを詳しく読んで変更内容を把握してください。
機能追加やAPIの仕様変更のうち、特にアプリケーション側で使っている機能に関係がありそうな変更を抜き出して、報告してください。
変更前と後の間に含まれる、全バージョンの変更内容を1つずつ確認する必要があります。
重要:pull requestの概要欄に書かれている説明は誤っている可能性があるので、無視してください。現状のコードとdiffだけを参考にしてください。
### 6. コードの更新
ライブラリのAPIが変化した場合は、アプリケーションのコードを変更する必要があります。
必要に応じてpull requestを作成してください。
release noteやchangelogだけで正しい変更方法がわからない場合は、githubのcommits内の実際の変更差分や、公式ドキュメントも確認してください。
その変更内容も報告してください。
### 7. 興味深い更新
興味深い更新があれば、報告してください。
例えば以下のような内容です:
- アプリケーションにも応用できそうな新機能の実装や概念の発明
- プログラム言語や実行環境の新機能を活用した面白い機能の実装
- ライブラリの開発体制の変化
## 最終確認
レポートの形式を見直してください。出力先がGithubのコメント欄の場合は、それに適した形式で出力してください。
## Tips: Githubのコメント欄に適した形式
### 外部リポジトリのissue番号やpull request番号は、完全なURL形式で記載する
#12345 ではなく https://github.com/:owner/:repo/issues/12345 と書く。
URLが左右の文字とくっつかないように、半角スペースを適宜付ける。こうすればクリッカブルなリンクとしてwebブラウザ上に描画される。
### pull requestにラベルを付けて状況説明する
出力先がGithubのpull requestの場合は、レポート提出後に「please review」というラベルを付けてください。
あなたの作業が完了した事が他の開発者に伝わります。
CVE番号が発行されているような重要なセキュリティアップデートのpull requestには、追加で「security」ラベルも付けてください。
## 権限が不足している場合は報告する
あなたがGitHub Actions上で実行されているClaude Codeの場合、タスクを遂行するための権限が十分与えられていないかもしれません。
リポジトリの管理者が適切に対応するために、必要な権限を報告してください。
- 実行しようとしていたタスクの内容
- 不足していた権限。例えば
- Claude CodeのallowedTools
- Github Actionsのjobのpermissions
この2つを合体させつつ
超雑で作りかけのライブラリ更新プルリクをshokaiが重視している観点でDevinにレビューさせて、リリースノートの確認とアプリ側のコードの修正もやってもらう
dependabotの作ったライブラリ更新プルリクをshokaiが重視している観点でDevinにレビューさせたり、リリースノート読ませてアプリ側のコードも修正させたりする
ローカルとGithub Actionsの両方のClaude Codeで動かす事を前提に書き直した
Claude Code Github ActionsはWebFetchとWebSearch権限を与えないとGithub外にアクセスできない
WebFetchとWebSearch toolを使う事になるので
Claude Code Github Actionsで動かす場合は設定に注意
使っている様子
名前だけでは役割が思い出せないライブラリを解説してくれる
https://gyazo.com/4e31ddd91f2599da56c9278b44d46065https://gyazo.com/ac5bfc15bc6050c56645b1fd93d768f7
そもそも自分でも存在を認知していない、ライブラリが依存しているライブラリ等も解説してくれるのがありがたい
Dependabotが出してきたminor更新に対して、major更新がある事を教えてくれる
https://gyazo.com/94cff8a39ed24644fac0c05054428533
このライブラリがプロダクト内のどこで、何のために使われているのか教えてくれる
https://gyazo.com/9c2a76f382d6234006cdd7f5ce89a01a
migration guideやrelease noteとソースコードを読み合わせして、修正が必要な箇所を教えてくれる
https://gyazo.com/049526f680b8570812b583f1e9782989
レビュー結果を元に、さらにコードを修正してもらう
https://gyazo.com/391f832a62f9dc200f18982f191fe8cchttps://gyazo.com/79e839436174f86deabae75991bd713c
たぶんレビュー過程で読んだmigration guideやchangelogの知識が使われて、まあまあ正しいコードが出てくると思う
でもあまり複雑な修正は手元のclaude codeでインタラクティブにやったほうがいい
pull requestタイトルと実装が違う事を指摘してくれる
https://gyazo.com/47f6028763a98bb5a234479e74c52030
興味深い更新を教えてくれる
https://gyazo.com/7e9f509fc560764fb11c0f6895ea067b