---
name: PR Review Comments
slug: pr-review-comments
category: Quality
description: PR Review Comments formats the latest pull request review comments by file and line, with threads preserved. Use it when you need a concise view of feedback on a PR.
github: "https://github.com/saffron-health/libretto/tree/main/.agents/skills/get-pr-reviews"
language: TypeScript
stars: 877
forks: 67
install: "npx degit https://github.com/saffron-health/libretto/tree/main/.agents/skills/get-pr-reviews ~/.claude/skills/get-pr-reviews"
installs_to: ~/.claude/skills/get-pr-reviews
source_path: .agents/skills/get-pr-reviews/SKILL.md
collection_size: 23
category_size: 1354
collection_url: "https://dirskills.com/collections/saffron-health/libretto"
added: 2026-08-22T05:21:19.211Z
last_synced: 2026-08-22T05:21:19.211Z
canonical_url: "https://dirskills.com/skills/pr-review-comments"
---

# PR Review Comments

PR Review Comments formats the latest pull request review comments by file and line, with threads preserved. Use it when you need a concise view of feedback on a PR.

**Install:**

```bash
npx degit https://github.com/saffron-health/libretto/tree/main/.agents/skills/get-pr-reviews ~/.claude/skills/get-pr-reviews
```

## README

Get nicely formatted review comments for a pull request, grouped by file and line with proper comment threading.

## Steps

1. **Determine PR number**: If not provided, look up the associated PR for the current branch using:

   ```bash
   gh pr view --json number --jq '.number'
   ```

2. **Get formatted review comments**: Use the GitHub API to fetch and format all line-specific review comments:
   ```bash
   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

```bash
# Get formatted review for PR #84
gh api repos/saffron-health/monorepo/pulls/84/comments --jq '...'
```
