原文(日本語に翻訳)
現在のディレクトリがリンクされたgit worktree内にある場合に設定されるworkspace.git_worktreeをステータスラインのJSON入力に追加しました。
原文(英語)
Added workspace.git_worktree to the status line JSON input, set when the current directory is inside a linked git worktree
概要
ステータスラインコマンドに渡されるJSON入力に、新しいフィールドworkspace.git_worktreeが追加されました。現在作業しているディレクトリがgit worktree(リンクされた作業ツリー)内にある場合、このフィールドにworktreeのパスがセットされます。通常のディレクトリではnullとなるため、worktreeでの作業かどうかをステータスラインで視覚的に識別できるようになります。
基本的な使い方
ステータスラインコマンドはJSON入力をstdinで受け取ります。workspace.git_worktreeフィールドを使用して、worktree環境であることを表示できます。
bash
#!/bin/bash
# ~/.config/claude/statusline.sh
INPUT=$(cat)
# workspace.git_worktree の値を取得
WORKTREE=$(echo "$INPUT" | jq -r '.workspace.git_worktree // empty')
if [ -n "$WORKTREE" ]; then
BRANCH=$(echo "$INPUT" | jq -r '.workspace.git_branch // "unknown"')
WNAME=$(basename "$WORKTREE")
echo "{\"text\": \"[worktree: $WNAME] $BRANCH\"}"
else
BRANCH=$(echo "$INPUT" | jq -r '.workspace.git_branch // "unknown"')
echo "{\"text\": \"$BRANCH\"}"
fijson
{
"statusLine": {
"command": "~/.config/claude/statusline.sh"
}
}実践例
worktreeを識別する色分き表示
bash
#!/bin/bash
INPUT=$(cat)
WORKTREE=$(echo "$INPUT" | jq -r '.workspace.git_worktree // empty')
BRANCH=$(echo "$INPUT" | jq -r '.workspace.git_branch // "unknown"')
if [ -n "$WORKTREE" ]; then
# worktree内はオレンジ色で表示
WNAME=$(basename "$WORKTREE")
echo "{\"text\": \"⎇ $BRANCH (WT: $WNAME)\", \"color\": \"orange\"}"
else
echo "{\"text\": \"⎇ $BRANCH\", \"color\": \"green\"}"
fi複数worktreeを使った並行開発の管理
git worktreeを使って複数のブランチを同時に開発している場合、どのworktreeで作業しているかをひと目で確認できます。
bash
# worktreeの作成例
git worktree add ../feature-auth feature/auth
git worktree add ../hotfix-123 hotfix/issue-123
# Claudeをworktree内で起動すると、
# ステータスラインに workspace.git_worktree が設定される
cd ../feature-auth
claudeステータスラインJSON入力の全フィールド確認
デバッグ用に受信しているJSONを確認する:
bash
#!/bin/bash
# stdin のJSONをファイルに保存して内容を確認
INPUT=$(cat)
echo "$INPUT" > /tmp/claude-statusline-debug.json
echo "{\"text\": \"debug: see /tmp/claude-statusline-debug.json\"}"JSONの構造例:
json
{
"workspace": {
"git_branch": "feature/my-feature",
"git_worktree": "/home/user/projects/myrepo-feature",
"cwd": "/home/user/projects/myrepo-feature/src"
},
"session": { ... }
}注意点
workspace.git_worktreeは、現在のディレクトリがリンクされたworktree(git worktree addで作成)内にある場合のみ設定されます。メインのリポジトリディレクトリではnullになります。- フィールドが
nullの場合の処理を適切に実装してください(上記例では// emptyでnullチェック)。 - git worktreeを使用しない場合は、このフィールドを無視して問題ありません。