plan-reviewlisted
Install: claude install-skill HarryJhin/groundwork
# plan-review
플랜을 축별 리뷰어에게 병렬로 던지고, 돌아온 발견을 저자가 처리해 문서를 고친다. 진행을 막는 발견이 남지 않을 때까지 돌고, 라운드 상한은 셋이다.
리뷰 상태를 파일로 남기지 않는다. 리뷰어의 반환 텍스트가 발견의 전부이고, 처리 결과는 플랜 본문의 개정으로 드러난다. 리뷰 라운드나 발견을 추적하는 별도 파일, 상태 값, 식별자를 만들지 않는다.
플랜 리뷰가 스펙 리뷰와 갈리는 이유는 실패 방식이 다르기 때문이다. 스펙은 설계가 덜 여문 채 넘어가서 실패하고, 플랜은 스펙을 잘못 이행하거나 구현자를 막아서 실패한다. 스펙 리뷰는 `groundwork:spec-review`가 자기 로스터와 프롬프트로 따로 돈다.
## 입력·주체·출력
리뷰 대상 플랜의 경로와 대응 스펙의 경로를 호출자에게 받는다. `groundwork:writing-plans`가 플랜 작성 직후 호출하면서 둘 다 넘긴다. 사용자가 직접 불러 경로가 없으면 어느 플랜을 리뷰할지 묻는다. 스펙 경로만 빠졌으면 플랜 Goal 절이 적은 대응 스펙 경로를 쓰고, 그 경로도 없으면 사용자에게 묻는다. `spec-alignment`는 스펙 없이 판정이 성립하지 않으므로 추정 경로로 디스패치하지 않는다.
이 스킬을 로드한 에이전트가 `저자`이자 `메인`이다. 플랜 본문을 고치는 것도, 리뷰어를 띄우고 반환을 수거하는 것도 그 에이전트다. 서브에이전트로 띄우는 것은 `리뷰어`뿐이다.
출력은 세 상태 중 하나다. `통과`면 `groundwork:writing-plans`로 복귀한다. `조건부 통과`면 남은 발견과 그 사유를 사용자에게 보고하고 끝낸다. 「라운드 계속 결정」에서 이미 물었으므로 종료 시점에 다시 묻지 않는다. `건너뜀`이면 사용자가 리뷰를 돌리지 않기로 했다는 사실을 반환한다. 어느 상태로 끝났는지를 호출자와 사용자 양쪽에 밝힌다.
## blocking 판정
리뷰어는 발견에 심각도를 매기지 않는다. 관찰과 결과만 내고, 그 발견이 진행을 막는지는 저자가 발견을 처리하면서 정한다.
판정을 저자가 쥐는 이유는 정보의 위치다. 리뷰어는 자기 렌즈 안에서만 문서를 보므로 그 발견이 문서 전체에서 무엇을 뜻하는지 모른다. 같은 문장이 한 렌즈에는 치명적이고 다른 렌즈에는 사소해 보이는 일이 정상이다. 문서 수준의 무게는 개정을 해 본 저자에게만 보인다.
- **blocking**: 그대로 두면 구현자가 틀린 것을 만들거나 태스크에 착지하지 못한다.
- **non-blocking**: 구현자가 되물어 닫거나, 실행 중에 정해도 되는 세부다.
저자의 판정도 검사 대상이다. `non-blocking`으로 넘긴 발견은 그 판정과 근거를 다음 라운드 재리뷰에 실어 리뷰어가 재판정하게 한다. 저자는 루프를 닫고 싶은 쪽이라 자기 판정을 혼자 확정하지 않는다.
## 리뷰 범위 결정 (사용자 게이트)
리뷰는 사용자가 치르는 비용이다. 로스터를 정하기 전에 AskUserQuestion으로 범위를 묻는다. 저자가 임의로 정하지 않는다.
문항은 하