Community코딩 & 개발github.com

딥 워크: 시간 제한 빌드 세션

사용자 자신의 시간 제한 빌드 세션을 위한 시간 기록원이자 기록자입니다. 기본 90분, 1시간/1.5시간/2시간도 지원합니다(Orient, Build, Verify, Harden, Close 단계는 블록 길이에 맞게 조정됨). 사용자가 "세션 시작", "딥 워크", "90분 블록", "워크 블록"을 말하거나 /deep-work를 호출할 때 사용합니다. 하위 명령어: status, park <note>, close, abort.

딥 워크: 시간 제한 빌드 세션란 무엇인가요?

Deep Work 스킬은 AI 에이전트(예: Claude Code, Cursor)가 사용자의 시간 제한 빌드 세션을 관리할 수 있도록 설계된 시간 기록원이자 기록자 역할을 합니다. 개발자가 "세션 시작" 또는 "/deep-work"와 같은 명령을 내리면, 이 스킬은 Orient(범위 설정), Build(구축), Verify(검증), Harden(강화), Close(종료)의 5단계로 구성된 구조화된 워크플로우를 시작합니다. 각 단계의 시간은 블록 길이(60, 90, 120분)에 맞게 자동으로 조정됩니다. 이 스킬은 세션 파일(`~/.claude/deep-work/current.md` 및 `log.md`)을 통해 상태를 유지하며, 사용자 프롬프트에 경과 시간과 현재 단계를 표시하는 후크(hook)를 제공합니다. 주요 기능으로는 세션 시작, 진행 상태 확인, 메모 기록(park), 세션 조기 종료(close/abort) 등이 있습니다. 이 스킬은 Claude Code, Cursor, Codex와 같은 AI 에이전트 플랫폼에서 사용할 수 있도록 설계되었으며, 개발자가 집중력과 생산성을 유지하며 작업을 완료할 수 있도록 돕습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jamesisbuilding/App-Building-Skills/tree/main/skills/deep-work

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

딥 워크: 시간 제한 빌드 세션은(는) 무엇을 하나요?

이 SOP는 사용자가 자신을 관리하기 위한 것입니다. 당신은 시간 기록원이자 기록자입니다. 당신이 시간을 재는 대상이 아닙니다. 블록 외부에서와 마찬가지로 사용자가 요청하는 모든 것을 도와주세요. 당신의 SOP 임무는 다음뿐입니다:

  1. 단계 변경을 알립니다.
  2. 각 단계의 질문을 하고 답변을 세션 파일에 기록합니다.
  3. 주차 목록(parking lot)을 관리합니다.
  4. 지연(stall)이 보이면 알립니다.
  5. 종료(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) 블록에 맞게 조정되며, 분 단위로 반올림됩니다:

길이OrientBuildVerifyHardenClose
600-77-4040-5050-5757-60
900-1010-6060-7575-8585-90
1200-1313-8080-100100-113113-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

  1. current.md가 존재하면: 그렇게 말하고, 단계를 알려주고, 계속 진행합니다. 두 번째 블록을 시작하지 마세요.
  2. mkdir -p ~/.claude/deep-work. log.md에 헤더가 | <cwd>로 끝나는 항목이 있으면, 가장 최근 항목의 Next action과 Next session Outcome을 인용하여 기본 Outcome으로 제안합니다. log.md에 10개 이상의 항목이 있으면 Scope was: 값의 집계를 표시합니다. 이것이 사용자의 교정 루프입니다.
  3. 하나의 메시지에서 다음을 묻습니다: 의도(한 줄), Outcome(사용자가 원하는 것, 사용자의 말로), 완료 정의(최대 3개 체크). Outcome이 $ARGUMENTS에 들어온 경우 의도와 DoD만 묻습니다.
  4. 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:
  1. 범위 설정 패스. 사용자가 말한 것을 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, 또는 초과 근무)

  1. 커밋 또는 체크포인트를 제안합니다. mg-git-commit 스킬이 있으면 사용하고, 없으면 일반적인 기존 커밋(conventional commit)을 사용합니다. 승인 시에만.
  2. 본 내용을 바탕으로 로그 항목을 작성합니다. 추론할 수 없는 것만 묻습니다(최대): Outcome 상태, Scope was, Next session Outcome. 각각 기본값을 제안합니다.
  3. ~/.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: ...
  1. rm ~/.claude/deep-work/current.md.
  2. 로그 항목만으로 답변하고 다른 것은 없습니다.

