超雑で作りかけのライブラリ更新プルリクをshokaiが重視している観点でDevinにレビューさせて、リリースノートの確認とアプリ側のコードの修正もやってもらう
dependabotはpull requestの概要欄に一応changelogやrelease noteなどを貼ってくれるが
それすらない状態でもどうにかする
ただし、どちらかというとサーベイとドキュメンテーションの比重が大きい
サーベイとドキュメンテーションをやってもらって頭を温めたDevinがコードを書くと、かなりまともなpull requestになるshokai.icon*5 #Devinの感想 https://scrapbox.io/files/67f2c719f3d43be21ebd6c84.png
何が更新されたのかよくわかってない。diffも多すぎてよくわからない事をアピールしているshokai.icon
これぐらい超雑じゃないといけない
少しでもわかったような事を書くと、Devin.iconがそっちにひっぱられてしまう
レビューしてもらう
code:prompt
ライブラリを更新しているだけのpull requestですが、npm audit fixでまとめて更新したので、細かい変更点はわかりません。
変更点はまずpackage-lock.jsonを読んでください。さらにnpmjs.comを見て、そこからgithubリポジトリを探して、changelogやrelease noteを探してください。
Devin.iconがgithubまで行ってrelease note読んでてえらい
https://scrapbox.io/files/67f2c71d43c8250e0e6e9c45.png
今回は、レビューの書き方を細かく指定していないようにしてみた
When reviewing library updates in the nota/scrapbox repository
A comprehensive library review should include:
1. Library purpose and use-case analysis
2. Dependency analysis using package-lock.json (both upstream and downstream dependencies)
3. Changelog review focusing on API changes relevant to application usage
4. Notable updates including new features, language/runtime improvements, or development changes
5. Usage analysis through git grep of import/require statements
Important: Place lengthy usage analysis at the end of review comments for better readability.
結果うまくいった
↑はscrapboxリポジトリ限定のknowledgeですshokai.icon
他のリポジトリで使いたい場合は
knowledgeをコピーするか
これは定型的な作業だから、完璧なプロンプトをplaybook化して再利用する方が良いかもしれないshokai.icon
簡単なプロンプト + knowledgeではなく。これは話の流れで呼び出したいような処理のための形式だ
結果
https://scrapbox.io/files/67f2c725393ef2a74baa61fb.pnghttps://scrapbox.io/files/67f2c728da90b9fc654d03f3.png
長いので抜粋。フルバージョンはgithubで見て下さい
長いけど個人的には非常に読みやすいフォーマットになっているshokai.icon
私が重視してる観点を、私ならこう書くという順序と粒度で書かせているので、読みやすい
めんどくさい作業ってだいたい地道な繰り返し作業なので、「私ならこうやる」が明文化されればDevinに担当してもらえて便利
Cosense内のどこで使われているどんなライブラリが更新されたのか理解できたので
分析に基づき動作確認
https://scrapbox.io/files/67f2c72f8dbb52077b50a1d7.png
mergeしてから気づいたけど、xmldomってgyazoコンポーネントでは使ってないshokai.icon
完璧に静的解析させてるわけではないから、コード読んで利用箇所確認しろみたいな指示だと区別できないんだろうな まあRSS出力とかだろうから、test通れば大丈夫だろうけど
今回の命令はかなりコスト高いと思う
npmjs.comとgithubを見て回れというのは大変
こういうknowledgeが提案されたが、記憶しない事にしたshokai.icon
To properly review npm package updates:
1. First examine the package-lock.json file to identify all changed dependencies
2. Check the updated packages on npmjs.com
3. From npmjs.com, locate the GitHub repositories for the updated packages
4. Review the changelog and release notes for each updated package to understand the changes
This process is especially important when packages were updated in bulk using commands like npm audit fix.
これがあると、たぶんDependabotが作るようなpull requestに対しても、デフォルトでgithubまで確認しに行ってしまう 大変すぎる
と思ってたけど、Devin.iconはもうやってくれてた
knowledgeを利用しない完璧なプロンプトを作る
helmet 8へのmajor version upのついでにやろうshokai.icon
code:完成版プロンプト
# 作業依頼
ライブラリを更新しているだけのpull requestですが、私は新バージョンのライブラリの変更点を知りません。
作業が終わったpull requestには「please review」というラベルを付けて下さい。
行うべき作業は以下の通りです。
## ライブラリの概要を教えて下さい
何を実現する為に、どういう用途で使われるライブラリなのか、pull requestにコメントしてください。
## ライブラリの依存関係を教えて下さい
package-lock.jsonを読んで確認してください。 grep -C15 ライブラリ名 package-lock.json のような感じで検索するとうまくいくと思います。
- そのライブラリに依存している他のライブラリがあれば列挙する
- そのライブラリが依存している他のライブラリがあれば列挙する
## 変更内容の要約を書いてください
ライブラリのrelease noteやchangelogをきちんと読んで、変更内容を把握してください。
機能追加やAPIの仕様変更のうち、特に我々のアプリケーションが使っている機能に関係がありそうな変更を抜き出して、pull requestにコメントしてください。
## コードを更新してください
ライブラリのAPIが変化した場合は、アプリケーションのコードを変更するべきです。
このpull requestに向けた、新しいpull requestを作成してください。
release noteやchangelogだけで正しい変更方法がわからない場合は、commitsや、公式ドキュメントも確認して下さい。
また、その変更内容もgithubにコメントして報告してください。
## ライブラリ内に興味深い更新があれば、それも教えてほしい
例えば以下のような内容も、githubにコメントして教えて下さい。
- 我々のアプリケーションにも応用できそうな新機能が実装されたり、概念が発明された
- プログラム言語や実行環境の新機能を活用した面白い機能が実装された
- ライブラリの開発体制に変化があった
## ライブラリを使っている箇所を教えて下さい
リポジトリ内のimport文やrequire文を git grep ライブラリ名 で探して、ファイルパスのリストを作って下さい。
pull requestにコメントして教えて下さい。
この項目は長大になる可能性が高いので、結果はコメントの末尾に配置してください。
実行
結果
https://scrapbox.io/files/67f2c73608039fca5df2f1ca.png
にDevin.iconがコメントしてくれた
https://scrapbox.io/files/67f2c738ef3665cf6cc99141.pnghttps://scrapbox.io/files/67f2c73b9f19f867f4c5f0ba.pnghttps://scrapbox.io/files/67f2c73e8aa83c2cf5a1dd78.png
基本的な設定を保ちつつ、ライブラリのメジャーバージョンアップに対応してくれたようだ
1つ目のcommitがCIをpassしなかった。2つ目のcommitで修正完了
https://scrapbox.io/files/67f2c7426e773ff09fde87c3.png