PR内のレビュー指摘に回答する
GitHub PR上のコードレビュー指摘に返信し、スレッドを解決します。
入力
すべての入力は会話の文脈から推論します。曖昧な場合のみ確認してください。
入力1 — PR番号またはURL。 操作対象のプルリクエスト。文脈(例:以前に表示されたPR URLやブランチ名)から推論します。どうしても曖昧な場合は、以下を実行します。
gh pr list --head "$(git rev-parse --abbrev-ref HEAD)" --json number,url --jq '.[0]'
入力2 — 回答する指摘。
特定のレビュアーからの指摘。通常は番号(#2)、ファイル+行、または会話内で以前に表示された指摘表の引用テキストで特定します。
会話内に指摘表がなく、dakubo-display-pr-remarks スキルが利用可能な場合は、それを使って指摘表を作成します。利用できない場合は、ユーザーに指摘を尋ねてください。
入力3 — 回答。 投稿する返信:説明、謝辞、または修正の要約。文脈(例:修正または議論された内容)から推論します。不明な場合は尋ねてください。
プロセス
1. コメントIDを特定する
PRのインラインレビューコメントを取得します。
gh api repos/:owner/:repo/pulls/<PR>/comments --paginate \
--jq '.[] | {id, path, line: (.line // .original_line), body: .body[0:120]}'
対象の指摘を行番号、ファイルパス、または本文の断片で一致させ、その id を記録します。
2. 返信を投稿する
gh api repos/:owner/:repo/pulls/<PR>/comments \
--method POST \
--field body="<answer>" \
--field in_reply_to=<comment_id>
3. スレッドを解決する
このコメントを含むレビュースレッドを見つけます。
gh api graphql -f query='
{
repository(owner: "<owner>", name: "<repo>") {
pullRequest(number: <PR>) {
reviewThreads(first: 100) {
nodes {
id
isResolved
comments(first: 1) { nodes { databaseId } }
}
}
}
}
}'
comments.nodes[0].databaseId が元のコメント id(返信ではなく)と一致するスレッドを特定します。その後、解決します。
gh api graphql -f query='
mutation {
resolveReviewThread(input: { threadId: "<thread_node_id>" }) {
thread { isResolved }
}
}'
出力
確認:コメント <id> に <file>:<line> で返信を投稿、スレッドを解決しました。1文で出力します。
やってはいけないこと
- 回答を捏造しないでください — 文脈から推論するか、尋ねてください。
- 返信を投稿せずにスレッドを解決しないでください。
- このブランチで複数のPRがオープンしている場合、PRを推測しないでください。尋ねてください。