From git-skills
Fetch and analyze all reviews on a GitHub pull request. Evaluates each comment's validity against the actual code at HEAD (Agree / Disagree / Unclear with reasoning) and consolidates feedback into Critical / Important / Suggestion categories with a per-reviewer summary. Use when the user says "analyze PR reviews", "summarize review feedback", "what did reviewers say", "show me the review comments", or "/pr-review-analyze".
How this skill is triggered — by the user, by Claude, or both
Slash command
/git-skills:pr-review-analyzeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Resolve the PR number in this priority order:
Resolve the PR number in this priority order:
#123 or 123 in the invocation).*get_pull_request* or gh pr view --json number,title -q '[.number,.title]'.Also collect the PR title and base branch name.
At runtime, scan the available tool list for tools matching the patterns below. Use the first match found for each operation.
| Operation | MCP pattern | gh CLI fallback |
|---|---|---|
| Get PR details | *get_pull_request* | gh pr view <PR> --json number,title,state,baseRefName,headRefName |
| List reviews | *list_pull_request_reviews* or *get_pull_request_reviews* | gh api repos/{owner}/{repo}/pulls/<PR>/reviews |
| List inline review comments | *list_pull_request_review_comments* or *get_review_comments* | gh api repos/{owner}/{repo}/pulls/<PR>/comments |
Fetch reviews and inline comments in parallel once the PR number is resolved.
To resolve {owner} and {repo} for gh CLI fallbacks: git remote get-url origin and parse the GitHub URL.
If reviews length > 0, skip this section.
If reviews length == 0, you MUST run the bundled spool script using the Bash tool before producing any output. Do not substitute the empty-report template — that template is reserved only for when the user aborts the script (e.g. Ctrl-C).
bash scripts/wait-for-reviews.sh <owner> <repo> <PR>
The script blocks, polling every 60s, and exits with status 0 once at least one review exists. After it exits, re-fetch reviews and inline comments in parallel, then proceed with the full-report analysis.
Classify each review and comment using these rules, in priority order:
| Signal | Severity |
|---|---|
Review state is CHANGES_REQUESTED | The review verdict is Critical; its individual comments default to Important unless clearly a nit |
Comment body contains keywords: bug, broken, incorrect, crash, security, vulnerability, data loss, exploit | Critical |
Nit indicator prefix in comment body: nit:, nit -, minor:, optional:, s/ | Suggestion |
| Trivial style remark (whitespace, typo in a comment, trivial rename suggestion) | Suggestion |
| All other comments | Important |
Resolved/outdated comments are still included but marked [resolved] in the output.
After categorizing severity, evaluate each raw comment against the actual code at HEAD and assign one of three validity labels with a 1–2 sentence reason. A raw comment is a single inline or general comment as posted by a reviewer — evaluate them individually, not the consolidated rollup.
| Label | Meaning |
|---|---|
Agree | After reading the code, the reviewer's claim is factually correct and the suggestion is a reasonable improvement. |
Disagree | The reviewer is mistaken about the facts (case is already handled elsewhere, behavior is intentional, claim contradicts the code), or the tradeoff they propose is clearly worse. |
Unclear | The code alone is insufficient to judge — depends on design intent, external system behavior, or business requirements. State in the reason what additional information is needed. |
file:line (not just nearby lines). The reviewer's premise may depend on code far from the cited line.Unclear (out of scope) unless the PR touches the surrounding behavior.file:line or symbol in the reason. Never guess.Unclear over a confident guess when intent is genuinely ambiguous.Before producing output, read references/output-format.md and follow the full-report template verbatim (including verdict rules). The empty-report template is used only when the user aborts scripts/wait-for-reviews.sh (see Spooling section above); in every other case, use the full-report template.
[resolved].Unclear instead of guessing when design intent, business rules, or external behavior is required to judge.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub kimharry99/ai-agent-plugins --plugin git-skills