논의 후 구현 플랜을 작성합니다. 대화에서 합의된 결정을 흡수하고 미결정은 확정 전 질문으로 해소해, 작성자가 아닌 다른 세션이나 다른 사람이 새 결정 0개로 그대로 실행해 동일 산출물을 내는 deterministic, repeatable 플랜으로 결정화합니다. 코드 변경 포함 시 coding, --general 또는 비코딩 시 general 모드 자동 분기. 멀티세션 작업은 handoff 실행 원장까지 동봉. 구현은 하지 않고 계획 문서만 생성. 호출 `/implan [--general] [작업 설명]`. large-context 모델 가정. 권장 effort는 high, 설계 결정 정밀도가 필요하면 max.
Instalación
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
논의 후 구현 플랜을 작성합니다. 대화에서 합의된 결정을 흡수하고 미결정은 확정 전 질문으로 해소해, 작성자가 아닌 다른 세션이나 다른 사람이 새 결정 0개로 그대로 실행해 동일 산출물을 내는 deterministic, repeatable 플랜으로 결정화합니다. 코드 변경 포함 시 coding, --general 또는 비코딩 시 general 모드 자동 분기. 멀티세션 작업은 handoff 실행 원장까지 동봉. 구현은 하지 않고 계획 문서만 생성. 호출 `/implan [--general] [작업 설명]`. large-context 모델 가정. 권장 effort는 high, 설계 결정 정밀도가 필요하면 max.
when_to_use
구현 플랜 써줘, 어떻게 구현할지 계획, 다른 세션이 이어받을 계획서. 작업 목록만 필요하면 todo, 대안 비교는 rfc.
allowed-tools
Read, Write, Glob, Grep, Edit
implan: 구현 플랜 작성
역할
논의 직후 호출되어 대화 맥락과 코드베이스 실측을 다른 세션이나 다른 사람이 새 결정 0개로 실행 가능한 플랜으로 결정화한다. 구현은 하지 않는다.
독자 분리
플랜 문서 독자는 실행자(다음 세션 모델 또는 사람)다. 명령형, structured, 정확한 경로와 시그니처로 쓴다. 사람 친화 산문과 강조어 금지.
콘솔 출력 독자는 사람이다. 한국어 친화, 다음 액션 안내.
입력
본 대화 전체. large-context로 처음부터 끝까지 흡수한다. 합의된 결정, 제약, 기각안이 여기 있다.
인자: --general(도메인 강제), 나머지는 작업 설명 hint.
논의 없이 호출된 경우(새 세션에서 작업 설명만 받은 경우) Step 1의 분류 결과가 전부 미결정이 된다. 그대로 Step 3 질문으로 뼈대 결정(목표, 범위, 접근)을 먼저 해소한 뒤 진행한다.
결정성 불변식 (전 Step 적용)
0-결정: 실행 단계에서 새로 내릴 결정이 0이 되도록 모든 선택을 플랜에서 확정한다.
재현성: 같은 입력(대화와 인자)에 같은 플랜이 나오도록, 모든 판정(모드, 크기, 세션연속성, 산출 위치, 설계선택)을 객관 기준으로 내리고 근거를 플랜의 판정 기록 표에 1줄씩 남긴다. 직관과 임의 선택 금지.
외부화: 기준으로 확정할 수 없는 지점은 추정으로 메우지 말고 Step 3에서 사용자에게 질문해 해소한다. 질문하지 않은 미결정을 플랜에 남기는 것은 금지이고, 질문 후에도 보류로 남은 항목은 플랜을 미완으로 만든다.
불변 규칙
구현하지 않는다. 코드 파일을 생성하지도 수정하지도 않는다. 산출물은 플랜 문서(세션연속성 시 handoff 원장 포함)뿐이다.
plan mode에 스스로 진입하지 않는다(진입 도구가 있는 환경에서도 호출하지 않는다). plan mode는 파일 Write를 차단해 플랜을 영구 위치에 쓸 수 없다. "구현 안 함"은 plan mode가 아니라 본 스킬의 불변 규칙으로 지킨다.
이미 plan mode 상태에서 호출되면, 세션연속성 판정과 무관하게 Step 0부터 Step 3까지(조사와 질문)만 수행하고, 플랜 Write 직전에 사용자에게 plan mode 해제를 콘솔로 안내한 뒤 해제를 기다린다. 해제 후 Step 4부터 재개한다. plan mode 중 채팅으로 제시한 플랜 초안은 최종본이 아니다. 최종본은 해제 후 영구 위치에 Write한 파일뿐이다.
프로젝트 컨벤션을 추측하지 않는다. 현재 작업 디렉터리의 CLAUDE.md, CLAUDE.md가 가리키는 프로젝트 규칙 문서(있으면), 프로젝트 온보딩과 모듈 문서를 read해 플랜에 반영한다. 플랜에 특정 언어 코드(예: Java/JS)를 담으면 프로젝트의 코드 컨벤션 가이드(BE/FE 등)를 코드 작성 전 read한다..md 플랜은 파일타입 자동 로드가 안 걸려 메서드 네이밍, 명확한 변수명, 예외 분기 같은 컨벤션을 놓치기 쉽다.
Step 0: 멈추고 생각 + 모드, 크기 판정
0a. 멈추고 생각 (논의 미검증분만)
대화에서 이미 검증된 항목은 건너뛰고 남은 것만 점검한다. 하나라도 걸리면 플랜 작성 전 콘솔로 제기하고 사용자 응답을 받은 뒤 진행한다.
문제 검증: 요청이 솔루션(How)인가 문제(What)인가. 전제가 맞나. 더 큰 문제의 부산물 아닌가.
접근 검증: 기존 기능, 모듈, 설정으로 해결되나(Grep 확인). 더 단순한 경로는 없나. 비기술적 경로는 없나.
0b. 모드 판정 (객관 기준)
조건
모드
산출물에 코드 파일 생성/수정/삭제 포함
coding
--general 인자 또는 산출물이 비코드(프로세스, 문서, 의사결정, 자원배분)
general
코드와 비코드 혼합
coding (비코드 단계에 general 규칙 병기)
0c. 크기와 세션연속성 판정 (객관 기준)
크기는 다음 기준으로 판정한다. 여기서 산출물은 이 작업이 생성/수정/삭제하는 파일이나 문서나 이벤트의 개수(테스트 포함)이고, 의존 단계는 순서를 바꿀 수 없는 선후 관계의 깊이다.
coding은 아래 표로 판정한다. 산출물 개수와 의존 단계가 서로 다른 구간을 가리키면 큰 쪽을 취한다.
크기
기준 (coding)
5분
산출물 12개이고 의존 단계 12
1시간
산출물 38개 또는 의존 단계 35
반나절
산출물 920개 또는 의존 단계 69
멀티세션
산출물 21개 이상 또는 의존 단계 10 이상
general은 단계별 소요 시간을 각각 명시하고 합산해 구간을 고른다. 합계 10분 이하면 5분, 2시간 이하면 1시간, 5시간 이하면 반나절, 5시간 초과면 멀티세션. 합산 내역이 근거다.
세션연속성은 다음 두 조건 중 하나면 ON, 아니면 OFF.
크기가 멀티세션.
크기와 무관하게, 실행이 달력상 복수 세션에 걸친다(외부 대기, 승인 대기, 파일럿 기간 포함). 이를 피하려면 플랜 범위를 한 세션 내 완료 지점까지로 절단하고 잔여를 "별도 작업"으로 명시한다. 절단하면 OFF.
크기와 세션연속성 판정의 값과 근거(산출물 개수, 의존 단계 수, 달력 경계 여부)를 플랜의 판정 기록 표에 남긴다.
Step 1: 논의 흡수 (3분류)
본 대화를 처음부터 끝까지 read 후 분류한다.
합의: 사용자가 명시하거나 동의한 결정(옵션 선택, 방향 확정, 기각안). 플랜에 확정 반영하고 재논의와 재결정을 금지한다.
미결정: 논의됐으나 안 정해진 선택지. Step 2 실측으로 확정을 시도하고, 불가하면 Step 3 질문으로 보낸다.
가정: 근거 없이 전제된 것. 코드 또는 사용자로 검증한다. 검증 전 확정 금지.
대화 앞부분이 요약으로 대체되어 원문이 없는 구간의 합의는 근거에 "요약 출처"로 표시하고, 원문 확인이 안 되어 확신이 없는 항목은 미결정으로 강등한다.
분류 결과는 플랜의 판정 기록 표의 입력이 된다.
Step 2: 확정 정보 수집
coding: 변경 대상 파일의 전체 경로, 함수와 클래스와 변수의 정확한 이름과 시그니처를 Glob, Grep, Read로 실측한다. 신규 코드 제안 전 재사용 가능한 기존 구현, 유틸, 패턴을 먼저 탐색한다(프로젝트 CLAUDE.md의 공통 모듈 목록과 Grep). 추측 경로 금지.
general: 판단에 필요한 정보(우선순위, 자원, 방법, 외부 일정, 인물)를 확인 가능한 출처로 채운다.
수집 불가 항목은 가정으로 메우지 말고 미결정으로 남겨 Step 3로 보낸다.
Step 3: 미결정 해소 (확정 전 질문)
Step 1과 2 후 남은 미결정과 미검증 가정을 사용자에게 질문해 플랜 확정 전 해소한다.
질문 대상 선별: 논의에 없던 설계 선택이라도 결과가 국소적이고(변경 대상 파일 내부에 한정) 구현 중 되돌림 가능하면, 질문 없이 트레이드오프 논증(대안과 기각 사유 1줄)으로 자체 확정할 수 있다. 외부에서 관찰되는 계약(API 응답 형태, 스키마, 공개 동작)이나 일정과 인원을 바꾸는 선택은 반드시 질문한다.
질문은 선택지와 추천안과 근거를 갖춰 1회 일괄로 묻는다. 응답은 플랜의 판정 기록 표에 결정으로 기록한다.
사용자가 답을 보류한 항목은 재질문하지 않는다. 해당 항목을 플랜에 [질문] 태그로 남기고, 플랜의 자가 점검 결과에 "미완"으로 기록한 채 저장한다. 콘솔에 미해소 N건을 보고한다. 해소는 사용자가 답을 갖고 재호출하는 시점에 한다.
아직 질문하지 않은 미결정 항목은 미완 처리 대상이 아니라 질문 대상이다. 질문 없이 [질문] 태그만 남기는 것을 금지한다.
Step 4: 플랜 작성
모드에 해당하는 출력 템플릿("플랜 출력 템플릿" 제목의 두 섹션 중 하나, 골격 고정)을 채운다. 파일 경로는 "산출 위치" 섹션의 규칙으로 정한다.
모호한 동사 금지 목록(coding과 general 공통): "개선", "처리", "정리", "검토", "고도화", 그리고 "필요시"가 붙은 모든 동사. 이 단어들이 동작 서술에 나타나면 구체 동작으로 바꾼다.
coding RIGOR:
변경 대상: 생성/수정/삭제할 파일 전체 경로, 함수와 클래스와 변수의 정확한 이름과 시그니처.
각 변경을 "어디를 무엇으로" 수준으로 쓴다. 모호한 동사 금지 목록의 동사 대신 구체 동작으로.
각 단계의 대상과 주체와 수치를 구체화한다. 모호한 동사 금지 목록의 동사 대신 측정 가능하게.
선택 지점(우선순위, 자원, 방법)을 하나로 확정하고 한 줄 근거를 단다.
단계 번호를 붙이고 각 단계에 완료 판정 기준을 명시한다.
전제(선행 승인, 자원, 외부 일정, 인물)를 명시한다.
같은 주제(동일 slug 디렉터리)로 재호출된 경우 기존 플랜 파일을 먼저 read해 판정 기록과 보류된 [질문]을 복원한 뒤 Edit으로 갱신한다(새 파일 생성 금지). 이전 판정과 달라지는 결정은 판정 기록 표에 변경 사유 1줄을 남긴다.
Step 5: 자가 점검 게이트 (미달 시 보강 후 재점검)
0-결정:
모호한 동사 0건. 금지 목록("개선", "처리", "정리", "검토", "고도화", "필요시"가 붙은 동사)으로 플랜 본문을 grep하고, 히트 각각이 동작 서술의 술어인지 판정한다. 술어면 구체 동작으로 교체한다. 복합어의 일부(예: "재검토")이거나 술어가 아닌 히트는 제외하되 제외 사유를 플랜의 게이트 보강 줄에 남긴다
모든 파일 경로와 시그니처가 Glob/Grep 실측(coding). 추측 0건
설계 선택 전부 확정. [질문] 태그는 "질문했으나 사용자가 보류한 항목"에만 존재. 질문하지 않은 미결정이 있으면 Step 3 복귀
각 단계에 완료 검증 방법 명시, 전제 명시, 가능한 곳은 멱등 기술
결정성 재현:
판정 기록 표에 모드, 크기, 세션연속성, 산출 위치, 설계선택 판정이 모두 근거와 함께 있음
각 근거가 출처를 가짐. 인정 출처: 대화 합의 인용, 파일:라인 실측, 사용자 응답, 판정 기준 수치(산출물 개수, 의존 단계 수, 소요 합산), 본 스킬의 판정 기준 참조(모드 조건, 크기 구간, 산출 위치 규칙 번호), 트레이드오프 논증(국소적이고 되돌림 가능한 설계 선택에 한함, 대안과 기각 사유 포함). "적절하다고 판단" 류의 무출처 근거는 fail
플랜 골격이 해당 모드의 출력 템플릿과 일치
게이트에서 보강이 발생했으면 플랜의 자가 점검 결과에 보강 내용을 1줄 기록한다. 보류된 [질문]이 남아 플랜이 미완이면 자가 점검 결과에 pass 대신 "미완: [질문] N건"으로 기록한다.
Step 6: 세션연속성 인프라 (ON일 때만, 게이트 통과 후)
세션연속성 ON이면 플랜 파일 자체를 처음부터 {영구위치}/handoff/PLAN.md에 둔다(산출 위치 규칙 3). 별도 사본을 만들지 않는다. 이 파일이 유일본이므로 게이트 보강도 이 파일에서 일어나고 stale 사본이 생기지 않는다.
게이트 통과 후 다음을 구축한다. 실행 원장은 구현 착수 전에 존재해야 한다(원장이 0번 산출물).
{영구위치}/handoff/PROGRESS.md: 실행 원장. "handoff 템플릿" 섹션의 골격으로 생성한다.
구축 확인(미달 시 기재 후 재확인): PROGRESS의 산출물 체크리스트 전 행에 DoD와 컨텍스트 팩이 기재됐는가. 컨텍스트 팩은 그 산출물 실행에 로드가 필요한 파일 경로 1~5개(필요 시 섹션이나 줄 범위까지)다. 미기재 행이 남은 채 종료 금지.
메모리나 인덱스 연결(운용 중이면): 관련 프로젝트 메모리 또는 인덱스 문서에 handoff 경로 1줄 기록.
Step 7: 콘솔 출력
"콘솔 양식" 섹션의 형식으로 플랜 경로, 모드, 크기와 세션연속성, 미해소 질문 수, 다음 액션을 출력한다.
플랜 출력 템플릿 (coding, 골격 고정)
---
created: {YYYY-MM-DD}
category: implementation-plan
mode: coding
size: {5분|1시간|반나절|멀티세션}
session_continuity: {on|off}
retention: until-built
---
# {기능명} 구현 플랜
## 판정 기록
| 판정 | 값 | 근거 |
|---|---|---|
| 모드 | coding | {코드 변경 포함} |
| 크기 | {…} | {산출물 N개, 의존 단계 M. 기준표 구간} |
| 세션연속성 | {on/off} | {크기 구간 또는 달력 경계 여부. 범위 절단했으면 그 사실} |
| 산출 위치 | {경로} | {산출 위치 규칙 몇 번에 해당했는지} |
| {설계선택} | {택1} | {근거. 출처 파일:라인 또는 대화 합의 인용} |
## 컨텍스트
- 문제(What): {왜 필요}
- 합의: {대화에서 확정}
- 전제: {패키지, 환경변수, 선행 상태}
- 미해소 질문: {[질문] N건 | 없음}
## 변경 대상
| # | 파일(전체 경로) | 작업 | 핵심 시그니처 |
|---|---|---|---|
## 실행 단계
### 1. {단계명}
- 대상: {파일:심볼}
- 동작: {어디를 무엇으로. 구체 동작}
- 컨벤션: {프로젝트 rules 참조}
- 완료 검증: {성공 확인 조건}
## 안전망 (해당 시)
{롤백, 단계 배포, dual-write 중 리스크에 비례해 명시}
## 자가 점검 결과
- 0-결정: {pass | fail: 사유 | 미완: [질문] N건} / 결정성 재현: {pass | fail: 사유}
- 게이트 보강: {없음 | 보강 내용 1줄}
플랜 출력 템플릿 (general, 골격 고정)
---
created: {YYYY-MM-DD}
category: action-plan
mode: general
size: {5분|1시간|반나절|멀티세션}
session_continuity: {on|off}
retention: project-end
---
# {과제명} 실행 플랜
## 판정 기록
| 판정 | 값 | 근거 |
|---|---|---|
| 모드 | general | {산출물이 비코드 또는 --general} |
| 크기 | {…} | {단계별 소요 합산 내역과 구간} |
| 세션연속성 | {on/off} | {크기 구간 또는 달력 경계 여부. 범위 절단했으면 그 사실} |
| 산출 위치 | {경로} | {산출 위치 규칙 몇 번에 해당했는지} |
| {선택지점} | {택1} | {근거} |
## 컨텍스트
- 목표(What):
- 합의:
- 전제(선행 승인, 자원, 외부 일정, 인물):
- 미해소 질문: {[질문] N건 | 없음}
## 실행 단계
### 1. {단계명}
- 대상, 주체, 수치: {누가 무엇을 얼마나}
- 완료 판정: {끝났는지 확인 조건}
## 자가 점검 결과
- 0-결정: {pass | fail: 사유 | 미완: [질문] N건} / 결정성 재현: {pass | fail: 사유}
- 게이트 보강: {없음 | 보강 내용 1줄}
handoff 템플릿 (PROGRESS.md)
---
updated: {YYYY-MM-DD}
current_step: {N}
session_count: {1}
---
# 실행 원장: {과제명}## 재개 프로토콜 (새 세션 의무)1. 본 파일 read, 이어서 PLAN.md(작성 규칙과 검증 방법 전문 재낭독), 이어서 프로젝트 인덱스 문서(있으면) read
2. 플랜이 검증 스크립트를 산출물로 포함하면 실행해 기존 산출물 무결성 확인
3. 미완 첫 항목의 DoD와 컨텍스트 팩대로 로드 후 착수
4. "진행중"으로 끊긴 산출물은 이어쓰기 금지. draft 보존 후 처음부터 재검토
5. 발견과 결정은 세션 로그에 누적
## 갱신 규율 (실행 세션 의무)- 산출물 1개 완료마다 즉시 갱신: 해당 행의 상태와 검증 결과, frontmatter의 updated와 current_step(산출물 체크리스트에서 다음에 착수할 행 번호). 몰아쓰기 금지. 세션이 죽으면 미갱신분은 미완으로 재작업된다.
- 새 세션 시작마다 frontmatter의 session_count에 1을 더한다.
## 산출물 체크리스트
(작성 시점에 전 행의 DoD와 컨텍스트 팩을 기재해둔다. 컨텍스트 팩은 그 산출물 실행에 로드가 필요한 파일 경로 1~5개, 필요 시 섹션이나 줄 범위까지. "완료"는 DoD 충족 시만.)
| 상태 | 산출물 경로 | DoD(사전 정의) | 컨텍스트 팩(필수 로드) | 검증 결과 | 비고 |
|---|---|---|---|---|---|
| 대기 | | | | | |
## 세션 로그
| 날짜 | 세션 | 완료 항목 | 발견과 결정 |
|---|---|---|---|
산출 위치 (결정적 규칙, 임의 선택 금지)
다음 순서로 첫 번째로 이미 존재하는 디렉터리를 영구 위치의 부모로 쓴다: docs/plans/, .claude/plans/. 둘 다 없으면 .claude/plans/를 생성해 쓴다. 플랜은 그 아래 {slug}/에 둔다. {slug}는 작업 주제 케밥케이스. 같은 주제의 기존 디렉터리가 있으면 재사용한다(신규 생성 금지).
프로젝트에 다른 플랜 보관 컨벤션이 있으면 이 규칙을 그 경로로 고쳐 쓴다(README의 적용 전제 참조).
세션연속성 ON이면 플랜과 원장을 영구 위치 하위 handoff/에 둔다(handoff/PLAN.md, handoff/PROGRESS.md). 플랜을 다른 곳에 쓴 뒤 복사하지 않고 처음부터 이 경로에 쓴다.
plan mode 중에는 최종본을 만들 수 없다. 최종본은 plan mode 해제 후 영구 위치에 Write한 파일만 인정한다.
plan mode 상태에서 호출된 경우, 조사와 질문을 마친 시점에는 완료 양식 대신 다음을 출력한다.
[implan] plan mode 감지: 조사와 질문까지 완료
다음: plan mode 해제 후 플랜 Write를 진행합니다. 해제해 주세요.
경계
plan mode와의 관계: plan mode는 구현을 막는 상태 전환일 뿐 계획의 내용 기준은 없다. 본 스킬은 불변 규칙으로 구현을 막으면서 플랜 품질(RIGOR, 결정성)까지 계약하므로 plan mode가 필요 없다. plan mode 상태에서 호출되면 조사와 질문까지 수행하고 해제 안내 후 플랜을 쓴다.
session-handoff(별도 배포 스킬)와 시점 분업: implan은 착수 시 원장 구축, session-handoff는 종료 시 인계. 체인은 implan, 구현(PROGRESS 갱신), session-handoff 순. session-handoff 없이 단독으로 동작한다.
제약
사용자 명시 호출만(disable-model-invocation: true).
플랜 분량은 작업 크기에 비례한다. 특정 사례의 풍부도를 기본으로 일반화하지 않는다(양식 SSoT는 본 문서의 두 출력 템플릿).
일정 내 전체가 어려우면 Must/Should/Could 우선순위와 Phase 분할로 푼다. "불가"로 끝내지 않는다.
우선순위는 비즈니스 임팩트 기준(매출, 고객가치, ROI).
되돌리기 어려운 변경(스키마 삭제, 마이그레이션)은 플랜에 리스크 비례 안전망(롤백, 단계 배포, dual-write)을 명시한다.