mcpField
S
statusline-config

statusline-config

github.com/sd0xdevエージェントワークフロー19467 回インストール3 週間前に更新
リポジトリ

statusline-config について

statusline-config は、Claude Code の `statusline-command.sh` を設定するスキルです。表示項目とテーマを選び、スクリプトを作成して検証します。

主な機能

  1. 01ステータスライン項目の切り替え
  2. 02カラーテーマの選択
  3. 03モデルとコンテキスト情報の表示
  4. 04コストとレート制限の表示
  5. 05シェルスクリプトの作成と検証

活用シーン

  1. 01ステータスラインへのトークン使用量の追加
  2. 02ステータスラインの配色変更
  3. 03ステータスラインへの worktree 情報の表示

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sd0xdev/sd0x-harness --skill statusline-config

インストール後、Claude Code で/statusline-configを入力して読み込まれたか確認します。

同梱ファイルreferences/json-schema.mdreferences/themes.md

詳細

StatusLine の設定

~/.claude/statusline-command.sh をカスタマイズできます。セグメント、テーマ、色を設定します。

使用しないケース

シナリオ代わりに使用するもの
初めてステータスラインを設定する場合(カスタマイズが不要)組み込みの statusline-setup エージェント(Claude Code エージェントタイプ)— デフォルト設定が自動で適用されます
settings.json を直接編集する場合手動で編集します — このスキルが管理するのは settings.json ではなく statusline-command.sh です
Claude Code の起動に関する問題をデバッグする場合/claude-health — 設定のヘルスチェック

セグメント

セグメントJSON フィールドデフォルト備考
ディレクトリworkspace.current_dirON深い階層のパスを省略します:~/.../last-dir
Git ブランチシェルの gitON--no-optional-locks、5 秒間キャッシュ
エージェントagent.nameON(条件付き)存在する場合に表示します。色:C_MODEL
モデルmodel.display_name + context_window.context_window_sizeONスマートなティア接尾辞:Opus 4.6 (1M) — display_name にコンテキスト情報がすでに含まれる場合は自動的に省略します
コンテキスト %context_window.remaining_percentage + context_window_sizeONctx 60% left (600k/1M) — 緑:40% 超、黄:20~40%、赤:20% 以下
トークン使用量context_window.total_input_tokens + total_output_tokensON(条件付き)セッション累計 {in}k/{out}k。色:C_COST
コストcost.total_cost_usdON0.005 ドル以上の場合に表示します。est $X.XX
レート制限rate_limits.five_hour.used_percentage + seven_day.used_percentageON(条件付き)5h: 85% left · 7d: 82% left — 残りの割合(100 - 使用率)を表示します。色のしきい値はコンテキスト % と同じです:緑:40% 超、黄:20~40%、赤:20% 以下。OAuth ユーザーのみ
ワークツリーworktree.name + worktree.branchON(条件付き)[WT:{name}] {branch}、ブランチがない場合は [WT:{name}] を表示します。存在する場合はディレクトリと Git ブランチを置き換えます。色:C_BRANCH

完全な JSON スキーマについては、json-schema.md を参照してください。

テーマ

テーマ種類デフォルト備考
ansi-defaultANSI 16✅安全なフォールバック。どこでも動作します
catppuccin-mochaTrueColor—推奨 — パステルカラー、WCAG AA >=4.5:1
draculaTrueColor—鮮やかな紫とピンクのアクセント
nordTrueColor—北極をイメージした青と落ち着いた色調
none——色なし(NO_COLOR によって自動的に有効になります)

次の方法で切り替えます:export CLAUDE_STATUSLINE_THEME=catppuccin-mocha

トークンから 16 進数カラーへの完全な対応表については、themes.md を参照してください。

セマンティックトークン

スクリプトでは、色をハードコードする代わりにセマンティックトークンを使用します。

