session-discovery について
session-discovery は、Claude Code、Codex、Pi の作業セッションを探して評価するエージェントスキルです。複数環境を横断する検索と証拠の検証手順を示し、再開可能なセッションの特定も支援します。
主な機能
- 01Claude Code、Codex、Pi の記録を検索
- 02Git 履歴で候補を絞り込み
- 03JSONL 記録を対象指定で検索
- 04セッションのメタデータと時刻を検証
- 05候補を評価し不確実性を明示
- 06有力候補の再開コマンドを準備
活用シーン
- 01リポジトリ変更を実装したセッションの特定
- 02初回作業と後続レビューの判別
- 03サブエージェント記録で委任作業を発見
- 04再開するセッションの選定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rubenflamshepherd/ ruben-agent-skills --skill session-discoveryインストール後、Claude Code で/session-discoveryを入力して読み込まれたか確認します。
詳細
セッションの検出
現在の会話がいずれか1つのハーネスで実行されている場合でも、サポート対象のすべてのハーネスを検索します。
トランスクリプトの保存場所
- Claude Code
- プロジェクトのトランスクリプト:
~/.claude/projects/**/*.jsonl - プロンプトのインデックス:
~/.claude/history.jsonl - 委任された作業:ネストされた
<parent-session-id>/subagents/*.jsonl
- プロジェクトのトランスクリプト:
- Codex
- アクティブなトランスクリプト:
~/.codex/sessions/**/*.jsonl - アーカイブ済みのトランスクリプト(存在する場合):
~/.codex/archived_sessions/**/*.jsonl
- アクティブなトランスクリプト:
- Pi
- トランスクリプト:
~/.pi/agent/sessions/**/*.jsonl - ディレクトリはスラッグ化された作業ディレクトリごとにまとめられており、各ファイル名には開始時刻とセッション ID が含まれています。
- トランスクリプト:
これらは既定の保存場所であり、ほかに保存先が存在しないことを示すものではありません。ハーネス固有の環境変数による上書きがある場合はそれに従い、既定のディレクトリが存在しない場合は、インストール済みのハーネス設定を調べます。
検索ワークフロー
- リクエストから特徴的な手がかりをいくつか抽出します。リポジトリ名やプロジェクト名、ユーザーの表現や音声文字起こしで想定される言い換え、ファイルパス、エンドポイント名、テクノロジー、コミットハッシュ、コミットメッセージの文言などです。
- リポジトリを特定できる場合は、まず Git のログとリフログを調べます。コミット日時、変更されたパス、コミットメッセージから、広範なトランスクリプト検索の対象を絞り込み、初回の実装と後続のレビューや修正作業を区別しやすくなります。
- すべてのトランスクリプトのルートを大文字と小文字を区別せずに検索します。まず
rg -i -lを使い、候補となるファイル名だけをコンテキストに取り込みます。Claude Code のプロンプトとセッション ID をすばやく対応付けるために、~/.claude/history.jsonlも含めます。絞り込みすぎた検索式を1つ使うのではなく、条件を絞った検索を複数回実行します。 - 候補となる JSONL ファイルは、対象を絞った
jqの射影で調べます。ユーザーとアシスタントのテキスト、ツール呼び出しの引数、委任タスクのプロンプト、ファイルへの書き込み、コマンド入力、サブエージェントのトランスクリプトを検索します。1つのフィールドを調べるためだけに JSONL の行全体を出力しないでください。ツールの結果やモデルの推論により、1行が非常に長くなることがあります。 - 内部のタイムスタンプとセッションメタデータに照らして候補を検証します。ファイルの更新日時だけを頼りにしないでください。セッションの再開によって古いトランスクリプトが更新されたり、長期間続くセッションが複数の日付にまたがったりすることがあります。
- 該当する記録に元の作業が含まれているのか、それともその作業への言及だけなのかを確認します。ユーザーが最初に依頼した内容、関連ファイルを作成したツール呼び出し、対応する Git コミット、実装内容を説明する完了報告は、有力な証拠です。
- 残った候補を順位付けし、最初に見つかったキーワード一致を無条件に選ぶのではなく、不確実性も報告します。
非常に大規模な履歴を検索する場合は、内容を読む前に、ハーネス、リポジトリ、ファイル名に含まれる開始日、または Git から特定した日付で絞り込みます。
ハーネス固有の解釈
Claude Code
親トランスクリプトは通常、~/.claude/projects/<encoded-cwd>/<session-id>.jsonl にあります。Claude Code では、実際の実装を <encoded-cwd>/<parent-session-id>/subagents/<agent-id>.jsonl に委任することがあります。最も有力な証拠がサブエージェントにある場合は、両方のパスを示し、再開可能な会話に該当する親セッションを明記します。~/.claude/history.jsonl はユーザーが入力したプロンプト、プロジェクトのパス、セッション ID のインデックスであり、トランスクリプト全体ではありません。
コンパクションや継続により、重複するコンテキストを含む、相互に関連したファイルが複数残る場合があります。内部の記録と Git のタイミングから、元の作業を実施したことが確認できるセッションを優先します。
Codex
Codex のロールアウトファイルは、年/月/日のディレクトリの下にまとめられています。権威あるセッション ID、元の cwd、およびソースを確認するには、session_meta レコードを読みます。サブエージェントには個別のロールアウトファイルがある場合があります。可能であれば、そのメタデータを使って親セッションとの関係を特定します。アクティブなルートとアーカイブ済みのルートの両方を検索し、ツールのアクティビティを証拠として使う際は、関数呼び出しの出力レコードを別個のアクションとして数えないようにします。
Pi
権威ある ID、開始時刻、cwd を確認するには、先頭の session レコードを読み取ってください。Pi のトランスクリプトは、エントリー ID と parentId でつながったツリー構造になっており、分岐後に破棄されたブランチが残る場合があります。破棄されたブランチ上でテキストやツール呼び出しが見つかった場合も、その議論が行われた証拠にはなりますが、確信度に影響する場合はブランチの曖昧さを明示してください。並列のツール呼び出しは、1 つのアシスタントメッセージ内の複数の toolCall パーツとして表示されます。
結果の形式
有力候補ごとに、次の情報を提示してください。
- ハーネス;
- 現地の日付と時刻;
- 元の作業ディレクトリ;
- セッション ID;
- 親トランスクリプトのパス;
- 関連するサブエージェントのパス(該当する場合);
- 一致を示す簡潔な根拠;
- 元の実装セッションか、後続のレビュー、修正、デプロイ、フォローアップのセッションか;
- 確信度または残る曖昧さ。
最有力の候補を先頭にしてください。有用な場合に限り、妥当な代替候補も挙げてください。
セッションの再開
十分な確信を持って推奨できる有力候補が特定できたら、ユーザーが明示的に不要だと言っていない限り、再開コマンドを自動的に準備してください。別途依頼されるのを待たないでください。複数の候補が残り、真に曖昧な場合は、どれかを選ばずに曖昧さを報告し、ユーザーの選択を待ってください。
- 現在のシェルから推測せず、セッションのメタデータから元の作業ディレクトリを取得してください。
- インストール済みハーネスの現在の再開構文を確認してください。
- 元の作業ディレクトリに移動して、選択したセッションを再開するシェルコマンドを 1 つ準備してください。
- 想定される権限およびスリープ防止の動作を維持するため、設定済みのエイリアスを使用してください。Claude Code では
vamos、Codex ではletsgo、Pi ではpiを使います。権限バイパスの基盤となるフラグを別途記述しないでください。 pbcopyを使ってコマンドを macOS のクリップボードにコピーし、貼り付ける準備ができたことをユーザーに伝えてください。回答にシェルコマンドを記載しないでください。
一般的なコマンド形式は vamos --resume <session-id>、letsgo resume <session-id>、pi --session <transcript-path> ですが、インストール済み CLI のヘルプを優先してください。
プライバシー
セッション履歴には、認証情報、プライベートなプロンプト、メールの内容、大量のツール出力が含まれている場合があります。セッションを特定するために必要な根拠だけを公開してください。トークン、秘密情報、無関係なプライベート会話の内容、機密性のあるツール出力は決して再掲しないでください。