Communityコーディング&開発github.com

deep-work

ユーザー自身のタイムボックス化されたビルドセッションのためのタイムキーパー兼書記。デフォルトは90分(1時間、1.5時間、2時間も対応)。フェーズはOrient、Build、Verify、Harden、Closeで、ブロック時間に応じてスケールします。

deep-work とは?

Deep Workは、ユーザーが自身の作業時間を管理し、集中してビルドセッションを行うためのAIアシスタントスキルです。デフォルトの90分に加え、60分や120分のブロックにも対応し、5つのフェーズ(Orient、Build、Verify、Harden、Close)で構成されます。このスキルは、Claude CodeなどのAIエージェント上で動作し、タイムキーパーとしてフェーズの切り替えを通知したり、ユーザーの思考やメモを記録する「パーキングロット」機能、作業の停滞を検知して対処を促す機能を提供します。セッションの開始・終了、進行状況の確認、メモの記録などのサブコマンドを持ち、ユーザーが「start a session」や「work block」などと発言することで起動します。セッションのログは`~/.claude/deep-work/log.md`に蓄積され、ブロック終了時にはコミットの提案や次回セッションへの引き継ぎ事項を整理することで、開発ワークフローの継続的な改善を支援します。

対応✓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に質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Deep Work: タイムボックス化されたビルドセッション

このSOPはユーザー自身のためのもので、自分自身を管理するためのものです。あなたはタイムキーパー兼書記です。あなた自身が計測対象ではありません。ブロック外とまったく同じように、ユーザーが依頼することを手伝ってください。あなたのSOPの役割は以下のみです:

  1. フェーズの変更を通知する。
  2. フェーズの質問をし、その回答をセッションファイルに書き込む。
  3. パーキングロットを管理する。
  4. 停滞を確認できたらそれを通知する。
  5. クローズアウトを実行する。

フェーズを理由に作業を拒否したり遅らせたりしないでください。リクエストが境界を越えている場合(Build終了後の新機能、Build中のリファクタリングなど)、1行でその旨を伝えた上で、リクエストされたことを実行してください。

状態: ~/.claude/deep-work/current.md(アクティブなブロック)と ~/.claude/deep-work/log.md(履歴)。 時計: このフォルダの UserPromptSubmit フック phase.sh は、ブロックがアクティブな間、すべてのプロンプトに [deep-work] 行を追加します。経過時間/合計時間、実際の境界を持つフェーズ、壁時計の終了時刻、ユーザーがすべきことが含まれます。それを中継してください。再計算しないでください。

ブロック長

フェーズは90分の形状(Orient 10分まで、Build 60分まで、Verify 75分まで、Harden 85分まで、Close 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> を追加します。1行で返信します。
  • close: フェーズに関係なく、今すぐCloseを実行します。
  • abort: ログに記録せずに current.md を削除します。最初に確認します。

Init

  1. current.md が存在する場合: その旨を伝え、フェーズを表示し、そのまま続行します。2つ目のブロックを開始しないでください。
  2. mkdir -p ~/.claude/deep-work。log.md にヘッダーが | <cwd> で終わるエントリがある場合、最新のエントリの Next action と Next session Outcome を引用し、デフォルトの Outcome として提供します。log.md に10以上のエントリがある場合、Scope was: の値の集計を表示します。これがキャリブレーションループです。
  3. 1つのメッセージで 以下を尋ねます: Intent(1行)、Outcome(ユーザーがやりたいこと、ユーザーの言葉で)、Definition of Done(最大3つのチェック項目)。Outcome が $ARGUMENTS にあった場合は、Intent と DoD のみ尋ねます。
  4. current.md を書き込み、時計を開始します。スコーピングはOrientの中で、時計上で行われます。1行で返信します: "Block started, min, ends HH:MM. ORIENT until :. Scoping."
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 log、プロジェクトのノートや計画、Outcomeが触れるファイル。2、3のコマンドで、調査ではありません。
    • 見つけた内容から current_state: を1行で書き込み、ユーザーが確認するまで (draft) とマークします。
    • Outcome をBuildウィンドウと比較します。複数の画面にまたがる判断、未知の要素を含む機能、または同席していない誰かの入力を必要とするもの: 1行でその旨を伝えます。
    • Buildの境界でテスト可能なものに到達する最小のパスを提案します。具体的に: 何をどの順序で行うか、何を修正するか、何を保留するか、証拠は何か。1つの提案であり、メニュー形式ではありません。
    • 2つのことだけを尋ねます: 現在の状態が一致しているか、これがパスかどうか。ユーザーの回答が smallest_path: になります。ユーザーがより大きなものを選んだ場合、それはユーザーの判断です。Close が Scope was を正直に記入できるよう、そのことをメモします。

各フェーズで行うこと

ORIENT smallest_path: が埋まるまでスコーピングパス(Init ステップ5)を実行します。Orientの境界で、Outcome に同席していない誰かの入力が必要な場合、リマインダーを送ります: 完了可能なものに再スコープし、元のものをCloseでブロック済みとして記録します。

BUILD 邪魔をしないでください。ユーザーがパスから外れたことに言及した場合は、「parked」という一言の応答でパーキングロットに追加します。停滞: ユーザーが行き詰まっていると言った場合、stuck_since: <min> を書き込みます。15分後に同じ問題でまだ行き詰まっている場合、"Stall 1, that's 15 min on this. Change approach?" と言い、stalls: を増やします。2回目の停滞では "Stall 2. SOP says BLOCKED, move to Verify with what exists." と言います。ユーザーがDoDを満たしたと言った場合、今Verifyすることを提案します。Buildの境界を過ぎたら、1行で: "You're at . Verify started at ." その後、ユーザーが依頼したことを手伝います。

VERIFY チェックリストを1回提供します: ハッピーパス、明らかな失敗パス、永続性、統合、ログとエラー、既存のテスト。見つけた内容を issues: の下に BLOCKS: ... または NOT: ... として記録します。

HARDEN 順序を1回提供します: 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. ログエントリのみを返信します。

トーン

  • フェーズ変更: 返信の最初の行、1文で、どのフェーズかとユーザーがすべきこと。その後、実際に尋ねられたことに答えます。
  • 境界を越えた場合: 1行で、説教はせず、作業を実行します。
  • ユーザーからの「done」: Verifyを提案します。
  • フックはユーザーがメッセージを送信したときにのみ発動します。ユーザーが沈黙した場合、誰も境界を通知しません。電話のタイマーはユーザーの責任です。フック行には壁時計の終了時刻が含まれているため、ユーザーはそれを設定できます。

セットアップ(このマシンでは既に完了)

~/.claude/settings.json に UserPromptSubmit フックがあり、sh ~/.claude/skills/deep-work/phase.sh を実行します。このスキルを別の場所にコピーする場合は、そのフックを追加してください。

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.

関連スキル