Resolve AI PR Reviews
Overview
Triage AI PR feedback, fix code, close Gemini threads, and re-request review.
Workflow
- Gather context
-
Identify repo owner/name and PR number.
-
Ask for direction when a comment conflicts with current policy or implementation.
- Collect AI comments
-
Fetch both review comments and issue comments.
-
Filter authors matching coderabbitai or gemini (case-insensitive).
-
Track unresolved items only.
OWNER=$(gh repo view --json owner --jq .owner.login) REPO=$(gh repo view --json name --jq .name) PR=$(gh pr view --json number --jq .number) # or set PR explicitly
gh api repos/$OWNER/$REPO/pulls/$PR/comments --paginate --jq
'.[] | select(.user.login | test("coderabbitai|gemini"; "i")) |
{id, user: .user.login, path, line, body, url: .html_url}'
gh api repos/$OWNER/$REPO/issues/$PR/comments --paginate --jq
'.[] | select(.user.login | test("coderabbitai|gemini"; "i")) |
{id, user: .user.login, body, url: .html_url}'
- Summarize and confirm decisions
-
Respond in Japanese.
-
Provide a concise update with these sections:
-
Current status (AI comments scanned + unresolved count)
-
Unresolved list (file/path + action)
-
Commands executed
-
Decision request (if policy choice is needed)
- Apply fixes and validate
-
Implement changes with minimal diffs and follow project conventions.
-
Run relevant tests/lint when feasible; state if skipped.
- Resolve Gemini review threads
Note: This script handles up to 250 review threads with up to 100 comments each. For PRs with more extensive review activity, manual resolution may be required.
-
Do not resolve CodeRabbit threads (it auto-closes).
-
Resolve Gemini review threads manually after fixes are complete.
-
Before resolving a Gemini thread, add a short reply comment noting what was fixed (e.g., "対応しました。: ").
-
For Gemini feedback, always leave a reply comment and then resolve the thread.
THREAD_IDS=$(gh api graphql -f query='
query($owner:String!, $repo:String!, $number:Int!) {
repository(owner:$owner, name:$repo) {
pullRequest(number:$number) {
reviewThreads(first:250) {
nodes {
id
isResolved
comments(first:100) {
nodes { author { login } }
}
}
}
}
}
}' -F owner=$OWNER -F repo=$REPO -F number=$PR --jq
'.data.repository.pullRequest.reviewThreads.nodes[] |
select(.isResolved == false) |
select([.comments.nodes[].author.login] | any(test("gemini"; "i"))) |
.id')
for id in $THREAD_IDS; do gh api graphql -f query=' mutation($id:ID!) { resolveReviewThread(input: {threadId: $id}) { thread { isResolved } } }' -F id=$id done
- Push and request re-review
-
Commit and push if appropriate for the repo workflow.
-
Post /gemini review on the PR after push.
-
After posting /gemini review , it takes time to process, so run the skill again after the user confirms completion.
gh pr comment $PR --body "/gemini review"
- Report back
-
Confirm fixes applied, tests run, Gemini threads resolved, and re-review requested.
-
List any remaining unresolved items or decisions.