/statusline(ステータスライン)

スラッシュコマンド
/statusline
ステータスライン
Claude Codeの画面下に常時表示される「画面下バー」を設定するためのスラッシュコマンド。コマンドの後ろに自然な日本語で「○○を出して」と頼むと、その内容を表示する小さなプログラム(.shファイル)を自動生成して、設定ファイルに登録するところまでやってくれる。コマンドだけ叩いた場合は、ターミナルで普段見えている入力待ち記号の設定を読み取って自動でバーを構成しようとする。

Claude Codeの画面下に「いま何のブランチか」「どのモデルを使っているか」「いくらかかっているか」を出しっぱなしにしたい人向け

ブランチ名・モデル名・累計コスト・コンテキスト残量みたいな「ずっと目に入っていてほしい情報」を画面下に出しておきたい場面で叩く。/statusline と打ったあとに「ブランチとコストを出して」のように自然な日本語で続けて頼むと、Claude Codeがプログラムを書いて ~/.claude/settings.json に登録してくれる。コマンドだけで叩くと、ターミナルで普段見えている入力待ち記号の設定を読み取って自動構成を試み、すでに設定済みなら現在の中身を表示する。「消して」と頼めば外せる。

Claude Codeの画面下に、自分が選んだ情報を出しっぱなしにする「画面下バー」を作るためのスラッシュコマンドが /statusline です。今のブランチ名、使っているモデル、累計いくらかかったか、コンテキストの残量。こういうのを毎回打ち込んで確認しなくても、画面の一番下に常に見える状態を作れます。

名前がよく似ている /status とは完全に別物で、こちらは「画面下バーを設定する」コマンド、向こうは「Settings画面(Statusタブ)を開く」コマンドです。ここで取り違える人がとても多い。

噛み砕くと

車のメーターパネルを自分でカスタマイズする話に近いです。標準だとスピードと燃料計しか出ていないところに、オイル温度、燃費、現在の走行モードを足して、運転中ずっと目に入る位置に並べておく。/statusline はこの「メーターパネルの追加配置」を Claude Code の画面下にやるためのスイッチです。

表示する内容は自分で決めます。Claude Code は画面下バーに表示する直前、自分が指定した小さなプログラムに「今どのモデルか/どのフォルダか/いくらかかってるか」というデータを渡します。プログラムはそれを受け取って、「[Opus] main 0.42ドル」みたいな1行を返す。Claude Code はその1行をそのまま画面下に出す。これだけです。

/statusline の前に、まず /status との違いを切り分ける

名前が似すぎているので、ここを最初に整理しておかないと、後ろの実演で確実に迷子になります。私もこの2つを最初混同しました。

/status は Settings 画面(Status タブ)を開くコマンドです。バージョン、ログイン中のアカウント、いま使っているモデル、接続状況が確認できる Settings 画面(Status タブ)を開きます。表示して閉じるまで画面が開いたままになります。画面下バーには何も追加されません。

一方 /statusline は「画面下に常に見えるバーを作る/変える」コマンドです。叩いた後に「ブランチとモデルとコストを出して」みたいに自然な日本語で続けて頼むと、Claude Code がプログラムを書いて、設定ファイルに登録するところまでやってくれます。後ろに何も書き足さずに /statusline だけ叩くと、ターミナルで普段見えている入力待ちの記号(プロンプト)の設定を読み取って、自動でバーを構成しようとします。公式ドキュメントの言う auto-configure from your shell prompt の挙動です。すでに設定済みなら現在の中身を表示します。

覚え方として、line がついている方が「画面下のラインを設定する」と紐づけておくと取り違えません。

「AIブログ作業フォルダで、ブランチとモデルとコストを出す」を実演する

具体題材として、私がいま実際にやっている題材を使います。AIブログ用の aisola-wordpress フォルダで作業するとき、画面下に main(今のブランチ)、Opus(今のモデル)、0.42ドル(このセッションで累計いくら)を表示しっぱなしにする、というセットアップです。

ステップ1: ターミナルで Claude Code を起動する

作業したいフォルダに移動してから claude と打って起動します。

$ cd ~/Desktop/aisola-wordpress
$ claude

ここで起動するフォルダがそのまま「Claude Code が今いる場所」になり、プログラムに渡されるデータの中の workspace.current_dir という項目にそのまま入ります。

ステップ2: /statusline を叩いて、何を出したいか日本語で頼む

チャット欄に /statusline と打ち、続けて自然な日本語で要望を書きます。

/statusline 画面下バーに、今のgitブランチ名、使ってるモデル、累計コストを出して。コストは小数点2桁のドル表示で。