어조

  • 단계 변경: 답변의 첫 줄, 한 문장, 어떤 단계이고 사용자가 무엇을 해야 하는지. 그런 다음 실제 질문에 답변합니다.
  • 경계 위반: 한 줄, 설교하지 말고, 작업을 수행합니다.
  • 사용자의 "완료"는 Verify를 제안하는 것을 의미합니다.
  • 후크는 사용자가 메시지를 보낼 때만 작동합니다. 사용자가 조용히 있으면 아무도 경계를 알리지 않습니다. 전화 타이머는 사용자의 몫입니다. 후크 줄에는 벽시계 종료 시간이 포함되어 있어 사용자가 설정할 수 있습니다.

설정 (이 머신에서는 이미 완료됨)

~/.claude/settings.json에는 sh ~/.claude/skills/deep-work/phase.sh를 실행하는 UserPromptSubmit 후크가 있습니다. 이 스킬을 다른 곳에 복사하는 경우 해당 후크를 추가하세요.

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

app-icon-design

Create, revise, and audit app icons using Apple's Human Interface Guidelines, with a clear visual identity and production-ready deliverables.

app-keyword-research

Validate an app idea against the App Store before building it. Turns the idea into search phrases, measures demand (App Store autocomplete) and competition (current top-10 apps) for each, ranks keywords by opportunity, and maps which apps own the market. Use when the user wants keyword research, ASO, "is there demand for…", "who are the competitors for…", "what should we call it / which keywords", or to validate or compare app ideas.

app-offer

Designs one opinionated "Grand Slam Offer" for any app idea, new or already shipped, by running Alex Hormozi's $100M Offers method adapted to app stores. It covers the market and niche, the commodity check, a value-equation audit, the problem inventory, delivery vehicles, the trimmed value stack, pricing and tiers, scarcity, urgency, bonuses, the guarantee, naming, the paywall per placement, the onboarding fast win, a test plan and a ship plan. It works within App Store and Google Play rules. For a shipped app it reads the code and notes first and produces a before/after. Use it when the user says "/app-offer", "run app-offer on <idea>", "make a grand slam offer for my app", "Hormozi my app", "price my app" or "design my paywall offer", or asks how to package, price, name, guarantee or paywall an app. It writes offer/grand-slam-offer.md (or ./<app-slug>-grand-slam-offer.md for a new idea).

brand-reference-pack

Build or refresh a shortform brand reference pack for any app from its real surfaces — website, App Store listing and reviews, socials, the live app (driven end to end on the simulator) and its code tokens — plus a status check of the upstream foundations (ICP, voice of customer, brand voice). Produces the context that content formats and design decisions are made from, as markdown, tokens.json and a PDF. Use for "build a brand pack for <app>", "refresh the brand pack", "capture the site/app/socials for shortform", "/brand-reference-pack".

new-app-info

Builds the information pack Apple asks for when App Review replies "We need additional information to better understand the app". It covers all six required items: (1) a screen recording on a physical device, as a shot list the user records; (2) the app's purpose and target audience; (3) setup and main features, with any login credentials or sample files; (4) the external services the app uses; (5) regional differences; (6) regulated industry or protected third-party material. It also runs Apple's "Prevent common issues" checks. Every answer comes from the app's own code (accounts, user-generated content, in-app purchases, SDKs, locales, screen-capture blocking, data deletion). It reads the connected iPhone's iOS version and checks it is the latest. It ends by telling the user to paste the reply into App Review Information → Notes. Use it when the user pastes that App Review message, says "/new-app-info", "we got rejected, they want more info", "answer App Review", or "make the App Store review pack". It w...

reel-motion-graphics

Turn a script or concept into an on-brand 9:16 explainer reel (luxury tech, warm sand on near-black, glassmorphism, CSS 3D, Bodoni + Instrument Sans) built in HyperFrames, with the animation above the fold and the presenter's talking head below. Use when the user gives a script, transcript, paper summary or concept and asks for a reel, motion graphics, an animated explainer or "the same style as the upcycling reel". Produces a HyperFrames project, a rendered MP4 and a live artifact player.

관련 스킬