トークン役割例
C_CWDディレクトリパス青/サファイア
C_BRANCHGit ブランチ名マゼンタ/モーブ
C_MODELモデルの表示名シアン/ティール
C_CTX_OKコンテキスト >= 41%緑
C_CTX_WARNコンテキスト 21~40%黄
C_CTX_BADコンテキスト <= 20%赤
C_COSTコスト表示控えめなテキスト
C_ALERT>200k トークンの警告(レガシー、セグメントは削除済み)オレンジ/ピーチ + 太字
C_SEPパイプ区切り |暗色/オーバーレイ
C_MUTED補足情報サブテキスト
C_TEXT一般テキスト前景色
C_RESETすべての書式設定をリセット\033[0m

ワークフロー

引数なし → ベストプラクティスのデフォルト(すべてのセグメントを ON + ansi-default テーマ)を適用します。ステップ 4 に進みます。

テーマの変更(例:「catppuccin-mocha を使う」、「dracula に切り替える」)→ themes.md を読み、指定されたテーマを適用します。ステップ 4 に進みます。エイリアス:catppuccin → catppuccin-mocha。

カスタムリクエスト(例:「コストを追加」、「git を削除」、「色なし」)→ 対話形式のフロー:

  1. 現在のスクリプトを読みます:cat ~/.claude/statusline-command.sh
  2. 有効/無効にするセグメントを尋ねます(AskUserQuestion の multiSelect)
  3. テーマの設定を尋ねます(テーマの選択肢を含む AskUserQuestion)
  4. Script Rules と themes.md の選択したテーマに従ってスクリプトを生成します
  5. ~/.claude/statusline-command.sh に書き込みます
  6. 検証します:echo '{"model":{"display_name":"Opus 4.6"},"workspace":{"current_dir":"/tmp/test"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false}' | ~/.claude/statusline-command.sh

スクリプトのルール

  • シバン:#!/bin/sh(POSIX)
  • 標準入力を読み込みます:input=$(cat)
  • JSON を解析します:jq -r '.field // fallback'
  • 環境変数からテーマを取得します:theme="${CLAUDE_STATUSLINE_THEME:-ansi-default}"
  • NO_COLOR:[ -n "${NO_COLOR:-}" ] && theme="none"
  • テーマのエイリアス:catppuccin → catppuccin-mocha
  • 無効なテーマ:ansi-default にフォールバック
  • 色の出力:ANSI/TrueColor には printf "%b"、色なしには printf "%s" を使用
  • TrueColor の形式:\033[38;2;R;G;Bm(24 ビット前景色)
  • Git:git --no-optional-locks -C "$dir"
  • Git キャッシュ:/tmp/claude-statusline-git-cache-$(id -u)、TTL は 5 秒、stat -f %m(macOS)/stat -c %Y(Linux)
  • CWD の省略:深さが 2 を超える場合 → ~/.../basename
  • コスト:>= 0.005 の場合のみ表示し、形式は est $X.XX
  • アラートのスタイル:C_ALERT +太字(\033[1m)で C_CTX_BAD と区別します
  • トークンの形式:awk で %.1fk(例:8500 → 8.5k)を使用し、1000 未満の値はそのまま表示します
  • ティアの形式:>=1M → (1M)、>=1000 → ({N}k)、それ以外はそのまま表示します。モデルのサフィックスとコンテキストの絶対値に使用します
  • モデルのティアサフィックス:context_window_size に基づき (1M) または (200k) を追加します。display_name に context、1M、または 200k がすでに含まれている場合はスキップします
  • コンテキストの絶対値:ctx 60% left (600k/1M) — 残りトークン数は remaining_percentage * context_window_size / 100 で計算します
  • フリーテキストをサニタイズします:制御文字を削除(tr -d '[:cntrl:]')し、agent.name、worktree.name、worktree.branch を 30 文字に切り詰めます
  • Worktree の置き換え:worktree.name がある場合、Directory と Git branch を [WT:{name}] {branch} に置き換えます(worktree.branch がない場合は [WT:{name}] — hook ベースの worktree)
  • レート制限:rate_limits がある場合に表示します。残りの割合(100 - used_percentage)に接尾辞「left」を付けて表示します。形式は 5h: {rem}% left · 7d: {rem}% left です。最も低い残り割合に応じて色を付けます — 40% 超は緑(C_CTX_OK)、20〜40% は黄(C_CTX_WARN)、20% 以下は赤(C_CTX_BAD)。しきい値はコンテキストの割合と一致します。OAuth ユーザーのみ対象です
  • レート制限の resets_at:抽出しますが、v1 では表示しません(ステータスラインには情報量が多すぎるため)
  • 描画順(通常):Directory | Git branch | Agent? | Model (tier) | Context % (abs) · Token Usage? · Cost? · Rate Limits?
  • 描画順(worktree):[WT:name] branch | Agent? | Model (tier) | Context % (abs) · Token Usage? · Cost? · Rate Limits?

スクリプトの構造

#!/bin/sh
input=$(cat)
# ... extract JSON fields ...

theme="${CLAUDE_STATUSLINE_THEME:-ansi-default}"
[ -n "${NO_COLOR:-}" ] && theme="none"

case "$theme" in
  catppuccin|catppuccin-mocha) # set C_* tokens with TrueColor values ;;
  dracula)          # ... ;;
  nord)             # ... ;;
  none)             # all C_* = "" ;;
  *)                # ansi-default: ANSI 16 colors ;;
