statusline-config について
statusline-config は、Claude Code の `statusline-command.sh` を設定するスキルです。表示項目とテーマを選び、スクリプトを作成して検証します。
主な機能
- 01ステータスライン項目の切り替え
- 02カラーテーマの選択
- 03モデルとコンテキスト情報の表示
- 04コストとレート制限の表示
- 05シェルスクリプトの作成と検証
活用シーン
- 01ステータスラインへのトークン使用量の追加
- 02ステータスラインの配色変更
- 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_dir | ON | 深い階層のパスを省略します:~/.../last-dir |
| Git ブランチ | シェルの git | ON | --no-optional-locks、5 秒間キャッシュ |
| エージェント | agent.name | ON(条件付き) | 存在する場合に表示します。色:C_MODEL |
| モデル | model.display_name + context_window.context_window_size | ON | スマートなティア接尾辞:Opus 4.6 (1M) — display_name にコンテキスト情報がすでに含まれる場合は自動的に省略します |
| コンテキスト % | context_window.remaining_percentage + context_window_size | ON | ctx 60% left (600k/1M) — 緑:40% 超、黄:20~40%、赤:20% 以下 |
| トークン使用量 | context_window.total_input_tokens + total_output_tokens | ON(条件付き) | セッション累計 {in}k/{out}k。色:C_COST |
| コスト | cost.total_cost_usd | ON | 0.005 ドル以上の場合に表示します。est $X.XX |
| レート制限 | rate_limits.five_hour.used_percentage + seven_day.used_percentage | ON(条件付き) | 5h: 85% left · 7d: 82% left — 残りの割合(100 - 使用率)を表示します。色のしきい値はコンテキスト % と同じです:緑:40% 超、黄:20~40%、赤:20% 以下。OAuth ユーザーのみ |
| ワークツリー | worktree.name + worktree.branch | ON(条件付き) | [WT:{name}] {branch}、ブランチがない場合は [WT:{name}] を表示します。存在する場合はディレクトリと Git ブランチを置き換えます。色:C_BRANCH |
完全な JSON スキーマについては、json-schema.md を参照してください。
テーマ
| テーマ | 種類 | デフォルト | 備考 |
|---|---|---|---|
ansi-default | ANSI 16 | ✅ | 安全なフォールバック。どこでも動作します |
catppuccin-mocha | TrueColor | — | 推奨 — パステルカラー、WCAG AA >=4.5:1 |
dracula | TrueColor | — | 鮮やかな紫とピンクのアクセント |
nord | TrueColor | — | 北極をイメージした青と落ち着いた色調 |
none | — | — | 色なし(NO_COLOR によって自動的に有効になります) |
次の方法で切り替えます:export CLAUDE_STATUSLINE_THEME=catppuccin-mocha
トークンから 16 進数カラーへの完全な対応表については、themes.md を参照してください。
セマンティックトークン
スクリプトでは、色をハードコードする代わりにセマンティックトークンを使用します。
| トークン | 役割 | 例 |
|---|---|---|
C_CWD | ディレクトリパス | 青/サファイア |
C_BRANCH | Git ブランチ名 | マゼンタ/モーブ |
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 を削除」、「色なし」)→ 対話形式のフロー:
- 現在のスクリプトを読みます:
cat ~/.claude/statusline-command.sh - 有効/無効にするセグメントを尋ねます(AskUserQuestion の multiSelect)
- テーマの設定を尋ねます(テーマの選択肢を含む AskUserQuestion)
- Script Rules と themes.md の選択したテーマに従ってスクリプトを生成します
~/.claude/statusline-command.shに書き込みます- 検証します:
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.sh | JSON 標準入力を受け取る 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を指定すると、色のない出力が生成される