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.
npx agentmods add commands/nlook-service/issue-template/review-prgit clone --depth 1 https://github.com/nlook-service/issue-templateWrote 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.
[](https://agentmods.dev/commands/nlook-service/issue-template/review-pr)<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>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.
| Model | Per session | Once 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 |
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.
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
절차
-
PR 파악:
gh pr view <PR번호> --json title,body,files,url로 본문과 변경 파일을 확인하고,gh pr diff <PR번호>로 실제 diff를 읽는다. 본문에서Closes #N으로 대상 이슈 번호를 찾는다(인자로 이슈 번호가 주어졌으면 그것을 우선한다). -
계약 원문 확보:
gh issue view <이슈번호>로 목표·Non-goals·코드 앵커·인터페이스 계약·완료 기준·엣지 케이스를 읽는다. 이슈 의존성에 설계문서 경로가 적혀 있으면 그docs/design/<슬러그>.md도 읽는다. -
대비 검증 (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라벨이 있으면 되돌리기 비싼 변경이다 — 엣지 케이스·완료 기준 검증을 평소보다 엄격히 하고, 판정과 무관하게 사람 리뷰를 함께 받으라고 결론에 명시한다.
-
판정: 아래 형식으로 보고한다.
## 리뷰 판정: 승인 / 반려
### 계약 준수
- [ ] 코드 앵커 범위 준수
- [ ] Non-goals 미침범
- [ ] 인터페이스 계약 일치
- [ ] 엣지 케이스 반영
- [ ] 완료 기준 실제 통과 확인
- [ ] 테스트 추가·갱신 확인
- [ ] UI 판정 기록과 diff 일치 (판정 기록 없으면 N/A · 시안 대비 검증 레벨: a/b/c)
### 발견 사항
(계약과 다른 점, 반려 사유가 있으면 파일:라인 근거와 함께)
### 결론
(승인이면 머지 가능 / 반려면 무엇을 고쳐야 다시 리뷰 가능한지)
-
판정 기록: 판정은 채팅에만 남기면 세션과 함께 사라진다 — 판정 전문(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
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.
- 5d ago First seen · 107 lines · 21 tokens per session scan A 2b03e028b0e3
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.
Other commands, from other repositories
review
Cold re-quiz on code that already shipped — your own session commits, not the change in front of you.
sm-sail
Command "sm-sail" from ScienceIsNeato/slop-mop, covering /sm-sail — drive a pr to green, autonomously, the loop, when sail parks on review threads, when to stop before "pr ready" — only two reasons and expect convergence, not one pass.
sm-buff
You usually don't run buff directly — run sm sail. sm sail drives the whole PR to green and calls buff watch / triage for you, stopping only when it needs you to act (see /sm-sail). Reach for sm buff here only for surgical work: inspecting a specific failure, or resolving a single review thread when sail has parked on…
sm-wake-angry-drunk-captain
The last-resort verb. Use it ONLY when the loop is genuinely exhausted: barnacles filed, gates green or truly unfixable, and the single remaining move is a human judgment call no sm verb can make for you.
sm-barnacle
Use when sm itself gives invalid guidance, blocks valid work, produces confusing output, or breaks install/upgrade/refit flow. Do not use this for real target-repo failures; fix those through the normal rail.
sm-init
Run when you find a repo with sm installed but no .sbconfig.json — or after upgrading slopmop to pick up new gates.