esac

# ... build output using C_* tokens ...
if [ "$theme" = "none" ]; then
  printf "%s" "$out"
else
  printf "%b" "$out"
fi

出力例

Normal mode (1M context):
~/.../my-project | feat/auth | Opus 4.6 (1M) | ctx 60% left (600k/1M) · 85.0k/12.0k · est $18.12

Normal mode (200k context):
~/.../my-project | main | Sonnet 4.6 (200k) | ctx 30% left (60k/200k) · 120.0k/8.0k · est $3.50

With agent:
~/.../my-project | feat/auth | security-reviewer | Opus 4.6 (1M) | ctx 48% left (480k/1M) · est $0.12

Worktree mode:
[WT:fix-123] bugfix/issue-123 | Opus 4.6 (1M) | ctx 22% left (220k/1M) · 42.0k/8.0k · est $1.23

With rate limits (OAuth user, green):
~/.../my-project | feat/auth | Opus 4.6 (1M) | ctx 60% left (600k/1M) · 85.0k/12.0k · est $18.12 · 5h: 58% left · 7d: 82% left

Rate limits warning (yellow):
~/.../my-project | main | Opus 4.6 (1M) | ctx 30% left (300k/1M) · 5h: 25% left · 7d: 35% left

Rate limits critical (red):
~/.../my-project | main | Opus 4.6 (1M) | ctx 30% left (300k/1M) · 5h: 8% left · 7d: 55% left

display_name already has context info (no duplicate suffix):
~/.../my-project | main | Opus 4.6 (1M context) | ctx 60% left (600k/1M) · est $18.12

出力

成果物パス説明
StatusLine スクリプト~/.claude/statusline-command.shJSON 標準入力を受け取る POSIX シェルスクリプト

検証

スクリプトの生成後、以下を確認します。

  • ~/.claude/statusline-command.sh が存在し、実行可能である(chmod +x)
  • v2 テストに合格する:echo '{"model":{"display_name":"Opus 4.6"},"cwd":"/tmp/test","workspace":{"current_dir":"/tmp/test","project_dir":"/tmp/test"},"context_window":{"remaining_percentage":55,"used_percentage":45,"context_window_size":200000,"total_input_tokens":85000,"total_output_tokens":12000,"current_usage":{"input_tokens":8500,"output_tokens":1200,"cache_creation_input_tokens":5000,"cache_read_input_tokens":2000}},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false,"session_id":"test","version":"2.1.80","output_style":{"name":"default"},"rate_limits":{"five_hour":{"used_percentage":42.5,"resets_at":"2026-03-21T14:30:00Z"},"seven_day":{"used_percentage":18.2,"resets_at":"2026-03-25T00:00:00Z"}}}' | ~/.claude/statusline-command.sh
  • 出力に想定されるセグメント(ディレクトリ、モデル、コンテキスト%、トークン使用量 8.5k/1.2k)が含まれている
  • エージェントテスト:echo '{"model":{"display_name":"Opus 4.6"},"workspace":{"current_dir":"/tmp/test"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false,"agent":{"name":"security-reviewer"}}' | ~/.claude/statusline-command.sh に security-reviewer セグメントが表示される
  • ワークツリーテスト:echo '{"model":{"display_name":"Opus 4.6"},"worktree":{"name":"fix-123","branch":"bugfix/issue-123"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false}' | ~/.claude/statusline-command.sh で、ディレクトリ/ブランチの代わりに [WT:fix-123] bugfix/issue-123 が表示される
  • レート制限テスト:出力に緑色で 5h: 58% left · 7d: 82% left が含まれている
  • レート制限がない場合:echo '{"model":{"display_name":"Opus 4.6"},"workspace":{"current_dir":"/tmp/test"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false}' | ~/.claude/statusline-command.sh で、レート制限セグメントのない有効な出力が生成される(エラーなし)
  • v1 との後方互換性:echo '{"model":{"display_name":"Opus 4.6"},"workspace":{"current_dir":"/tmp/test"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false}' | ~/.claude/statusline-command.sh で、エラーのない有効な出力が生成される
  • テーマがユーザーの選択と一致している(スクリプト内のカラーコードを確認)
  • NO_COLOR=1 を指定すると、色のない出力が生成される

コメント