Use when the user asks to process, triage, fetch, view, count, list, or resolve review feedback in a GitHub PR. Supports both CodeRabbit and Codex review workflows. In this workflow, “real review feedback” is strictly defined as actionable inline comments; for CodeRabbit, exclude review summaries and nitpicks, and for Codex, exclude review summary cards and use PR main-thread reactions only as status signals.
68
82%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
This workflow supports both CodeRabbit and Codex PR review signals.
“Real review feedback” is strictly defined as:
Nitpick comments from CodeRabbit must always be ignored to avoid unnecessary noise.
There is no need to analyze the comment content itself.
The CodeRabbit workflow only needs these two sources:
PR review comments
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/commentsThis is the authoritative source for real inline comments.
PR reviews
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/reviewsThis is only used to identify and exclude review summaries / nitpick summaries. It is not used to extract the final result.
Do not treat these as primary sources:
gh pr view ...gh api repos/<owner>/<repo>/issues/<pr_number>/commentsReason: they are not the authoritative source for actionable inline comments.
If the user may ask you to resolve review conversations after triaging them, fetch review thread IDs as soon as you know the PR number:
gh api graphql -f query='query { repository(owner: "<owner>", name: "<repo>") { pullRequest(number: <pr_number>) { reviewThreads(first: 100) { nodes { id isResolved comments(first: 20) { nodes { databaseId path line author { login } body } } } } } } }'This is not a primary source for actionable review feedback. It is only for mapping inline comments to resolvable thread IDs.
Recommendation:
databaseId / path / line to thread IDs in one pass.gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/commentsOnly keep records that satisfy all of the following:
user.login is coderabbitai[bot] or coderabbitaiin_reply_to_id == null (only top-level inline comments, not replies)This is the candidate set.
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/reviewsIdentify CodeRabbit review summaries. Common characteristics include:
Actionable comments posted: NNitpick commentsThese review-level contents are not the final result. They are only used to help determine:
The final goal of the CodeRabbit workflow is always:
Top-level inline comments left by CodeRabbit in
pulls/<pr_number>/commentsthat are neither nitpicks nor summaries
Important:
In practice, do the following:
pulls/<pr_number>/commentspulls/<pr_number>/reviews to determine whether the PR contains nitpick summariesIf the output of gh api --paginate ... is too large and gets truncated:
@explorer to extract:
path / line / bodyWhen triaging review feedback, apply this rule:
In short:
If the user asks to resolve a CodeRabbit review conversation:
reviewThreads GraphQL data.
databaseId when possible.path + line + author login.gh api graphql -f query='mutation { resolveReviewThread(input: {threadId: "<thread_id>"}) { thread { isResolved } } }'Notes:
pulls/<pr_number>/comments remains the source of truth for identifying actionable inline comments.reviewThreads is only for thread-level operations such as resolving conversations.“Real review feedback” is strictly defined as:
There is no need to analyze the comment content itself.
eyes reaction from chatgpt-codex-connector[bot].+1 (thumbs up).pulls/<pr_number>/comments and a review summary card in pulls/<pr_number>/reviews.The Codex workflow uses these sources:
PR review comments
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/commentsThis is the authoritative source for actionable inline Codex comments.
PR reviews
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/reviewsThis is used to identify the Codex review summary card such as ### 💡 Codex Review. It is not the primary source of actionable inline feedback.
Issue comment reactions on the PR main thread
First fetch the PR issue node / comments if needed:
gh api repos/<owner>/<repo>/issues/<pr_number>/comments
gh api repos/<owner>/<repo>/issues/<pr_number>/reactionsUse reactions on the PR main conversation thread only to detect Codex review state:
eyes from chatgpt-codex-connector[bot] → Codex review appears to be in progress+1 from chatgpt-codex-connector[bot] on the PR main thread → Codex reviewed and found no issuesThese reactions are status signals, not actionable review feedback.
Do not treat these as primary sources for actionable comments:
gh pr view ...gh api repos/<owner>/<repo>/issues/<pr_number>/commentsgh api repos/<owner>/<repo>/issues/<pr_number>/reactionsReason: actionable Codex review feedback still lives in PR review comments, not in the PR issue timeline.
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/commentsOnly keep records that satisfy all of the following:
user.login is chatgpt-codex-connector[bot]in_reply_to_id == null (only top-level inline comments, not replies)This is the candidate set of actionable Codex comments.
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/reviewsIdentify Codex review summaries. Common characteristics include:
### 💡 Codex ReviewHere are some automated review suggestions for this pull request.These review-level contents are not the final result. They are only used to understand whether Codex posted a review summary.
If the user asks whether Codex is still reviewing, or whether Codex finished with no findings, inspect reactions on the PR main thread.
Interpret them as follows:
eyes by chatgpt-codex-connector[bot] → likely still reviewing / review in progress+1 by chatgpt-codex-connector[bot] with no Codex inline comments → likely completed with no findingsDo not count these reactions as review comments.
The final goal of the Codex workflow is always:
Top-level inline comments left by Codex in
pulls/<pr_number>/comments
In practice, do the following:
pulls/<pr_number>/commentspulls/<pr_number>/reviews only to recognize the summary cardeyes)+1)If any gh api --paginate ... output is too large and gets truncated:
@explorer to extract:
path / line / bodydadfb1c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.