From workflow-cc-om
Verify that PR review feedback was actionably implemented, then approve or re-request changes
How this skill is triggered — by the user, by Claude, or both
Slash command
/workflow-cc-om:check-review-omThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are running an interactive workflow to verify whether prior PR review feedback was implemented for PR **#$ARGUMENTS**.
You are running an interactive workflow to verify whether prior PR review feedback was implemented for PR #$ARGUMENTS.
ultrathink
gh repo view --json nameWithOwner --jq .nameWithOwner 2>/dev/null || echo "UNKNOWN_REPO"gh pr view $0 --json title --jq .title 2>/dev/null || echo "UNKNOWN_TITLE"gh pr view $0 --json author --jq .author.login 2>/dev/null || echo "UNKNOWN_AUTHOR"gh pr view $0 --json headRefOid --jq .headRefOid 2>/dev/null || echo "UNKNOWN_SHA"gh pr view $0 --json baseRefName --jq .baseRefName 2>/dev/null || echo "UNKNOWN_BASE"Before starting, verify:
Store the HEAD SHA and repo nameWithOwner — you will need them for the final API call. Parse the OWNER and REPO from nameWithOwner (e.g., "octocat/hello-world" → OWNER=octocat, REPO=hello-world).
Run these commands, substituting OWNER and REPO from the context above:
gh api repos/OWNER/REPO/pulls/$ARGUMENTS/comments --jq '[.[] | {id: .id, path: .path, line: .line, original_line: .original_line, body: .body, user: .user.login, created_at: .created_at, in_reply_to_id: .in_reply_to_id}]'
gh api repos/OWNER/REPO/pulls/$ARGUMENTS/reviews --jq '[.[] | {id: .id, user: .user.login, body: .body, state: .state, submitted_at: .submitted_at}]'
gh pr diff $ARGUMENTS
Process the data:
in_reply_to_id is null). Replies are context, not actionable items.REQUEST_CHANGES state and what their top-level body said.If there are NO root inline comments AND NO reviews with REQUEST_CHANGES state AND no substantive review body feedback:
"No review feedback found on PR #$ARGUMENTS. There is nothing to verify."
Stop here.
Otherwise print:
Found {N} inline comment(s) from: {reviewer logins}
Reviews requesting changes: {count}
Proceeding to verification…
Spawn a general-purpose subagent via the Task tool.
Prompt for the Verification Agent:
You are verifying whether prior review feedback was addressed on PR #$ARGUMENTS.
Prior inline review comments (root comments only): {INSERT FULL LIST — include comment id, path, line, body, reviewer login}
Review-level feedback (from REQUEST_CHANGES reviews): {INSERT REVIEW BODIES AND STATES}
Current diff: {INSERT FULL DIFF FROM PHASE 1}
Your tasks:
Step 1: For each inline comment, use the Read tool to read the current state of the file at the relevant location (±20 lines of context). Do NOT rely only on the diff.
Step 2: Run
gh pr diff $ARGUMENTSyourself if you need to cross-reference what changed.Step 3: For EACH inline comment, assess whether the underlying issue was addressed:
- ADDRESSED — The code change directly resolves the concern. The issue no longer applies to the current code.
- PARTIALLY_ADDRESSED — Something changed, but the core concern remains, the fix is incomplete, or the change introduces a related new problem.
- UNADDRESSED — No relevant change was made, or the change does not resolve the issue described.
- OBSOLETE — The code containing this issue was entirely removed (deleted function, removed file). The concern no longer applies by omission.
Step 4: For any concerns raised only in review bodies (not inline), assess whether those broader points were addressed by the overall diff.
Step 5: Output for EACH inline comment in this exact format:
### C{N}: {first 80 chars of original comment body} - **File:** {path} - **Line:** {original line number} - **Reviewer:** {login} - **Original feedback:** {full original comment body} - **Verdict:** ADDRESSED | PARTIALLY_ADDRESSED | UNADDRESSED | OBSOLETE - **Evidence:** {quote the relevant current code lines or describe exactly what changed. Be specific — no vague assertions.} - **Remaining concern:** {if PARTIALLY_ADDRESSED or UNADDRESSED: what specifically still needs fixing. Otherwise: N/A}Then for review-body feedback (if any), output:
### RB{N}: {first 80 chars of review body concern} - **Reviewer:** {login} - **Original concern:** {full text} - **Verdict:** ADDRESSED | PARTIALLY_ADDRESSED | UNADDRESSED | OBSOLETE - **Evidence:** {specific evidence} - **Remaining concern:** {if applicable. Otherwise: N/A}End with a summary block:
## Verification Summary - ADDRESSED: {count} - PARTIALLY_ADDRESSED: {count} - UNADDRESSED: {count} - OBSOLETE: {count} - Total: {count}Bash hygiene: Only run Bash for actual shell commands (gh, echo, etc.). Do ALL reasoning and analysis as plain text output — never inside bash script comments. Never write shell scripts with
#comment blocks to think through logic. For file reading use the Read tool, for searching use the Grep and Glob tools — do not run grep, awk, head, or tail via Bash unless there is no alternative.
Wait for the Verification Agent to complete. Save its full output.
Present findings ONE AT A TIME. Order: UNADDRESSED first, then PARTIALLY_ADDRESSED, then ADDRESSED, then OBSOLETE.
For each finding:
Display clearly:
For 🔴 UNADDRESSED and 🟡 PARTIALLY_ADDRESSED, ask with AskUserQuestion:
For 🟢 ADDRESSED and ⚪ OBSOLETE, ask with AskUserQuestion:
Record each decision.
If there are more than 8 findings, tell the user the total count upfront and ask:
After triage:
Show triage summary:
Triage complete:
- Re-requesting changes on {N} item(s)
- Accepted as resolved: {M} item(s)
- Skipped: {K} item(s)
Re-requesting:
1. {file}:{line} — {first ~60 chars of comment}
...
Accepted as resolved:
- {file}:{line} (ADDRESSED)
...
Ask review type with AskUserQuestion:
Ask review body with AskUserQuestion:
Build and submit the review in a single gh api call:
gh api repos/OWNER/REPO/pulls/$ARGUMENTS/reviews \
--method POST \
--input - <<'EOF'
{
"commit_id": "{HEAD_SHA}",
"body": "{review body or empty string}",
"event": "{APPROVE|REQUEST_CHANGES|COMMENT}",
"comments": [
{
"path": "{file}",
"line": {line_number},
"side": "RIGHT",
"body": "{comment text}"
}
]
}
EOF
If approving with no inline comments, submit with "comments": [].
CRITICAL: line must be the line number in the NEW version of the file. Always use "side": "RIGHT" unless commenting on a deleted line. Escape all special characters in comment text (quotes → \", newlines → \n, backslashes → \\).
Confirm success — show the review URL from the API response.
Error handling:
gh auth status.gh pr view $ARGUMENTS --json headRefOid --jq .headRefOid and retry.npx claudepluginhub ai-builder-team/ai-builder-plugin-marketplace --plugin workflow-cc-omFetches GitHub PR review feedback, triages comments as valid/stale/incorrect, implements fixes, verifies with tests, and drafts replies.
Fetches and filters PR review comments, extracts outside-diff-range feedback from review bodies, and resolves threads with proper attribution. Useful when addressing CodeRabbit, Cursor, or human reviewer feedback.
Interactively responds to PR review feedback: fetches comments, verifies findings, asks for user approval, makes changes, and posts replies. Use when addressing GitHub pull request reviews.