本文へスキップ
claudemods

Mindful Claude:Claude の作業中に深呼吸できる Claude Code の呼吸 Mod

Claude が作業している間、プロンプトの上にガイド付きの呼吸アニメーションを表示し、待ち時間を短い呼吸エクササイズに変えます。

権限

  • UI を変更Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
  • コマンド・ツールを追加あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
  • データを保存プラグイン専用のストアにセッションをまたいでデータを保持します($.store.*)。
検証バージョン
v2.1.291
最終検証日
必要バージョン
Claude Code ≥ 2.1.287
表示先
プロンプト上部、スピナー

Claude Code 内でインストール:

/plugin install mindful-claude --marketplace halluton/Mindful-Claude
すべてのインストール方法 ↓

このModでできること

Mindful Claude は Claude Code の呼吸 Mod で、Anthony(halluton)によるコミュニティ Mod です。Claude を待つ時間を、短いガイド付きの呼吸エクササイズに変えてくれます。Claude が作業を始めると、入力欄の上に 9 行の呼吸アニメーションが現れ、その下に Breathe in... 4s のようなフェーズの行とエクササイズ名が表示されます。同時にスピナーの文言も呼吸に合わせて変わり、いつもの文言の代わりに Breathe in 4s… と表示されます。Claude が応答すると、帯は消えます。

README にある作者の考えはこうです。1 分あたり約 5.5 回のゆっくりした呼吸は心拍変動を高めるので、ターミナルを離れることなく、Claude のターンのたびに小さな呼吸セッションができる、というものです。エクササイズは 4 種類(Coherent Breathing、Physiological Sigh、Box Breathing、4-7-8 Breathing)、アニメーションのスタイルも 4 種類(pulse、ripples、dots、wave)あります。デフォルトではスタイルはターンごとにランダムに選ばれ、同じものが 2 回続くことはありません。/breathe スラッシュコマンドで設定を変更でき、設定はセッションをまたいで保持されます。README によると、Claude Code 2.1.269 以降が必要です。

デモ

録画では、この Mod を読み込んだ Claude Code を起動し、Claude に 3 つのファイルを読んでプロジェクトを説明するよう依頼します。ターンの実行中、プロンプトの上の呼吸の帯が Breathe in… 5s のラベル(デフォルトの Coherent Breathing のパターン)とともに広がったり縮んだりし、スピナーの行も同じリズムで変化します。

インストール

インストールブロックのいずれかの方法を使ってください。どれも作者自身のマーケットプレイスから直接インストールします。インストール後に何かプロンプトを送れば、Claude の作業中に帯が表示されます。

$ install mindful-claude

Claude Code 2.1.287 以上が必要

作者のマーケットプレイスからインストール: halluton/Mindful-Claude

  1. 1.Claude Code 内で1行

    /plugin install mindful-claude --marketplace halluton/Mindful-Claude

    実行中のセッション(v2.1.275 以降)に貼り付けます。最初に Claude Code がマーケットプレイスの追加を確認します。

  2. 2.シェルから

    claude plugin marketplace add halluton/Mindful-Claude
    claude plugin install mindful-claude@mindful-claude

    その後、すでに開いているセッションでは /reload-plugins を実行してください。

  3. 3.インストールせずに試す

    git clone https://github.com/halluton/Mindful-Claude
    claude --plugin-dir ./Mindful-Claude

    その1セッションだけ Mod を読み込みます。設定には何も追加されません。

仕組み

Mod は 2 つの部分からなります。hooks/register.tsx はフックモジュールで、ターンの開始時刻を記録し、AbovePrompt の描画位置にフックします。エンジンがターンの作業中を報告すると、クライアントサーフェスモジュール hooks/breathe.tsx をマウントし、これが独自のクロックで 1 秒に 10 回アニメーションを描画します。以下は hooks/register.tsx の描画フックです。

on('ui.render', { component: 'AbovePrompt' }, async ($, e, next) => {
  if (e.surface !== 'terminal' || !config.enabled || !e.props.isWorking || e.props.hasSurvey) return next(e)
  const now = await $.clock.now()
  const running = turn ?? (turn = { startedAt: now, style: pickStyle(config.style, lastStyle) })
  const elapsedMs = now - running.startedAt
  if (elapsedMs < config.delay * 1000) return next(e)
  const { Box, Client } = $.ui.resolve(e)
  // ...
  return (
    <Box flexDirection="column">
      <Client key={key} module="./breathe.tsx" width={e.viewport?.columns ?? 80} height={rows}
        props={{ exercise: config.exercise, style: running.style, elapsedMs }} />
      {await next(e)}
    </Box>
  )
})

帯はターンの開始時刻をキーにしているので、ターンごとに新しいアニメーションになります。フェーズの行が変わるたびに、サーフェスは surface.post で現在の文言を送り返します。フックモジュールはそれを ui.message フックで受け取り、Spinner コンポーネントに対する 2 つ目の描画フックに渡して、スピナーの message プロパティを置き換えます。turn.complete フックがターンをクリアするので、Claude が応答するとすぐに帯は消えます。エクササイズ、イージング曲線、形状は hooks/breath/ に純粋関数として置かれています。

