review-code

star 1

변경된 코드를 합리적 동료 태세로 검토하여 구체적 탐지 시그널에 매치되는 결함 의문점을 생성합니다.

E5presso By E5presso schedule Updated 6/14/2026

name: review-code description: 변경된 코드를 합리적 동료 태세로 검토하여 구체적 탐지 시그널에 매치되는 결함 의문점을 생성합니다. user-invocable: true

Review — 합리적 동료 의문점 생성기

리뷰 에이전트는 구현 에이전트를 합리적 동료로 보고, 구체적 탐지 시그널이 매치될 때만 "이 구간이 실제 문제를 일으키는가?"라는 의문을 생성한다. 스타일·취향 지적이 아니라 PR에서 더 물을 것이 남지 않게 만드는 결함 질문기다.

실행 모드

/review-code단일 서브에이전트가 14개 카테고리를 전부 순회한다. personas/*.md 5개 파일이 카테고리 인덱스이고, 충돌 시 .agents/rules/*.md가 SSOT다.

운영 모델

요소 규칙
하네스 SSOT persona는 인덱스, .agents/rules/*.md 본문이 최종 판단 근거
의문점 "이 구간이 실제 문제를 일으키는가?" 형태만 허용. 개방형 "왜?" 금지
해소 코드 수정 수용 또는 규칙·선례·스코프·도메인 근거로 반박 인정
미해소 수용/반박 인정 없음. Critical이면 루프 종료 차단
Warning 실제 운영 해 가능성이 구체적으로 관찰될 때만 생성. Info 생성 금지

rules/에 신규 금지·안티패턴·시그널이 추가되면 persona 인덱스가 stale해도 서브에이전트는 rules/ 본문을 직접 읽어 적용한다. persona 인덱스는 토큰 절약용이므로 같은 PR 또는 즉시 후속 PR에서 동기화한다.

실행 흐름

  1. git diff (또는 git diff --cached)로 변경 사항을 확인한다.
  2. 단일 리뷰 서브에이전트 1개를 opus로 디스패치한다. 디스패치 시 아래를 전달한다:
    • personas/architecture.md, personas/type.md, personas/naming.md, personas/simplicity.md, personas/test-coverage.md 5개 파일 경로 — 서브에이전트가 모두 읽어 14 카테고리 체크리스트로 사용한다.
    • diff 전체.
    • 이슈 맥락(목표·수용 기준·제약 사항).
  3. 서브에이전트는 14 카테고리를 순회하며 Critical / Warning으로 분류된 의문점 리스트를 반환한다. 탐지 시그널에 매치되지 않은 카테고리는 "통과"로 명시한다. Info 섹션은 생성하지 않는다.
  4. 구현 에이전트의 응답(수정 또는 반박)을 받아 재검증한다. 재검증은 동일 단일 서브에이전트를 갱신된 diff에 대해 다시 디스패치하여 수행한다.
  5. 루프 종료 조건: 재디스패치된 서브에이전트가 Critical을 0개 생성하면 수렴. Warning은 반박 또는 후속 티켓 위임 허용 (개수 무관). Critical 미해소가 남은 상태로 루프를 종료하지 않는다.
  6. Iteration 예산: /process-ticket의 Phase 4 셸이 최대 2 iteration을 강제한다 (Iter 1 = 초기 리뷰 + 응답, Iter 2 = 재검증). Iter 2에서 수렴하지 못하면 escalation 경로(Default = 사용자 질문, --overnight = PR body 기록)로 전환한다.
  7. 모순 에스컬레이션 (무한 루프 방지): 새 iteration이 직전 iteration에서 해소된 결정을 뒤집는 의문점을 생성하면 자동 루프를 중단하고 사용자에게 사용자 질의로 확정 방향을 요청한다.

Critical만 "신규 생성 0" 강제: Warning은 주관 재발로 수렴을 막으므로 개수 무시, Critical(동작·타입·레이어 위반)만 강제 차단. Warning 처리 경로 = 수용 / 반박 / /plan-issues 후속 티켓 — 수렴 판정 시 선택 경로를 iteration 로그에 명시.

순회 규칙: 탐지 시그널 미매치 카테고리도 "통과"로 명시. 체크 누락과 의문점 없음을 구분.

심각도 정의 (의문점 weight)

심각도 성격 해소 요건
Critical 아키텍처/레이어/트랜잭션 무결성/테스트 게이트/스펙 오류 해소 필수 — 수정 또는 근거가 명백한 반박(규칙 인용 + 코드 선례). 어느 쪽도 못 하면 루프 종료 불가
Warning 타입 규율, YAGNI 역설, 네이밍, defensive 과다, 코드 스멜, 영속/API 규율 실제 운영 해 가능성이 구체적으로 관찰될 때만 보고. 해소 또는 반박 근거 필요 — 규칙 인용·코드 선례·스코프 근거·도메인 근거 중 하나 이상 제시. 단순 "그냥 그렇게 했다"는 반박으로 인정되지 않음

Info 심각도 제거. 가독성·스타일은 사람 리뷰어에 위임 (iteration 순환 주원인).

의문점 해소 프로토콜

각 의문점에 대해 구현 에이전트는 다음 중 하나를 수행한다.

(1) 수용 (Accept)

  • 코드를 수정하여 의문의 원인을 제거한다.
  • 수정 요약 1줄과 함께 해소를 선언한다.
  • 리뷰 에이전트는 수정된 diff가 실제로 의문을 해소했는지 재검증한다. 새 의문이 생기면 다음 iteration으로 피드한다.

(2) 반박 (Rebut)

구현 에이전트가 코드를 유지하려면 아래 중 하나 이상의 근거를 제시한다.

# 근거 유형 설명
1 규칙 인용 .agents/rules/<file>.md의 구체적 규칙을 인용하며, 해당 규칙이 현 상황에 적용됨을 논증
2 코드베이스 선례 같은 패턴이 코드베이스에 이미 있음을 파일:라인으로 증명
3 스코프 근거 현 티켓 스코프를 벗어남을 증명하고, 후속 티켓 생성(/plan-issues)을 약속
4 도메인 근거 도메인 사전·스펙 문서의 해당 판단 근거를 인용

리뷰 에이전트는 반박을 재검증하여 설득력 있음 → 해소, 설득력 없음 → 미해소로 분류한다. 단순 "그렇게 했다" / "필요 없어 보인다"는 설득력 없음으로 기각된다.

(3) 미해소 (Unresolved)

  • 수용도 반박도 없거나, 반박이 기각된 상태.
  • 루프 종료 조건을 막는다. 구현 에이전트는 다른 반박을 시도하거나 수용으로 전환해야 한다.

의문점 카테고리 (14개)

각 카테고리의 상세(의문점 프롬프트, 탐지 시그널)는 persona 파일이 인덱싱하고, 최종 판단 근거는 .agents/rules/*.md가 SSOT다. 리뷰 서브에이전트는 5개 파일을 모두 로드하여 14 카테고리 전체를 순회한다.

# 카테고리 심각도 상세 SSOT
1 아키텍처 엄수 (레이어·의존 방향) Critical personas/architecture.md
2 타입 규율 Warning personas/type.md
3 YAGNI (You Aren't Gonna Need It) 역설 Warning personas/simplicity.md
4 도메인 제네릭성 (Aggregate·Port 경계) Critical personas/architecture.md
5 네이밍 엄수 Warning personas/naming.md
6 테스트 게이트 (커버리지·신규 분기) Critical personas/test-coverage.md
7 가독성 & 간소화 Warning personas/simplicity.md
8 API/REST 컨벤션 Warning personas/test-coverage.md
9 영속성/Repository 규율 Warning personas/architecture.md
10 트랜잭션 무결성 (단일 Aggregate 변경) Critical personas/architecture.md
11 코드 스멜 / 패턴 이질성 Warning personas/simplicity.md
12 Defensive / Helper 과다 Warning personas/simplicity.md
13 Infra / 운영 일관성 Warning personas/test-coverage.md
14 스펙 검증 / 후속 티켓 Critical personas/architecture.md

카테고리 7·12는 Warning 필터링 원칙(실제 운영 해 가능성이 구체적으로 관찰될 때만 보고)을 적용하므로 스타일·가독성 수준의 지적은 생성되지 않는다.


보고 템플릿

리뷰 에이전트는 14개 카테고리 상태를 모두 보고한다. 탐지 시그널 미매치도 "통과"로 명시하고 Info 섹션은 만들지 않는다.

## Review 결과 (Iteration N)

### 카테고리별 상태
| # | 카테고리 | 상태(통과/해소됨/미해소) | 의문점 수 |

### Critical — 해소 필수 (N건)
- **[#카테고리 · 파일:라인]** 의문점
  - 탐지 시그널:
  - 관련 규칙: `rules/<file>.md`
  - 상태: `미해소` / `해소됨 (수용)` / `해소됨 (반박 인정)`

### Warning — 해소/반박 필요 (N건)
- Critical과 동일 포맷

### 수렴 판정
- 미해소 Critical: N
- 루프 종료 가능 여부: 가능/불가능
- 다음 iteration 전달 항목: 미해소 의문점 목록

규칙

  • 모든 14개 카테고리를 단일 서브에이전트가 순회한다. 병렬 fan-out 금지. 탐지 시그널에 매치되지 않은 카테고리도 "통과"로 보고하여 누락과 구분한다.
  • 카테고리 체크리스트는 persona 파일이 인덱싱하고 rules가 최종 SSOT다. 리뷰 서브에이전트는 5개 파일을 모두 로드한다. SKILL.md는 디스패처 역할이므로 본문 중복을 피한다.
  • 규칙 본문을 복제하지 않는다. 의문점 프롬프트가 근거로 삼는 규칙은 rules/<file>.md를 직접 읽어 적용한다 (SSOT).
  • 체크리스트는 "구체적 시그널이 매치될 때 의문을 꺼내는 장치"지 "룰 통과 여부 체크"가 아니다. 항목 추가/수정 시 이 성격을 유지한다.
  • Warning은 실제 운영 해 가능성이 구체적으로 관찰될 때만 보고한다. 카테고리가 Warning이라는 이유만으로 지적을 생성하지 않는다. Info 심각도는 생성하지 않는다.
  • 미해소 Critical이 남은 상태로 루프를 종료하지 않는다. Warning은 반박 또는 후속 티켓 위임으로 해소 가능.
  • 수정은 구현 에이전트가 수행한다. 리뷰 에이전트는 의문점 생성과 응답 재검증만 담당한다 (역할 분리).
  • 수정 후 /check를 실행하여 회귀를 확인한다.
Install via CLI
npx skills add https://github.com/E5presso/spakky-framework --skill review-code
Repository Details
star Stars 1
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator