원클릭으로
unop-review-pr
Adversarially review a PR's diff against main with inline comments and a verdict, appending to the shared file if one exists
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Adversarially review a PR's diff against main with inline comments and a verdict, appending to the shared file if one exists
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Scan recent Steam comments for bug reports and open or update GitHub issues for them
Analyze a GitHub issue, classify it, post a comment, and write findings to a file
Formulate and apply a fix for a confirmed Unop issue, commit and push
SOC 직업 분류 기준
| name | unop-review-pr |
| description | Adversarially review a PR's diff against main with inline comments and a verdict, appending to the shared file if one exists |
| argument-hint | <PR> [<anchor>] |
Adversarially review the change in a PR. Read the shared file if present, review the approach and the diff against main, and rate each finding by severity. Append a ## Review N section to the shared file, post inline comments and a verdict review on the PR, and apply a verdict label to the anchor.
This skill runs autonomously, without asking for approval. Any human gates belong to the calling workflow, not here. It reports a summary at the end.
ProZeratul/CrusaderKings3UnofficialPatch. Use the gh CLI for all GitHub operations.tmp/issue-<anchor>.md — the handover document. Other skills may create it with the ## Analysis section and append ## Fix N sections. This skill reads both and appends ## Review N. May be absent.517).reviewer.CLAUDE.md first.<identity>: begin each comment's first line with **<identity>:**. A comment containing @<identity> is addressed to you.## Analysis section and every prior ## Fix N and ## Review N.
examples.md for relevant past investigations when a situation it covers comes up.Read the shared file for the investigation, the fix approach, and prior fix/review cycles.
Count the existing ## Fix N sections — this review is ## Review N for the same N. Review only the latest fix; earlier ## Fix N / ## Review N sections are history for context. If the shared file is absent, this is ## Review 1: start it from the PR's intent in place of ## Analysis.
Re-review due to PR feedback. If the PR carries comments after your last **<identity>:** comment (especially any addressing @<identity>), read its conversation and review comments — gh pr view <PR> --comments, plus inline comments via gh api repos/ProZeratul/CrusaderKings3UnofficialPatch/pulls/<PR>/comments. Take any feedback from the maintainers into account but vet each against the code; fold valid points into your ## Review N findings, and note any you disagree with rather than silently deferring.
Check out the PR branch so you can read PR-side files in full, then get its diff with gh pr diff. Read the relevant parts of the affected Unop and vanilla files for context beyond the diff:
gh pr checkout <PR>
gh pr diff <PR>
A PR may bundle several distinct changes; apply the checks below to each on its own merits. The output stays a single findings list and one verdict — don't split it into per-change sections.
Before the line-level review, judge the approach itself — as stated in the latest ## Fix N and as realized in the diff:
## Analysis, or does it patch over a symptom while the underlying bug remains?examples.md (#420).examples.md (#498).examples.md (#498).examples.md (#498).examples.md (#440, #501).examples.md (#213).## Review N exists, does this approach genuinely resolve its High/Medium findings, or merely work around them?For each changed file, check:
examples.md (#213).is_shown / is_valid / can_create block that would still block the reporter's case even after this fix? See examples.md (#440).examples.md (#213).#Unop comments. Are they present on the first changed line? Are they accurate and concise?make tiger yourself — don't trust the fix's claim that it passes. Any error or warning the fix introduced or left unaddressed is a finding. Don't invoke the tiger skill or fix anything; that's for the next fix cycle.ck3-tiger.conf (# False positives / # Ignored), challenge each one: warnings should be fixed, not suppressed, unless tiger is proven wrong. A warning suppressed that should have been fixed is a finding.Assign each finding a severity:
High — the fix is wrong or incomplete: the original bug survives, a regression is introduced, another system is broken, or the approach is fundamentally misdirected.Medium — a significant concern with a plausible failure mode: likely-missed call site, suspicious guard interaction, untested edge case, or a needlessly complex approach.Low — style, clarity, or minor correctness issue that doesn't affect whether the fix works.Severity tracks the shipped fix (the diff and its in-game behavior), not the handover prose. A change you've judged correct and on-purpose is not a Medium because the ## Fix N narrative omitted it, understated its scope, or gave a wrong rationale. An under-described change is at most a Low finding pointing testers at it; it never drives the verdict.
The verdict is Needs work if there is any High or Medium finding, otherwise Looks good.
Append a ## Review N section to the shared file:
## Review N
**Verdict:** Looks good | Needs work
**Findings:**
| Severity | Description |
|---|---|
| High | ... |
| Medium | ... |
| Low | ... |
Omit the findings table if there are no findings.
Get the PR head commit:
SHA=$(gh pr view <PR> --json headRefOid -q .headRefOid)
Prefer inline comments. For each changed line that raises a concern, write a line-level comment — adding a ```suggestion block proposing the exact change where you can. Submit them together with the verdict as one review with event COMMENT, so you neither approve nor block. Build the payload as a JSON file, then post it:
# tmp/review.json:
# {
# "commit_id": "<SHA>",
# "event": "COMMENT",
# "body": "**<identity>:** <Looks good | Needs work> — <gist>\n\n- <one line per High/Medium finding>",
# "comments": [
# { "path": "<file>", "line": <new-file line in the diff>, "side": "RIGHT", "body": "<note; optionally a ```suggestion block>" }
# ]
# }
gh api -X POST repos/ProZeratul/CrusaderKings3UnofficialPatch/pulls/<PR>/reviews --input tmp/review.json
Comment only on lines present in the diff, using new-file numbers with side: RIGHT. Omit comments if you have no line-level notes.
Apply your verdict label to the anchor via the label API — set review:looks-good or review:needs-work, removing the other:
gh api --silent -X POST repos/ProZeratul/CrusaderKings3UnofficialPatch/issues/<anchor>/labels -f "labels[]=review:needs-work"
gh api --silent -X DELETE repos/ProZeratul/CrusaderKings3UnofficialPatch/issues/<anchor>/labels/review:looks-good
When done, report to the user:
Looks good or Needs work).High and Medium findings; Low findings briefly.Needs work, the fix needs another pass; if Looks good, the PR is ready for human review.examples.md contains past investigations, one section per issue. Read the relevant section when its situation comes up.
/unop-review-pr 517