review-pr

review-pr is a command for Claude Code from nlook-service/issue-template. It costs 21 tokens per session (2,749 once invoked), scanned A, original, MIT.

A command for reviewing a GitHub pull request against its issue contract and design documents. A pull request is a proposed code change submitted for review; gh is GitHub's command-line tool.

In plain words
What is it for?
Use it with a pull-request number and optional issue number to inspect the PR, read its linked Issue and design documents, compare the diff with the requirements, rerun checks when needed, and decide whether to approve or reject it.
Why use it?
It checks whether the implementation stayed within scope, followed the agreed interfaces and edge cases, included suitable tests, and met its stated completion checks.

Command for Claude Code

Written for Claude Code: disable-model-invocation in frontmatter. Also seen: model in frontmatter; positional $N argument.

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/nlook-service/issue-template/review-pr
Clone the repo
git clone --depth 1 https://github.com/nlook-service/issue-template

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for review-pr

README.md
[![agentmods](https://agentmods.dev/badge/commands/nlook-service/issue-template/review-pr.svg)](https://agentmods.dev/commands/nlook-service/issue-template/review-pr)
Your own site
<a href="https://agentmods.dev/commands/nlook-service/issue-template/review-pr"><img src="https://agentmods.dev/badge/commands/nlook-service/issue-template/review-pr.svg" alt="Measured on agentmods" height="20"></a>
Per session 21 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,749 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00021 $0.02749
Opus 5 $0.00010 $0.01375
Sonnet 5 $0.00004 $0.00550
Haiku 4.5 $0.00002 $0.00275

Measured 5d ago against content hash 2b03e028b0e3, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

review-pr scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

claude/commands/review-pr.md · 107 lines

How it starts

The opening of the file, as written. The whole thing — 107 lines — stays where its author put it; the contents beside it link to each section on GitHub.

당신은 리뷰 담당 시니어 아키텍트다. 구현이 아니라 설계 의도와 이슈 계약 대비 검증만 한다.

대상 PR: #$1 대상 이슈(선택, 비어 있으면 PR 본문의 Closes #N에서 찾는다): $2

절차

  1. PR 파악: gh pr view <PR번호> --json title,body,files,url 로 본문과 변경 파일을 확인하고, gh pr diff <PR번호> 로 실제 diff를 읽는다. 본문에서 Closes #N으로 대상 이슈 번호를 찾는다(인자로 이슈 번호가 주어졌으면 그것을 우선한다).

  2. 계약 원문 확보: gh issue view <이슈번호> 로 목표·Non-goals·코드 앵커·인터페이스 계약·완료 기준·엣지 케이스를 읽는다. 이슈 의존성에 설계문서 경로가 적혀 있으면 그 docs/design/<슬러그>.md도 읽는다.

  3. 대비 검증 (diff를 계약과 한 줄씩 대조):

    • 코드 앵커: 변경이 앵커 범위 안에서만 일어났는가
    • Non-goals 침범: Non-goals에 적힌 파일/모듈을 건드렸는가 — 하나라도 걸리면 그 자체로 반려 사유
    • 인터페이스 계약 준수: 시그니처/스키마가 계약과 동일한가, 임의로 바뀐 부분이 있는가
    • 엣지 케이스: 설계에서 결정한 처리가 실제로 구현됐는가
    • 완료 기준 실제 통과: PR 본문에 첨부된 검증 명령어 실행 결과가 실제로 통과인지 확인. 의심되면 동일 명령어를 직접 재실행해 확인한다. (수동) 표기 항목은 자동 검증 대상이 아니다 — 판정 보고의 결론에 "사람이 확인할 항목"으로 명시한다.
    • 테스트 추가·갱신: 변경된 동작에 대한 테스트가 추가·갱신됐는가 — 검증이 수동 확인뿐인 동작 변경은 반려 사유다 (인프라·문서 등 테스트 불가 변경은 정적 검증 통과로 갈음)
    • UI 판정 대조 (설계문서/이슈에 UI 판정 기록이 있는 경우에만): 'UI 없음' 선언인데 diff가 사용자 대상 표면 — UI 컴포넌트·화면/이메일 템플릿·CLI 출력 등 사람에게 보이는 문자열 — 을 변경했거나, light 티어 선언인데 diff가 full 티어 표면(화면/컴포넌트·이메일 템플릿·사람이 읽는 HTML 리포트)을 변경했으면 반려 사유다. light 선언 이슈가 선언된 텍스트 표면(CLI 출력·문구)을 바꾸는 것은 정상 경로다 — 반려 대상이 아니다. 이는 설계 게이트 오판정이므로 반려와 별도로 gh issue comment로 대상 이슈에도 기록해 재판정(시안 필요 여부 재결정)을 유도한다. 판정 기록이 없는 이슈(게이트 도입 전 등록분)는 이 검사를 건너뛴다 — 기록 부재 자체는 반려 사유가 아니다
    • 승인 시안 대비 (이슈 의존성에 시안 링크가 있는 PR만): 먼저 diff에 .design/ 변경이 있으면 그 자체로 반려 사유다 (승인 시안은 참조 전용). 시안 일치는 아래 사다리에서 가능한 최상위 레벨로 검증하고 어느 레벨로 검증했는지 판정 전문에 기록한다 — 환경 미비로 상위 레벨을 못 한 것은 반려 사유가 아니다 (상위 레벨은 보너스이지 의존성이 아니다):
      • (a) 세션에 화면 캡처 도구가 있고 앱 실행 방법이 확인될 때만 — 렌더 결과를 승인 시안과 대조. 렌더·스크린샷 산출물은 워킹트리 밖 임시 디렉토리에만 만든다 (워킹트리에 남기면 다음 자동화 걸음이 잔재로 보고 멈춘다)
      • (b) 정적 대조 — 설계문서 시안 체크리스트의 항목(요소·상태·문구)이 diff의 컴포넌트·문자열에 존재하는지 확인
      • (c) 결론의 "사람이 확인할 항목"으로 강등 — 승인 시안 파일 경로를 함께 명시 비교 기준은 설계문서 시안 체크리스트의 구조·상태·문구 수준이다 — 픽셀·색상·폰트 차이는 시안 계약 수준이 '픽셀'로 명시되지 않은 한 반려 사유가 아니고, 반려는 위반한 체크리스트 항목을 특정해야 한다 (모호한 "전반적으로 다름" 반려 금지 — 재작업이 고칠 대상을 잃는다). 불일치의 원인이 구현이 아니라 시안 쪽으로 보이면(구현 이탈이 타당) 반려 대신 "사람이 확인할 항목"으로 올리고, 재작업으로 풀리는지 시안 재승인(needs-respec)이 필요한지 구분해 적는다
    • UI 버그 수정의 실측 근거 (대상 이슈가 UI 버그일 때만): PR에 재현 조건(테마·표시 모드/토글·뷰포트)과 수정 전/후의 실측 숫자(computed style·대비비 등)가 기록됐는지 확인한다. "고쳐진 것 같다"류의 인상 서술만 있고 숫자 근거가 없으면 반려 사유다. 리뷰어가 직접 재현을 시도할 때는 아래 "UI 버그 조사 규칙"을 따른다 — 기본 상태 1회 측정으로 "수정 확인"이라 판정하지 않는다
    • 설계와 다르게 한 부분: PR 본문에 설계와 다르게 구현한 이유가 적혀 있으면 타당한지 판단
    • risk:high: 이슈나 PR에 risk:high 라벨이 있으면 되돌리기 비싼 변경이다 — 엣지 케이스·완료 기준 검증을 평소보다 엄격히 하고, 판정과 무관하게 사람 리뷰를 함께 받으라고 결론에 명시한다.
  4. 판정: 아래 형식으로 보고한다.

## 리뷰 판정: 승인 / 반려

### 계약 준수
- [ ] 코드 앵커 범위 준수
- [ ] Non-goals 미침범
- [ ] 인터페이스 계약 일치
- [ ] 엣지 케이스 반영
- [ ] 완료 기준 실제 통과 확인
- [ ] 테스트 추가·갱신 확인
- [ ] UI 판정 기록과 diff 일치 (판정 기록 없으면 N/A · 시안 대비 검증 레벨: a/b/c)

### 발견 사항
(계약과 다른 점, 반려 사유가 있으면 파일:라인 근거와 함께)

### 결론
(승인이면 머지 가능 / 반려면 무엇을 고쳐야 다시 리뷰 가능한지)
  1. 판정 기록: 판정은 채팅에만 남기면 세션과 함께 사라진다 — 판정 전문(4의 형식)을 반드시 PR에 남긴다. 반려 사유는 재작업 세션(/implement-issue)이 이 기록을 읽고 고친다.

    판정 파일 첫 줄에 머신 판독용 마커를 넣는다 (렌더링에는 안 보이고, 자동화가 판정 횟수를 세는 근거다):

    <!-- review-verdict: approved -->   또는   <!-- review-verdict: rejected -->
    
    # 판정 전문을 파일로 저장한 뒤 —
    # 승인 — 자기 PR(1인 개발)은 GitHub이 리뷰 승인을 거부하므로 코멘트 기록이 기본 경로다:
    gh pr review <PR번호> --approve --body-file <판정파일> || gh pr comment <PR번호> --body-file <판정파일>
    # 반려 — 자기 PR은 --request-changes도 거부되므로 마찬가지로 코멘트로 남는다:
    gh pr review <PR번호> --request-changes --body-file <판정파일> || gh pr comment <PR번호> --body-file <판정파일>
    

    라벨도 함께 남긴다. /issue-loop에서는 이 라벨이 승인/반려의 상태 원본이다 — 라벨이 안 붙으면 루프가 같은 PR을 계속 재리뷰하므로, 라벨이 리포에 없으면 만들어서라도 붙인다. add와 remove는 분리 실행한다 (한 커맨드에 묶으면 한쪽 라벨이 리포에 없을 때 전체가 실패해 판정 라벨까지 안 붙는다):

    # 승인:
    gh label create review:approved --color 0E8A16 --description "/review-pr 승인" 2>/dev/null || true
    gh pr edit <PR번호> --add-label review:approved
    gh pr edit <PR번호> --remove-label review:rejected 2>/dev/null || true
    # 반려:
    gh label create review:rejected --color B60205 --description "/review-pr 반려" 2>/dev/null || true
    gh pr edit <PR번호> --add-label review:rejected
    gh pr edit <PR번호> --remove-label review:approved 2>/dev/null || true
    

Read the full file on GitHub · 107 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago First seen · 107 lines · 21 tokens per session scan A 2b03e028b0e3

Subscribe to this mod's changes

review-pr is a command published in the GitHub repository nlook-service/issue-template (2 stars, last pushed 1mo ago), licensed MIT. It adds 21 tokens to every session and 2,749 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other commands, from other repositories