원클릭으로
pr-review
Review a GitHub PR by number against the repo's PR template, audit checklist, and conventions. Use when the user says "review PR
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Review a GitHub PR by number against the repo's PR template, audit checklist, and conventions. Use when the user says "review PR
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Audit a file, package, or diff for cryptographic correctness, errs-go compliance, deserialization safety, and audit-scope risk. Use when the user asks to audit, review for security, or check before merging into in-scope code.
Audit code for timing side-channels — variable-time operations on secret values. Use when the user asks to check constant-time, timing, or side-channel safety of a file, function, or diff in this repo.
Run audit twice in parallel — once in this Claude session, once via OpenAI's Codex CLI — then merge the findings into unique-to-each / agreed-by-both buckets followed by both raw reports. Use when the user says "dual-audit <target>" or wants a second-opinion audit of a file, package, or diff.
Run pr-review twice in parallel — once in this Claude session, once via OpenAI's Codex CLI — then merge the findings into unique-to-each / agreed-by-both buckets followed by both raw reports. Use when the user says "dual-review PR
Run spec-compliance twice in parallel — once in this Claude session, once via OpenAI's Codex CLI — then merge the findings into unique-to-each / agreed-by-both buckets followed by both raw reports. Use when the user says "dual-spec-compliance <target>" or wants a second-opinion check of paper/spec/reference-implementation alignment for a package.
Determine whether a package faithfully implements its cited reference — academic paper, normative spec (RFC / wiki / design doc), or upstream reference implementation code. Use when the user asks to check paper/spec/reference-implementation compliance, reduction alignment, byte-exact parity with an upstream, or whether the code matches the protocol description in a README, paper, RFC, or `code` directive.
| name | pr-review |
| description | Review a GitHub PR by number against the repo's PR template, audit checklist, and conventions. Use when the user says "review PR |
| effort | max |
You are reviewing a PR for this repo. Be terse. Cite file:line. Don't approve or block — give findings.
Get the PR: gh pr view <N> --json title,body,files and gh pr diff <N>.
Read the PR description against .github/pull_request_template.md. Note any unchecked box that the diff actually needed (tests claimed but absent, docs claimed but missing, etc.).
Walk the diff for:
errs.Wrap(err).WithMessage(...)._test.go change. New invariants → _prop_test.go with rapid. Reproducer for a bug fix. Ensure that the tests are meaningful and not just "coverage noise". For cryptography code, ensure the tests are cryptographically meaningful. If there are multiple ways to instantiate a test object, ensure that the tests cover them - for example, if a sharing scheme is defined over arbitrary monotone access structures, ensure that the tests cover at least two different access structures, not just the same one with different parameters.doc.go and a README.md. For existing packages, ensure that all documentation in doc.go and README.md still applies and are up to date after the change.ErrSerialization = errs.New("serialisation error") is mixed; flag it).*.gen.go should come with the matching generator change in tools/, or whereever they were generated in the first place.Pre-existing issues: if the diff touches a file with pre-existing issues, note whether the diff makes them worse, better, or has no impact.
Before writing the report, actively check the categories below — these are the ones most often missed when the diff is large:
- lines in _test.go files for assertions with no replacement.testdata/rapid/* directory names, doc comments referencing the old method, error messages echoing the old name.StructureMustBeAs / type assertions on code paths that a new flavor exercises. Type-level smoke-test assertions don't catch runtime panics.Unmarshal* / From* methods re-run the same invariants the New* constructors enforce? Trust-boundary code must validate.Output as GitHub-flavoured markdown. Use headers, bold severity tags, and code spans for paths so the terminal renders a clear visual hierarchy. Do not wrap the whole report in a fenced code block (that defeats the renderer). Template:
## PR #<N> — <title>
**Audit-scope files:** `path1`, `path2` _(or "none")_
### Findings
- **[blocker]** `file.go:42` — short description
- **[nit]** `file.go:99` — short description
- **[question]** `file.go:123` — short description
_(If none: "No findings.")_
### Description vs. diff
<one line: "matches" or the specific mismatch>
### Recommendation
<one short paragraph>
Severity tags must be one of [blocker], [nit], [question] and always bolded so they pop in the terminal. Order findings as you discover them; severity tags are for the reader, not a filing system. Aim for breadth of investigation before brevity — a thorough report with ungrouped findings beats a tidy one with gaps.