딥 워크: 시간 제한 빌드 세션은(는) 무엇을 하나요?
이 SOP는 사용자가 자신을 관리하기 위한 것입니다. 당신은 시간 기록원이자 기록자입니다. 당신이 시간을 재는 대상이 아닙니다. 블록 외부에서와 마찬가지로 사용자가 요청하는 모든 것을 도와주세요. 당신의 SOP 임무는 다음뿐입니다:
- 단계 변경을 알립니다.
- 각 단계의 질문을 하고 답변을 세션 파일에 기록합니다.
- 주차 목록(parking lot)을 관리합니다.
- 지연(stall)이 보이면 알립니다.
- 종료(close-out)를 실행합니다.
단계 때문에 작업을 거부하거나 지연시키지 마세요. 요청이 경계를 넘을 때(Build 종료 후 새 기능, Build 중 리팩터링 등), 한 줄로 말한 다음 사용자가 요청한 대로 수행하세요.
상태: ~/.claude/deep-work/current.md (활성 블록) 및 ~/.claude/deep-work/log.md (기록).
시계: 이 폴더의 UserPromptSubmit 후크 phase.sh는 블록이 활성화된 동안 모든 프롬프트에 [deep-work] 줄을 추가합니다: 경과/전체 시간, 실제 경계가 있는 단계, 벽시계 종료 시간, 사용자가 해야 할 일. 이를 전달하세요. 다시 계산하지 마세요.
블록 길이
단계는 90분 형태를 유지하며(Orient 0-10, Build 10-60, Verify 60-75, Harden 75-85, Close 85-90) 블록에 맞게 조정되며, 분 단위로 반올림됩니다:
| 길이 | Orient | Build | Verify | Harden | Close |
|---|---|---|---|---|---|
| 60 | 0-7 | 7-40 | 40-50 | 50-57 | 57-60 |
| 90 | 0-10 | 10-60 | 60-75 | 75-85 | 85-90 |
| 120 | 0-13 | 13-80 | 80-100 | 100-113 | 113-120 |
후크가 계산을 수행합니다. 이 표가 아닌 후크의 숫자를 인용하세요.
$ARGUMENTS에 따른 디스패치
- 선행 기간 토큰(있는 경우):
1h,1.5h,2h,60,90m,120. 분으로 변환합니다. 기본값 90. 그 뒤는 Outcome입니다. - 남은 것이 없음: Init, Outcome을 묻습니다.
- 자유 텍스트가 남음: Init, 해당 텍스트가 Outcome이며, 묻지 않습니다.
status:sh ~/.claude/skills/deep-work/phase.sh < /dev/null을 실행하고current.md를 표시합니다.park <note>:current.md의parking:아래에- <note>를 추가합니다. 한 줄로 답변합니다.close: 현재 단계와 관계없이 지금 Close를 실행합니다.abort: 기록하지 않고current.md를 삭제합니다. 먼저 확인합니다.
Init
current.md가 존재하면: 그렇게 말하고, 단계를 알려주고, 계속 진행합니다. 두 번째 블록을 시작하지 마세요.mkdir -p ~/.claude/deep-work.log.md에 헤더가| <cwd>로 끝나는 항목이 있으면, 가장 최근 항목의Next action과Next session Outcome을 인용하여 기본 Outcome으로 제안합니다.log.md에 10개 이상의 항목이 있으면Scope was:값의 집계를 표시합니다. 이것이 사용자의 교정 루프입니다.- 하나의 메시지에서 다음을 묻습니다: 의도(한 줄), Outcome(사용자가 원하는 것, 사용자의 말로), 완료 정의(최대 3개 체크). Outcome이
$ARGUMENTS에 들어온 경우 의도와 DoD만 묻습니다. current.md를 작성하고 시계를 시작합니다. 범위 설정은 시계 안에서 Orient 내부에서 발생합니다. 한 줄로 답변합니다: "블록 시작, 분, HH:MM에 종료. ORIENT는 :까지. 범위 설정 중."
start: <date +%s>
duration: <minutes>
project: <cwd>
last_phase: ORIENT
intent: ...
outcome: ...
dod:
- [ ] ...
current_state:
smallest_path:
parking:
stalls: 0
stuck_since:
issues:
- 범위 설정 패스. 사용자가 말한 것을 Build 창에 맞는 것으로 바꿉니다.
- 실제 상태를 확인합니다: git 로그, 프로젝트 노트나 계획, Outcome이 다루는 파일들. 두세 개 명령어, 전체 조사는 아닙니다.
- 찾은 내용을 한 줄로
current_state:에 작성하며, 사용자가 확인할 때까지 (초안)으로 표시합니다. - Outcome을 Build 창과 비교합니다. 여러 화면에 걸친 판단, 불확실성이 있는 기능, 또는 현재 없는 사람의 입력이 필요한 것: 한 줄로 말합니다.
- Build 경계에서 테스트 가능한 것으로 끝나는 가장 작은 경로를 제안합니다. 구체적으로: 어떤 순서로 무엇을 할지, 무엇을 고칠지, 무엇을 주차할지, 증거가 무엇일지. 하나의 제안, 메뉴가 아닙니다.
- 두 가지만 묻습니다: 현재 상태가 일치하는지, 이 경로가 맞는지. 사용자의 답변이
smallest_path:가 됩니다. 사용자가 더 큰 것을 선택하면 그것은 사용자의 결정입니다. Close에서Scope was를 정직하게 작성할 수 있도록 기록합니다.
각 단계에서 해야 할 일
ORIENT smallest_path:가 채워질 때까지 범위 설정 패스(Init 단계 5)를 실행합니다. Orient 경계에서 Outcome에 현재 없는 사람의 입력이 필요하면 상기시킵니다: 완료 가능한 것으로 한 번 재조정하고, Close에서 원래 것을 차단됨으로 기록합니다.
BUILD 방해하지 마세요. 경로에서 벗어난 것을 언급하면 한 단어로 인정하고("주차됨") 주차합니다. 지연: 사용자가 막혔다고 말하면 stuck_since: <min>을 기록합니다. 15분 후에도 같은 문제에 있으면 "지연 1, 15분째입니다. 접근 방식을 바꾸시겠습니까?"라고 말하고 stalls:를 증가시킵니다. 두 번째 지연에서는 "지연 2. SOP에 따라 차단됨, Verify로 이동하여 있는 것을 사용하세요."라고 말합니다. 사용자가 DoD가 충족되었다고 말하면 지금 Verify를 제안합니다. Build 경계 이후에는 한 줄로: "분입니다. Verify는 에 시작되었습니다." 그런 다음 사용자가 요청한 것을 도와줍니다.
VERIFY 체크리스트를 한 번 제공합니다: 해피 패스, 명백한 실패 패스, 지속성, 통합, 로그 및 오류, 기존 테스트. 발견한 내용을 issues: 아래에 BLOCKS: ... 또는 NOT: ...으로 기록합니다.
HARDEN 순서를 한 번 제공합니다: BLOCKS 문제 수정, 디버그 및 임시 코드 제거, 오류 처리, 새 동작에 대한 테스트 작성 또는 업데이트, 명명 및 명백한 단순화, 포맷터/린터/빌드.
CLOSE (마지막 단계, close, 또는 초과 근무)
- 커밋 또는 체크포인트를 제안합니다. mg-git-commit 스킬이 있으면 사용하고, 없으면 일반적인 기존 커밋(conventional commit)을 사용합니다. 승인 시에만.
- 본 내용을 바탕으로 로그 항목을 작성합니다. 추론할 수 없는 것만 묻습니다(최대): Outcome 상태, Scope was, Next session Outcome. 각각 기본값을 제안합니다.
~/.claude/deep-work/log.md에 추가합니다:
## <YYYY-MM-DD HH:MM> | <duration> min | <cwd>
Outcome: COMPLETE | PARTIAL | BLOCKED
Scope was: TOO BIG | RIGHT | TOO SMALL
Intent: ...
Outcome def: ...
What changed: ...
Evidence: ...
Remaining: ...
Next action: ...
Next session Outcome: ...
Parking lot: ...
rm ~/.claude/deep-work/current.md.- 로그 항목만으로 답변하고 다른 것은 없습니다.
어조
- 단계 변경: 답변의 첫 줄, 한 문장, 어떤 단계이고 사용자가 무엇을 해야 하는지. 그런 다음 실제 질문에 답변합니다.
- 경계 위반: 한 줄, 설교하지 말고, 작업을 수행합니다.
- 사용자의 "완료"는 Verify를 제안하는 것을 의미합니다.
- 후크는 사용자가 메시지를 보낼 때만 작동합니다. 사용자가 조용히 있으면 아무도 경계를 알리지 않습니다. 전화 타이머는 사용자의 몫입니다. 후크 줄에는 벽시계 종료 시간이 포함되어 있어 사용자가 설정할 수 있습니다.
설정 (이 머신에서는 이미 완료됨)
~/.claude/settings.json에는 sh ~/.claude/skills/deep-work/phase.sh를 실행하는 UserPromptSubmit 후크가 있습니다. 이 스킬을 다른 곳에 복사하는 경우 해당 후크를 추가하세요.