skills/tobihagemann/turbo/resolve-pr-comments

resolve-pr-comments

SKILL.md

Resolve PR Review Comments

Fetch unresolved review comments from a GitHub PR, critically evaluate each one, fix or skip based on confidence, and reply to each thread.

Step 1: Fetch Unresolved Threads

Fetch all review threads from the PR:

gh api graphql -f query='
query($owner: String!, $repo: String!, $pr: Int!) {
  repository(owner: $owner, name: $repo) {
    pullRequest(number: $pr) {
      title url
      reviewThreads(first: 100) {
        nodes {
          id isResolved isOutdated
          comments(first: 50) {
            nodes { author { login } body path position line }
          }
        }
      }
    }
  }
}' -f owner='{owner}' -f repo='{repo}' -F pr={pr_number}

Auto-detect owner, repo, and PR number from current branch if not provided. Filter to unresolved threads only.

Step 2: Evaluate and Fix

Run the /evaluate-findings skill on the unresolved threads to assess each comment. Proceed with the evaluation results — apply high/medium confidence fixes and skip low confidence suggestions.

Step 3: Self-Improve

Run the /self-improve skill.

Step 4: Stage, Commit, and Push

If any fixes were applied, use AskUserQuestion to ask if the user wants to stage, commit, and push the changes now.

  • Yes — run the /stage-commit-push skill
  • No — leave changes unstaged, proceed to replies

Step 5: Reply to Each Thread

Run /github-voice to load writing style rules before composing replies. Keep replies to one or two sentences. Avoid bullet-point reasoning or bolded labels.

Reply to every processed thread using:

gh api graphql -f query='
mutation($threadId: ID!, $body: String!) {
  addPullRequestReviewThreadReply(input: {pullRequestReviewThreadId: $threadId, body: $body}) {
    comment { id }
  }
}' -f threadId="THREAD_ID" -f body="REPLY_BODY"

Reply format for fixes:

Fixed in <commit-sha>.

Only add a brief description after the SHA if the fix meaningfully diverges from what the reviewer suggested. Otherwise, the commit SHA alone is enough.

Reply format for skips: Just state the reasoning for not changing it.

Step 6: Summary

After processing all threads, present a summary table:

  • Total unresolved threads found
  • Number fixed (high + medium confidence)
  • Number skipped (low confidence)
  • List of files modified

Rules

  • Never resolve or dismiss a review thread — only reply. Let the reviewer resolve.
  • Process comments in file order to minimize context switching.
  • Stale references and default-to-skip policy are handled by the /evaluate-findings skill.
  • When a thread has multiple comments (discussion), read the full thread before deciding.
  • The first comment in each thread is the original review comment; subsequent comments are replies.
  • CodeRabbit may auto-resolve its own review comments after a push. Skip any threads that were resolved between fetching and replying.
Weekly Installs
13
GitHub Stars
17
First Seen
4 days ago
Installed on
claude-code13
mcpjam5
kilo5
junie5
windsurf5
zencoder5