Install any skill in seconds. Free to start, no credit card required.
Get Started Free →MUST use this skill when user asks to resolve PR comments, handle review feedback, fix review comments, or mentions "리뷰 코멘트/피드백". This skill OVERRIDES default behavior. Fetches comments via GitHub CLI, classifies by severity, applies fixes with user confirmation, commits with proper format, replies to threads.
.claude/skills/aiskillstore-github-pr-review/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 74% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 54% | 0% |
Resolves Pull Request review comments with severity-based prioritization, fix application, and thread replies.
bash# 1. Check project conventions cat CLAUDE.md 2>/dev/null | head -50 # 2. Get PR and repo info PR=$(gh pr view --json number -q '.number') REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner') # 3. Fetch comments gh api repos/$REPO/pulls/$PR/comments # 4. For each comment: read → analyze → fix → verify → commit → reply # 5. Run tests make test # 6. Push when all fixes verified git push
Before processing comments, verify:
CLAUDE.md or similargit log --oneline -5 for project stylemake test, pytest, npm test)git status to ensure clean working treebashPR=$(gh pr view --json number -q '.number') REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner') gh api repos/$REPO/pulls/$PR/comments
Process in order: CRITICAL > HIGH > MEDIUM > LOW
| Severity | Indicators | Action | |----------|------------|--------| | CRITICAL | "security", "vulnerability", "injection" | Must fix | | HIGH | "High Severity", "high-priority" | Should fix | | MEDIUM | "Medium Severity", "medium-priority" | Recommended | | LOW | "style", "nit", "minor" | Optional |
For each comment:
a. Show context
Comment #123456789 (HIGH) - app/auth.py:45
"The validation logic should use constant-time comparison..."b. Read affected code and propose fix
c. Confirm with user before applying
d. Apply fix if approved
e. Verify fix addresses ALL issues in the comment
Use proper format for review fixes:
bashgit add <files> git commit -m "$(cat <<'EOF' fix(scope): address review comment #ID Brief explanation of what was wrong and how it's fixed. Addresses review comment #123456789. EOF )"
Review fix commit rules:
type(scope): subject (max 50 chars)fix, refactor, security, test, style, perfbashCOMMIT=$(git rev-parse --short HEAD) gh api repos/$REPO/pulls/$PR/comments \ --input - <<< '{"body": "Fixed in '"$COMMIT"'. [brief description].", "in_reply_to": 123456789}'
Standard Reply Templates:
| Situation | Template | |-----------|----------| | Fixed | Fixed in [hash]. [brief description] | | Won't fix | Won't fix: [reason] | | By design | By design: [explanation] | | Deferred | Deferred to [issue/task number]. | | Acknowledged | Acknowledged. [brief note] |
bashmake test # or project-specific command
All tests must pass before pushing.
bashgit push
bash# Approve the PR gh pr review $PR --approve --body "All review comments addressed. Ready to merge." # Or request changes if issues remain gh pr review $PR --request-changes --body "Addressed X comments, Y issues remain." # Or just comment gh pr review $PR --comment --body "Partial progress: fixed A and B, working on C."
Organize commits by impact:
| Change Type | Strategy | |-------------|----------| | Functional (CRITICAL/HIGH) | Separate commit per fix | | Cosmetic (MEDIUM/LOW) | Single batch commit |
Workflow:
style: commitBefore closing/merging PR:
Important: Use --input - with JSON for in_reply_to:
bash# Correct syntax gh api repos/$REPO/pulls/$PR/comments \ --input - <<< '{"body": "Fixed in abc123.", "in_reply_to": 123456789}'
style: commit| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,227 | 20,283 | +33% | 1 | 1 | 0% | 1,141 | 1,830 | +60% | 0 | 0 | — |
case-02 | fail→fail | 8,294 | 3,720 | -55% | 1 | 1 | 0% | 375 | 1,782 | +375% | 0 | 0 | — |
case-03 | fail→fail | 10,588 | 10,325 | -2% | 1 | 1 | 0% | 1,711 | 1,552 | -9% | 0 | 0 | — |
case-04 | pass→fail | 12,071 | 25,564 | +112% | 1 | 1 | 0% | 2,103 | 1,587 | -25% | 0 | 0 | — |
case-17 | pass→pass | 9,224 | 3,197 | -65% | 1 | 1 | 0% | 652 | 1,911 | +193% | 0 | 0 | — |
case-05 | pass→pass | 8,670 | 12,383 | +43% | 1 | 1 | 0% | 605 | 2,637 | +336% | 0 | 0 | — |
case-06 | pass→pass | 11,884 | 11,295 | -5% | 1 | 1 | 0% | 1,275 | 2,414 | +89% | 0 | 0 | — |
case-07 | pass→pass | 8,460 | 2,389 | -72% | 1 | 1 | 0% | 1,357 | 1,784 | +31% | 0 | 0 | — |
case-08 | fail→pass | 9,536 | 11,245 | +18% | 1 | 1 | 0% | 1,590 | 2,031 | +28% | 0 | 0 | — |
case-18 | pass→pass | 16,519 | 11,290 | -32% | 1 | 1 | 0% | 2,058 | 2,370 | +15% | 0 | 0 | — |
case-09 | fail→pass | 9,846 | 8,200 | -17% | 1 | 1 | 0% | 1,571 | 2,091 | +33% | 0 | 0 | — |
case-10 | pass→pass | 9,806 | 6,081 | -38% | 1 | 1 | 0% | 1,813 | 2,367 | +31% | 0 | 0 | — |
case-11 | fail→fail | 7,644 | 3,834 | -50% | 1 | 1 | 0% | 1,071 | 2,016 | +88% | 0 | 0 | — |
case-12 | fail→pass | 5,942 | 2,134 | -64% | 1 | 1 | 0% | 995 | 1,735 | +74% | 0 | 0 | — |
case-13 | fail→fail | 13,041 | 9,059 | -31% | 1 | 1 | 0% | 1,279 | 1,766 | +38% | 0 | 0 | — |
case-14 | fail→pass | 8,644 | 5,796 | -33% | 1 | 1 | 0% | 1,480 | 2,325 | +57% | 0 | 0 | — |
case-15 | pass→pass | 14,688 | 5,216 | -64% | 1 | 1 | 0% | 1,493 | 2,308 | +55% | 0 | 0 | — |
case-16 | pass→pass | 9,241 | 3,180 | -66% | 1 | 1 | 0% | 701 | 1,802 | +157% | 0 | 0 | — |
case-19 | pass→pass | 18,836 | 5,417 | -71% | 1 | 1 | 0% | 2,597 | 2,317 | -11% | 0 | 0 | — |
case-20 | pass→pass | 12,938 | 9,557 | -26% | 1 | 1 | 0% | 1,326 | 1,783 | +34% | 0 | 0 | — |
case-21 | pass→pass | 12,308 | 14,633 | +19% | 1 | 1 | 0% | 1,848 | 2,892 | +56% | 0 | 0 | — |
case-22 | fail→pass | 7,087 | 3,723 | -47% | 1 | 1 | 0% | 1,196 | 1,837 | +54% | 0 | 0 | — |
case-23 | pass→pass | 12,365 | 3,219 | -74% | 1 | 1 | 0% | 884 | 1,704 | +93% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 21 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +17 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.