Devinに「shokaiならこう書き直すよ」というコードレビューをさせる
shokai.iconが他人のコードを修正しているpull requestのリスト
Service Account機能の微調整
babelの更新でtestdb-setup.jsの引数にimportが使えなくなったので、大文字のImportにした
docker buildをCircleCIからGithub actionsに移行 の微調整
page.userIdsとpage.lastUpdateUserIdを付けるmigration taskの修正
ページリスト画面テーブル表示モードのdescription欄のアイコンサイズの調整
mongoose 5から6に更新したら発生する編集コンフリクトbugを修正
NotFastForwardErrorCountの微調整
page.deleteAndWrapUp内の非同期処理の方針統一
validateImportPagesFileを強化、タイトル重複や不正なdeleteオプションを検出してProject JSON Importを拒否する
twitter埋め込みを色々修正
page-lines-chars-count migration taskをproject毎に回す & 処理しないpageをMongoDBから取り出さない
ページリスト画面テーブル表示モードのDescriptions欄の微調整
ページリスト画面のモード選択UIの微調整
読み込んだことがあるProjectScriptやUserScriptが更新された時のstateを "updated" に変更
https://github.com/nota/scrapbox/pull/6847 ブラケティングを例示してLLMに徹底的に教えた。[ ] は維持しろ、行頭の空白文字はインデントである
ブラウザのページ内検索機能を表示したらCosenseの方は隠す、ページ内検索にテキスト選択範囲のpopup menuは不要
文芸的データベースに作成日時・更新日時を表示する を色々調整
Project JSON import時にファイルを複製するオプションの微調整
setCharIndex()のtargetがstringの時だけdata-char attributeにセットする
search.2hopのレポート時のpageIdをvalidate
新LP footerの個人・小グループがリンク切れしていた
/solutionと/resource系のページに日本語以外の設定でアクセスしたら/productにリダイレクトする
新LPのsolution系コンテンツを表示するのは日本語環境だけ
新LPの利用規約のドメイン名にcosen.seを併記
文芸的データベースのtheadの翻訳結果を末尾省略せず折り返して表示する
User settings画面のLanguagesタブがTranslation modeの設定画面である事を明確にした
そこから、shokai.iconが「何をどういう理由でどう書き直したか」を抽出する
Devin.iconにやらせる
Service Account機能の微調整を元に、Devin.iconにナレッジ抽出を行わせた
matsumotius.iconの1200行ぐらいのpull requestに対して、shokai.iconが700行ぐらい変更して、40箇所以上のインラインコメントを入れたもの
https://app.devin.ai/sessions/b555925cdc084570aacbc9d9428258c3
https://nota.slack.com/archives/C089D2SDXDZ/p1742582708167349
shokai.iconが何度もレビューして誤りを指摘したり、抽出できなかったナレッジを追記させたり、微調整を指示して
https://gyazo.com/a37b4097b672c056c20d3fdcbb74cf7ahttps://gyazo.com/fde77f3b695b0d309c4680e17869e489
どんどんmarkdownが更新されて
https://scrapbox.io/files/67f2d325159657efe3a94dda.png
まるで人間のようなファイル名だ
Cosense Coding Guideline第一弾ができた
done.icon https://github.com/nota/scrapbox/pull/7277
お前はドキュメントとコードの読み合わせ機になれ
これをpull requestに対して適用すれば、おかしな所をリストアップしたり、対話的に修正したりする事が可能になるのではないか?shokai.icon
いろんな人に同じ様なレビューを何度もするの大変すぎる
自分のレビューポイントを言語化して、LLMで再利用する事で解決
Devinのknowledgeの様に更新していけるはずだ
まずpull requestにインラインコメントしたり、プルリク返しする、いつものレビューを行う。普通に機能リリースまでやる。
新規のDevin.icon sessionを立ち上げる
「このpull requestからcoding guideに追加すべきナレッジを抽出して、追加してくれ」
あるいは個別に指定して取り込む
diffを行選択してDevin.iconに渡せば、プラクティスとして取り込んでくれる
https://nota.slack.com/archives/C089D2SDXDZ/p1742588602200509?thread_ts=1742582708.167349&cid=C089D2SDXDZ
https://nota.slack.com/archives/C089D2SDXDZ/p1742586419522339?thread_ts=1742582708.167349&cid=C089D2SDXDZ
また、github上でコメントして無くても、ナレッジを言語化したらそれに対応したコードをブランチ間のdiffから探したり、適宜作成したりして良い例と悪い例のドキュメント化をやってくれる
https://nota.slack.com/archives/C089D2SDXDZ/p1742589362761129?thread_ts=1742582708.167349&cid=C089D2SDXDZ
Devin.iconが作業と同時にknowledgeを蓄積するのと似たような感じで、shokai.iconがコードレビューと同時にcoding guideを更新するワークフローができそうだ
うまくいかないパターン
インラインコメントのURLを渡してもうまくいかないようだ?
https://nota.slack.com/archives/C089D2SDXDZ/p1742588396120349?thread_ts=1742582708.167349&cid=C089D2SDXDZ
複数のレビューから一段階抽象化されたナレッジが集まる
プルリク事後レビュー会のプロセスも組み換えできるかもしれない
AIがコード書く時も参考にしてほしい
claude code向けにはCLAUDE.mdを書けば良いらしい
done.icon コード書く時はcoding guidelineを参考にしてくれ、とCLAUDE.mdに書いた #7280
devin向け
knowledgeに追加した
ガイドラインへの追加の例
コーディングガイドラインの18. 標準的なデータ出力には「toApiData」メソッドを使用する の例を修正 #7278
Claude Codeにやらせた
Devinが書いたドキュメントをClaude Codeが理解して引き継げる
Coding Guideline追加: CSSのクラス名とファイルパス、Reactコンポーネント名前とファイルパスを一致させる #7289
https://app.devin.ai/sessions/623afcca55ee4d388043a7fa505aa02a
既存のpull requestのコードを指してDevin.iconに作業させてたら、結果的にもっと適切な例をリポジトリ内から見つけてきて例示してくれた
悪い例の方は、一緒に「クラス名とファイルパスとコンポーネント名が全て一致していない例」を考えた
https://github.com/nota/scrapbox/pull/7144#issuecomment-2746276999
特に文句がないらしい。つまらん結果になったshokai.icon
いやそれはそれで良いのだが
https://gyazo.com/e6081a1559cc64581544a45f965c6a94
https://gyazo.com/817c3e1818ee5183b3a2cef4c7b6ec11
Claude Codeでもレビューできる
このブランチとmainブランチを比較して、変更があったファイルをcoding guidelineに従ってレビューしてください
commit messageは参考にせずコードだけを見てください
https://scrapbox.io/files/67f2d34cdb7a0b52286e5b4f.png
フツーの常識に従った当たり障りのないレビューになってしまったshokai.icon
「coding guidelineの各項目を1つずつレビューしろ」とか言う必要がありそう
まあそのへんはプロンプト次第でDevinと同等の出力できる