gh-pr plugin · skill guide

review

PR diff 를 외부 AI CLI 하나에 넘겨 2차 의견을 받고, 그 원문을 담은 집계 코멘트 1개를 PR 에 남긴다. 판정(approve / request-changes)은 제출하지 않고, 코멘트별 답글도 달지 않는다.

PR diff ──▶ /gh-pr:review ──▶ 집계 코멘트 1개

1언제 쓰고 언제 안 쓰는가

이 스킬을 쓴다

열려 있는 PR 하나에 사람이 아닌 다른 시선의 리뷰가 한 번 더 필요할 때. 자기가 올린 PR 이어도 된다 — 판정을 제출하지 않으므로 self-approve 제약이 적용되지 않는다.

판정을 내려야 한다 → /gh-pr:approve

gh pr review --approve 도 --request-changes 도 이 스킬은 절대 호출하지 않는다.

코멘트별로 답하고 고쳐야 한다 → /gh-pr:reply

이 스킬은 코멘트별 답글을 달지 않는다. 출력은 집계 코멘트 1개가 전부다.

리뷰어 여럿을 한 번에 → gh-verify:review-all

한 번의 호출은 --ai 값 하나뿐이다. N-way 비교가 필요하면 명령을 N번 다시 실행한다.

2호출 형식

근거: skills/review/references/help.md.

/gh-pr:review --ai <codex|agy|claude|opencode|hermes> [--review <preset>]
              [--user <name>] [--no-post-comment] [--paths <path>]
              [<PR#>] [<remote>]

위치 인자

#기본값설명
1현재 브랜치의 PRPR 번호. -h / --help / help 면 도움말만 출력하고 종료
2origin대상 repo 를 해석할 git remote

플래그

플래그필수설명
--ai <codex|agy|claude|opencode|hermes>예위임할 외부 AI CLI. 단일 값이며 CSV 불가
--review <preset>아니오리뷰 렌즈. 기본 default
--user <name>아니오--ai claude 전용 다계정 라우팅. 다른 --ai 와 쓰면 exit 2
--no-post-comment아니오PR 코멘트를 건너뛰고 stdout 으로만 출력
--paths <path>아니오반복 가능. 해당 파일만 리뷰. 매칭 파일이 없으면 exit 1

--review 프리셋 (닫힌 enum, 자유 문자열 거부)

enumKR 별칭렌즈
default보통correctness · conventions · security · performance · tests · docs · backward-compat 7차원 균형
quick간단BLOCKER 만 보는 빠른 스캔 (correctness + security)
thorough꼼꼼 / 꼼꼼하게7차원 + 아키텍처 트레이드오프 + 테스트 공백 + 인접 시스템 영향
security보안injection, secrets, authz, supply chain
performance성능N+1, hot-loop I/O, allocation, caching
PC 제한 없음 — --ai opencode 와 --ai hermes 는 CLI 가 없거나 DOTFILES_OPENCODE_REVIEW_MODEL 이 비어 있으면 그 실행만 실패한다.

3동작 단계

근거: skills/review/SKILL.md.

  1. 플래그 파싱 + 타깃 해석

    gh_pr_review_parse 에 위임한다. START_TS 기록, PR_NUMBER 해석, 그리고 같은 remote URL 하나에서 TARGET_REPO 와 TARGET_HOST 를 함께 바인딩한다. 이후 모든 gh 호출은 GH_HOST="$TARGET_HOST" gh ... --repo "$TARGET_REPO" 형태로 나간다.

  2. pre-flight 게이트

    PR 이 OPEN 이고 draft 가 아닐 것, 선택한 AI CLI 가 PATH 에 있을 것, internal 전용 lane 이면 internal 모드일 것, gh auth status 가 0 일 것. CI 상태는 게이트가 아니고, self-authored PR 도 막지 않는다.

  3. 프리셋 로드

    공통 prefix + 해석된 enum 의 preset body 로 프롬프트를 조립한다. 공통 prefix 에는 "판정을 제출하지 말라"는 지시, BLOCKER / FOLLOW-UP / PRAISE 분류 규칙, 필수 assumption check 한 줄, 필수 verdict 한 줄이 들어 있다.

  4. 리뷰 재료 수집

    --paths 가 있으면 크기와 무관하게 인라인 gh pr diff 경로를 쓴다. 없으면 additions + deletions 가 800줄 이상일 때 large-diff 위임 경로로, 미만이면 인라인으로 간다. 프롬프트와 diff 를 PROMPT_FILE 에 쓰고, 쓰기와 dispatch 를 같은 Bash 호출에서 처리한 뒤 파일을 지운다.

  5. 외부 CLI 디스패치

    _gh_pr_review_run_ai 가 CLI 별 호출 형태를 담당한다: codex exec --color=never, agy --print, claude -p, opencode run --model "$DOTFILES_OPENCODE_REVIEW_MODEL" --dir ... --file, hermes -z. stdout 은 재가공 없이 그대로 흘려보낸다. opencode / hermes 는 8~10분이 걸릴 수 있어 Bash 호출 timeout 을 600000ms 이상으로 올려야 한다.

  6. PR 코멘트 게시 (기본 ON)

    외부 AI 의 stdout 을 접힌 <details> 블록에 원문 그대로 넣고, ai-review 마커(AI 이름과 head SHA 포함)와 ai-metrics 푸터를 붙여 gh pr comment --body-file 로 게시한다.

  7. 보고

    성공 시 정확히 한 줄: [OK] PR #<N> reviewed by <ai> (--review=<preset>) — comment: <URL or skipped>.

4주의사항과 제약

근거: skills/review/references/constraints.md.

종료 코드

코드원인
0리뷰 완료. 코멘트 게시 실패도 stdout 이 남으면 [WARN] 후 0
1CLI 부재 / CLI 비정상 종료 / PR 자동 탐지 실패 / 알 수 없는 claude 계정 / --paths 무매칭 / gh 미인증
2인자 오류: --ai 누락 또는 미지원 값, --review 미지원 값, 비-claude --ai 에 --user
마이그레이션 부채 — 이 스킬은 dotfiles 의 shell-common/functions/gh_pr_review.sh 를 source 한다. dotfiles 체크아웃이 없는 머신에서는 해당 단계가 degrade 한다.