/sub-follow-plan
PLAN.md 또는 PLAN_*.md 의 모든 미완료 태스크를 의존 순서를 지키며 끝까지 자율 수행한다.
핵심 원칙
/follow-plan 과의 차이: 본 스킬은 구현을 하위 모델 서브에이전트에 위임하고 리드는 오케스트레이션·검토·통합에 집중한다. /parallel-plan 과의 차이: 본 스킬은 worktree를 쓰지 않고 in-place로 진행하며, PR이 아니라 main(현재 브랜치)에 직접 커밋한다.
0. 사전 확인
현재 디렉토리에 PLAN.md 또는 PLAN_*.md 가 있는지 확인.
/make-a-plan 으로 먼저 작성하세요." 로 안내하고 중단.1. 태스크 추출 + 의존 그래프
PLAN ID 체계를 본문에서 직접 감지한다 (T1, 1., NU-3 등). 추측 금지.
"아이디어 (보류)" 섹션 제외: PLAN 에 I-1, I-2...(표준 I-N; 구식 플랜은 ID-N 표기일 수도 있다) 로 넘버링된 "아이디어 (보류)" 섹션이 있으면 이는 착수 전 보류 후보이므로 태스크로 추출하지 않는다(구현·디스패치 대상 아님). 태스크(T번호 등)만 추출한다. 사용자가 특정 I-N 착수를 지시하면 그때 상세 인터뷰를 거쳐 정식 태스크로 편입한 뒤 진행한다.
각 미완료 태스크에 대해 다음을 수집한다.
의존: 이 있으면 그 값만 쓴다(의존: 없음 이면 의존 없음 확정). 표준 필드가 없는 구식 플랜에서만 Depends on:, 선행: 등 본문 표기를 쓰고, 명시가 없어도 PLAN의 절차상 직전 태스크 산출물을 명백히 전제로 한다면 의존으로 간주한다 (예: T0 삭제 → T1 재작성). /parallel-plan 과 동일 규칙.TaskCreate로 모든 미완료 태스크를 등록한 뒤 TaskUpdate addBlockedBy 로 의존성을 표현한다.
2. 디스패치 사이클 (모든 태스크 완료까지 반복)
2-1. 라운드 산출
TaskList로 의존성이 모두 해소된 (blockedBy 비어 있음) pending 태스크 집합 = 이번 라운드의 후보.
병렬 안전성 점검: 같은 파일을 광범위하게 수정할 가능성이 명백한 쌍이 있으면 한쪽만 이번 라운드에 포함하고 나머지는 다음 라운드로 미룬다. 모호하면 그대로 병렬로 보낸다 (리드 검토 단계에서 충돌이 잡힌다).
2-2. 서브에이전트 스폰
한 메시지에서 Agent 도구를 라운드 후보 수만큼 동시 호출한다.
subagent_type: general-purposemodel: sonnet (기본. 특별히 무거운 태스크만 리드 재량으로 그 태스크에 한해 상향)description: {TASK_ID} 자율 구현서브에이전트 프롬프트 템플릿
당신은 PLAN의 {TASK_ID} 태스크 하나만 끝까지 처리하는 워커 서브에이전트입니다.
## 컨텍스트
- 저장소: {ABS_REPO_PATH}
- PLAN 파일: {PLAN_FILE}
- 태스크 ID: {TASK_ID}
- 태스크 제목: {title}
- PLAN 발췌 (해당 태스크 섹션 전문):
{plan excerpt}
- AGENTS.md(또는 CLAUDE.md) 관례를 따르세요.
## 절차
1. 변경 대상 파일을 먼저 읽어 컨텍스트 파악.
2. 구현 (작고 안전한 변경 단위로).
3. 스택에 맞는 로컬 검증(테스트/빌드/lint, 관련 범위 한정)을 시도. 적용되지 않으면 건너뛰고 그 이유를 보고.
4. **커밋하지 마세요.** 메인 에이전트(리드)가 검토 후 일괄 커밋합니다.
5. **PLAN.md / AGENTS.md / CLAUDE.md / README.md 는 수정하지 마세요.** (메인 에이전트가 통합 시 일괄 갱신)
## 자율 실행 규칙
- 사용자에게 묻지 마세요. 판단 사항은 가장 보수적·안전한 선택을 하고 `decisions` 에 기록.
- destructive 명령(파일 대량 삭제 외 — PLAN이 명시한 삭제는 OK), 외부 네트워크 호출은 회피.
- 실패해도 부분 변경은 그대로 두고 보고만 합니다.
## 결과 보고 (마지막 메시지에 반드시 포함)
RESULT
2-3. 리드 검토 + 커밋
각 서브에이전트가 반환되면 리드가 다음 순서로 처리한다.
changed_files / created_files / deleted_files 를 Read·ls 로 직접 확인. 보고와 실제가 다르면 진단.verification 에 근거(실행 명령·결과)가 없는 항목은 통과로 치지 않고 리드가 직접 돌려 확인한다.git add <files>.[{TASK_ID}] 한국어 요약 (≤72자), 빈 줄, * 목록.decisions / followups 가 있으면 세션 큐에 누적 (종료 시 사용자에게 일괄 보고).TaskUpdate status=completed → 의존하던 후속 태스크들이 자동으로 풀린다.2-4. 실패/블록 처리
status == failed 면 리드가 진단 후 한 번 재시도(같은 서브에이전트 패턴으로 재스폰, 진단 결과를 프롬프트에 추가).TaskUpdate metadata.blocked=true), 진단을 큐에 누적, 다음 후보로 진행.3. 종료 보고
모든 태스크가 completed / blocked 가 되면 한 번에 보고한다.
{TASK_ID} 제목 — {commit SHA})[x]) 태스크가 3개 이상 쌓여 있으면 /cleanup-plan 실행 권장종료 시 사용자에게 별도 액션을 요청하지 않는다 (필요하면 followups 로 정리만).
주의사항
/goal 등으로 끝까지 진행을 지시한 경우 중간에 멈추지 않는다./parallel-plan / /scopic-deep-pr 사용)