するとClaude Code が裏で次の2つを同時にやってくれます。1つ目はプログラムの自動生成。2つ目はそれを ~/.claude/settings.json に登録するところまで。「自分でファイルを作って配置する」工程をまるごと省略できます。

ステップ3: 生成されたプログラムを覗いて、何が入ってるか見ておく

Claude Code は ~/.claude/statusline.sh あたりにファイルを作ります。場所は提案によって少し違う。中身はだいたいこういう形です。

#!/bin/bash
input=$(cat)
MODEL=$(echo "$input" | jq -r '.model.display_name')
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
BRANCH=$(git branch --show-current 2>/dev/null)
printf '[%s] %s | $%.2f\n' "$MODEL" "$BRANCH" "$COST"

ここで初心者がやりがちな勘違いを1個。このプログラムは「Claude Code が起動するたびに勝手に自分で書ける」と思いがちですが、違います。Claude Code は中身を生成するだけ。実際に動かすのはあなたのパソコンの bash です。だから後述の chmod がないと黙って失敗します。

ステップ4: 設定ファイルが書き換わっていることを確認する

~/.claude/settings.json を開くと、次のような statusLine セクションが追加されています。

{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh",
    "padding": 2
  }
}

ここまで自動です。/statusline 1回で、ファイル生成と設定登録の両方が片付きました。padding は左右の余白、refreshInterval は更新間隔の指定、hideVimModeIndicator はvimモード表示の制御です。普段は typecommand だけで十分。重い処理を入れる時だけ refreshInterval を長めに指定します。

ステップ5: プログラムに実行する許可を付ける

もし /statusline 経由で頼んだのに画面下に何も出てこない場合、9割これです。

$ chmod +x ~/.claude/statusline.sh

chmod +x は「このファイルを動かしていいよ」とパソコンに許可を出す操作です。これがないとプログラムは無音で失敗し、Claude Code は「statusline skipped」みたいな小さい通知だけ出して何もせず黙り込みます。

ステップ6: 画面下バーに反映されたか確認する

Claude Code に何でもいいから1メッセージ送ります。「テスト」とでも打てば十分。送信した直後に画面下のバーが更新され、こういう1行が出ているはずです。

[Opus] main | $0.42

反映されない場合のチェック順は決まっていて、(1) chmod +x 済みか、(2) プログラムを単独で動かしてみて出力が出るか、の2点です。動作確認は、ダミーのデータを流し込めばできます。

$ echo '{"model":{"display_name":"Opus"},"cost":{"total_cost_usd":0.42}}' | ~/.claude/statusline.sh

ここで [Opus] | $0.42 みたいな1行が返ってくれば、プログラム自体は問題なし。あとは Claude Code 側の再起動で大体直ります。

つまり /statusline は何をしてくれるのか

  • やってくれる: 自然な日本語で「○○を出して」と頼むと、それを表示する小さなプログラムを自動生成し、設定ファイルへの登録までやる。コマンドだけ叩いた場合はターミナルの入力待ち記号(プロンプト)の設定を読み取って自動構成を試み、すでに設定済みなら現在の中身を表示する。「消して」と頼めば設定から外す
  • やってくれない: プログラムを動かす許可を付ける作業。chmod +x は手で打つ。jq など必要な周辺ツールの自動導入もしない。バーが出ない時の自動診断もない
  • 意味が薄い場面: 1セッションで5分しか触らない使い方。バーを見るより前に終わる。あとシンプルに画面が狭いノートPC利用時は、バーが他の通知と重なってかえって読みにくくなることがある

使いどころ3シナリオ

シナリオ1: 複数のブランチを行き来して開発しているとき

料理ブログのリニューアルを進めていて、レシピ部分を直す作業ラインrecipe-redesignと、トップページのデザイン直しtop-redesignを並行で動かしている場面。/statusline でブランチ名を画面下に出しておくと、「あれ今どっちのブランチで作業してたっけ」が消えます。Claude Code に「これ保存しといて」と頼んだ時、まったく違うブランチに乗ってる事故を防げる。

シナリオ2: API課金の Claude Code を使っていて、月の予算が心配なとき

Claude Code を従量課金で使っている場合、長いセッションだと10ドル20ドルあっという間に積み上がります。/statuslinecost.total_cost_usd を出しておくと、画面下にずっと「$3.42」みたいに見えてる状態にできる。「今のうちにセッション切ろう」と判断しやすい。月10ドル超えたら困る個人利用のときは、これだけでも導入価値があります。

シナリオ3: コンテキストが膨らんで動作が重くなる前に区切りたいとき