カスタマイズ

すべての設定は、Mod が session.start で登録する /breathe コマンドで行います。

  • /breathe は現在の設定を表示し、/breathe help はすべてのオプションを一覧表示します。
  • /breathe on / off で帯を表示・非表示にします。
  • /breathe hrv、sigh、box、478 でエクササイズを選びます。
  • /breathe style wave でスタイルをひとつに固定し(pulse、ripples、dots、wave)、/breathe style random でデフォルトに戻します。
  • /breathe delay 5 にすると、ターン開始から 5 秒待ってから帯を表示するので、すぐ終わる応答では静かなままです。
  • /breathe spinner off でスピナーのテキストには手を付けなくなります。

設定は $.store のひとつの config キーに保存され、次のセッション開始時に読み込まれます。

権限と安全性

私たちは実行前に、プラグインが読み込むすべてのファイルを読みました。プラグインが使うのは UI、クロック、コマンド、ストアの呼び出しだけで、$.process.run、ネットワーク、ファイルアクセスはありません。あなたのコード、プロンプト、トランスクリプトは読みません。設定は Mod 専用の $.store に保存され、settings.json やシェルの rc ファイルを編集することはありません。UI の変更 は帯と書き換えられたスピナーの文言、コマンド・ツールの追加 は /breathe、データの保存 は保存された設定に対応します。

リポジトリには、元の bash と tmux 版が入った legacy/ フォルダーもあります。プラグインはこれを読み込みません。その install.sh は ~/.claude/settings.json を編集し ~/.claude/mindful/ に書き込むので、旧バージョンを使いたい場合にだけ実行してください。claude plugin validate は警告をひとつ報告します。プラグイン名に "claude" が含まれており、Anthropic のプラグインのように読めるという指摘です。これは命名に関する注意で、コードの問題ではありません。

UI を変更
Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
コマンド・ツールを追加
あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
データを保存
プラグイン専用のストアにセッションをまたいでデータを保持します($.store.*)。

互換性とトラブルシューティング

macOS 上の Claude Code 2.1.291 で検証し、作者の 31 件の bun test 単体テストはすべて成功しました。テストは bun:test をインポートしているため、claude plugin test では読み込めません。帯が表示されない場合は、次を確認してください。

  • claude --version が 2.1.269 以降であること。作者の README では、~/.claude/settings.json の env ブロックに CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 を設定するよう求めています。
  • /breathe を実行し、breathe: on と delay 0s になっていること。
  • 帯はターミナルでのみ描画されます。また、プロンプトの上にアンケートが開いている間はその場を譲ります。
  • すでに開いているセッションにインストールした後は、/reload-plugins を実行してください。

よくある質問

呼吸アニメーションはいつ表示されますか?
ターンが始まり、プロンプトに Claude が作業中であることが表示されたときです。Claude が応答すると消えます。/breathe delay 5 にすると、Claude が 5 秒作業した後にだけ表示されます。
どんな呼吸エクササイズが含まれていますか?
4 種類です。Coherent Breathing(5.5 秒吸って 5.5 秒吐く、デフォルト)、Physiological Sigh(2 回吸って長く吐く)、Box Breathing(4 秒ずつ吸う・止める・吐く・止める)、4-7-8 Breathing(4 秒吸って 7 秒止め、8 秒吐く)。/breathe hrv、sigh、box、478 で切り替えます。
トークンを消費したり、モデルに何かを送ったりしますか?
いいえ。Mod は UI を描画し、設定をプラグイン専用のストアに保存するだけです。ネットワーク通信は行わず、モデルがアニメーションを目にすることもありません。
アニメーションは残しつつ、スピナーはそのままにできますか?
はい。/breathe spinner off を実行してください。プロンプトの上の帯は動き続け、スピナーは通常の文言に戻ります。
デスクトップアプリでも動作しますか?
帯は描画先がターミナルの場合にのみ描かれ、それ以外ではコードがスキップします。スピナーのテキストは変わることがあります。
Claude Code で動作中の 完了トースト

完了トースト

Claude の長いターンが終わると「Done in 2m 14s」のトーストと短いチャイムでお知らせ。デスクトップ通知にも対応します。

  • トースト
  • コマンドを実行
  • UI を変更
  • 音を再生

v2.1.291 で検証済み

Claude Code で動作中の コンテキストメーター

コンテキストメーター

コンテキストウィンドウの使用率、5 時間・7 日間のプラン使用量、セッションのコストをステータスラインに表示し、上限が近づくと警告します。

  • ステータス
  • トースト
  • UI を変更

v2.1.291 で検証済み

同じカテゴリの Mod: タイマー、ToDo、スタンドアップ、スラッシュコマンド。