code-reviewer (rein-native fallback)
실행 조건
이 스킬은 /codex-review 리뷰 게이트를 대체하지 않는다. AGENTS.md §5-1 / .claude/skills/codex-review/SKILL.md 의 규정은 "codex 실패 시에만 fallback" 이며, 본 스킬은 그 fallback 경로의 rein-native 구현이다. 사용자의 임의 요청만으로는 호출하지 않는다.
- codex_timeout —
/codex-review호출이 타임아웃 - codex_error —
/codex-review가 exit non-zero 로 실패 - no_superpowers_plugin —
superpowers:code-reviewer플러그인이 없고/codex-review경로도 사용 불가
아래 "Stamp 생성" 섹션의 fallback_reason 필드에는 위 slug (codex_timeout / codex_error / no_superpowers_plugin) 중 하나를 그대로 기입한다.
리뷰 체크리스트
리뷰 시작 전 아래 규칙 파일을 먼저 로드하여 각 그룹의 기준을 확인한다.
1. 보안 (plugins/rein-core/rules/security.md 기준)
- 하드코딩된 credential (API 키, 비밀번호, 토큰) 없음
- 모든 외부 입력(사용자 입력, 환경 인수, 파일 경로)에 검증 로직 존재
- SQL / 쉘 / HTML 주입 공격 방어 처리 확인
-
.env파일 또는secrets/디렉토리 직접 접근·커밋 없음
2. 코드 스타일 (plugins/rein-core/rules/code-style.md 기준)
- 네이밍: 함수 동사형 camelCase, 상수 UPPER_SNAKE_CASE, Boolean
is/has/can/should접두사 - 함수 길이 50줄 이내 (초과 시 분리 권고)
- 파라미터 3개 이하 (초과 시 객체 묶음 권고)
- 중첩 depth 3단계 이하 (early return 또는 함수 분리)
-
any타입(TypeScript) /console.log·print운영 코드 방치 없음
3. 테스트 (plugins/rein-core/rules/testing.md 기준)
- 변경 범위에 해당하는 테스트가 추가 또는 수정됨
- 경계 조건(null/undefined, 빈 값, 최대/최소값) 커버
- 외부 API 직접 호출 단위 테스트 없음 (Mock 사용 확인)
- 모킹 과다 여부 — 실제 동작보다 mock 구조 검증에 편중되지 않음
4. Rein 고유
-
trail/dod/dod-YYYY-MM-DD-<slug>.md파일이 이 작업 전 생성되어 있음 - DoD 또는 plan work unit 에
covers: [...]메타데이터가 존재하고 매트릭스 ID 와 일치 - 작업 완료 후
trail/inbox/YYYY-MM-DD-작업명.md기록 대상임을 확인
출력 형식
리뷰 결과를 아래 마크다운 템플릿으로 출력한다:
## 코드 리뷰 결과 (rein-native, round N)
**리뷰 대상**: [파일 목록]
**라운드**: N
### High (즉시 수정 필요)
- [파일:줄번호] 이슈 설명 — 권고 조치
### Medium (수정 권고)
- [파일:줄번호] 이슈 설명 — 권고 조치
### Low (선택 개선)
- [파일:줄번호] 이슈 설명
### 통과 항목
- 보안: 하드코딩 credential 없음
- 스타일: 네이밍 규칙 준수
- 테스트: 변경 범위 커버됨
- Rein 고유: DoD 파일 존재 확인
**결론** (아래 중 하나):
- 통과 — 이슈 없음, 본 스킬 stamp 생성
- 재리뷰 (self-review) — Low 만 또는 Medium ≤3줄, 수정 후 sonnet self-review stamp
- 재리뷰 (same reviewer) — Medium >3줄 또는 High 1건 이상, 수정 후 본 스킬 재실행
- 에스컬레이션 — 3라운드 후에도 High 잔존, escalated_to_human stamp
리뷰 에스컬레이션 흐름
AGENTS.md §5-1 / .claude/skills/codex-review/SKILL.md 의 표와 일치한다.
| 라운드 결과 | 규모 | 다음 행동 |
|---|---|---|
| 이슈 없음 | — | 통과 (본 스킬 stamp) |
| Low 만 | — | 수정 후 sonnet self-review stamp |
| Medium 만 | ≤3줄 | 수정 후 sonnet self-review stamp |
| Medium 만 | >3줄 | 수정 후 본 스킬 재실행 (round N+1) |
| High 1건 이상 | — | 수정 후 본 스킬 재실행 (round N+1) |
| 3라운드 이후 High 잔존 | — | 에스컬레이션 (resolution: escalated_to_human) |
Stamp 생성
이슈가 없을 때만 본 스킬 이름으로 stamp 를 생성한다. <REASON> 은 "실행 조건" 섹션의 slug (codex_timeout / codex_error / no_superpowers_plugin) 중 하나로 교체한다. Low / Medium(≤3줄) 잔존 시에는 수정 후 self-review stamp 로 전환 (아래 블록 참조).
Spec-review fallback 분기 (CRITICAL, v1.0.0+)
이 스킬이 [NON_INTERACTIVE] spec review for plan: 또는 design: prefix 가 붙은 prompt 로 호출된 경우 (plan-writer 의 codex 실패 fallback 경로), 아래 "Stamp 생성" 블록 (.codex-reviewed 생성, .review-pending 삭제) 을 실행하지 않는다.
근거: .codex-reviewed 는 코드리뷰 게이트 stamp. spec review fallback 에서 이 stamp 를 찍으면 코드 변경 없이도 gate 통과 가능 → rein 규율 오염.
Spec-review fallback 동작:
- 리뷰 수행 (AGENTS.md rules + 체크리스트) — 내용 자체는 동일
- verdict 만 caller (plan-writer) 에게 반환 — PASS / NEEDS-FIX / REJECT
- stamp 생성 없음.
.review-pending건드리지 않음 - caller 가 PASS 시
bash scripts/rein-mark-spec-reviewed.sh <path> code-reviewer-rein-sonnet-fallback호출 — spec-review 전용 stamp (trail/dod/.spec-reviews/<hash>.reviewed) 생성
Code-review 경로 (일반 fallback, [NON_INTERACTIVE] spec review prefix 없음): 아래 기존 Stamp 생성 규정 그대로 (.codex-reviewed 생성).
REASON=codex_timeout # 실제 호출 사유로 교체
N_FILES=$(git diff --name-only | wc -l | tr -d ' ')
ROUND=1 # 재리뷰 시 증가
cat > trail/dod/.codex-reviewed <<STAMP
reviewer: code-reviewer-rein
timestamp: $(date -u +%Y-%m-%dT%H:%M:%S)
fallback_reason: $REASON
files_reviewed: $N_FILES
review_round: $ROUND
resolution: passed
remaining_issues: none
STAMP
stamp 생성 후 .review-pending 이 존재하면 삭제한다:
rm -f trail/dod/.review-pending
Medium ≤3줄 / Low-only 경로에서는 round 증가 없이 self-review stamp 를 쓴다 — reviewer: self-review 로 바꾸고, fallback_reason 은 직전 본 스킬 실행 사유를 그대로 이어받는다:
cat > trail/dod/.codex-reviewed <<STAMP
reviewer: self-review
timestamp: $(date -u +%Y-%m-%dT%H:%M:%S)
fallback_reason: $REASON
files_reviewed: $N_FILES
review_round: $ROUND
resolution: passed
remaining_issues: none
prior_reviewer: code-reviewer-rein
prior_max_severity: low # 또는 medium (≤3줄)
STAMP
에스컬레이션 (3라운드 이후에도 High 잔존 시)
3라운드 리뷰 후에도 High 가 남아 있으면 작업을 중단하고 사람에게 에스컬레이션한다:
cat > trail/dod/.codex-reviewed <<STAMP
reviewer: code-reviewer-rein
timestamp: $(date -u +%Y-%m-%dT%H:%M:%S)
fallback_reason: $REASON
files_reviewed: $N_FILES
review_round: 3
resolution: escalated_to_human
remaining_issues: [잔존 High 이슈 요약]
STAMP
에스컬레이션 후 작업자는 잔존 이슈를 검토하여 직접 수정하거나 추가 지시를 내린다.
사용자 안내
이 SKILL 의 결과를 사용자에게 보고할 때 다음 짧은 형식을 먼저 출력한다 (위 ## 코드 리뷰 결과 템플릿 + Stamp 메타데이터는 그 다음에 그대로 이어 붙인다). 형식은 한 문장 또는 두 문장 — 결과 1줄 + 다음 액션 1줄.
리뷰 PASS (이슈 없음):
코드 리뷰 통과. 차단급 결함 없습니다. 다음은 [code-review path 면 보안 리뷰 / spec-review fallback path 면
bash scripts/rein-mark-spec-reviewed.sh로 per-spec stamp 등록].
리뷰 NEEDS-FIX (수정 필요):
리뷰에서 N건 수정이 필요해요 — [Severity 요약, 예: "Medium 2건 + Low 1건"]. [핵심 1-2건과 다음 액션, 예: "printf 형식 mismatch + symlink 테스트 stderr 미검증. 고치고 재리뷰"].
3회차에도 High 잔존 (사람 에스컬레이션):
리뷰 3회차에도 High N건이 남아 있어 사람 에스컬레이션이 필요합니다. stamp 의 잔존 이슈를 확인하고 직접 수정하거나 추가 지시를 내려주세요.
Source: JayJihyunKim/rein — distributed by TomeVault.