Back to skills
extension
Category: Development & EngineeringNo API key required

github-pr-review-operation

A skill to perform GitHub Pull Request review operations. Execute PR information retrieval, diff checking, comment fetching and posting, inline comments, and replying to comments using gh commands. Use it when you need to conduct PR reviews, code reviews, or PR operations.

personAuthor: jakexiaohubgithub

GitHub PR Review Operation

GitHub CLI (gh) を使ったPRレビュー操作。

前提条件

  • gh インストール済み
  • gh auth login で認証済み

PR URLのパース

PR URL https://github.com/OWNER/REPO/pull/NUMBER から以下を抽出して使用:

  • OWNER: リポジトリオーナー
  • REPO: リポジトリ名
  • NUMBER: PR番号

操作一覧

1. PR情報取得

gh pr view NUMBER --repo OWNER/REPO --json title,body,author,state,baseRefName,headRefName,url

2. 差分取得(行番号付き)

gh pr diff NUMBER --repo OWNER/REPO | awk '
/^@@/ {
  match($0, /-([0-9]+)/, old)
  match($0, /\+([0-9]+)/, new)
  old_line = old[1]
  new_line = new[1]
  print $0
  next
}
/^-/ { printf "L%-4d     | %s\n", old_line++, $0; next }
/^\+/ { printf "     R%-4d| %s\n", new_line++, $0; next }
/^ / { printf "L%-4d R%-4d| %s\n", old_line++, new_line++, $0; next }
{ print }
'

出力例:

@@ -46,15 +46,25 @@ jobs:
L46   R46  |            prompt: |
L49       | -            (削除行)
     R49  | +            (追加行)
L50   R50  |              # レビューガイドライン
  • L数字: LEFT(base)側の行番号 → インラインコメントでside=LEFTに使用
  • R数字: RIGHT(head)側の行番号 → インラインコメントでside=RIGHTに使用

3. コメント取得

Issue Comments(PR全体へのコメント):

gh api repos/OWNER/REPO/issues/NUMBER/comments --jq '.[] | {id, user: .user.login, created_at, body}'

Review Comments(コード行へのコメント):

gh api repos/OWNER/REPO/pulls/NUMBER/comments --jq '.[] | {id, user: .user.login, path, line, created_at, body, in_reply_to_id}'

4. PRにコメント

gh pr comment NUMBER --repo OWNER/REPO --body "コメント内容"

5. インラインコメント(コード行指定)

まずhead commit SHAを取得:

gh api repos/OWNER/REPO/pulls/NUMBER --jq '.head.sha'

単一行コメント:

gh api repos/OWNER/REPO/pulls/NUMBER/comments \
  --method POST \
  -f body="コメント内容" \
  -f commit_id="COMMIT_SHA" \
  -f path="src/example.py" \
  -F line=15 \
  -f side=RIGHT

複数行コメント(10〜15行目):

gh api repos/OWNER/REPO/pulls/NUMBER/comments \
  --method POST \
  -f body="コメント内容" \
  -f commit_id="COMMIT_SHA" \
  -f path="src/example.py" \
  -F line=15 \
  -f side=RIGHT \
  -F start_line=10 \
  -f start_side=RIGHT

注意点:

  • -F (大文字): 数値パラメータ(line, start_line)に使用。-fだと文字列になりエラーになる
  • side: RIGHT(追加行)または LEFT(削除行)

6. コメントへ返信

gh api repos/OWNER/REPO/pulls/NUMBER/comments/COMMENT_ID/replies \
  --method POST \
  -f body="返信内容"

COMMENT_IDはコメント取得で得たidを使用。