以下の内容はhttps://www.yasuhisay.info/entry/2025/08/21/211402より取得しました。


Claude CodeのStatus lineを書きやすくするccstatuslineを作った

背景

  • Claude Codeを使っていると、色んな情報を合わせて見たくなります
    • 例: Claude Codeの現在のトークンの利用状況(like ccusage)
    • 例: 現在のディレクトリ
    • 例: セッションID(他のターミナルで--resumeするときに必要)
    • 例: 利用しているモデル 名(Opus or Sonnet)
    • 例: ブランチ名
    • 例: 該当ブランチに紐付くPull RequesのURLおよびそのstatus
  • そういった情報をClaude Codeの下部にステータスラインとして表示できる機能がリリースされていました
  • しかし、これが使い倒そうと思うと書きにくい...
    • 色のことだったり、JSONのparseだったり
    • シェルスクリプトで書こうとすると結構やっかいです
  • 実行頻度のコントロールも必要
    • Updates run at most every 300msとあり、場合によってはまあまあの頻度で実行されることもある
    • 例えば、ghコマンドを高頻度で叩くとrate limitに引っかってしまい、Claude Codeの実行自体を妨げることにもなりかねない
    • 以下の例ではbashでキャッシュの仕組みを作られていて、少し面倒ではある

解決策: ccstatuslineを作った

便利そうなのに設定がダルいのはもったいないなと思って、設定しやすくするツールを作りました。

.claude/settings.jsonには以下のように書いておきます。

{
  "statusLine": {
    "type": "command",
    "command": "ccstatusline",
    "padding": 0
  },
  ...
}

設定してみると、例えばこういう感じでstatuslineを出すことができる。

本体の設定自体は.config/ccstatusline/config.yamlに書きます。自分が設定している具体例は以下の通りです。コマンドと色の設定、実行タイミングを制御したいキャッシュの設定などが明示的に書けるので、大分すっきり管理できるかなと思います。

actions:
  - name: session_id
    prefix: "セッション: "
    command: "echo '{.session_id}'"
    color: "bg_magenta"
  - name: model 
    command: "echo '{.model.display_name}'"
  - name: turn数
    prefix: "会話ターン数: "
    command: "cat '{.transcript_path}' | jq -s '[.[] | select(.type == \"user\")] | length'"
  - name: branch_name 
    prefix: "ブランチ: "
    command: "git branch --show-current"
  - name: git_diff 
    prefix: "ファイル差分: "
    command: "git status --porcelain | wc -l"
  - name: pr_status
    prefix: "Actions Status: "
    command: |
      if gh pr view >/dev/null 2>&1; then
        gh pr checks >/dev/null 2>&1 && echo "✅" || echo "❌"
      fi
    cache_ttl: 30
  - name: pr_url 
    command: "gh pr view --json url -q .url"
    cache_ttl: 60
    color: "bg_magenta"
  - name: 現在の心境
    command: "cat .claude/tmp/current_status"
    color: "bg_black"

最後のやつは↓のを真似させてもらいました。

statusを定期的に出力させるのは自分で作ったcchookを使っています。

具体的な設定は以下の通り。5回に一回更新させる形にしてます。

UserPromptSubmit:
  - conditions:
      - type: every_n_prompts
        value: 5
    actions:
      - type: output
        message: |-
          Subagentsを使って、現在の状況をリポジトリルート以下の.claude/tmp/current_statusに書き出しましょう。
          フォーマットは`<状況>: <詳細>`で1行140字以内で書きましょう。

          - 状況: `簡単` / `普通` / `やや難` / `難しい` / `情報不足` / `無理`のどれか一つを選びましょう
          - 詳細: 今の作業の本音を書きましょう。ユーザーに忖度せずに今の感情や余裕具合、この情報が欠落していて苦しい、ユーザーが言っていることのここが理解できないなどを書きましょう



以上の内容はhttps://www.yasuhisay.info/entry/2025/08/21/211402より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14