← ClaudeAtlas

session-nudgelisted

別の稼働中セッションについて相談したいときに使う。対象セッションを選んで相談したいことを伝えると、その履歴を読んで外から客観視し、簡単に答える。相談の結果、対象セッションへ送ることになったら人間の裁可を経て SendMessage で送る。tmux M-m のポップアップ端末から呼び出す想定。
yktsnet/dotfiles-public · ★ 1 · Testing & QA · score 68
Install: claude install-skill yktsnet/dotfiles-public
# session-nudge 対象セッション(以下 A)を、この場(以下 B)から外部の読み手として客観視するための**相談の場**。 判定機ではない。ズレの有無を裁定するのではなく、user が持っている違和感に付き合う。 `M-m` 経由なら fzf での対象選択だけが済んでおり、`/session-nudge target=<name>` の形で渡ってくる。 相談内容の入力はポップアップでは行わない(素のシェルの `read` では日本語が打てない)。 ## 手順 ### 1. 対象を選ぶ(`target` が無い場合のみ) `ListAgents` で peer 一覧を出し、選ばせる。自分自身は除外する。 `sessionId` が要るときは `claude agents --json | jq -r '.[] | select(.kind=="interactive") | [.name,.status,.cwd,.sessionId] | @tsv'`。 ### 2. 何について相談したいかを聞く `target` が渡っていても**必ず聞く**。「A の何について相談したいで���か」と一言尋ねて待つ。 履歴を読むのはその後。ここが手順3以降のレンズになる。 ### 3. 相談内容をレンズに履歴を読む `sessionId` がそのままファイル名になる。 ```sh jq -r 'select(type=="object" and (.type=="user" or .type=="assistant")) | (.type[0:1]) + "| " + ((.message.content // "") | if type=="string" then . else ([.[] | if .type=="text" then .text elif .type=="tool_use" then "<TOOL "+.name+" "+((.input|tostring)[0:200])+">" elif .type=="tool_result" then "<RESULT "+(((.content//"")|tostring)[0:250])+">" else "" end] | join(" ")) end)' \ ~/.claude/projects/*/<sessionId>.jsonl | grep -v '^.| *$' ``` 長ければ `head` / `tail` で冒頭と直近を押さえる。**user の生の発言を優先して読む** (A が何を頼まれたかは、A の要約ではなく user の原文にしかない)。 `tool_result` も `user` 型で入るので、絞るときは `text` ブロックの有無で判定する。 `ctx` は使わない。`ctx_events.occurred_at_ms` はインポート時刻で埋まり、 全セッションが同一値になるため「直近」の並べ替えに使えない。 B も同じモデル・同じ規則で動くので、放っておけば A と同じ穴に落ちる。担保は1つ: **A の結論を根拠に使わない。A が見た一次情報(user の原文・ファイル・コマンド出力)に自分で当たる。** ### 4. 軽く客観視して返す ここが本体。返