From pjc Harness
This skill should be used when executing tasks from an approved plan.md. Triggers on phrases like "구현", "implement", "T<N> 진행", "이대로 진행", "go", "진행해". Runs FULLY AUTONOMOUS loop — processes ALL tasks (T1...Tn) without asking the user between tasks. Resuming mid-plan ("T6부터 계속") means T6 through the LAST task plus Phase F/G — not just T6. Only stops when all tasks complete or a Halt Condition fires. Never asks "Should I proceed to the next task?" between tasks. For trivial single-line edits without a plan, do NOT use this skill — Claude applies the change directly and lets hooks validate.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pjc:implement-task <시작 task ID (거기부터 끝까지 자율 진행) | 생략 시 첫 미완료부터><시작 task ID (거기부터 끝까지 자율 진행) | 생략 시 첫 미완료부터>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
승인된 plan.md의 작업을 PIV 루프(Plan-Implement-Validate)로 자율 실행한다.
승인된 plan.md의 작업을 PIV 루프(Plan-Implement-Validate)로 자율 실행한다. 각 task는 Type에 따라 적절한 단계 통과 후에만 완료된다.
이 skill 안에서는 사용자에게 묻지 않는다. plan-feature에서 모든 결정이 사전 해결되었음을 전제로 진행.
멈춤은 Halt Condition에서만 발생. 사소한 결정은 plan.md follow-up으로 기록 후 계속.
plan-feature | implement-task (이 skill)
USER-INTERACTIVE | FULLY AUTONOMOUS
|
질문 OK (Open Questions에 모음) | 질문 금지 (Halt만 가능)
사용자 승인 1회 (게이트) | plan = 전체 위임장
|
↑ 모든 질문 해결 후 ─── 이 시점부터 자율 ───
Done = Proof. 빌드 통과, 테스트 통과, 또는 재현 가능한 출력 없이는 완료 선언 금지.
검증된 코드만 사용 (환각·예측 금지).
연관 파일 함께 수정 (Cross-File Consistency).
DDD 준수 + YAGNI.
위생. 불필요한 주석·죽은 코드·미사용 import·placeholder 문서 금지.
주석은 한글. "무엇"이 아닌 "왜". 코드로 의도가 드러나면 생략.
파일·인코딩. 1500라인 내외, UTF-8 (BOM 없음). 초과 시 기능 단위 분리 작업 plan에 등록.
언어 스타일. 최신 LTS 권장 + 공식 문서 기준. AGENTS.md가 다른 버전 고정이면 우선.
상세 안티패턴 표는
references/antipatterns.md참조.
모든 task가 완료되거나 Halt Condition이 발동할 때까지 멈추지 않는다.
사용자 승인은 plan-feature 단계에서 plan.md에 대해 단 1회만 받았다. plan.md = 전체 작업의 위임장.
자율 루프가 길어지면 컨텍스트가 누적되어 후반 task의 품질이 저하될 수 있다. 다음을 지킨다:
각 task는 독립적으로 처리.
빌드/테스트 로그는 핵심만 유지.
2개 task마다 Progress Log 갱신.
## Progress Log에 완료 task 요약 1-2줄 기록.컨텍스트 한계 근접 시 멈추지 않는다 — 압축을 통과해 계속 진행한다.
loop over plan.md tasks (시작 task부터 Tn까지 — 첫 실행은 T1, 재개면 지정/첫 미완료 task):
Phase P → 변경 전략 확정, caller 사전 추적
Phase I → 최소 변경으로 구현
Phase V → Type별 fast-path (V-1~V-8)
Phase D → checkpoint commit → (2 task마다 Progress Log) → 즉시 다음 task로
# 모든 task 완료 후
Phase F → 전체 plan 통합 검증 (조건부 진입)
Phase G → PRD 요구 재검증 (docs/prd.md 있을 때만 — 갭 발견 시 task 추가 후 자율 재진입, 최대 2회)
→ 최종 보고 (첫 사용자 개입 지점)
각 task에 대해 Phase I 진입 전 다음 확인.
"T부터 계속" 같은 요청으로 시작하는 경우:
## Progress Log를 읽어 완료 task 파악git log로 마지막 commit 상태 확인재개도 완전 자율 루프다. "T6부터 계속"은 "T6 하나만"이 아니라 "T6부터 마지막 task까지 + Phase F/G까지"를 의미한다. 첫 세션의 T1 시작과 재개 세션의 T6 시작은 시작점만 다를 뿐 동일한 루프이며, 금지 표현 규칙("T7 진행할까요?" 금지)도 동일하게 적용된다. task 사이에 멈춰 사용자에게 묻는 것은 재개 세션에서도 위반이다. 단일 task만 실행하는 경우는 사용자가 "T6만" 처럼 명시적으로 한정했을 때뿐이다.
grep -rn "\b<symbol>\b" 실행.git status # clean 확인
git checkout -b task/<id>-<slug> # 작업 브랜치 (이미 있으면 스킵)
git commit --allow-empty -m "checkpoint: T<N> start"
| Task 산출물 | 호출 sub-skill | 조건 |
|---|---|---|
| WinUI 3/WPF/MAUI ViewModel + View | pjc:add-viewmodel | AGENTS.md에 WinUI/CommunityToolkit.Mvvm 명시 시 |
| Domain Service / Application Service | pjc:add-domain-service | AGENTS.md에 DDD/Clean 아키텍처 명시 시 |
| 그 외 | (sub-skill 없음, 직접 구현) |
Android의 Jetpack ViewModel은 add-viewmodel 비대상 — 직접 구현 또는 별도 skill 필요.
순서대로 실행. 실패 시 Phase I로 1회 복귀 후 재시도.
| Type | 실행 단계 | 생략 단계 |
|---|---|---|
| A (Doc/Config) | V-8만 (코드 빌드에 영향 주는 설정이면 V-1 추가) | V-1(대개)~V-7 |
| B (Trivial Code) | V-1 + V-2 + V-5(prefilter Haiku) + V-8 (prefilter PASS 시 V-7은 grep 1회로 축소) | V-3, V-6, (V-7 축소) |
| C (Normal Code) | V-1 + V-2 + V-3 + V-5(compliance Sonnet) + V-7 + V-8 | V-6 (선택) |
| D (Complex/Cross-cutting) | V-1 ~ V-8 전체 (V-5는 compliance Sonnet) | 생략 없음 |
Task Type 미명시 → D로 간주 (안전 우선). V-4(PostToolUse hook)는 자동 실행 — 모든 Type에서 작동 (UTF-8 + impact-warn).
.gitignore 등 빌드에 영향 없는 파일 → V-1도 skip, V-8만..csproj/build.gradle/package.json 등 빌드 구성에 영향 주는 설정 → V-1 빌드 실행.*.csproj/*.sln → dotnet buildbuild.gradle* → ./gradlew assembleDebugpackage.json → npm run build (script 있을 때) 또는 skippyproject.toml → python -m buildgo.mod → go build ./...Cargo.toml → cargo buildpjc:bootstrap-agents-md로 AGENTS.md 생성 제안)*.csproj → dotnet testbuild.gradle* → ./gradlew testpackage.json (test script 있음) → npm testpyproject.toml → pytestgo.mod → go test ./...Cargo.toml → cargo testcheck-utf8-and-lines, impact-warn).Task Type에 따라 다른 흐름:
Type B: spec-prefilter (Haiku) 먼저 호출.
Type C/D 또는 B에서 ESCALATE: spec-compliance-reviewer (Sonnet) 호출.
code-quality-reviewer subagent 호출. 자체 검토 금지.변경된 모든 public/internal 심볼에 대해:
grep -rn "\b<symbol>\b" 실행.빌드가 통과해도 잡는 cross-file 마지막 관문.
Type B + prefilter PASS 시 축소: 변경 심볼이 trivial하므로 변경한 심볼에 대한 grep 1회만 수행 (전체 심볼 재추적 생략). impact-warn hook(V-4)이 이미 자동 검출했으므로 중복을 줄인다.
Phase D 진입 직전 자기 정직성 검증. 모두 "예"여야 진행 가능:
하나라도 "아니오" → Phase I 복귀.
자기기만 패턴: "아마 동작할 것이다", "테스트는 안 돌렸지만 빌드 통과했으니 OK", "비슷한 코드를 본 적 있어서 맞을 것" → Phase I 즉시 복귀.
references/recovery.md 참조.git add -A
git commit -m "T<N>: <한 줄 요약>
<변경 요약>
Type: <A/B/C/D>
Build: <명령> → OK
Tests: <X/Y passed>
Review: spec OK (prefilter: <PASS/ESCALATE→OK>), quality <OK/SKIPPED>
Caller-recheck: <확인한 심볼 수>개 심볼, 누락 0
Self-honesty: PASS
Elapsed: <Hm Ms> | Turn ~<N>
"
진행 보고 (각 task 1줄, 사용자 확인 요청 금지):
✅ T<N> 완료 (<N>/<TOTAL>) → T<N+1> 시작
Type: <A/B/C/D> | Tests: <X/Y> | Phase V: <적용 단계 요약>
Elapsed (cumulative): <Hm Ms> | Turn ~<N>
이 보고는 알림이지 확인 요청이 아니다. 사용자 응답을 기다리지 말고 즉시 T<N+1>의 Phase P를 시작한다.
장시간 작업의 컨텍스트 누적 대비. plan.md의 ## Progress Log에 기록:
## Progress Log
- T1-T2 완료 (커밋 abc123, def456): SettingsViewModel + Page 바인딩 추가. 빌드/테스트 OK.
- T3-T4 완료 (커밋 ghi789, jkl012): ThemeService 추가 + App.xaml 적용. 회귀 없음.
이후 task는 전체 대화 history 대신 이 Progress Log + git log를 참조한다. 이렇게 하면 컨텍스트가 압축(auto-compact)되어도 plan.md에 진행 상황이 남아 복구가 쉽다.
컨텍스트 과밀 시 압축 대비 체크포인트(절대 규칙 4), Halt 보고, 그리고 Phase F 통과 최종 보고 시 plan.md의 ## Next Steps에 다음을 기록:
## Next Steps
- 권장 다음 액션: <명확한 한 줄> (예: T7부터 implement-task 재개 / PR 생성 후 /code-review 호출)
- Suggested skills: <쉼표 구분> (예: pjc:implement-task, 공식 /code-review, 공식 /security-review)
목적: ① 압축 직후의 Claude 자신이 plan.md만 읽고 정확히 재개할 수 있게 함 (압축 생존의 핵심), ② Halt·완료 시 종철님이 plan.md만 보고도 무엇을 호출할지 즉시 알 수 있게 함. handoff 패턴 차용.
→ 대신 "✅ T1 완료 (1/10) → T2 시작" 후 즉시 T2 진행.
전체 plan 통합 검증. 상세 절차는 references/phase-f-detail.md 참조.
| Plan 구성 | Phase F |
|---|---|
| 1 task + Type A만 | 생략 |
| 1 task + Type B | F-1, F-2, F-6만 |
| 2+ tasks 또는 Type C/D 포함 | 전체 (F-1~F-7) |
F-7은 plan-completion-reviewer subagent (Opus) 호출 — plan 전체 적대적 검토.
진입 조건: plan.md 상단의 **PRD**: <경로> 줄이 있으면 그 경로의 PRD로 진입. 줄이 없어도 docs/prd.md 또는 docs/prds/에 이 작업의 PRD가 존재하면 진입. 둘 다 없으면 이 Phase는 존재하지 않는다 (Phase F가 최종).
Phase F는 "plan.md에 적힌 것"을 검증한다. Phase G는 한 단계 위 — "plan.md가 PRD 요구를 빠뜨리지 않았는가" 를 검증한다.
PRD의 각 FR/NFR에 대해:
HUMAN-VERIFY로 표기하고, 가능한 간접 근거(관련 단위 테스트 통과, 바인딩 코드 존재 지목)만 기록한다. GUI 동작을 실행해 보지 않고 "표시 확인됨"이라 쓰는 것은 환각이다.| PRD ID | 우선순위 | 충족 | 근거 |
|--------|---------|------|------|
| FR-1 | Must | ✅ | T2 (commit abc123), MemoServiceTests 5/5 통과 |
| FR-2 | Must | ⏳ HUMAN-VERIFY | 자동저장 단위테스트 통과, 단 실제 UI 체감은 사용자 확인 필요 |
| FR-3 | Should | ❌ | 매칭 task 없음 — plan에서 누락 |
HUMAN-VERIFY 항목은 미충족(❌)이 아니다 — 기계로 가능한 검증은 모두 통과했고 사람 확인만 남은 상태. 최종 보고의 "사용자 확인 필요" 목록으로 모아 제시한다.HUMAN-VERIFY를 ✅로 둔갑시키는 것은 V-8 자기기만 패턴과 동일한 위반이다.미충족 항목 발견 시:
| 우선순위 | 처리 |
|---|---|
| Must 미충족 | plan.md에 새 task 추가 (T<N+1> (FR-x 충족)) → Phase P부터 자율 재진입 (사용자 확인 불필요 — PRD가 이미 승인된 요구이므로) |
| Should 미충족 | 사용자에게 보고: "지금 진행 A / follow-up B" 선택 |
| Could 미충족 | follow-up 등록만, 재루프 없음 |
| 요구 자체가 바뀌어야 함 (FR이 현실과 안 맞거나 변경 필요) | plan/코드를 임의로 바꾸지 않는다. 사용자에게 PRD 변경 제안 → 승인 → PRD 갱신 → plan 조정 순서. PRD를 두고 구현만 어긋나게 바꾸는 것은 금지 |
새 task도 동일한 P→I→V→D 루프 + 해당 task 완료 후 G-1 재대조.
## ⚠️ Phase G 재루프 한도 도달 (2회)
**충족**: <FR-1 ✅, FR-2 ✅, ...>
**미충족 (Must)**: <FR-x — 한 줄 설명>
**시도 이력** (같은 실패 반복 방지용 — plan.md에도 기록)
- 1차: <접근> → <실패 양상>
- 2차: <다른 접근> → <실패 양상>
**원인 분석**: <왜 안 됐는지 — 추정이면 추정이라고 명시>
선택해 주세요:
A) 다른 접근으로 1회 더 시도 (제안: <구체적 새 접근>)
B) <FR-x>를 follow-up으로 미루고 현재 상태로 완료 처리
C) <FR-x> 요구 자체를 조정 (예: <현실적 대안>)
D) 직접 지침 제공
Phase G 통과 시 최종 보고에 G-1 표 전체 + Must 충족률 100% 명시.
## 🎉 모든 task 완료 + Phase F 통과 (+ Phase G 통과, PRD 있을 때)
**Plan**: <plan.md 경로>
**Tasks**: <N>/<TOTAL> 완료
**Summary of changes**
- T1 (Type <A/B/C/D>): <한 줄>
- ...
**Phase F 결과**
- F-2 전체 빌드: OK
- F-2 전체 테스트: <X/Y passed>
- F-7 plan-completion-reviewer: OK (또는 MINOR n개 follow-up 등록)
**Phase G 결과 (PRD 있을 때만 — G-1 충족표 전체 포함)**
- Must: <n>/<n> 충족 (기계 검증)
- 재루프: <0-2>회
- ⏳ 사용자 확인 필요 (HUMAN-VERIFY): <FR-x UI 체감, ...> ← 기계 검증 불가 항목, 직접 확인 부탁
**Execution stats**
- Elapsed (total): <Hm Ms>
- Turns: ~<N>
- Type 분포: A=<n>, B=<n>, C=<n>, D=<n>
- Prefilter PASS율 (Type B): <n/n>
**Follow-ups** (있으면)
- <항목 1>
다음 단계를 안내해 주세요 (PR 생성, 추가 검증, 머지 등).
references/halt-conditions.mdreferences/recovery.mdreferences/antipatterns.mdreferences/phase-f-detail.mdCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub jongcheol-pak/claude-harness-pjc --plugin pjc