Reply to GitHub PR review comments explaining how each was addressed, then resolve the conversations. Use when the user says "address review feedback", "resolve conversations", "reply to review comments", or after pushing fixes for PR review findings.
From chad-toolsnpx claudepluginhub metcalfc/claude-plugin --plugin chad-toolsThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Reply to and resolve PR review comments on the current branch's PR.
Identify the PR number:
gh pr view --json number --jq '.number'
Get all review comments with their IDs, file paths, and bodies:
gh api repos/{owner}/{repo}/pulls/{pr}/comments --jq '.[] | {id: .id, path: .path, line: .line, body: .body, author: .user.login}'
Get the repo owner and name:
gh repo view --json owner,name --jq '{owner: .owner.login, name: .name}'
For each comment, determine its disposition:
There is no "acknowledged" or "will look at later" disposition. Every comment must be either fixed, rejected with a reason, or tracked in an issue. If a comment is not yet addressed and it's valid, fix it before resolving the thread.
Reply to each comment via the API:
gh api repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies -f body="..."
flock(LOCK_EX|LOCK_NB) to eliminate the TOCTOU race."Resolve all unresolved review threads:
gh api graphql -f query='{
repository(owner: "{owner}", name: "{repo}") {
pullRequest(number: {pr}) {
reviewThreads(first: 50) {
nodes { id isResolved comments(first: 1) { nodes { body } } }
}
}
}
}' --jq '.data.repository.pullRequest.reviewThreads.nodes[] | select(.isResolved == false) | .id'
gh api graphql -f query='mutation { resolveReviewThread(input: {threadId: "{id}"}) { thread { isResolved } } }'Summarize what was done: