ClaudeModsClaude Code mod ディレクトリ
☰
● 0 人がオンライン ・閲覧 0 回
+ 作品を投稿
← 作品一覧へ
GitHub リポジトリ · その他

overalls — Claude Code プラグイン · ClaudeMods

この作品を報告あなたの作品ですか?所有者確認へ

ClaudeMods でこの Claude Code プラグインのソースと必要な権限を確認できます。 プロンプト上のステータス帯:コンテキストの天気、使用上限、Ponytail と Caveman のレベル

TTroepster@Troepster
元の投稿の画像1
翻訳済み

この mod について

overalls

プロンプトの上にステータス帯を描画する Claude Code mod。コンテキストウィンドウのリアルタイムな「天気予報」、使用上限の消費状況、Ponytail と Caveman の動作レベルを表示します。

デスクトップアプリの帯:予報、スパークライン、前ターンの変化、使用上限、セッション費用、Ponytail と Caveman のドロップダウン。右に ⚙

コンテキストが 75% を超えると(Claude がターンの実行中でなければ)、帯に Compact ボタンが現れます。

ウィジェットが一行に収まらない場合は丸ごと二行目に折り返され、Compact と ⚙ は一行目の右に残ります。

インストール

Claude Code のターミナル内で:

/plugin marketplace add Troepster/overalls
/plugin install overalls@overalls
/reload-plugins

または任意のシェルから。デスクトップアプリにも対応し、新しいセッションで読み込まれます:

claude plugin marketplace add Troepster/overalls
claude plugin install overalls@overalls

帯が表示されない場合は、新しいセッションを開始するか Claude Code を再起動してください。

更新は Claude Code 内で /plugin marketplace update overalls、またはシェルから:

claude plugin marketplace update overalls
claude plugin update overalls@overalls

Ponytail と Caveman は任意です。Caveman がなければそのウィジェットは表示されず、Ponytail がなければ off にするまで not installed と表示されます。どちらの場合も ⚙ Config ボックスからインストールを依頼できます。

mod は Claude Code 内で同じアクセス権を持って動作するため、インストール前に hooks/register.tsx を読んでください。

設定

各設定は Claude Code の設定メニューの overalls に一行ずつ表示され、変更すると mod が再読み込みされます。/overalls コマンドでプロンプトから設定でき、/config のないデスクトップアプリでも使えます:

/overalls weather minimal
/overalls ponytail off
/overalls            (shows the current values)

帯の上に開いた Config ボックス:各設定の全選択肢を二列に並べ、現在の選択にチェック。下の帯は二行目に折り返されている

帯の右の ⚙ を押すと、上に Config ボックスが開き、各設定の全選択肢と現在の選択のチェックが表示されます。押すと設定され、その場で帯の変化を確認できます。もう一度 ⚙ を押すと閉じます。Config 内の設定名にホバーすると、一行の説明が表示されます。

予報自体(Showers、または minimal での 67%)を押すと、詳細度が minimal → normal → full と循環します。off は Config ボックスで設定します。

mod に /config の行がある場合(ターミナル)、/overalls はその行を設定します。行がない場合(デスクトップアプリ)は mod 独自のストアに選択を保存し、すべてのセッションで /config の値より優先します。該当行のあるセッションで同じ設定を /overalls で指定するまで、この優先が続きます。

| 設定 | 値 | デフォルト | 動作 | |---|---|---|---| | 天気の詳細度 | off · minimal · normal · full(入力指定。他の値は full) | full | 予報の表示量 | | Ponytail レベル | off · icon · text(入力指定。他の値は icon、旧 on/off 値は icon/off) | icon | ロゴまたは ponytail: の後にインストール状況とレベルを表示 | | Caveman モード | off · icon · text(入力指定。他の値は icon) | icon | インストール済みなら 🪨 または caveman: の後にモードを表示 | | megacave の提供 | on · off | off | Caveman の漢文モード(megacave)をドロップダウンに追加。Config 内では Caveman と同じ行 | | 使用上限 | on · off | on | 5 時間・週間の上限の消費状況を表示(サブスクリプションのみ) | | 上限リセット | on · off | on | 各上限のリセットまでの時間(5h 42% ↻1h20m)を表示。Config 内では Limits と同じ行 | | 上限の使い切り予測 | off · warn · always(入力指定。他の値は warn) | warn | 直近一時間のペースでリセット前に上限を使い切る場合に警告。⚠1h40m は琥珀色、30 分未満は赤。always は持ちこたえる上限に ✓ lasts も表示。まず 10 分間のサンプルと 2 ポイントの変動が必要。各上限の後に表示し、上限表示がオフなら単独表示(5h ⚠1h40m) | | セッション費用 | on · off | off | セッションの累積費用を表示 | | MCP 警告 | on · off | on | MCP サーバーやコネクターの失敗、再ログインの必要を警告 | | 稼働中エージェント | on · off | on | サブエージェントの稼働中に ⧗ 2 agents を表示。押すと種類とタスクを一覧表示 | | 残りターン | on · off | on | ⌛ ~6 turns を表示。増加した直近五ターンの平均増加量から、あと何ターン収まるか推定(3 から赤) | | ツール拒否 | on · off | on | ユーザー、フック、権限規則、自動モード分類器が拒否した呼び出しを ⛔ 2 denied と表示。押すと一覧と Dismiss を表示 |

各天気レベルの表示:

| レベル | 帯 | |---|---| | minimal | ☂ 67% | | normal | ☂ Showers 67% · 134.4k / 200k | | full | normal に直近 12 ターンのスパークラインと前ターンからの変化を追加 | | off | 何も表示しない(Ponytail が有効ならその部分は表示) |

Ponytail の検出

<picture> <source media="(prefers-color-scheme: dark)" srcset="assets/ponytail-logo-dark.png"> <img src="assets/ponytail-logo.png" width="110" alt="Ponytail, the lazy senior dev"> </picture>
  • インストール済み: enabledPlugins に有効な ponytail@… エントリがあること。それ以外はロゴの横に not installed を表示します。
  • レベル: このセッション固有のものです。Ponytail は全セッションで一つのレベルファイルを共有するため、このセッションのレベルは分かりません。Overalls は Ponytail の規則に従ってセッション単位で追跡します:
    • 新規セッションと圧縮後(Ponytail が再起動)はデフォルトで開始します。$PONYTAIL_DEFAULT_MODE、次に config.json($XDG_CONFIG_HOME/ponytail/ または ~/.config/ponytail/)の defaultMode、最後に full の順です。
    • /ponytail <level>(または /ponytail:ponytail <level>)、/ponytail-review、stop ponytail、normal mode が入力されると変更します。 他のセッションの切り替えはこの帯に影響しません。
  • 切り替え: レベル表示のドロップダウンで選び、Ponytail 自身の /ponytail <level> コマンドを使います。ドロップダウンのないモバイルでは、押すと ultra → full → lite → off と進みます。

Ponytail または Caveman のインストール

未インストールのものは ⚙ Config ボックスの行に Install ボタンが出ます。mod 自体はプラグインをインストールできないため、プロンプト欄に依頼文を入力します。例:

Install the caveman Claude Code plugin: run `claude plugin marketplace add JuliusBrussee/caveman` then `claude plugin install caveman@caveman`.

送信すると Claude が二つのコマンドを実行し、それぞれ通常の権限確認を経ます。プラグインのフックは次のセッションから開始します。

Caveman

  • インストール済み: enabledPlugins に有効な caveman@… エントリがあること。それ以外は何も表示しません。
  • モード: このセッション固有です。Caveman は Claude の設定ディレクトリ内の .caveman-sessions/<session id>.mode に各セッションのモードを保存するため、帯はそれを読みます。固有ファイルのないセッション(Caveman インストール前に開始)は off と表示します。どのウィンドウでも最後に設定したモードを持つ共有ファイル .caveman-active は、セッション id がない場合のみ読みます。
  • 切り替え: ドロップダウンでモードを選び、Caveman 自身の /megacave、/ultracave、/caveman、/caveman off を使います。選択肢は ultracave、caveman、off、および Offer megacave がオンの場合の megacave(漢文で答えるため)です。モバイルでは押すたびに順に切り替わります。

MCP 警告

Claude Code は mod に MCP サーバー一覧や状態を渡さないため、帯は Claude 自身のツール呼び出しから問題を検出します:

  • ログインや接続に失敗した mcp__<server>__… 呼び出し(引数の誤りは対象外)、および
  • ToolSearch が失敗と報告したサーバー。

帯に ⚠ 2 MCP errors が出ます。押すと帯の上に MCP errors ボックスが開きます(Config と同様、同時に開くのは一つ)。各サーバーに一行あり、名前、sign in または failed、Claude が見たエラー、そして:

  • Reconnect:claude.ai コネクターの場合は Customize → Connectors。デスクトップアプリではアプリ内(claude://claude.ai/customize/connectors)、CLI やウェブでは https://claude.ai/customize/connectors を開きます。他のサーバーはターミナルで /mcp。デスクトップアプリの /mcp は一覧だけなので、ターミナルのセッションからログインするよう案内します。
  • Dismiss と Dismiss all

次の呼び出しが成功するか、非表示にするとサーバーは一覧から消えます。検出は最初の失敗時で、それより前ではありません。

データとアクセス

Overalls はネットワークリクエストを送らず、何も外部へ送信しません。すべて Claude Code のセッション内で行います:

  • 各ターン後にセッションのコンテキストウィンドウ使用量($.session.usage())を読む
  • Claude Code の設定を読み、Ponytail が有効か確認する
  • 該当ウィジェットがオンなら、使用上限の割合、リセット時刻、費用($.session.usage())と、リセットまでのカウントダウン用の時計を読む
  • エージェントウィジェットがオンならサブエージェント一覧($.agent.list():種類、タスク、状態)を読む
  • 30 秒ごとに帯を再描画してカウントダウンとエージェント数を更新し、その都度使用上限の割合($.session.usage())を記録する。直近一時間分をセッションメモリに保持し、上限を使い切る時刻を推定する
  • Claude Code の設定で Caveman が有効か確認し、有効ならセッション id と Claude 設定ディレクトリの .caveman-sessions/<session id>.mode を読む(id がない場合は .caveman-active)
  • デフォルトレベルのために Ponytail の config.json と、環境変数 PONYTAIL_DEFAULT_MODE、XDG_CONFIG_HOME、CLAUDE_CONFIG_DIR、HOME を読む
  • 送信した各プロンプトを Ponytail コマンド(/ponytail …、stop ponytail、normal mode)の検出だけに使い、レベル以外は保存しない
  • 直近 12 回の測定値と Ponytail レベルをセッション状態に保存し、終了時に消える
  • 帯で選択したときだけ Ponytail レベルや Caveman モードを切り替える。/ponytail <level> または該当する Caveman コマンドを、ユーザーが入力した場合と同じように実行する(Claude もその入力と同様に読む)。実行できなければプロンプト欄に入力する
  • Config の Install を押したときだけインストール依頼をプロンプト欄に入力する。送信し、Claude のコマンドを承認しない限りインストールしない
  • Claude が呼ぶ各ツールの名前を読む。ユーザー、フック、権限規則、自動モード分類器に拒否された場合、ツール名と理由の先頭 100 文字をセッション状態に保持し、非表示にするまで残す
  • 各 MCP ツール名、失敗時のエラー文、ToolSearch の失敗サーバー一覧を読む。失敗サーバーの名前、ログイン必要か失敗か、エラーの先頭 100 文字だけを保持する。ターミナルで Reconnect を押したときだけ /mcp を実行する
  • MCP errors ボックスを開いている間 CLAUDE_CODE_ENTRYPOINT を読み、デスクトップアプリと CLI・ウェブを区別する。デスクトップでコネクターの Reconnect を押すと claude://claude.ai/customize/connectors をシステムの起動ツール(macOS は open、Linux は xdg-open、Windows は cmd /c start)に渡し、アプリ内でそのページを開く
  • Compact ボタンを押したときだけ会話を圧縮する。Claude Code がプラグインによる圧縮を許可しない場合(デスクトップアプリ)は /compact を実行し、できなければプロンプト欄に入力する
  • /overalls weather … や /overalls ponytail …(および他のコマンド)を実行したときだけ独自設定を変更する、または選択…

インストール

まず作者の README で marketplace とプラグイン名を確認してください。コマンドはリポジトリの構成によって変わる場合があります。

claude plugin marketplace add Troepster/overalls
claude plugin install overalls
原文 / README

overalls

A Claude Code mod that draws a status band above the prompt: a live "weather forecast" of the context window, how much of your usage limits is spent, and the level Ponytail and Caveman are running at.

The band in the desktop app: forecast, sparkline, last-turn change, usage limits, session cost, and the Ponytail and Caveman dropdowns, with ⚙ at the right

Once the context passes 75% (and Claude isn't mid-turn), a Compact button appears in the band.

Where the widgets don't fit on one row, they wrap whole onto a second, while Compact and ⚙ stay at the right of the first.

Install

In the Claude Code terminal:

/plugin marketplace add Troepster/overalls
/plugin install overalls@overalls
/reload-plugins

Or from any shell, which also covers the desktop app (new sessions pick it up):

claude plugin marketplace add Troepster/overalls
claude plugin install overalls@overalls

If the band doesn't appear, start a new session or restart Claude Code.

To update: /plugin marketplace update overalls in Claude Code, or from a shell:

claude plugin marketplace update overalls
claude plugin update overalls@overalls

Ponytail and Caveman are optional. Without Caveman its widget doesn't show; without Ponytail its widget reads not installed until you set it to off. Either way, the ⚙ Config box offers to install them.

A mod runs inside Claude Code with the same access Claude Code has, so read hooks/register.tsx before installing.

Settings

Each appears as a row in the Claude Code config menu under overalls; changing one reloads the mod. The /overalls command sets them from the prompt, which also works in the desktop app, where /config isn't available:

/overalls weather minimal
/overalls ponytail off
/overalls            (shows the current values)

The Config box open above the band: every choice for each setting in two columns, the current one ticked; below it the band, wrapped onto a second row

The ⚙ at the right of the band opens a Config box above it with every choice for every setting, the current one ticked; pressing one sets it, so you see the change in the band as you make it. Press ⚙ again to close it. Hover over a setting's name in the Config box for a line on what it is.

Pressing the forecast itself (Showers, or 67% at minimal) steps the weather detail through minimal → normal → full and round again; off is set in the Config box.

Where the mod has a /config row (the terminal), /overalls sets that row. Where it has none (the desktop app), it keeps the choice in the mod's own store instead, and that choice wins over the /config value in every session until you set the same setting with /overalls in a session that has the row.

| Setting | Values | Default | What it does | |---|---|---|---| | Weather detail | off · minimal · normal · full (typed; anything else counts as full) | full | How much of the forecast to show | | Ponytail level | off · icon · text (typed; anything else counts as icon, and an old on/off value as icon/off) | icon | Show whether Ponytail is installed and its level, after its logo or the word ponytail: | | Caveman mode | off · icon · text (typed; anything else counts as icon) | icon | Show Caveman's mode where it's installed, after 🪨 or the word caveman: | | Offer megacave | on · off | off | List Caveman's Classical Chinese mode (megacave) in its dropdown; in the Config box it sits on Caveman's row | | Usage limits | on · off | on | Show how much of your 5-hour and weekly limits is spent (subscriptions only) | | Limit resets | on · off | on | Show how long until each limit resets (5h 42% ↻1h20m); in the Config box it sits on the Limits row | | Limit run-out | off · warn · always (typed; anything else counts as warn) | warn | Warn when a limit will run out before it resets, at your pace over the last hour: ⚠1h40m in amber, red under 30 minutes. always also shows ✓ lasts for a limit that won't. Needs 10 minutes of samples and 2 points of movement first. Follows each limit, or stands alone (5h ⚠1h40m) with the limits off | | Session cost | on · off | off | Show what this session has cost so far | | MCP warnings | on · off | on | Warn when an MCP server or connector fails or needs signing in again | | Running agents | on · off | on | Show ⧗ 2 agents while subagents run; pressing it lists them (type and task) | | Turns left | on · off | on | Show ⌛ ~6 turns: about how many more turns fit, at the average growth of the last five that grew (red from 3) | | Tool denials | on · off | on | Show ⛔ 2 denied for tool calls refused by you, a hook, a permission rule or the auto-mode classifier; pressing it lists them, with Dismiss |

What each weather level shows:

| Level | Band | |---|---| | minimal | ☂ 67% | | normal | ☂ Showers 67% · 134.4k / 200k | | full | normal plus the last 12 turns as a sparkline and the change since last turn | | off | nothing (the Ponytail segment still shows if enabled) |

Ponytail detection

<picture> <source media="(prefers-color-scheme: dark)" srcset="assets/ponytail-logo-dark.png"> <img src="assets/ponytail-logo.png" width="110" alt="Ponytail, the lazy senior dev"> </picture>
  • Installed: an enabled ponytail@… entry in enabledPlugins. Otherwise the band shows not installed beside the logo.
  • Level: this session's own. Ponytail keeps a single level file for every session, so it can't say what this session runs at; Overalls tracks it per session instead, by Ponytail's rules:
    • a new session, and a compaction (Ponytail activates afresh), start at Ponytail's default: $PONYTAIL_DEFAULT_MODE, else defaultMode in its config.json ($XDG_CONFIG_HOME/ponytail/, or ~/.config/ponytail/), else full
    • /ponytail <level> (or /ponytail:ponytail <level>), /ponytail-review, stop ponytail and normal mode change it as they go in. Another session's switch doesn't change this band.
  • Switched by picking a level from the dropdown the level is drawn as (on mobile, which has no dropdown, a press steps ultra → full → lite → off), through Ponytail's own /ponytail <level> command.

Installing Ponytail or Caveman

Where either isn't installed, its row in the ⚙ Config box has an Install button. A mod can't install plugins, so it types a request into the prompt box, for example:

Install the caveman Claude Code plugin: run `claude plugin marketplace add JuliusBrussee/caveman` then `claude plugin install caveman@caveman`.

Send it and Claude runs the two commands, each behind the usual permission prompt. A plugin's hooks start with the next session.

Caveman

  • Installed: an enabled caveman@… entry in enabledPlugins; otherwise nothing shows.
  • Mode: this session's own. Caveman keeps each session's mode in .caveman-sessions/<session id>.mode in your Claude config directory, so the band reads that. A session with no file of its own (one started before Caveman was installed) shows off; the shared .caveman-active, which holds the last mode set in any window, is read only when there's no session id.
  • Switched by picking a mode from its dropdown (ultracave, caveman, off, and megacave when Offer megacave is on, since it answers in Classical Chinese; on mobile a press steps through them), through Caveman's own /megacave, /ultracave, /caveman and /caveman off commands.

MCP warnings

Claude Code gives a mod no list of MCP servers or their state, so the band learns of trouble from Claude's own tool calls:

  • an mcp__<server>__… call that fails to sign in or connect (a bad-arguments error doesn't count), and
  • the servers a ToolSearch reports as failed.

The band then shows ⚠ 2 MCP errors. Pressing it opens an MCP errors box above the band (like the Config box; one is open at a time) with a row per server: its name, sign in or failed, the error as Claude saw it, and:

  • Reconnect: for a claude.ai connector, Customize → Connectors, opened in the desktop app itself there (claude://claude.ai/customize/connectors), and at https://claude.ai/customize/connectors from the CLI or the web. For any other server, /mcp in the terminal; the desktop app's /mcp only lists servers, so there it says to sign in from a terminal session.
  • Dismiss, and Dismiss all

A server leaves the list on its next successful call, or when dismissed. It's caught on its first failure, not before.

Data and access

Overalls makes no network requests and sends nothing anywhere. Everything it does stays inside your Claude Code session:

  • reads the session's context-window usage ($.session.usage()) after each turn
  • reads your Claude Code settings to see whether Ponytail is enabled
  • reads the session's usage-limit percentages, reset times and cost ($.session.usage()) when those widgets are on, and the clock to count down to each reset
  • reads the session's list of subagents ($.agent.list(): type, task, status) when the agents widget is on
  • redraws the band every 30 seconds, so countdowns and the agent count stay current, and at each redraw notes the usage-limit percentages ($.session.usage()), keeping the last hour of them in session memory to tell when a limit will run out
  • reads your Claude Code settings to see whether Caveman is enabled and, if it is, this session's id and Caveman's mode file for it in your Claude config directory: .caveman-sessions/<session id>.mode (or .caveman-active when there's no session id)
  • reads Ponytail's config.json, for its default level, and the PONYTAIL_DEFAULT_MODE, XDG_CONFIG_HOME, CLAUDE_CONFIG_DIR and HOME environment variables
  • reads each prompt you submit only to spot a Ponytail command (/ponytail …, stop ponytail, normal mode), keeping nothing of it but the level
  • keeps the last 12 readings and the Ponytail level in session state, which is gone when the session ends
  • switches Ponytail's level or Caveman's mode only when you pick one from the band: it runs /ponytail <level>, or Caveman's command for the mode, as if you had typed it (which Claude reads, as it would your typing), or types it into the prompt box if it can't run it
  • types an install request into the prompt box only when you press Install in the Config box; nothing is installed unless you send it and approve Claude's commands
  • reads the name of each tool Claude calls and, when one is refused (by you, a hook, a permission rule or the auto-mode classifier), keeps the tool's name and the first 100 characters of the reason in session state until you dismiss it
  • reads the name of each MCP tool Claude calls, the error text when one fails, and the failed-server list a ToolSearch returns, keeping only each failing server's name, whether it needs signing in or failed, and the first 100 characters of its error; it runs /mcp only when you press Reconnect in the terminal
  • reads CLAUDE_CODE_ENTRYPOINT while the MCP errors box is open, to tell the desktop app from the CLI and the web; in the desktop app, pressing Reconnect on a connector hands claude://claude.ai/customize/connectors to the system's opener (open on macOS, xdg-open on Linux, cmd /c start on Windows), which opens that page in the app
  • compacts the conversation only when you press its Compact button; where Claude Code doesn't let a plugin compact (the desktop app), that press runs /compact for you, or types it into the prompt box if it can't run it
  • changes its own settings only when you run /overalls weather … or /overalls ponytail … (and the rest), pick one in the ⚙ Config box, or press the forecast to step the weather detail: through the /config row where there is one (saved in your Claude Code settings, as /config saves them), otherwise in the mod's own store, a small JSON file Claude Code keeps for the plugin in your Claude config directory.

Apart from that store, it writes no files, and the only program it starts is that system opener, with that one fixed address, when you press Reconnect.

It hooks four events only to observe them, never changing what they carry: tool.call (note an MCP server failing or answering again, and a refused call), turn.complete (take a reading), session.compact (record the drop after a compaction, and reset the Ponytail level to its default) and prompt.submit (note a Ponytail switch once your prompt has gone in, so /ponytail lite shows straight away). It also draws the band above the prompt.

Development

Load your clone directly instead of the installed copy, so saves hot-reload:

claude --plugin-dir ~/Projects/overalls

or for every session (including the desktop app), in ~/.claude/settings.json:

{ "env": { "CLAUDE_CODE_PLUGIN_DIRS": "~/Projects/overalls" } }

Don't also have the marketplace copy installed, or you'll get two bands.

claude plugin validate .
claude plugin test .

hooks/register.tsx is the module; types/index.d.ts declares the state it keeps. To add a setting, declare a field under userConfig in .claude-plugin/plugin.json and read it from options in register.

Licence

MIT

Credits

Ponytail and its logo are by Dietrich Gebert, used under the MIT licence (assets/PONYTAIL-LICENSE). Overalls only reads the level Ponytail writes; it isn't affiliated with or endorsed by the Ponytail project.

Caveman is by Julius Brussee; "Caveman" is his trademark. Overalls only reads the mode Caveman writes and runs its commands, uses none of its logos (🪨 is a stock emoji), and isn't affiliated with or endorsed by the Caveman project.

元のソースを見る ↗

関連作品