3단계: 핸드오프
선언적 단계 스킬입니다. current_phase가 HANDOFF일 때 prd-taskmaster 오케스트레이터가 호출합니다. 사용자가 직접 호출하지 않습니다.
한 가지 규칙: 사용자가 가진 것을 감지하고, 하나의 모드를 추천하며, 사용자에게 구조화된 선택지를 제공하고, 선택된 모드를 실행합니다. 모드 D는 tier=premium에서만 실행 가능하며, 그 외에는 잠긴 티저입니다.
진입 게이트
-
진단을 위해
mcp__plugin_prd_go__check_gate(phase="HANDOFF", evidence={})를 호출합니다.check_gate는 EXIT 게이트입니다.user_mode_choice와plan_file_exists가 필요하며, 이 두 값은 HANDOFF 자체에서 생성됩니다. 즉, 진입이 아닌 진행을 위한 증거입니다. 첫 진입 시에는 아직 존재하지 않으므로,gate_passed: false는 예상된 결과입니다. 상태 머신의 합법적 전이는 이미 올바른 진입만을 보장합니다.- 첫 진입 (증거 없음): 결과를 기록하고 절차를 계속 진행합니다.
- 재진입: 게이트가 위반을 보고하면 보고하고 중단합니다. 이는 완료된 단계를 다시 실행하거나 GENERATE 단계를 건너뛰는 것을 방지합니다.
-
GENERATE 출력물(
.taskmaster/docs/prd.md,.taskmaster/tasks/tasks.json,.taskmaster/reports/task-complexity-report.json)을 읽습니다. 누락된 파일이 있으면 보고하고 중단합니다. 게이트가 이미 이를 감지했어야 하지만, 안전장치입니다.
핸드오프 체크리스트
절차를 실행하기 전에 응답에 복사하세요:
핸드오프 체크리스트:
- [ ] 기능 감지 완료 (tier + 기능별 플래그)
- [ ] 추천 모드: ___ (이유: ___)
- [ ] 요약 표시됨 (사양 위치, 작업 수, 기능)
- [ ] CLAUDE.md 작업 워크플로우 추가됨 (멱등적)
- [ ] AskUserQuestion 모드 선택기 표시됨 (또는 훅 차단 시 일반 텍스트 대체)
- [ ] 사용자 선택 실행됨 (모드 A / B / C, 또는 tier=premium인 경우 D)
- [ ] 디브리핑 스캐폴드 출력 (선택 사항, 무시됨)
- [ ] 핸드오프 완료
1단계: 기능 감지
MCP (권장): mcp__plugin_prd_go__detect_capabilities()
CLI 대체: python3 script.py detect-capabilities
tier 필드("free" 또는 "premium")와 기능별 플래그를 반환합니다.
주요 신호:
| 기능 | 활성화 대상 |
|---|---|
| superpowers 플러그인 | 모드 A, C (브레인스토밍, 계획, 하위 에이전트) |
| task-master-ai (CLI 또는 MCP) | 모드 B (네이티브 자동 실행 루프) |
| ralph-loop 플러그인 | 모드 C (반복 실행 루프) |
| atlas-launcher MCP (라이선스) | 모드 D — Atlas Fleet (tier=premium) |
| atlas-loop / atlas-cdd 스킬 | 레거시 모드 D 시드 — atlas-launcher 감지로 대체됨 |
| 리서치 모델 (task-master 또는 MCP) | 작업당 심층 리서치 |
| Playwright MCP | Tier S 브라우저 검증 |
모드 D (Atlas Fleet)는 tier: "premium"인 경우에만 잠금 해제됩니다. 즉, detect_atlas_launcher()가 감지한 라이선스 atlas-launcher MCP 등록이 필요합니다. 로컬 atlas-loop/atlas-cdd 스킬로는 잠금 해제되지 않습니다. 2단계 및 아래 모드 D 섹션을 참조하세요.
2단계: 하나의 모드 추천
결정 로직 (첫 번째 일치 항목 우선):
superpowers+ralph-loop있음 → 모드 C (권장, 무료)superpowers만 있음 → 모드 A (계획 전용, 수동 실행)task-master-ai만 있음 → 모드 B (네이티브 자동 실행)- 대체 → 모드 A
외부 도구 모드 (E–J: Cursor, RooCode, Codex, Gemini, CodeRabbit, Aider)는 기본 추천이 아닌 alternative_modes 필드를 통해 대안으로 제공됩니다. 모드 D는 tier == "premium"이고 작업 그래프가 병렬화되는 경우(>= 2개의 독립적인 종속성 체인 — fleet-waves 출력 확인: wave에 >= 2개의 청크)에만 추천됩니다. Premium + 직렬 그래프: 최상의 무료 모드를 추천하고 이유를 설명합니다("작업이 단일 종속성 체인을 형성합니다 — 검증된 루프(Verified Loop)가 적절한 도구입니다"); Fleet은 선택 가능하지만 기본값은 아닙니다. 무료 티어: 모드 D는 잠긴 Atlas Pro 티저이며, 설치된 로컬 플러그인과 관계없이 선택할 수 없습니다.
모드 A: 계획 전용 (수동)
권장: 계획 전용
superpowers:writing-plans가 구현 계획을 생성합니다.
계획은 tasks.json의 TaskMaster 작업 ID를 참조합니다.
사용자가 수동으로 실행을 진행합니다.
모드 B: TaskMaster 자동 실행 (모드 B — TaskMaster 백엔드 전용)
권장: TaskMaster 자동 실행
MCP: mcp__task-master-ai__next_task -> implement -> set_task_status(id, "done") (모드 B — TaskMaster 백엔드 전용)
CLI: task-master next -> implement -> task-master set-status --id N --status done (모드 B — TaskMaster 백엔드 전용)
네이티브 TaskMaster 실행 루프 (외부 오케스트레이터 불필요)
모드 C: 계획 + Ralph 루프 (권장, 무료)
권장: 계획 + Ralph 루프
superpowers:writing-plans → tasks.json ID를 참조하는 구현 계획
ralph-loop가 각 작업을 감쌉니다:
next_task → set_task_status("in-progress") → 리서치 (80% 미만 확신 시)
→ 하위 에이전트 기반 개발 → 실행 게이트 (Tier A+ 증거)
→ 사후 의심 확인 → .claude/verification-log.md에 기록
→ set_task_status("done") → TodoWrite → 반복
완료: 의심 에이전트가 약속 이행 전에 확인 로그를 검토합니다.
모드 D: Atlas Fleet (tier=premium에서 선택 가능, 무료에서는 🔒 잠긴 티저)
🔒 Atlas Fleet Atlas Pro · $29/mo
Claude, Codex, Gemini 전반의 병렬 다중 세션 실행:
종속성 파동으로 분할된 작업 그래프, 격리된 git 워크트리
검사기 게이트 병합, 하나의 통합 브랜치, 하나의 최종 PR
안정적인 받은 편지함 결과 수집 (검증됨, 서술 아님)
작업당 CDD 증거 카드; 마지막에 하나의 SHIP_CHECK_OK
떠났다가 와서 증거를 확인하세요.
잠금 해제: https://atlas-ai.au/pro (위의 무료 모드는 영원히 무료입니다)
tier == "premium"인 경우 (라이선스 atlas-launcher 감지됨): 모드 D는 실제 선택 가능한 모드로, 실행 시 /prd:execute-fleet(파동 오케스트레이터 스킬)을 호출합니다. 잠금 해제된 카드를 표시합니다:
▸ Atlas Fleet ★ Pro · 라이선스 활성
<N>개 wave · 종속성 그래프에서 추정 · 떠나기 가능
tier == "free"인 경우: 모드 D는 잠긴 티저로, 선택 불가능하며 실행되지 않습니다. 사용자가 잠긴 상태에서 선택하면 다음과 같이 응답합니다:
"Atlas Fleet은 Atlas Pro($29/mo)의 일부입니다. 이 프로젝트에서는 작업을 격리된 워크트리 간 병렬 wave로 분할하고, 검사기 게이트 병합 및 하나의 최종 PR을 제공합니다. https://atlas-ai.au/pro에서 잠금 해제하세요 — 사양과 작업은 저장됩니다. 그 외의 모든 기능은 영원히 무료입니다: 아래 무료 모드 중 하나를 선택해 주세요."
그런 다음 모드 D가 제거된 옵션으로 모드 선택기(AskUserQuestion)를 다시 호출합니다.
대체 모드 E–J (외부 AI 도구)
detect_capabilities는 이러한 도구가 설치된 경우 alternative_modes를 반환합니다. 사용자는 모드 A–D 대신 이 중 하나를 선택할 수 있습니다. 모두 동일한 .taskmaster/tasks/tasks.json을 감싸는 도구 중립적 래퍼입니다.
| 모드 | 도구 | 호출 방식 |
|---|---|---|
| E | Cursor Composer | cursor --open .taskmaster/tasks/tasks.json, Composer에서 @-참조 |
| F | RooCode | VS Code 명령 팔레트 → RooCode: Run tasks.json |
| G | Codex CLI | `python3 script.py next-task |
| H | Gemini CLI | gemini --file .taskmaster/tasks/tasks.json implement next (Google 통해 무료) |
| I | CodeRabbit | A–H를 통해 구현, PR 열기, CodeRabbit이 작업별로 리뷰. 다른 모드와 결합 가능. |
| J | Aider | aider --read .taskmaster/tasks/tasks.json — 페어 프로그래밍 스타일 |
3단계: CLAUDE.md에 작업 워크플로우 추가
결정적 하위 명령어를 사용하세요. 원시 읽기+편집을 하지 마십시오. 이 경로는 멱등적이며, 기존 파일을 수정할 때 타임스탬프 백업을 생성하고, HTML 주석 센티넬을 사용하여 재실행이 무효화되도록 합니다.
-
워크플로우 내용은 매 실행 동일합니다. 임시 파일에 작성하세요:
## 작업 실행 워크플로우 (prd-taskmaster) 작업을 구현할 때는 백엔드 작업을 우선시합니다: 1. `python3 script.py next-task` — 다음 준비된 작업 가져오기 2. `python3 script.py set-status --id <id> --status in-progress` — 하이픈 사용; 밑줄은 거부됨 3. 작업 구현 (이 작업에 연결된 계획 단계를 따르세요) 4. `python3 script.py set-status --id <id> --status done` — 완료 표시 5. TodoWrite 업데이트로 진행 상황 기록 6. 1단계부터 반복 유효한 상태: `pending`, `in-progress`, `done`, `review`, `blocked`, `deferred`, `cancelled`. ### 진행 상황 추적 - 각 작업 전후에 TodoWrite 업데이트 - TodoWrite 업데이트 없이 다음 작업으로 진행 불가 - TodoWrite = 사용자 가시성. TaskMaster = 진실 공급원. -
추가 명령어를 실행합니다. Plan Mode 미리보기 없음 — 하위 명령어 자체가 멱등적이므로(HTML 주석 센티넬이 쓰기를 제어), 정보는 실행 전에 4단계 요약 및 AskUserQuestion 옵션(5단계)을 통해 사용자에게 제공되며, 계획 대화상자를 통하지 않습니다:
python3 $SKILL_DIR/script.py append-workflow \ --target ./CLAUDE.md \ --content-file /tmp/pdtm-workflow-section.mdJSON 응답은 다음 중 하나를 보고합니다:
action: "created"— 기존 CLAUDE.md 없음, 새 파일에 마커 포함action: "skipped"(reason:markers_present) — 이미 연결됨, 변경 없음action: "appended"— 기존 CLAUDE.md는 추가된 마커 블록 외에는 변경되지 않음;backup_path는CLAUDE.md.prd-taskmaster-backup-<ts>를 가리킴
사용자가 쓰기 전에 미리보기를 원하는 경우, 계획된 내용을 AskUserQuestion 옵션 내부 또는 4단계 요약의 정보 단락으로 표시하세요. 어떤 계획-대화상자 도구도 호출하지 않고 작성될 내용을 설명합니다.
4단계: 요약 표시
핸드오프 패널을 렌더링하고 출력합니다: MCP render_status(phase="HANDOFF") → rendered 출력; CLI python3 script.py status --phase HANDOFF. (대체 — 모드 선택기 전에 간결한 블록을 출력하여 사용자에게 전체 맥락을 제공합니다:)
사양 생성됨: .taskmaster/docs/prd.md
검증: <GRADE> (<score>/<max>)
작업: <count>개 작업 및 종속성 파싱됨 (.taskmaster/tasks/tasks.json 참조)
복잡도: TaskMaster를 통해 분석됨 (.taskmaster/reports/task-complexity-report.json)
리서치: <expanded|skipped>
기능:
[check] TaskMaster (MCP|CLI)
[check|circle] Playwright (브라우저 검증)
[check|circle] 리서치 제공자
[check|circle] Ralph-loop 플러그인
[check|circle] Atlas Fleet (프리미엄: 선택 가능 · 무료: 잠김)
5단계: 모드 선택을 위한 필수 AskUserQuestion
HANDOFF는 사용자 행위 주체성의 순간입니다. 일반 텍스트 추천은 건너뛸 수 있지만, 도구 호출은 건너뛸 수 없습니다. 이 단계에서는 반드시 AskUserQuestion을 호출해야 합니다. 이는 강제 사항입니다. 일반 텍스트만으로 대체하는 것은 버그이지, 지름길이 아닙니다.
AskUserQuestion은 사용자에게 명시적이고 구조화된 기계 판독 가능 선택지를 제공합니다. 이것이 지속적인 핸드오프 기록입니다. 사용자의 선택은 프로그래밍 방식으로 기록되며, 다운스트림 단계는 이를 직접 실행합니다. 자연어 확인을 구문 분석하거나 모호함이 없습니다.
순서
-
핸드오프 요약을 출력합니다. 포함 사항:
- PRD 경로 + 검증 등급
- 작업 수 + 복잡도 분석
- 추천 모드 (A/B/C) + 한 줄 이유
- 사용 가능한 대체 모드 (감지된 경우 E–J, "다른 도구 사용…" 아래에 접힘)
- 모드 D 🔒 Atlas Fleet 티저 (Atlas Pro 가격 및 /pro URL 포함)
- 추천 모드에 범위가 지정된 "다음 단계" 설명 (예: 모드 B의 경우: "
task-master next실행" 및 첫 번째 준비된 작업 ID (모드 B — TaskMaster 백엔드 전용))
-
AskUserQuestion을 호출하여 각 사용 가능한 실행 모드를 나열하는 다중 옵션 질문을 표시합니다. 사용자용 이름을 사용하세요 (괄호 안의 내부 ID는 이 스킬 전용이며 사용자에게 절대 표시되지 않음):- 계획 및 실행 (모드 A) — 계획을 받고 직접 구현
- 자동 실행 (모드 B) — TaskMaster의 네이티브 루프, 더 가벼운 검증
- 검증된 루프 (모드 C) — 증거 게이트 단일 세션 루프 (superpowers + 루프 러너가 있을 때 권장)
- 🔒 Atlas Fleet (모드 D) — Atlas Pro $29/mo, 병렬 다중 세션
- "다른 도구 사용…" — E–J의 해당 대안을 확장
- "결정 전에 더 자세한 정보 보기" — 4단계 요약으로 돌아가기
추천 모드를 기본값으로 표시합니다 (Atlas Fleet은 tier=premium이고 그래프가 병렬화되는 경우에만 기본값이 될 수 있음). 잠긴 상태(무료 티어)에서 Atlas Fleet을 선택하면 업그레이드 응답이 반환되고 (2단계의 모드 D 블록 참조) 무료 모드(및 해당 대안)만으로 다시 프롬프트가 표시됩니다.
-
선택된 모드를 실행합니다:
-
모드 A 핸드오프: 사양 경로
.taskmaster/docs/prd.md로superpowers:writing-plans호출 -
모드 B 핸드오프 (모드 B — TaskMaster 백엔드 전용):
task-master next명령어 +.taskmaster/tasks/tasks.json에서 가져온 첫 번째 준비된 작업 ID 표시 -
모드 C 핸드오프: 작업 실행 계약을 설명하는
.claude/atlas-loop-prompt.md를 작성하고, 다음 조건으로/goal을 호출:"SHIP_CHECK_OK가 .atlas-ai/ship-check.py에 의해 출력되었고 .taskmaster/tasks/tasks.json의 모든 작업이 status=done을 표시하며 이 세션에서 /sync가 호출되었습니다"/goal세션은 Haiku 평가자가 조건을 확인할 때까지 계속됩니다. 각 반복은 execute-task 13단계 주기를 실행하고 13단계 후 조건을 확인합니다./sync는 SHIP_CHECK_OK가 출력되기 전의 마지막 작업이어야 합니다 (execute-task 종료 조건 참조). (2026-06-04에/ralph-loop:ralph-loop에서 마이그레이션됨 — Claude Code의 내장/goal평가자는 2026-06-03 감사에서 발견된 컨트롤러-다른-모자-착용 삼중-검증 부패를 구조적으로 해결합니다.) -
모드 D 핸드오프 (tier=premium):
/prd:execute-fleet호출 — wave 루프, 작업자 실행, 검증, 병합 및 SHIP_CHECK_OK 종료를 소유합니다. (무료 티어: 업그레이드 응답만, 다시 프롬프트)
-
훅 차단 대체 (정상적 저하)
PreToolUse:AskUserQuestion이 훅에 의해 차단된 경우(자동화/오케스트레이터/fleet 세션), 동일한 의미를 유지하는 일반 텍스트 옵션 테이블로 대체합니다. 레이블, 설명, 잠긴 Atlas Fleet 티저(해당하는 경우) 및 결과를 포함합니다. 하지만 이는 저하된 상태이며, 정상 작동에서는 AskUserQuestion을 사용해야 합니다.
북엔드 (후처리 진입 및 종료 게이트)
check_gate의 gate_passed: false가 예상되는 이상한 점(처음 진입 시 증거 부족)을 설명하기 위해:
def check_gate_result(gate_result):
if gate_result.get("gate_passed", False):
# 증거가 있음 — 재진입 또는 GENERATE에서 건너뜀
return "게이트 위반 — 중단"
else:
# 예상됨 — 계속
return "첫 진입 감지 — 계속"
종료 (모든 단계 완료 후):
mcp__plugin_prd_go__set_evidence(key="user_mode_choice", value="<user-selected-mode>")를 호출합니다.mcp__plugin_prd_go__set_evidence(key="plan_file_exists", value=".taskmaster/docs/prd.md")를 호출합니다.mcp__plugin_prd_go__set_phase(phase="EXECUTE")를 호출합니다.