返回 Skill 列表
extension
分类: 开发与工程无需 API Key

handling-review-comments

处理GitHub拉取请求的审查评论。当被要求修复审查评论、处理PR反馈或解决审查线程时使用。通过GitHub CLI获取评论,修复代码中的问题,回复审查者,并解决线程。

person作者: jakexiaohubgithub

Handling Review Comments

Process for addressing GitHub PR review comments efficiently using GitHub CLI.

Prerequisites

  • GitHub CLI installed and authenticated: gh auth status
  • Repository cloned locally with push access

Workflow

  1. Fetch comments - Get all review comments from the PR
  2. Fix issues - Implement fixes for each comment
  3. Run checks - Verify fixes pass tests and linting
  4. Commit and push - Group related fixes logically
  5. Reply to comments - Confirm fixes with commit references
  6. Resolve threads - Mark resolved via GraphQL API

Fetching Comments

Get All PR Comments

gh api repos/{owner}/{repo}/pulls/{pr_number}/comments

# Example
gh api repos/sergiodk5/anime-list/pulls/9/comments

Get Review Threads (with resolution status)

gh api graphql -f query='{
  repository(owner: "{owner}", name: "{repo}") {
    pullRequest(number: {pr_number}) {
      reviewThreads(first: 20) {
        nodes {
          id
          isResolved
          comments(first: 1) {
            nodes {
              body
              databaseId
            }
          }
        }
      }
    }
  }
}'

Replying to Comments

gh api repos/{owner}/{repo}/pulls/{pr_number}/comments/{comment_id}/replies \
  -X POST \
  -f body="Fixed in commit {hash}. {description of fix}"

# Example
gh api repos/sergiodk5/anime-list/pulls/9/comments/123456/replies \
  -X POST \
  -f body="Fixed in commit abc123. Added validation as suggested."

Resolving Threads

Single Thread

gh api graphql -f query='
mutation {
  resolveReviewThread(input: {threadId: "THREAD_ID_HERE"}) {
    thread { isResolved }
  }
}'

Multiple Threads

for thread_id in PRRT_abc123 PRRT_def456 PRRT_ghi789; do
  gh api graphql -f query="mutation { resolveReviewThread(input: {threadId: \"$thread_id\"}) { thread { isResolved } } }"
done

Comment Categories

| Type | Action | |------|--------| | Bug/Security | Fix immediately, add tests if needed | | Nitpick | Fix if reasonable, explain if not | | Enhancement | Acknowledge, create follow-up issue if needed | | Question | Answer clearly, add code comments if helpful |

Before Pushing

npm run format && npm run lint && npm run test:unit

Commit Message Format

Group related fixes in logical commits:

git commit -m "fix: address security review feedback

- Add input validation for user-provided colors
- Escape HTML in dynamic attributes
- Use separate timeout variables to prevent race conditions"

Response Patterns

For fixes:

Fixed in commit abc123. Added validation as suggested.

For acknowledged issues:

Acknowledged. This will be addressed in a follow-up PR.

For clarifications:

This is intentional because [reason]. Happy to discuss further.

For questions:

Good question! This works by [explanation]. Added a code comment for clarity.

Verify Resolution

gh api graphql -f query='{
  repository(owner: "{owner}", name: "{repo}") {
    pullRequest(number: {pr_number}) {
      reviewThreads(first: 20) {
        nodes { isResolved }
      }
    }
  }
}'

Complete Workflow Example

# 1. Fetch comments
gh api repos/sergiodk5/anime-list/pulls/9/comments

# 2. Fix issues in code (manual step)

# 3. Run checks
npm run format && npm run lint && npm run test:unit

# 4. Commit and push
git add . && git commit -m "fix: address review feedback" && git push

# 5. Reply to each comment
gh api repos/sergiodk5/anime-list/pulls/9/comments/{id}/replies \
  -X POST \
  -f body="Fixed in commit abc123..."

# 6. Resolve threads
gh api graphql -f query='mutation { resolveReviewThread(input: {threadId: "..."}) { thread { isResolved } } }'

Best Practices

  1. Fix Before Responding - Implement fix before replying to ensure accuracy
  2. Reference Commits - Include commit hashes so reviewers can verify
  3. Group Related Fixes - Combine related changes in logical commits
  4. Run All Checks - Ensure tests/lint pass before pushing
  5. Be Concise - Keep replies brief but informative