原文(日本語に翻訳)
ステータスライン 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
fiPython スクリプトからの利用
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チェックよりも配列の長さをチェックすることを推奨します。