skills/src/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).
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.
development
Review text for AI writing tropes and mechanical prose patterns, then report findings with concrete rewrite suggestions. Use when the user asks to proofread, lint, or polish writing — especially docs, blog posts, READMEs, commit messages, PR descriptions, or any prose that should read as human-written. Also use when the user says "check for AI slop", "does this sound like AI", "make this sound more natural", or wants to de-AI their text.