GitHub PR Inline Reply Skill
This skill enables replying directly to inline review comments on GitHub pull requests.
When to use
-
Replying to individual PR review comments
-
Acknowledging reviewer feedback on specific lines of code
-
Marking review comments as addressed with a reply
API Endpoint
To reply to an inline PR comment, use:
POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies
With body:
{ "body": "Your reply message" }
Using gh CLI
gh api repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies
-X POST
-f body="Your reply message"
Workflow
Get PR comments: First fetch the PR review comments to get their IDs:
gh api repos/{owner}/{repo}/pulls/{pull_number}/comments
Identify comment IDs: Each comment has an id field. For threaded comments, use the root comment's id .
Post replies: For each comment you want to reply to:
gh api repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies
-X POST
-f body="Fixed in commit abc123"
Example Replies
For accepted changes:
-
"Fixed in {commit_sha}"
-
"Accepted - fixed in {commit_sha}"
For rejected changes:
-
"Rejected - {reason}"
-
"Won't fix - {explanation}"
For questions:
- "Good catch, addressed in {commit_sha}"
Notes
-
The comment_id is the numeric ID from the comment object, NOT the node_id
-
Replies appear as threaded responses under the original comment
-
You can reply to any comment, including bot comments (like Copilot reviews)
Resolving Conversations
To resolve (mark as resolved) PR review threads, use the GraphQL API:
Get thread IDs: Query for unresolved threads:
gh api graphql -f query=' query { repository(owner: "{owner}", name: "{repo}") { pullRequest(number: {pull_number}) { reviewThreads(first: 50) { nodes { id isResolved comments(first: 1) { nodes { body path } } } } } } }'
Resolve threads: Use the resolveReviewThread mutation:
gh api graphql -f query=' mutation { resolveReviewThread(input: {threadId: "PRRT_xxx"}) { thread { isResolved } } }'
Resolve multiple threads at once:
gh api graphql -f query=' mutation { t1: resolveReviewThread(input: {threadId: "PRRT_xxx"}) { thread { isResolved } } t2: resolveReviewThread(input: {threadId: "PRRT_yyy"}) { thread { isResolved } } }'
The thread ID starts with PRRT_ and can be found in the GraphQL query response.
Note: This skill can be removed once the GitHub MCP server has added built-in support for replying to PR review comments and resolving threads. See: https://github.com/github/github-mcp-server/issues/1323 https://github.com/github/github-mcp-server/issues/1768