Skip to content
Back to skills

Review Pr Comments

ASecurity

Review and triage PR review comments on the current branch — groups threads by file, separates bots from humans, walks through unresolved comments interactively

  • 3,754 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 3, 2026
devopsgobashgitapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add DataDog/datadog-agent --skill review-pr-comments --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Pr Comments?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Review Pr Comments
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/datadog-review-pr-comments/badge)](https://www.skillsdirectory.com/skills/datadog-review-pr-comments)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: review-pr-comments
description: Review and triage PR review comments on the current branch — groups threads by file, separates bots from humans, walks through unresolved comments interactively
model: sonnet
---

# Review PR Comments

Fetch, summarize, and interactively triage review comments on the PR for the current git branch.

## Prerequisites

- `gh` CLI authenticated with access to the repository
- Current branch must have an open PR (not `main` or a release branch like `N.N.x`)

## Workflow

### Step 1: Identify the PR

```bash
BRANCH=$(git branch --show-current)
```

Guard: skip if branch is `main`, `master`, or matches release pattern `^\d+\.\d+\.x$`.

Find the PR:

```bash
gh pr list --head "$BRANCH" --json number,title,url,state --limit 5
```

If no PR found, inform the user and stop.

### Step 2: Fetch all review data

Run these three `gh api` calls in parallel:

```bash
# Review comments (inline code comments)
gh api repos/{owner}/{repo}/pulls/{PR_NUMBER}/comments --paginate \
  --jq '.[] | {id, path, line, body, user: .user.login, created_at, in_reply_to_id, diff_hunk}'

# Top-level reviews (approval/request-changes status + body)
gh api repos/{owner}/{repo}/pulls/{PR_NUMBER}/reviews --paginate \
  --jq '.[] | {id, user: .user.login, state, body}'

# Issue-level comments (general PR discussion, CI bot reports)
gh api repos/{owner}/{repo}/issues/{PR_NUMBER}/comments --paginate \
  --jq '.[] | {id, user: .user.login, body, created_at}'
```

Extract `{owner}` and `{repo}` from `gh repo view --json owner,name`.

### Step 3: Organize into threads

Group review comments into conversation threads using `in_reply_to_id`:
- A comment with `in_reply_to_id: null` starts a new thread
- Replies link to their parent thread

For each thread, track:
- **File & line** from the root comment
- **Author** of the root comment
- **All replies** in chronological order
- **Resolution status**: resolved if the PR author replied last

### Step 4: Classify comments

Separate into two groups:

**Bot comments** (user login ends with `[bot]` or is a known CI bot):
- Summarize briefly (e.g., "CI quality gates passed", "Regression detector: no regressions")
- Only highlight actionable items (failures, warnings)

**Human reviewer comments**:
- These get full treatment in Step 5

### Step 5: Present and triage each human comment

For each unresolved human reviewer comment thread:

1. **Show context**: file, line, diff hunk, the comment body
2. **Read the current file** at the referenced location to understand current state
3. **Summarize** the reviewer's concern in one sentence
4. **Propose** a concrete action: code fix, reply text, or explanation
5. **Ask the user** what to do using AskQuestion:

```
Options:
- "Fix" → Apply the proposed code change
- "Reply" → Post a reply comment on the PR via gh api
- "Reply with custom message" → Ask user for reply text, then post
- "Add TODO" → Add a TODO item to track for later
- "Skip" → Move to next comment
```

For already-resolved threads (PR author replied last), present them as a summary group:
- Show the comment + your reply, note it's resolved
- Ask if user wants to revisit any

### Step 6: Execute chosen actions

**Fix**: Edit the file, show the diff to the user. Do NOT commit automatically.

**Reply**: Post via gh API:

```bash
gh api repos/{owner}/{repo}/pulls/{PR_NUMBER}/comments \
  -f body="$REPLY_TEXT" -f in_reply_to=$COMMENT_ID
```

**TODO**: Use the TodoWrite tool to track it.

### Step 7: Summary

After processing all comments, output a summary table:

```
| # | File | Reviewer | Action Taken |
|---|------|----------|--------------|
| 1 | path/to/file.go:42 | reviewer1 | Fixed |
| 2 | path/to/other.py:10 | reviewer2 | Replied |
| 3 | path/to/build.bzl:5 | reviewer3 | Skipped (already resolved) |
```

## Edge Cases

- **No unresolved comments**: Report "All review comments are resolved" with approval status summary
- **PR not found**: Suggest the user push the branch or create a PR first
- **Outdated diff hunks**: Note that the comment may reference old code; read the current file to verify
- **Multiple PRs for branch**: Use the most recent open one

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.