break-time は何をしますか?
あなたが長時間集中しすぎているときに、休憩を促すアンビエントスキルです。Claude自身は応答間の実際の時間を追跡できません——会話履歴しか見えません。フックはClaudeの外部、ハーネス上で実行され、Claudeが通常取得できないコンテキストを注入します。これがこのスキルの仕組みです。
フックを書いたことがない方は、まずHOOKS-101.mdをお読みください。独立したチュートリアルで、コピペで使え、読了まで約15分です。後で他のアンビエントスキルを構築するための基礎にもなります。
機能
- 現在の「アクティブセッション」の開始時刻を追跡(10分間操作がないとリセット)。
- プロンプトを送信するたびに、アクティブに作業していた時間を計算。
- 設定可能な閾値(デフォルト45分、90分、120分)を超えると、Claudeのコンテキストに一度だけ休憩リマインダーを注入。Claudeは次の応答で、あなたの質問に答える前に、自然な形で短く休憩を促します。
- スヌーズ(
/snooze 60)またはリセット(/break-reset)が可能。 - 各閾値はアクティブセッション中に一度だけ発火——スパムはありません。
呼び出し方
このスキルは2つの要素からなります:パッシブフック(インストール後自動実行)と、管理用のアクティブコマンドです。
| トリガー | 動作 |
|---|---|
| (自動) | フックはすべてのプロンプトで動作。インストール後は呼び出し不要。 |
/break または /break-time | 現在の状態を表示:アクティブセッションの経過時間、次の閾値、スヌーズ状態。 |
/snooze [N] | N分間(デフォルト60分)スヌーズ。 |
/break-reset | アクティブセッションタイマーをリセット(現在をセッション開始とみなす)。 |
/break-time configure | ユーザーが~/.claude/break-time.confの閾値を編集するよう案内。 |
| 自然言語:「休憩時間をスヌーズ」、「今休憩する」、「タイマーを止めて」 | 同上 |
無効化
~/.claude/settings.jsonからフックブロックを削除してください。スキルファイルは残っていても問題ありません。フックが配線されていなければ動作しません。
インストール
break-time/を~/.claude/skills/break-time/にコピー。example-settings.jsonのフックブロックを~/.claude/settings.jsonに追加(ファイルは既に存在します。上書きせずマージしてください)。- Claude Codeを再起動し、ハーネスが新しいフックを認識するようにします。
- 以上です。以降、すべてのプロンプトでフックが実行されます。
完全な初心者向け手順は HOOKS-101.md にあります。
フックの仕組み(機械的)
- あなたがプロンプトを送信。
- Claudeがプロンプトを見る前に、ハーネスが
bash ~/.claude/skills/break-time/scripts/check_break.shを呼び出す。 - フックが
~/.claude/break-time.state(フラットなキー・バリューファイル)を読み取り、経過時間を計算し、いずれかの閾値を超えたか判定。 - 閾値が発火した場合、フックは
<system-reminder>ブロックを標準出力に出力。ハーネスが標準出力をキャプチャし、Claudeの次のターン用の追加コンテキストとして追加。 - Claudeがリマインダーを認識し、応答に自然に織り込みます:「ところで、あなたは90分間集中していました——続ける前に立ち上がって5分歩きましょう。さて、あなたの質問についてですが...」
- 発火した閾値は状態ファイルに記録され、アクティブセッションがリセットされるまで再発火しません。
設定
状態と設定は ~/.claude/ に保存されます:
break-time.state— 実行時状態(session_start、発火済み閾値、スヌーズ)break-time.conf— オプションのユーザー設定(閾値、アイドルギャップ、メッセージスタイル)
break-time.conf がない場合はデフォルトが使用されます:
THRESHOLDS="45 90 120" # 分単位 — いつ促すか
IDLE_GAP=10 # アイドル状態(分)で新しいセッションとみなす
STYLE=friendly # friendly | aggressive | poetic
STYLE=poetic にすると、リマインダーが俳句になります(poet-commit へのクロススキルラブレター)。
安全ガードレール
- プロンプトをブロックすることは決してありません。 フックは常に終了コード0で終了——失敗してもユーザーの作業に影響しません。
- 常にファイルにログ出力します(
~/.claude/break-time.log)。エラーをインラインで表示せずにデバッグ可能。 - 出力は制限されています。 リマインダーは短い1段落。コンテキストウィンドウを圧迫することはありません。
- スヌーズは常に尊重されます。 ユーザーがスヌーズ中でも、フックは時間を追跡しますが何も出力しません。
- ネットワーク呼び出しはありません。 純粋なローカルファイルI/O。プロンプトを遅延させることはありません。
このスキルのファイル
SKILL.md— このファイルHOOKS-101.md— フック作成に関する独立したチュートリアル(公開可能)example-settings.json—~/.claude/settings.json用のコピペ用フック設定scripts/check_break.sh— フック本体scripts/snooze.sh— N分間スヌーズscripts/reset.sh— アクティブセッションタイマーのリセットscripts/state.sh— 現在の状態を表示(/breakで使用)README.md— 短いインストール手順