spec-reviewlisted
Install: claude install-skill HarryJhin/groundwork
# spec-review
스펙을 축별 리뷰어에게 병렬로 던지고, 돌아온 발견을 저자가 처리해 문서를 고친다. 진행을 막는 발견이 남지 않을 때까지 돌고, 라운드 상한은 셋이다.
리뷰 상태를 파일로 남기지 않는다. 리뷰어의 반환 텍스트가 발견의 전부이고, 처리 결과는 스펙 본문의 개정으로 드러난다. 리뷰 라운드나 발견을 추적하는 별도 파일, 상태 값, 식별자를 만들지 않는다.
플랜 리뷰는 이 스킬이 맡지 않는다. `groundwork:plan-review`가 자기 로스터와 프롬프트로 따로 돈다.
## 입력·주체·출력
리뷰 대상 스펙의 경로를 호출자에게 받는다. `groundwork:finding-unknowns`가 스펙 작성 직후 호출하면서 그 경로를 넘긴다. 사용자가 직접 불러 경로가 없으면 어느 스펙을 리뷰할지 묻는다. 임의로 찾아 고르지 않는다.
이 스킬을 로드한 에이전트가 `저자`이자 `메인`이다. 스펙 본문을 고치는 것도, 리뷰어를 띄우고 반환을 수거하는 것도 그 에이전트다. 서브에이전트로 띄우는 것은 `리뷰어`뿐이다.
출력은 세 상태 중 하나다. `통과`면 호출한 스킬로 복귀한다. 호출자 없이 직접 실행됐으면 통과 사실과 개정 요지를 사용자에게 보고하고 끝낸다. `조건부 통과`면 남은 발견과 그 사유를 사용자에게 보고하고 끝낸다. 「라운드 계속 결정」에서 이미 물었으므로 종료 시점에 다시 묻지 않는다. `건너뜀`이면 사용자가 리뷰를 돌리지 않기로 했다는 사실을 반환한다. 어느 상태로 끝났는지를 호출자와 사용자 양쪽에 밝힌다.
## blocking 판정
리뷰어는 발견에 심각도를 매기지 않는다. 관찰과 결과만 내고, 그 발견이 진행을 막는지는 저자가 발견을 처리하면서 정한다.
판정을 저자가 쥐는 이유는 정보의 위치다. 리뷰어는 자기 렌즈 안에서만 문서를 보므로 그 발견이 문서 전체에서 무엇을 뜻하는지 모른다. 같은 문장이 한 렌즈에는 치명적이고 다른 렌즈에는 사소해 보이는 일이 정상이다. 문서 수준의 무게는 개정을 해 본 저자에게만 보인다.
- **blocking**: 그대로 두면 이 문서로 작업하는 사람이 틀린 것을 만든다.
- **non-blocking**: 그 사람이 되물어 닫거나, 다음 단계 문서가 정할 세부다.
저자의 판정도 검사 대상이다. `non-blocking`으로 넘긴 발견은 그 판정과 근거를 다음 라운드 재리뷰에 실어 리뷰어가 재판정하게 한다. 저자는 루프를 닫고 싶은 쪽이라 자기 판정을 혼자 확정하지 않는다.
## 리뷰 범위 결정 (사용자 게이트)
리뷰는 사용자가 치르는 비용이다. 로스터를 정하기 전에 AskUserQuestion으로 범위를 묻는다. 저자가 임의로 정하지 않는다.
문항은 하나이고 선택지는 아래 넷을 그대로 쓴다. 순서를 바꾸거나 항목을 빼거나 새로 만들지 않는다.
| 선택지 | 뜻 |
|---|---|
| 전체 (추천) | 필수 리뷰어 전원에 조건을 만족한 재량 리뷰어를 더한다 |
| 필수만 | 필수 리뷰어 전원. 재량 축은 건너뛴다 |
| 지정 | 사용자가 렌즈를 직