Skip to content

原文(日本語に翻訳)

ステータスライン JSON の workspace セクションに added_dirs を追加し、/add-dir コマンドで追加されたディレクトリを外部スクリプトに公開します。

原文(英語)

Added added_dirs to the statusline JSON workspace section, exposing directories added via /add-dir to external scripts.

概要

Claude Code のステータスライン出力(JSON 形式)の workspace セクションに、新しく added_dirs フィールドが追加されました。これにより、/add-dir コマンドでセッションに追加したディレクトリのリストを、外部スクリプトや自動化ツールから参照できるようになります。tmux のステータスバーや独自のモニタリングスクリプトなど、Claude Code の状態を外部から把握したい場合に役立ちます。

基本的な使い方

Claude Code のステータスラインは JSON 形式で出力できます。added_dirs フィールドは workspace オブジェクト内に含まれます。

bash
# ステータスライン JSON を取得(claude --output-format json を使用)
# セッション中に /add-dir でディレクトリを追加した場合、以下のような構造になります

{
  "workspace": {
    "cwd": "/home/user/project",
    "added_dirs": [
      "/home/user/other-project",
      "/home/user/shared-lib"
    ]
  }
}

実践例

tmux ステータスバーで追加ディレクトリを表示

bash
#!/bin/bash
# tmux-statusline.sh
# Claude Code のステータスライン JSON を取得して tmux に表示する

STATUS=$(claude --print-statusline-json 2>/dev/null)

if [ -n "$STATUS" ]; then
  ADDED_DIRS=$(echo "$STATUS" | jq -r '.workspace.added_dirs | length')
  CWD=$(echo "$STATUS" | jq -r '.workspace.cwd')

  if [ "$ADDED_DIRS" -gt 0 ]; then
    echo "Claude: $CWD (+${ADDED_DIRS} dirs)"
  else
    echo "Claude: $CWD"
  fi
fi

追加ディレクトリのリストを表示するスクリプト

bash
#!/bin/bash
# list-added-dirs.sh

STATUS=$(claude --print-statusline-json 2>/dev/null)
ADDED_DIRS=$(echo "$STATUS" | jq -r '.workspace.added_dirs[]' 2>/dev/null)

if [ -z "$ADDED_DIRS" ]; then
  echo "追加ディレクトリなし"
else
  echo "現在追加されているディレクトリ:"
  echo "$ADDED_DIRS" | while read -r dir; do
    echo "  - $dir"
  done
fi

Python スクリプトからの利用

python
#!/usr/bin/env python3
import subprocess
import json

def get_claude_added_dirs():
    """Claude Code セッションの追加ディレクトリを取得する"""
    result = subprocess.run(
        ['claude', '--print-statusline-json'],
        capture_output=True,
        text=True
    )

    if result.returncode != 0:
        return []

    try:
        status = json.loads(result.stdout)
        return status.get('workspace', {}).get('added_dirs', [])
    except json.JSONDecodeError:
        return []

# 使用例
added_dirs = get_claude_added_dirs()
print(f"追加ディレクトリ数: {len(added_dirs)}")
for d in added_dirs:
    print(f"  {d}")

/add-dir コマンドの基本的な使い方

ステータスラインに反映されるディレクトリは /add-dir コマンドで追加します:

# Claude Code セッション内で実行
/add-dir /home/user/other-project
/add-dir /home/user/shared-lib

# これらのディレクトリが added_dirs に現れる

注意点

  • セッションスコープadded_dirs はセッション内で追加されたディレクトリのみを反映します。セッションをまたいでは保持されません。
  • ステータスライン取得方法:ステータスライン JSON の取得方法は環境設定によって異なります。Claude Code の公式ドキュメントで最新の方法を確認してください。
  • 外部ツールとの連携:tmux、zsh プロンプト、VS Code などの外部ツールから Claude Code の状態を監視する際に活用できます。
  • フィールドの存在確認added_dirs が空のときは空配列 [] になります。null チェックよりも配列の長さをチェックすることを推奨します。

関連情報