mcpField
C
ce-session-inventory

ce-session-inventory

github.com/everyincエージェントワークフロー25.8k129 回インストール今日更新
リポジトリ

ce-session-inventory について

ce-session-inventoryは、Claude Code、Codex、Cursorのセッションファイルを探し、メタデータをJSONLで出力するエージェント向けスキルです。各プラットフォーム固有の保存場所を意識せず、期間、プラットフォーム、作業ディレクトリ、キーワードで絞り込めます。

主な機能

  1. 013つのプラットフォームのセッションを検出
  2. 02セッションメタデータをJSONLで出力
  3. 03期間とプラットフォームで絞り込み
  4. 04Codexのセッションを作業ディレクトリで絞り込み
  5. 05キーワードの出現数でセッションを順位付け

活用シーン

  1. 01プロジェクトの最近のセッションを一覧化
  2. 02検索対象を1つのプラットフォームに限定
  3. 03トピックのキーワードを含むセッションを検索

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/everyinc/compound-engineering-plugin --skill ce-session-inventory

インストール後、Claude Code で/ce-session-inventoryを入力して読み込まれたか確認します。

同梱ファイルscripts/discover-sessions.shscripts/extract-metadata.py

詳細

セッション一覧

エージェント向けのプリミティブです。Claude Code、Codex、Cursor のセッションファイルを検出し、セッションのメタデータを JSONL 形式で出力します。

このスキルは、セッション履歴を調査するエージェントが、ディスク上のセッションストアの構成や各プラットフォームの JSONL 形式を把握しなくてもよいようにするものです。その知識は scripts/ 配下のスクリプトが管理します。

引数

スペース区切りの位置引数です。

  1. <repo> — リポジトリのフォルダー名(例:my-project)。Claude Code と Cursor ではディレクトリの照合に、Codex セッションでは CWD フィルターとして使用します。
  2. <days> — スキャン対象期間(日数。例:7)。この日数より古いセッションファイルはスキップされます。
  3. <platform> (任意) — claude、codex、cursor のいずれかです。省略すると、3 つすべてを検索します。
  4. --keyword K1[,K2,...] (任意) — ファイルの全内容に、カンマ区切りのキーワードのいずれかが一致するセッションに絞り込みます(一致判定は大文字と小文字を区別しない部分文字列検索)。出力される各セッション行に match_count と keyword_matches({K: N, ...})フィールドが追加され、_meta 行に files_matched が追加されます。関連性の高いセッションを多数の中から順位付けする場合は、ファイルごとに grep -l を実行する代わりに使用してください。

実行

このスキル自身の scripts/ ディレクトリから、検出とメタデータ取得のパイプラインを実行します。

bash scripts/discover-sessions.sh <repo> <days> [--platform <platform>] \
  | tr '\n' '\0' \
  | xargs -0 python3 scripts/extract-metadata.py --cwd-filter <repo>

キーワードで絞り込むには、extract-metadata.py の呼び出しに --keyword K1[,K2,...] を追加します。キーワードのスキャンではメタデータの先頭部分だけでなくファイル全体を読み込むため、メタデータのみを取得する実行より時間がかかります。多くのセッションからトピックに基づいて候補を順位付けする必要がある場合に使用し、通常は使用しないでください。

標準出力をそのまま返してください。セッションごとに JSON オブジェクトが 1 つ出力され、最後に _meta 行が続きます。呼び出し元は JSONL を直接解析するため、言い換えたり、再フォーマットしたり、要約したりしないでください。

検出されたファイルがない場合も、パイプラインはクリーンな _meta 行(files_processed: 0)を出力します。そのまま返してください。

出力形式

各セッション行は JSON オブジェクトです。全プラットフォーム共通のフィールドは次のとおりです。

  • platform — claude、codex、または cursor
  • file — セッション JSONL の絶対パス
  • size — ファイルサイズ(バイト単位)
  • ts — セッション開始タイムスタンプ(ISO 8601)
  • session — セッション識別子

プラットフォーム固有のフィールドは次のとおりです。

  • Claude Code では branch(Git ブランチ)と last_ts(最後のメッセージのタイムスタンプ)が追加されます。
  • Codex では cwd(作業ディレクトリ)、source、cli_version、model、last_ts が追加されます。
  • Cursor にはファイル内のタイムスタンプやメタデータがありません。ts はファイルの mtime から、session はそのファイルを含むディレクトリ名から取得されます。

最後の _meta 行には files_processed、parse_errors が含まれ、必要に応じて filtered_by_cwd(CWD フィルターで除外された Codex セッションの数)と files_matched(キーワードフィルターで残ったセッションの数。--keyword が指定された場合のみ表示)が含まれます。

--keyword が指定されている場合、各セッション行にはさらに次の項目が含まれます。

  • match_count — すべてのキーワードにわたる出現回数の合計
  • keyword_matches — キーワードごとの一致回数。例:{"middleware": 4, "auth": 12}

match_count: 0 のセッションは出力から除外されます。

エラー処理

検出スクリプトでエラーが発生した場合(ホームディレクトリを読み込めない、アクセス権限のエラーなど)は、そのエラーを呼び出し元に伝えてください。git log、ファイル一覧、その他の情報源で代替しないでください。このスキルが提供するのはセッションメタデータのみです。

_meta の parse_errors が 0 より大きい場合は、JSONL をそのまま返してください。部分データの扱いは呼び出し元が判断します。

コメント