ワンクリックで
planwithme
개발 계획 수립 및 3문서 자동 생성. 새 작업 시작 전 반드시 실행하여 PLAN.md, CONTEXT.md, CHECKLIST.md + .status 파일을 생성한다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
개발 계획 수립 및 3문서 자동 생성. 새 작업 시작 전 반드시 실행하여 PLAN.md, CONTEXT.md, CHECKLIST.md + .status 파일을 생성한다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
범용 요구사항 명확화 스킬. 모호한 요청을 Socratic Q&A로 3차원(Goal/Scope/Acceptance) 채점하며 명확성 임계값(20%)에 도달할 때까지 한 번에 한 질문씩. 단독 호출 가능하며 planwithme에서 자동 위임되기도 함.
CWM 프로젝트 초기화 위저드. 프로젝트 비전 수집 → 기술 환경 분석 → 워크플로우 설정 → 초기 개발 계획 수립 → 환경 세팅까지 5단계로 완료한다.
ralph-loop 플러그인 stop-hook 의 세션 격리 버그(같은 프로젝트의 무관한 세션이 block 되는 문제)를 로컬에서 임시 패치한다. 업스트림 수정 전까지의 방어 조치.
활성 플랜의 Phase를 build-runner 에이전트에 위임해 구현+테스트를 일괄 수행. 사용자는 Phase별 요약만 받고 메인 컨텍스트는 깨끗하게 유지. .cwm/config.yml의 build 명령 우선, 없으면 프로젝트 매니페스트 추론.
Git 커밋 및 푸쉬. 작업 완료 후 반드시 프로젝트 루트로 복귀한다.
CWM HUD(StatusLine) 설치. 플랜 상태, 컨텍스트 바, 호출 카운트 등을 상태줄에 표시한다.
| name | planwithme |
| description | 개발 계획 수립 및 3문서 자동 생성. 새 작업 시작 전 반드시 실행하여 PLAN.md, CONTEXT.md, CHECKLIST.md + .status 파일을 생성한다. |
| user-invocable | true |
모든 개발 작업은 계획 수립 → 승인 → 실행 순서를 따른다.
플랜 생성/조회 전에 반드시 프로젝트 루트를 먼저 결정한다:
.cwm/.initialized 파일을 찾는다.cwm/.initialized가 존재하는 디렉토리가 프로젝트 루트이다# 프로젝트 루트 찾기 예시
PROJECT_ROOT=$(pwd)
while [ "$PROJECT_ROOT" != "/" ]; do
[ -f "$PROJECT_ROOT/.cwm/.initialized" ] && break
PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
done
# 못 찾으면 setupwithme 필요
[ -f "$PROJECT_ROOT/.cwm/.initialized" ] || echo "ERROR: .cwm not initialized"
⛔ 절대 금지:
.cwm/docs/plans/...)만으로 파일을 생성하지 않는다.cwm/.initialized를 찾지 못하면 사용자에게 /cwm:setupwithme 실행을 안내한다⚠️ cd 주의:
cd로 하위 디렉토리에 진입한 경우, 플랜 파일 조작 전에 반드시 프로젝트 루트로 돌아오거나, 절대 경로를 사용한다.cwm/.initialized 기준으로 루트를 재확인한다1. 사용자 작업 지시
│
▼
2. 초기 모호도 채점 (Goal / Scope / Acceptance)
임계값: ambiguity ≤ 20%
│
┌──┴──┐
▼ ▼
> 20% ≤ 20%
│ │
▼ │
[interviewwithme 위임]
Skill("cwm:interviewwithme", args=<원 요청>)
→ Socratic Q&A 루프
→ .cwm/docs/briefs/{YYMMDD}{NN}-{주제}.md 생성
→ 명확화된 Goal/Scope/Acceptance 인계
│ │
└──┬──┘
▼
3. 계획 수립 (interview 결과 있으면 그것을 기반으로)
├── 요구사항 분석
├── 기존 코드 조사
└── 구현 전략 설계
│
▼
4. 4파일 생성 → .cwm/docs/plans/{YYMMDD}{NN}-{작업명}/
├── PLAN.md 계획서
├── CONTEXT.md 맥락 노트 (interview 결과 통합)
├── CHECKLIST.md 체크리스트
└── .status "pending"
│
▼
5. ⛔ 반드시 멈춤
├── 계획 요약 표시
└── 사용자 승인 대기
│
▼
6. 승인 시:
├── .status → "active"
├── CHECKLIST 승인 체크
└── /compact 안내 → 구현 시작
요청을 받으면 내부에서만 3차원(Goal/Scope/Acceptance) 채점을 수행한다. 사용자에게 숫자는 노출하지 않는다.
| 차원 | 가중치 | 판단 기준 |
|---|---|---|
| Goal | 0.40 | 목적이 한 문장으로 정의되는가, 결과물이 명확한가 |
| Scope | 0.30 | 영향 파일·모듈·외부 의존·비범위가 정의됐는가 |
| Acceptance | 0.30 | 완료 기준이 테스트/확인 가능한가 |
모호도: ambiguity = 1 - (goal × 0.40 + scope × 0.30 + acceptance × 0.30)
임계값: ambiguity > 0.20 → 인터뷰 위임
예시:
"로그인 기능 만들어줘" → Goal 0.6 / Scope 0.2 / Acceptance 0.1 → 67% → 위임
"src/auth/login.ts의 bcrypt 10→12" → 전부 0.9+ → 3% → 바로 계획 수립
모호도 > 20%인 경우, 직접 질문하지 말고 반드시 interviewwithme 스킬에 위임한다:
Skill("cwm:interviewwithme", args="<원 요청 그대로>")
interviewwithme가 Socratic Q&A 루프(최대 5라운드)를 수행하고 브리프를 .cwm/docs/briefs/{YYMMDD}{NN}-{주제}.md로 저장한 뒤, 다음 구조화 데이터를 인계한다:
| interviewwithme 산출 | → | planwithme 반영 위치 |
|---|---|---|
| Goal 한 문장 | → | PLAN.md 개요 (목적) |
| Scope (포함/제외/제약) | → | PLAN.md 범위 + CONTEXT.md 제약 |
| Acceptance 체크 목록 | → | CHECKLIST.md 품질 체크 |
| 결정 사항 표 | → | CONTEXT.md 결정 기록 |
| 인터뷰 기록 (Q&A) | → | CONTEXT.md "인터뷰 기록" 섹션 |
| 브리프 파일 경로 | → | CONTEXT.md 참조 자료 링크 |
사용자가 인터뷰 중 취소하면 interviewwithme가 "cancelled"를 반환한다. 이 경우 3문서 생성을 중단하고 사용자에게:
📋 인터뷰가 취소되었습니다. 요청을 다시 명확히 해서 알려주시면 계획을 세우겠습니다.
# [작업명] 계획서
## 개요
- 목적 (한 줄)
- 범위 (영향 파일/모듈)
- 예상 단계 수
## 현재 상태 분석
- 기존 코드 구조
- 변경 필요 부분
## 구현 계획
### Phase 1: [단계명]
- 구체적 작업 내용
- 예상 변경 파일
### Phase 2: [단계명]
...
## 기술 선택
- 라이브러리/패턴 + 선택 이유
## 리스크
- 예상 문제 + 대응 방안
# [작업명] 맥락 노트
## 결정 기록
| 결정 사항 | 선택지 | 최종 선택 | 이유 |
|-----------|--------|-----------|------|
## 참조 자료
- 관련 문서/URL
- 참고 코드 위치
## 제약 조건
- 기술적/비즈니스 제약
## 사용자 요구사항 원문
> (사용자 지시 그대로)
# [작업명] 체크리스트
## 작업 목록
- [ ] Phase 1: [단계명]
- [ ] 세부 작업 1
- [ ] 세부 작업 2
- [ ] Phase 2: [단계명]
- [ ] 세부 작업 1
## 컨텍스트 전환 체크
- [ ] 사용자 승인 완료
- [ ] /compact 안내 출력 완료
## 품질 체크
- [ ] 에러 처리 적용
- [ ] 보안 검토
- [ ] 테스트 작성/통과
플랜 상태를 나타내는 단일 키워드 파일:
pending — 생성됨, 승인 대기active — 승인됨, 진행 중complete — 작업 완료echo "pending" > {프로젝트 루트}/.cwm/docs/plans/{YYMMDD}{NN}-{작업명}/.status
{프로젝트 루트의 절대 경로}/.cwm/docs/plans/{YYMMDD}{NN}-{작업명}/
├── PLAN.md
├── CONTEXT.md
├── CHECKLIST.md
└── .status
.cwm/.initialized가 존재하는 디렉토리 (위의 "프로젝트 루트 결정" 참조)YYMMDD{NN}-작업명 (예: 26033001-user-auth, 26033002-api-refactor)
YYMMDD: 6자리 날짜 (date +%y%m%d)NN: 같은 날짜의 생성 순번, 2자리 zero-pad (01, 02, …) — 계산 규칙은 아래 참고/Users/me/my-project/.cwm/docs/plans/26033001-user-auth/PLAN.md)NN 계산폴더 생성 직전에 대상 디렉토리를 스캔해 오늘 날짜의 최대 NN + 1 을 사용한다:
DATE=$(date +%y%m%d) # 예: 260424
TARGET_DIR="$PROJECT_ROOT/.cwm/docs/plans"
LAST=$(ls "$TARGET_DIR" 2>/dev/null \
| grep -E "^${DATE}[0-9]{2}-" \
| sed -E "s/^${DATE}([0-9]{2})-.*/\1/" \
| sort -n | tail -1)
NN=$(printf "%02d" $((10#${LAST:-0} + 1)))
FOLDER="${DATE}${NN}-${KEBAB_NAME}" # 예: 26042401-user-auth
NN=0110#${LAST:-0} — 08, 09 값이 8진수로 해석되는 것을 방지YYMMDD-{이름} (순번 없음) 폴더는 정규식 불일치로 스캔에서 제외 → 공존 가능3문서 생성 후 반드시 요약을 보여주고 멈춘다:
📋 계획 수립 완료 — 검토 요청
📂 .cwm/docs/plans/{YYMMDD}{NN}-{작업명}/
├── PLAN.md ← 전체 구현 계획
├── CONTEXT.md ← 결정 근거
├── CHECKLIST.md ← 작업 체크리스트
└── .status ← pending
[계획 요약]
Phase 1: {단계1}
Phase 2: {단계2}
...
⏸️ 검토 후 승인해주세요. 승인 전까지 코드를 작성하지 않습니다.
⛔ 절대 금지: 이 메시지 출력 후 같은 턴에서:
사용자가 "확인", "승인", "진행", "좋아", "ㅇㅇ", "ㄱㄱ", "ok", "go" 등 동의하면:
echo "active" > {프로젝트 루트}/.cwm/docs/plans/{YYMMDD}{NN}-{작업명}/.status
CHECKLIST.md의 "사용자 승인 완료" 체크:
- [x] 사용자 승인 완료
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 계획이 승인되었습니다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📂 .cwm/docs/plans/{YYMMDD}{NN}-{작업명}/.status → active
컨텍스트를 정리하면 더 원활합니다.
👉 /compact 후 "계속" 이라고 입력하세요.
(바로 진행하려면 "계속 진행" 이라고 입력하세요)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
CHECKLIST.md 체크:
- [x] /compact 안내 출력 완료
⛔ 이 메시지 출력 후 이 턴에서 어떤 도구도 호출하지 않는다.
사용자가 돌아오면 (반드시 이 순서를 따른다):
.cwm/.initialized 파일을 찾아 절대 경로 확인{프로젝트 루트}/.cwm/docs/plans/ 아래에서 .status가 active인 플랜 폴더를 찾는다/cwm:dev-manual로 관련 챕터 참조모든 Phase 완료 시:
echo "complete" > {프로젝트 루트}/.cwm/docs/plans/{YYMMDD}{NN}-{작업명}/.status
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ {작업명} 완료
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
.cwm/docs/plans/{YYMMDD}{NN}-{작업명}/.status → complete