【小技】GitHubで指摘された内容をAIに楽に修正させる
GitHubで指摘された内容をAIに楽に修正させるTips
Table of contents
author: oikawa-k
はじめに
仕事でAI使っていますか?弊社では最近になってようやっと本格的に生成AIを利用し始めたばかりで使いこなせているかは疑わしいですが、 私が現在仕事を楽にするために作ったskillsの共有をします。
レビュー対応の効率化
弊社では生成AIの利用は認められていますが、レビューはAIを活用しつつも人の目を通して行われ、その修正をする時にレビューのコメントをプロンプトにコピペする作業が発生するためこれを短縮するskillsを作りました もっと突き詰めれば修正を自動化するというのも考えられそうですが、個人ですぐできる範囲ということでskillsでやってます。
1. GitHub上のレビューコメントを取得するスクリプトの作成
以下のようなGitHub上のレビューコメントを取得するスクリプトファイルを作成します。ファイル名はなんでもよいですがここでは get-pr-review とします。
get-pr-review
#!/usr/bin/env bash
OWNER=$1
REPO=$2
PR=$3
gh api graphql -f query="
query {
repository(owner: \"${OWNER}\", name: \"${REPO}\") {
pullRequest(number: ${PR}) {
comments(first: 100) { nodes { author { login } body url } }
reviews(first: 100) { nodes { author { login } body url } }
reviewThreads(first: 100) {
nodes {
isResolved
comments(first: 100) { nodes { author { login } path line body url } }
}
}
}
}
}" --jq '
.data.repository.pullRequest |
(
(.comments.nodes[] | {type: "General Comment", author: .author.login, url: .url, body: .body}),
(.reviews.nodes[] | select(.body != "" and .body != null) | {type: "Review Summary", author: .author.login, url: .url, body: .body}),
(.reviewThreads.nodes[] | select(.isResolved == false) | .comments.nodes[] | {type: "Unresolved Inline", author: .author.login, file: .path, line: .line, url: .url, body: .body})
)
'
GitHub CLI のコマンドを使用しているので適宜利用可能な状態にしておいてください。
このような処置する理由として、このあとskillsで実行するコマンドを指定するのですが、コマンドの内容が長すぎるとAIがうまく解釈できないためスクリプトファイルにまとめておいて短いコマンドで実行可能な状態にするためです。
GitHub上のコメント取得には gh pr view がありますが、それだとresolved済みのコマンドも取ってきてしまうのでこのような形になっています。未対応のコメントにのみ対応させたいため。
2. Skillsを記載する
Skillsを記載します。例ではClaude Codeのものですが、他のコーディングアシスタントAIを利用する場合は適宜変えてください。
---
name: fix-pr-review
description: Pull Requestのレビュー指摘を取得し、未解決の指摘に基づいてコードを修正する
user-invocable: true
allowed-tools: "Bash Read Edit Write Grep Glob Agent"
---
# Fix PR Review
Pull Requestのレビュー指摘内容を取得し、未解決の指摘に基づいてコードを修正する。
## Steps
1. **レビュー内容の取得**: 以下のコマンドを実行してPRのレビューコメントを取得する
```sh
get-pr-review $OWNER $REPO $(git branch --show-current)
```
2. **レビュー内容の分析**: 取得したレビューコメントを分析し、修正が必要な指摘を特定する
3. **解決済みの指摘をスキップ**: すでに解決済み(resolved)の指摘は修正しない
4. **コードの修正**: 未解決の指摘に対して、該当するコードを修正する
5. **修正結果の報告**: 修正した内容と、対応しなかった指摘(解決済みのもの)を報告する
## Notes
- 解決済みの指摘には手を加えないこと
- レビュー指摘の意図を正しく理解した上で修正すること
- 修正が不要と判断した指摘がある場合は、その理由を報告すること
プロンプト上で /fix-pr-review を呼び出せばPR上のレビューコメントから指摘事項を取得して修正してくれます。
いかがでしたか?
※本記事は、ジーアイクラウド株式会社の見解を述べたものであり、必要な調査・検討は行っているものの必ずしもその正確性や真実性を保証するものではありません。
※リンクを利用する際には、必ず出典がGIC dryaki-blogであることを明記してください。
リンクの利用によりトラブルが発生した場合、リンクを設置した方ご自身の責任で対応してください。
ジーアイクラウド株式会社はユーザーによるリンクの利用につき、如何なる責任を負うものではありません。