etc/claude/skills/triage-review/SKILL.md
Processes AI reviewer feedback and applies only verified fixes. Works in two modes: (1) fetches comments from a PR URL or current branch, (2) processes feedback pasted directly into the conversation. Trigger when the user wants to bulk-process or apply AI review suggestions — from a GitHub PR or pasted text. Do NOT trigger for single questions about what a bot said, or general code review discussion.
npx skillsauth add shuymn/dotfiles triage-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before fetching anything, determine where the feedback is coming from:
gh api calls. The text may or may not name a specific bot; focus on extracting actionable technical suggestions. If suggestions reference specific files or line numbers, confirm those paths exist locally before applying fixes.Arguments may be a PR URL, PR number, or empty (use current branch's PR).
https://github.com/owner/repo/pull/123 was given, resolve <owner>, <repo>, and <pr_num> from the URL.<owner> and <repo> from gh repo view, then use the provided PR number as <pr_num>.<owner> and <repo> from gh repo view, then resolve <pr_num> from gh pr view.Gather PR info using gh api (works for any repo, not just the current one). Substitute concrete values directly into each command:
# PR metadata
gh api repos/<owner>/<repo>/pulls/<pr_num> --jq '{title,state,body}'
# Changed files
gh api repos/<owner>/<repo>/pulls/<pr_num>/files --jq '.[].filename'
# General PR comments (issue-level)
gh api repos/<owner>/<repo>/issues/<pr_num>/comments \
--jq '.[] | "[\(.user.login)] \(.body)"'
# Review-level comments (overall approval/request changes)
gh api repos/<owner>/<repo>/pulls/<pr_num>/reviews \
--jq '.[] | "[\(.user.login)] \(.state): \(.body)"'
# Inline review thread comments (line-specific suggestions — most common for bots)
gh api repos/<owner>/<repo>/pulls/<pr_num>/comments \
--jq '.[] | "[\(.user.login)] \(.path):\(.line // .original_line): \(.body)"'
If no comments exist from any AI reviewer, report "No AI reviewer comments found" and stop.
Look for comments from:
Copilot, copilot[bot], copilot-pull-request-reviewer[bot], github-copilot,
gemini-code-assist[bot], google-code-assist, google-code-assist[bot],
chatgpt-codex-connector[bot], devin-ai-integration[bot]
Extract all suggestions from these reviewers. If multiple bots commented, process each bot's suggestions as a group.
For each AI comment, perform fact-checking. Choose the lightest verification path that can prove or disprove the suggestion:
a) Extract Technical Claims
b) Choose Verification Path
c) Run Verification
Local verification process:
Web verification process: Use available Web Search tool(s) with the SAME query to cross-verify:
Search Strategy:
Verification Process:
Decision Criteria:
✅ Verified & Apply:
⚠️ Partially Verified:
❌ Incorrect/Unverified:
For each verified suggestion, document before applying:
File: [filename]
Line: [line number or range]
Issue: [Brief description]
Verification: [What local evidence and/or external evidence confirmed]
Fix: [Exact change to apply]
Source: [file path, test/command output, and/or documentation/CVE/Benchmark URL]
## AI Review Verification Report
### Verified & Applied
1. **[File]**: [What was fixed]
- Evidence: [Local evidence and/or verification source/URL]
- Change: [Brief description]
### Partially Verified
1. **[File]**: [What was conditionally fixed]
- Findings: [Local evidence and/or mixed external findings]
- Rationale: [Why applied or not]
### Incorrect / Not Applied
1. **[Suggestion]**: [Why it was incorrect]
- Findings: [What local evidence and/or search revealed]
### Summary
- Total AI suggestions: X
- Verified fixes applied: Y
- Incorrect suggestions: Z
Do not post replies by default. Posting on a PR is a public, hard-to-reverse action visible to teammates and bots, so wait for an explicit, unambiguous request before invoking the GitHub API. Triage and applying fixes never imply consent to post — those are separate steps.
Trigger this section only when the user explicitly asks to reply or comment on the PR — e.g., "コメントしていって", "返信しといて", "reply on the PR", "post the replies". If the user only asked to triage, apply fixes, or produce a report, stop after the Final Report and say nothing about posting unless they bring it up. When the intent is ambiguous, ask first.
Also skip in direct-input mode — there is no thread to reply to.
gh api -X POST repos/<owner>/<repo>/pulls/<pr_num>/comments/<comment_id>/replies \
-f body="<reply body>"
If the user says they have already edited an existing reply themselves, do not re-edit or overwrite it — only post replies for threads that still lack one.
One reply ≈ verdict + commit hash + at most one line of justification. Skip salutations, thanks ("指摘ありがとう", "thanks for the catch"), and sign-offs — they add noise for human reviewers scanning the thread, and the bot does not benefit from politeness. Lead with what was actually done.
GitHub auto-links 7+ char hex hashes, but the autolinker fails when a hash sits directly against a full-width bracket (). Insert a half-width space between the bracket and the hash so the link still renders.
(abc1234) — not linked( abc1234 ) — linked(abc1234) — linked (half-width brackets work as-is)Default to 常体 (だ・である調) and run a quick /proofread pass mentally before posting. Reasoning: the thread reader is usually a human teammate, not the bot — robotic AI clichés and translation-flavored phrasing make the reply harder to skim.
Q1, Q2, ...); require QID: <answer> responses and allow QID: OTHER(<concise detail>) when no option fitsdevelopment
Simplifies recently changed code by running three parallel reviews (reuse, quality, efficiency) and applying only behavior-preserving fixes. Use when the user asks to simplify, clean up, reduce duplication, improve code reuse, or optimize recently changed code, a staged diff, a branch diff, or explicitly listed files. Also use when the user says things like 'simplify this', 'まとめて整理して', 'コードをスリムにして', or invokes `/simplify`.
tools
Use when the user invokes /workflow. Injects project workflow methodology as context. Accepts argument: plan, exec, review (default: all).
development
Processes AI reviewer feedback and applies only verified fixes. Works in two modes: (1) fetches comments from a PR URL or current branch, (2) processes feedback pasted directly into the conversation. Trigger when the user wants to bulk-process or apply AI review suggestions — from a GitHub PR or pasted text. Do NOT trigger for single questions about what a bot said, or general code review discussion.
testing
Prepares .ralph/ runtime state from an approved and reviewed plan bundle. Syncs plan tasks into prd.json and updates prompt.run.md with project-specific context and quality gates. Use after plan approval, decompose-plan review PASS, and ralph init.