name: fz-plan description: >- 계획 수립 + 영향 범위 분석 + 설계. 요구사항 분해와 Serena 기반 코드베이스 탐색. 예: 계획 세워줘, 설계해줘, 아키텍처 잡아줘, 요구사항 분석 user-invocable: true argument-hint: "[기능/요구사항 설명] [light]" allowed-tools: >- mcp__serena__find_symbol, mcp__serena__get_symbols_overview, mcp__serena__find_referencing_symbols, mcp__serena__activate_project, mcp__serena__read_memory, mcp__serena__write_memory, mcp__serena__edit_memory, mcp__serena__list_memories, mcp__context7__resolve-library-id, mcp__context7__query-docs, mcp__sequential-thinking__sequentialthinking, mcp__atlassian__get-issue, mcp__atlassian__search-issues, Read, Grep, Glob, Workflow team-agents: primary: plan-structure supporting: [plan-impact, plan-edge-case, review-arch, review-direction, memory-curator] composable: true provides: [planning, architecture-analysis] needs: [none] intent-triggers: - "계획|설계|아키텍처|요구사항" - "plan|design|architect|requirement" - "리팩토링|치환|흡수|이전|migration|refactor" model-strategy: main: opus verifier: sonnet
/fz-plan - 계획 + 설계 스킬
행동 원칙: 요구사항을 구조적으로 분해하고, 코드베이스 영향 분석을 통해 정확한 구현 계획을 수립한다.
개요
⛔ Phase 0 (ASD Pre-flight) → Phase 0b (Context) → Phase 0c (Constraint Probe Pre-flight) → Phase 0.5 (Direction Challenge) → Phase 0.7 (Sprint Contract, TEAM 5+ Step) → Phase 1 (Deep Planning) → Phase 2 (Validation) ↔ Phase 3 (Feedback) → Gate 2 → /fz-code 루프 프리미티브: Plan-Execute + Evaluator-Optimizer (H6, Inside the Scaffold)
요구사항 구조 분해 + 영향 범위 분석. Serena 심볼 도구 기반 정밀 탐색.
/fz-plan "새 기능 계획해줘" /fz-plan "피드백 반영해서 수정해줘"
/fz-plan "아키텍처를 더 상세하게" /fz-plan "Gate 2 통과 확인해줘"
Prerequisites
- 팀 에이전트 모드(Workflow pilot)는 네이티브 Workflow 도구 가용 환경 필요 — 미가용 시 SOLO 계획 수립 폴백
- 참조:
guides/agent-team-guide.md§8 (공식 사양)
모듈 참조
| 모듈 | 용도 |
|---|---|
| modules/team-core.md + modules/patterns/ | Workflow 미가용 시 SOLO 폴백 협업 프로토콜 (canonical 패턴 출처) |
| modules/patterns/collaborative.md | Phase 0.5 Collaborative Design (review-direction → plan-structure) (UC-11, v4.7.1) |
| modules/session.md | 세션 감지, Issue Tracker 연동 |
| modules/memory-policy.md | Serena Memory 키 네이밍 + GC 정책 |
| modules/context-artifacts.md | ASD 폴더 기반 compact recovery + 비ASD Serena checkpoint |
| modules/rtm.md | Requirements Traceability Matrix — plan이 생성, code가 갱신, review가 검증 |
| modules/code-transform-validation.md | 코드 변환 동등성 — Transformation Spec + 검증 체크리스트 (패턴 변환 시) |
| modules/uncertainty-verification.md | 기술적 주장 → Default-Deny 검증 (하네스 원칙, Transformation Spec Pilot) |
| modules/scope-challenge.md | Phase 3 Codex 이슈 scope_disposition 분류 + Lead 독립 판정 (additive 자동 번역 차단) |
| modules/promotion-ledger.md | P1/P2 조치 eligible session 관측 기록 (학습 승격 금지) |
sc: 활용 (SuperClaude 연계)
| Phase | sc: 명령어 | 용도 |
|---|---|---|
| Phase 1 | /sc:design |
아키텍처 설계, API 설계 |
| Phase 1 | /sc:analyze |
기존 코드 분석, 영향 범위 |
| Phase 1 | /sc:brainstorm |
요구사항 탐색 (복잡한 경우) |
| Phase 1 | /sc:research |
외부 기술/라이브러리 조사 |
| Phase 1 | /sc:workflow |
PRD → 구현 워크플로우 자동 생성 (5+ Step 시) |
| Phase 1 | /sc:spec-panel |
아키텍처 스펙 전문가 패널 리뷰 (새 모듈 시, --deep 시) |
| Phase 2 | /fz-codex verify |
계획 검증 (독립 스킬 — Codex 교차 검증, modules/fz-codex-subcommands-core.md § verify) |
| Phase 2 | /sc:estimate |
공수 추정 (복잡도 4+ 시, 조건부) |
| Phase 3 | /sc:reflect |
피드백 반영 후 자체 검증 |
Plugin 참조 (Swift Concurrency)
참조:
modules/plugin-refs.md— Swift Concurrency(계획 시) 섹션 iOS 16 minimum target 제약: CLAUDE.md## Plugins참조. 계획에 iOS 17+ API (@Observable,@Bindable, onChange new signature) 사용 명시 시#available가드 step 포함 의무. availability 사전 결정: SwiftUI State 설계 (iOS 16:ObservableObject + @StateObject/ iOS 17+:@Observable + @State) → plan에#available분기 명시
팀 에이전트 모드
팀 모드 규칙은
modules/team-core.md참조
TEAM(TeamCreate+SendMessage) 모드를 네이티브 Workflow 결정적 스크립트로 대체한 Wave 2 전환. Collaborative Design 패턴 canonical:
modules/patterns/collaborative.md(보존 — 라운드 의미론은 스크립트가 구현). 스크립트:workflows/plan-collaborative.js(플러그인 루트 상대) — agents/의 plan-structure·plan-impact·plan-edge-case·review-arch·review-direction 정의를 agentType(fz:)으로 재사용. 규약:guides/skill-authoring.md§12. 동시 opus ≤2(Lead 포함)는workflows/plan-collaborative.js가 구조적으로 보장 (parallel 블록 sonnet 전용, opus 호출 전부 순차) — 구 Sequential Operating Contract(UC-6+ISSUE-016)의 보장을 스크립트 구조로 이전.
실행 절차 (Lead)
- codeContext 선행 기록: 심볼 탐색 산출 요약을
{WORK_DIR}/plan/code-context.md로 기록 (대형 입력은 파일 경로 전달 — §12) - args 조립:
requirement(필수)=요구사항 원문 /codeContextPath(필수)=요약 파일 절대 경로 /constraintsKnown=수집 제약 /discoverJournalPath=discover 산출물 경로(있으면 — 전제 아닌 참고) - Workflow 호출:
Workflow({ scriptPath: '{플러그인 루트}/workflows/plan-collaborative.js', args })- Stage 0 direction(opus, PROCEED면 1-call·비-PROCEED만 반박 왕복 +2) → Stage 1 초안(opus) → Stage 2 병렬 3렌즈(sonnet) → Stage 3 CC 교차(edge↔impact) → Stage 4 통합(opus — 다운스트림 계약 전체) → Stage 5 아키 재검증. 9-11 call
- 반환 처리:
mode:'workflow'→ plan(§X readScope/§Y writeScope/§Z acceptanceCriteria + RTM 5필드 + implicationRegister + unresolvedPeerIssues[archVerdict])을 Phase 1 산출물로 통합 → plan-v{N}.md 기록 + top-leveldirectionAlternatives(plan 객체 밖 — PlanSchema에 없음)를 plan 문서 '구조 결정 옵션 테이블' 섹션으로 별도 병합 (병합 누락 시 옵션이 사용자에게 미도달)mode:'direction_escalation'→ 대안 비교표 제시 + 사용자 확인 (Phase 0.5 RECONSIDER/REDIRECT 절차 준용)mode:'fallback'→ SOLO 계획 수립 수행 + 사유 experiment-log 기록
- Workflow 외부 Lead 책임 (이관 아님 — 회귀 확인 의무, 15차): 설계 스트레스 테스트 Q1-Q6 + RTM 검증 + Phase 0.7 Sprint Contract(Codex 회복 시) + Codex verify(Phase 2) + memory-curator recall + plan 파일 기록은 기존 Phase 절차대로 Lead가 반환 후 실수행 — Workflow는 Phase 1의 협업 분석 부분만 대체
- 지표 기록:
return.metrics+ wall-clock(Lead 측정) →experiment-log.md§5.7 fz-plan 테이블
6개 차별화된 렌즈 (같은 질문 금지 — ICLR 2025 근거. Workflow stage에 동일 적용):
| 렌즈 | 스크립트 위치 | 핵심 질문 |
|---|---|---|
| plan-structure (설계+분해) | Stage 1 초안 + Stage 4 통합 | "어떻게 나누고 만들 것인가?" |
| plan-impact (영향 범위) | Stage 2 + Stage 3 CC | "이 변경이 어디까지 퍼지는가?" |
| plan-edge-case (경계) | Stage 2 + Stage 3 CC | "어디서 깨지는가?" |
| review-arch (아키 일관성) | Stage 2 + Stage 5 재검증 | "기존 패턴/규칙과 맞는가?" |
| review-direction (방향 도전) | Stage 0 | "근본적으로 다른 접근은?" |
| Codex verify (독립 검증) | Workflow 외부 — Lead가 /fz-codex verify (Phase 2) | "이 계획에 빠진 것은?" |
통신 기록: plan-team.md 미생성 — Workflow transcript(runId)가 대체. TEAM 메커니즘 일몰은 확산 판정 시 결정.
⛔ Phase 0: ASD Pre-flight
참조:
modules/context-artifacts.md→ "Work Dir Resolution" 섹션. Phase 0b 전에 반드시 실행.
- 인자에서
ASD-\d+패턴 추출 - 패턴 있으면 →
{CWD}/ASD-xxxx/폴더 + index.md 생성 (없으면) + WORK_DIR 설정 - 패턴 없으면 → 브랜치명 확인 → 없으면 AskUserQuestion(저장 여부) → 예:
{CWD}/NOTASK-{YYYYMMDD}/+ index.md 생성 / 아니오: Serena fallback
Gate 0: Work Dir Ready
- ⛔ ASD 패턴 또는 저장 여부 질문 완료?
- WORK_DIR 결정됨? (ASD / NOTASK / Serena fallback)
- index.md 존재 확인 완료? (없으면 생성)
Phase 0b: Context Loading
절차
세션 감지: 참조
modules/session.md이전 세션 복원:
mcp__serena__list_memories→ 관련 이전 세션 검색mcp__serena__read_memory→ 결정사항, 잔여 이슈 로드
프로젝트 활성화:
mcp__serena__activate_project→ LSP 서버 활성화
대상 모듈 심볼 파악:
mcp__serena__get_symbols_overview→ 작업 대상 파일 심볼 구조mcp__serena__find_symbol→ 컴포넌트 탐색
이전 Discover 결과 로드 (ASD 폴더 활성 시):
{WORK_DIR}/discover/discover-journal.md읽기 → Landscape Map + Trade-off Table + Open Questions 복원{WORK_DIR}/discover/discover-plan.md읽기 → mid-pipeline discover 결과 (있으면)- ⛔ discover 결과는 "전제"가 아닌 "참고": plan은 discover의 경로 중 하나를 선택하거나, 새 경로를 설계할 수 있음
- 🔒불변 조건만 plan의 제약으로 채택. 🔓가변 조건은 비용 비교 대상으로만 활용
- Open Questions는 plan Phase 1에서 추가 탐색 대상
- ⛔ Scope Expansion: discover 변경 대상의 상위 모듈/프로토콜에서
get_symbols_overview→ 놓친 형제 타입/간접 소비자를 탐색 범위에 추가
Gate 0b: Context Ready
- 프로젝트 활성화 완료?
- 대상 심볼 구조 파악?
- 이전 컨텍스트 로드? (해당 시)
Phase 0c: Constraint Probe Pre-flight (31차 방어)
Plan 핵심 차원이 primitive(CLI flag / config key / value enum / env precondition)에 의존하면 추측 위에 작성하지 않는다. 실측으로 가정 검증 후 차원 포함. 참조:
feedback_plan_before_probe.md.
발동: 외부 primitive 의존 시 필수. 코드베이스 내부 패턴만 의존하면 스킵.
절차
- 가정 추출: 요구사항/discover 결과에서 primitive 의존 가정 식별
- 가정의 3 axes 점검 (32차 방어 — Probe Coverage Gap):
- (a) 존재 가정: primitive가 작동하는가? (existence)
- (b) 권한/경계 가정: 호출 측 SKILL.md
allowed-tools/Bash(*)패턴이 호출 허용? (boundary) - (c) 결과 contract 가정: 결과 형식/verdict가 호출자 해석과 일치? (contract)
- 3 axes 모두 점검. 어느 하나라도 미검증이면 차원에서 제외 또는 explicit assumption tag.
- 가정의 3 axes 점검 (32차 방어 — Probe Coverage Gap):
- 검증 분류 (각 가정 × 3 axes 별):
- 이미 verified →
[verified: source]태그 보유 (코드/문서/명령어 출력) - 미검증 →
[미검증: 이유]태그 + Plan 차원에서 제외 - probe 필요 →
/fz-discoverPhase 1.5 (Constraint Probe) 호출 - Codex Micro-Eval Assist (optional): 핵심 가정 +
[verified: source]부재 + primitive/contract 확인 비용 높음 시 →/fz-codex micro-eval "이 가정 검증"(effort=medium, 1-shot). Lead 판단으로 호출, 자동 발동 ❌ — 새 Phase/Gate 신설 ❌ (33차 default = action 정합).
- 이미 verified →
- probe 결과 통합: discover 산출물에서 3 axes 모두 verified 가정만 Plan 차원에 포함
Gate 0c: Constraints Verified for Plan
- primitive 의존 가정 모두 식별?
- 각 가정의 3 axes (존재 / 권한·경계 / 결과 contract) 모두 분류 완료? (32차 방어)
- 미검증 axis는 Plan 차원에서 제외 또는 explicit assumption tag?
- probe 필요 시
/fz-discover선행 완료? - 미통과 시 → ⛔ Plan 작성 차단
Phase 0.5: Direction Challenge
Default = action with proportional verification (참조:
modules/lead-action-default.md). verification escalation은 명시적 risk signal 발생 시에만.
발동 조건
| 조건 | Direction Challenge | 근거 |
|---|---|---|
| Workflow 모드 (plan-to-code, plan-only) | Stage 0이 수행 | workflows/plan-collaborative.js Stage 0 direction (escalation 시 본 절차 3 준용) |
| SOLO 모드 + 새로운 아키텍처 결정 | 필수 | Lead가 직접 6관점 검토 |
| discover 결과에 명확한 방향 존재 | 스킵 가능 | 이미 제약 기반 방향이 결정됨 |
| 단순 수정 (기존 패턴 따르기) | 스킵 | 방향성 검토가 과잉. ⛔ 템플릿/형제 미러링으로 신규 화면·컴포넌트를 생성하는 작업은 단순 수정 아님 — 3축 결정 포함, 스킵 불가 (45차) |
절차
요구사항 + 현재 아키텍처 대조:
Grep→ 기존 유사 구현 탐색mcp__serena__get_symbols_overview→ 대상 영역 구조 파악- CLAUDE.md
## Architecture기준으로 접근 방향 평가
6개 관점 비판적 검토 (TEAM: review-direction, SOLO: Lead 직접):
- Structural Fit: 현재 구조에 자연스러운가?
- Alternative Paths: 근본적으로 다른 접근은? (대안 최소 2개)
- Extensibility: N배 확장 시 유지 가능한가?
- Existing Pattern Reuse (41차 Reuse-First): 기존 패턴을 재활용할 수 있는가? 신호 기준:
universal*/extensible*/generic*/common*명명 + 5+ 사용처 + URL-agnostic API 시그니처 → 신규 작성 default 차단. 예외: 레거시 (마지막 수정 6개월+ 또는 deprecated 태그) 시 신규 작성 정당 - Maintenance Cost: 장기 유지보수 비용은 합리적인가?
- Over-Engineering Risk: 현재 요구 대비 과하지 않은가?
방향 판정:
- PROCEED → Phase 1 진입
- RECONSIDER → 대안 비교표 + 사용자 확인 후 진입
- REDIRECT → 대안 강력 권고 + 사용자 확인 필수
⛔ 방향 판정 기록 (항상):
- ASD 활성:
{WORK_DIR}/plan/direction-challenge.md에 판정 결과 + 대안 비교 기록 - 비ASD:
write_memory("fz:checkpoint:plan-direction", "판정: {PROCEED/RECONSIDER/REDIRECT}. 대안: {요약}. 선택근거: {1줄}")형식 참조:modules/context-artifacts.md
- ASD 활성:
Gate 0.5: Direction Validated
- 6개 관점 검토 완료?
- 대안 최소 2개 제시?
- 구조 결정별 대안 ≥2 + trade-off 기록? (SOLO 조기 체크 — Workflow 모드의 병합 확인은 Gate 1 담당. 답습/미러링이면 3축 — 45차)
- 방향 판정 (PROCEED/RECONSIDER/REDIRECT)?
- RECONSIDER/REDIRECT 시 사용자 확인?
- 구조/경계 포크 결단 시 유형 분류 — (가) 코드 read/grep으로 정답이 1개로 좁혀지는 엔지니어링 판단 → 확신 권고+근거+"이의 없으면 진행"(옵션 메뉴화 금지) / (나) 제품·디자인·팀 컨벤션 소유 → AskUserQuestion. ⛔ 경계(PR/커밋): plan 분할 제안=판단 입력≠경계 권위 (1커밋=1관심사+컴파일+1결정 trace). [candidate: 2 session evidence] (F5·F6, active:≥3 —
project_fz_harness_holes.md)
Phase 0.7: Sprint Contract (T2-B, TEAM mode)
발동: TEAM mode + (5+ Step Plan 또는 Cross-skill 변경). 단순 수정/탐색 스킵.
Codex가 구현 시작 전 "성공 기준" Sprint Contract 작성 → Claude 동의/수정 → Phase 1 진입. 사후 수정 비용 감소.
- 절차:
modules/sprint-contract.md§절차 (4-step) - Schema:
modules/sprint-contract.md§Schema (yaml: success_criteria + anti_criteria + scope_boundary) - Lead Decision: agree → Phase 1 / modify → Codex re-verify 1회 (한도) / reject → Phase 0.5 재진입
Gate 0.7: Sprint Contract Agreed
- Codex Sprint Contract 작성 완료? (
sprint-contract-codex.md또는fz:checkpoint:sprint-contract) - 모든 SC가 measurable + binary 판정 가능?
- anti_criteria 명시? (제거/리팩토링 작업 시)
- Lead 동의 (agree) 또는 modify 후 합의?
- 미통과 시 → ⛔ Phase 1 작성 차단
Phase 0.7 출처: Anthropic Harness Engineering 패턴 B (2026-03) + Plan v3.1.3 §T2-B. 학술 근거:
modules/cross-validation.md§이론 근거 (Generator≠Evaluator + MoA collaborativeness).
Phase 1: Deep Planning
프로젝트 규칙: CLAUDE.md
## Architecture섹션을 따른다. 본문:modules/plan-deep-planning.md참조 (Level 3) — 9 절차 (요구사항 분해, Exhaustive Impact Scan a-f, API 확인, Clean Architecture, SuperClaude, 설계 스트레스 테스트 Q1-Q6, RTM, 계획 출력, Transformation Spec, 계획 파일 기록).
절차 요약
- 요구사항 구조 분해 (discover 산출물 활용)
- 코드베이스 영향 분석 + ⛔ Exhaustive Impact Scan a-f (텍스트 검색/런타임 도달성/사이드이펙트/Dead code/소비자 스캔/Symbol Inventory)
- API/라이브러리 문서 확인 (Context7)
- Clean Architecture 원칙 확인 5a. SuperClaude 연계 (sc: 명령어) 5b. 설계 스트레스 테스트 Q1-Q6 (Evaluator-Optimizer 패턴, max 2회 반복)
- ⛔ RTM 작성
- 구조화된 계획 출력 (리스크 매트릭스 + Anti-Pattern Constraints + Implication Register)
- ⛔ Transformation Spec 작성 (패턴 변환 Step 시)
- ⛔ 계획 파일 기록 (compact recovery)
각 절차 상세는
modules/plan-deep-planning.md참조. 트리밍 비저하 원칙(single source:guides/prompt-optimization.md§1 보충 3a)으로 Gate 1 + Why(H1)는 본 SKILL에 보존.
Gate 1: Plan Ready
Why (H1): 영향 범위가 불완전하면 구현 시 예상 외 파일을 건드리게 되고, 리뷰에서도 범위 밖 변경을 놓친다.
- ⛔ Gate 0 (ASD Pre-flight) 통과했는가?
- 영향 범위 분석 완료?
- ⛔ Exhaustive Impact Scan 4단계 수행 완료? (반성 5차)
- 텍스트 전수 검색(Grep)으로 심볼 기반 결과와 대조했는가? Evidence: Grep("{타입명}") → {N}건 vs find_referencing_symbols → {M}건
- 각 진입점의 런타임 도달성을 검증했는가? (latent 표기 포함)
- 기존 액션 패턴의 사이드이펙트/순서 의존성을 분석했는가?
- 관련 파일의 dead code를 감지했는가?
- ⛔ 모듈화 작업이면 소비자 코드 품질 스캔(e단계)을 수행했는가?
- ⛔ import 제거 작업이면 Symbol Inventory(f단계)를 수행했는가?
- API 문서 확인 완료? (새 API 사용 시)
- 기존 패턴과 일관성 확인?
- 구현 단계가 명확하게 정의?
- 설계 스트레스 테스트(Q1-Q6) 수행 완료?
- 소비자 영향이 식별되었으면 계획에 반영?
- 대안 패턴 최소 1개 제시?
- 리팩토링 작업이면 Anti-Pattern Constraints 작성?
- ⛔ 새 SPM 패키지 생성이면 Chore Step 포함? (.gitignore .build, Package.resolved, pbxproj 등록)
- ⛔ 모듈화 작업이면 Concern Classification 수행? (각 public type의 관심사가 모듈 책임에 부합)
- ⛔ 패턴 변환 Step에 Transformation Spec 작성? (원본 스레드/에러/추상화/언어 제약 확인)
- ⛔ Transformation Spec의 기술적 주장에 [verified: source] 태그가 있는가? (Default-Deny)
- ⛔ "실행 스레드"가 Zero-Exception 규칙을 준수하는가?
- ⛔ 요청 파라미터 키 목록이 원본과 일치하는가?
- 구조 결정 옵션 테이블 포함 + 사용자 보고 제시? (Workflow 모드면
directionAlternatives병합 확인. 답습/미러링이면 3축 필수 — 45차) - ⛔ 계획 기록 완료? (ASD: 파일, 비ASD: Serena checkpoint)
Gate 증거 첨부 (H2 원칙 — self-check 보완): 결정론적 도구 출력이 있는 Gate 항목은
Evidence:행에 도구 결과 요약을 기록한다. self-check "완료?"보다 도구 출력이 신뢰할 수 있다.
Phase 1.5: Swift Anti-Pattern Pre-block (Swift/iOS 프로젝트 한정)
발동: CLAUDE.md
## Architecture가 Swift/iOS 지정 + Plan에 SwiftUI/Concurrency/패턴 변환 포함 시 필수. 비Swift/iOS는 스킵. 본문:modules/swift-anti-pattern-preblock.md참조 (Level 3) — 3 원칙(P1 SwiftUI 결정 / P2 Concurrency isolation / P3 패턴 변환 보존) + 각 원칙 token + Few-shot.
Gate 1.5: Swift Anti-Pattern Pre-block 통과
- Swift/iOS 프로젝트 + SwiftUI/Concurrency/패턴 변환 plan? (해당 시
modules/swift-anti-pattern-preblock.mdRead 후 진입) - P1 SwiftUI 결정 명시? (owner / availability / View 책임)
- P2 Concurrency isolation 범위 결정? (scope / 병렬화 / continuation 정당화)
- P3 패턴 변환 시 원본 동작 보존? (스레드 / defer-await / enum catch)
- 1건 미해결 → ⛔ Phase 2 차단
발동 시 행동:
modules/swift-anti-pattern-preblock.mdRead +modules/plugin-refs.md역방향 트리거 섹션 강제 참조 + 3 원칙 점검표 통과 후 Phase 2 진입.
Phase 2: Plan Validation
절차
# 계획 검증 실행
검증 도구로 계획 검증 위임
검증이 수행하는 작업:
- 계획 전송 (cross-model 검증, effort: high)
- 응답 파싱
- Issue Tracker에 이슈 자동 기록
- 이슈 요약 반환
3.5. ⛔ 검증 결과 기록 (항상):
- ASD 활성:
{WORK_DIR}/plan/verify-result.md에 verdict + 이슈 요약 기록 - 비ASD:
write_memory("fz:checkpoint:plan-verify", "verdict: {approved/rejected}. 이슈: {N}개. Critical: {요약}")
Gate 2 전제조건
- 검증 verdict가
approved또는 사용자 승인
Phase 3: Feedback Integration
절차
- 피드백 심화 분석:
mcp__sequential-thinking__sequentialthinking→ 이슈별 심각도 분류- Critical: 즉시 수정 필수
- Major: 수정 권장
- Minor: 선택적 수정
1b. ⛔ Scope Challenge (이슈당 필수): 각 Codex 이슈를 플랜에 반영 전 modules/scope-challenge.md Q-S1~S4 실행 → scope_disposition 분류. Lead는 Codex 결과를 읽기 전 독립 판정 후 비교 (Generator≠Evaluator).
요구사항 일치 검증:
mcp__sequential-thinking__sequentialthinking→ 수정 전후 요구사항 부합도 단계별 비교/sc:reflect→ 자체 검증
사용자 의사결정 (AskUserQuestion):
- 수정 후 Phase 2 재검증
- 현재 계획으로 구현 진행
- 추가 논의
⛔ 수정 계획 기록 (항상 — compact recovery 필수):
- ASD 활성:
plan-v{N+1}.md생성 + 최종 승인 시plan-final.md복사 +index.md업데이트 - 비ASD:
write_memory("fz:checkpoint:plan-final", "최종 계획: Steps {N}개. 피드백 반영: {요약}. verdict: approved")
- ASD 활성:
Refactoring Mode 감지 (P0-light): intent-triggers에 리팩토링/치환/흡수/migration 매칭 시 AskUserQuestion 1회 — "이 작업은 리팩토링 감지. refactoring-aware 분류(Q-S5 Appendix 활성)를 적용할까요?" 사용자 예 시 Q-S5 활성, 아니오 시 기존 flow.
Gate 2: Validation Passed
- Critical 이슈 모두 해결?
- 사용자 승인 완료?
- 수정된 계획이 요구사항과 일치?
Few-shot 예시
BAD (구조 분해 부족):
## 계획: 새 ContentDetail 화면 추가
Step 1: ContentDetailRIB 만들기
Step 2: API 연동
Step 3: UI 구현
→ 영향 분석 없음, Step이 막연
GOOD:
## 계획: 새 ContentDetail 화면 추가
### 영향 분석
- 변경: HomeInteractor (라우팅), HomeRouter (child 추가)
- 생성: ContentDetail{Builder,Router,Interactor,ViewController}
- 참조: ContentRepository (기존), ContentUseCase (기존)
### Steps
Step 1: ContentDetailBuilder 생성 (DI: ContentRepository, ImageCacheUseCase)
Step 2: HomeRouter에 ContentDetail attach/detach 추가
Step 3: ContentDetailInteractor → ContentUseCase → ContentDetailPresenter 데이터 흐름
Step 4: ContentDetailViewController SwiftUI 기반 UI
### 리스크 매트릭스
| Q1 다중성 | ContentDetail이 여러 진입점(Home/Search/MyPage)에서 호출 | listener 프로토콜 통일 필요 |
Boundaries
Will: 요구사항 분해, 영향 분석, Serena 탐색, 구현 계획 출력, 계획 검증 Will Not: 코드 수정 (→ /fz-code), 빌드 실행 (→ /fz-code)
light 모드 (40차 simplified mode)
사용자 신호 "그냥/가볍게/단순/빠르게" 감지 또는 /fz-plan light "..." 호출 시:
- Phase 1 (Deep Planning)만 실행 — 구조 분해 + 영향 분석 + Step 출력
- Phase 0.5 (Direction Challenge) 생략 (단순 수정 patterns 대상)
- Phase 2 (Validation) + Phase 3 (Feedback) 생략 (Codex verify 미호출)
- Stress Test Q1-Q6 생략, 리스크 매트릭스 간소화
- Anti-Pattern Constraints 작성 생략 (리팩토링 작업 외)
- 단 산출물이 전수/카운트/부정 주장 포함 시 Coverage Gate(cross-validation.md §Coverage Gate) 적용 — light에서도 생략 불가 (검증 경계)
- 산출물:
{WORK_DIR}/plan/plan-light.md(간소화 형식)
조건: 메모리 40차 trigger 키워드 + 단순 수정/추가 작업에만. 새 아키텍처 결정 시 full 모드 강제.
에러 대응
| 에러 | 대응 | 폴백 |
|---|---|---|
| Serena 연결 실패 | Grep + Glob 폴백 | 수동 탐색 |
| Context7 실패 | WebSearch 폴백 | 문서 직접 검색 |
| 검증 실패 | /sc:analyze 단독 검증 | Claude 자체 판단 |
Completion → Next
Gate 2 통과 후:
/fz-code "검증된 계획대로 구현해줘"