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

aelena/break-time

Claude Code用スキル — 長時間コーディング(またはバイブコーディング)しているときに、フックを介して控えめな休憩リマインダーを送ります

break-time とは?

break-timeは、Claude Codeユーザーが長時間集中しすぎたときに、自動的に休憩を促すアンビエントスキルです。Claude自身は会話履歴しか見えず、実際の経過時間を追跡できませんが、このスキルはClaudeの外部で動作する**フック**を利用して、そうした情報をClaudeのコンテキストに注入します。ユーザーがプロンプトを送信するたびに、アクティブセッションの経過時間を計算し、設定された閾値(デフォルト45分/90分/120分)を超えた場合、Claudeの応答に自然な形で休憩を促すメッセージが組み込まれます。スヌーズ機能(`/snooze`)やリセット機能(`/break-reset`)も備えており、各閾値はアクティブセッション中に一度だけ発火するため、煩わしくなりません。設定ファイルで閾値やメッセージスタイル(フレンドリー/アグレッシブ/ポエティック)をカスタマイズでき、Claude CodeとCodexで利用可能です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add aelena/break-time

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

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

ドキュメント

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からフックブロックを削除してください。スキルファイルは残っていても問題ありません。フックが配線されていなければ動作しません。

インストール

  1. break-time/ を ~/.claude/skills/break-time/ にコピー。
  2. example-settings.json のフックブロックを ~/.claude/settings.json に追加(ファイルは既に存在します。上書きせずマージしてください)。
  3. Claude Codeを再起動し、ハーネスが新しいフックを認識するようにします。
  4. 以上です。以降、すべてのプロンプトでフックが実行されます。

完全な初心者向け手順は HOOKS-101.md にあります。

フックの仕組み(機械的)

  1. あなたがプロンプトを送信。
  2. Claudeがプロンプトを見る前に、ハーネスが bash ~/.claude/skills/break-time/scripts/check_break.sh を呼び出す。
  3. フックが ~/.claude/break-time.state(フラットなキー・バリューファイル)を読み取り、経過時間を計算し、いずれかの閾値を超えたか判定。
  4. 閾値が発火した場合、フックは <system-reminder> ブロックを標準出力に出力。ハーネスが標準出力をキャプチャし、Claudeの次のターン用の追加コンテキストとして追加。
  5. Claudeがリマインダーを認識し、応答に自然に織り込みます:「ところで、あなたは90分間集中していました——続ける前に立ち上がって5分歩きましょう。さて、あなたの質問についてですが...」
  6. 発火した閾値は状態ファイルに記録され、アクティブセッションがリセットされるまで再発火しません。

設定

状態と設定は ~/.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 — 短いインストール手順

関連スキル