| name | get-pr-reviews |
| description | Get nicely formatted output of the last review comments on a PR. Used internally by other skills. |
Get nicely formatted review comments for a pull request, grouped by file and line with proper comment threading.
Steps
-
Determine PR number: If not provided, look up the associated PR for the current branch using:
gh pr view --json number --jq '.number'
-
Get formatted review comments: Use the GitHub API to fetch and format all line-specific review comments:
gh api repos/:owner/:repo/pulls/{PR_NUMBER}/comments --jq '
group_by(.path, .line) |
map({
path: .[0].path,
line: .[0].line,
comments: sort_by(.created_at)
}) |
sort_by(.path, .line) |
map(
"**\(.path)**\n Line \(.line):" +
(.comments |
map(
if .in_reply_to_id then
" | \(.user.login): \(.body)"
else
" (\(.user.login)): \(.body)"
end
) |
join("\n")) + "\n"
) |
join("\n")
'
Output Format
The formatted command produces output like:
**apps/api/src/handlers/optionsHandlers.ts**
Line 98: (tanishqkancharla): I think this is a bug. If you search for e.g. "blue cros", none of these search conditions will match.
| tanishqkancharla: I see that you re-query all insurances below, so this doesn't get used.
| Mochael: I think we should ditch the ilikes and just use the fuzzy search applied to planName, payer name and abbreviation
| tanishqkancharla: default to fuzzy search
**apps/api/src/handlers/optionsHandlers.ts**
Line 116: (tanishqkancharla): fyi: don't need to fix, but I think you can just do `query.where(and(...conditions, or(...searchConditions)))`
Key Features
- Grouped by file and line: Comments are organized by their location in the code
- Threaded conversations: Replies are indented with
| to show the conversation flow
- Chronological order: Comments within each thread are sorted by creation time
- User attribution: Each comment shows the GitHub username of the author
Usage Example
gh api repos/saffron-health/monorepo/pulls/84/comments --jq '...'