家計簿アプリを作る作業で、Claude Code に長文の仕様書をいくつも読ませた後の状況。context_window.used_percentageという、コンテキストウィンドウの何%使ったかを表す数字をバーに出しておくと、80%を超えたあたりで /clear/compact で区切る判断が早くできます。気づいた時には95%超えてた、を防ぐためのインジケータとして優秀です。

初心者が踏みやすい落とし穴

  • /status/statusline を間違えるline が付いていない方は Settings 画面(Status タブ)を開く操作で、画面下バーには何も追加されない。付いている方は「画面下バーを設定する」操作。叩いた後の挙動が完全に違うので、毎回意識して打ち分ける必要があります
  • プログラムに動かしていい許可を付け忘れるchmod +x ~/.claude/statusline.sh を忘れると Claude Code は黙ってバーを出さない。エラー表示も小さいので気づきにくい
  • 重い処理を書きすぎてバーが更新されなくなる。Claude Code はメッセージ送信のたびに画面下バーを更新しますが、更新が連続すると300ms待ってからまとめて1回だけプログラムを動かします。これが debounce の挙動です。プログラムが重くてまだ動いている間に次の更新が来ると、動きかけのプログラムはキャンセルされます。git log でフォルダ全履歴をなめるような重い処理を書くと、バーが固まったり表示が途切れたりします。重い情報を出したい時は5秒に1回だけ /tmp/... に保存して使い回すか、settings.jsonrefreshInterval で更新間隔を指定します
  • 相対の場所指定で書いてしまうsettings.jsoncommand./statusline.sh みたいに書くと、Claude Code がどのフォルダから動かしたかで挙動が変わる。必ず ~/.claude/statusline.sh のように ~ から始めるか、絶対の場所指定で書く
  • /statusline をコマンドだけ叩いた時の挙動を勘違いする。後ろに何も書き足さないと、ターミナルの入力待ち記号(プロンプト)の設定を読み取って自動で構成しようとします。すでに設定済みなら現在の中身を表示。「ブランチとコストを出して」みたいな自然な日本語を続けて打つのが、自分で中身を決めたい時の使い方です
  • jq が入ってないパソコンで使い始める。公式exampleの多くが jq 前提。Macなら brew install jq、Ubuntuなら sudo apt install jq で先に入れておく。なければ Python や Node.js でデータを読む書き方に切り替える
  • Windowsで bash 用プログラムを動かそうとする。Git Bash が入っていれば動くが、入ってない環境では PowerShell 用の .ps1 書き方に変える必要があります。家族や同僚と使い回すプログラムなら、最初からOSを聞いておく

書き方

/statusline 画面下バーに表示したい内容を自然な日本語で続けて書く

やってみるとこうなる

入力

/statusline 画面下バーに、今のgitブランチ名、使っているモデル、累計コストを出して。コストは小数点2桁のドル表示で。

出力例

Claude Codeが ~/.claude/statusline.sh というプログラムを自動生成し、~/.claude/settings.json に statusLine セクションを書き加える。次のメッセージ送信から画面下バーに「[Opus] main | $0.42」のような1行が表示される。プログラムを動かす許可(chmod +x)は手動で付ける必要がある。

このページに出てきた言葉

画面下バー
Claude Codeの画面の一番下に常に表示される1〜2行の情報枠。自分でプログラムを書いて中身を決められる
スクリプト
ターミナルで動かす命令を1ファイルにまとめた小さなプログラム。拡張子は普通 <code>.sh</code>
JSON形式
プログラム同士がデータをやりとりする時によく使う、波カッコと文字列で書かれたデータの書き方
stdin / stdout
プログラムへの入力と出力。Claude Codeはプログラムの入力にデータを流し込み、プログラムが出力した文字列を画面下バーに表示する
プロンプト
ターミナルで普段見えている入力待ちの記号。<code>$</code> や <code>%</code> の前のユーザー名・フォルダ名のあれ。<code>/statusline</code> をコマンドだけで叩くと、この設定を読み取って自動でバーを構成しようとする
jq
ターミナルでデータの中から欲しい部分だけ取り出すための小さなツール。Macなら <code>brew install jq</code> で入る
chmod +x
ファイルに「動かしていい」という許可を付ける命令。これを付け忘れるとプログラムは無音で失敗する
debounce(300ms)
更新が連続して来たとき300ms待ってからまとめて1回だけプログラムを動かすデバウンス処理のこと。プログラムが動いている間に次の更新が来るとキャンセルされる。スクリプトは速く保つのがコツ
ANSIエスケープ
ターミナル画面で文字に色を付けたりするための特殊な記号。<code>\033[32m</code>で緑、<code>\033[0m</code>でリセット

関連項目

公式ドキュメント

https://code.claude.com/docs/en/statusline

-

← 戻る