mcpField
L
ln-002-session-analyzer

ln-002-session-analyzer

github.com/levnikolaevichエージェントワークフロー584172 回インストール3 日前に更新
リポジトリ

ln-002-session-analyzer について

ツールエラー、作業プロセス、コミュニケーション、スコープ逸脱など10の観点から、単一のエージェントセッションを調べる独立したスキルです。発見事項をスキル、ツール、フック、プロンプトへの具体的な改善策に結び付けます。

主な機能

  1. 01現在または最近のセッションを分析
  2. 0210の行動観点を確認
  3. 03ツールエラーと無駄を特定
  4. 04発見事項を具体的な修正に対応
  5. 05指定したスキルに焦点を設定

活用シーン

  1. 01完了したタスクのセッションを振り返る
  2. 02ツールやフックの問題を診断
  3. 03スキル実行後に手順を改善

MCP 対応

MCP接続は必須ではありません。hex-lineは大きなセッションログやリポジトリファイルの処理を効率化できますが、MCPが使えない場合も内蔵ツールで分析を続けます。

インストール

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

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-002-session-analyzer

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

同梱ファイルreferences/meta_analysis_protocol.md

詳細

パス: ファイルパス(references/、../ln-*)は、このスキルディレクトリからの相対パスです。

セッションアナライザー(スタンドアロンユーティリティ)

タイプ: スタンドアロンユーティリティ
カテゴリー: 0XX 共有

セッションを分析して、エラー、非効率な点、改善の機会を特定します。スキル、ツール、フック、コミュニケーションスタイルに対する、実行可能な改善策を提示します。

範囲: 1つのセッションを対象とした詳細分析(10の観点)です。プロトコルのセルフ監査より広く、/audit-sessions による一括分析より狭い範囲です。 スキルのセルフ監査については、references/meta_analysis_protocol.md §7 を参照してください。複数日にわたるパターンについては、/audit-sessions を使用してください。


このスキルを使用するタイミング

  • タスクの完了後 — 問題点と改善方法を確認します
  • 定期的に — 最近のセッションを監査してパターンを見つけます
  • スキルの実行後 — スキルの指示がどれほど適切に機能したかを分析します
  • ツールやフックの問題をデバッグするとき — セッションデータから根本原因を見つけます

入力

$ARGUMENTS:

  • (空) — 現在のセッション(会話のコンテキスト)を分析します
  • recent — エージェント(Claude、Codex)ごとに最新の JSONL セッションをスキャンします
  • {skill-name} — セッション内での、そのスキルの実行に分析対象を絞ります

hex-line は、大きなローカルセッションログやリポジトリファイルを扱う場合のオプションの高速化手段です。MCP を利用できない場合は、組み込みの Read/Grep/Glob/Bash を使用して続行してください。このスキルは MCP の接続状況によって処理を中断してはなりません。


分析の観点

#観点スキャン対象改善対象
D1ツールエラーNOOP_EDIT、TEXT_NOT_FOUND、ハッシュの不一致、範囲外SKILL.md の手順 — パスやアンカーを追加
D2ツールの無駄アウトラインを確認せずに全体を読み込む、読み込みの繰り返し、bash へのフォールバックSKILL.md — 「まずアウトラインを確認」、MCP ツールを明記
D3プロセスの問題3回以上のツールループ、リトライの連発、行き詰まり、対象の誤りSKILL.md のフェーズ — 作業を分割
D4スクリプトの抽出実行のたびに場当たり的な bash/python スクリプトを作成references/scripts/
D5フックと権限フックによるブロック、権限拒否、MCP ではなく組み込み機能を使用フック設定、allowed-tools
D6コミュニケーション過剰な説明、状況報告の欠落、不要な確認CLAUDE.md の設定、スキルの出力に関する注記
D7意思決定の質方針転換までの行き詰まり、試行錯誤、エラー検出の遅れSKILL.md の判断ツリー、手順の明確さ
D8コンテキストの負荷同じファイルの再読込、解決済みの内容を再質問、スレッドの喪失キャッシュに関する注記、簡潔な指示
D9サブエージェントの品質結果が空、タイムアウト、範囲が広すぎるプロンプトエージェントのプロンプト、タイムアウト設定
D10スコープの逸脱目標からの逸脱、意図しない拡大、理由のない方針転換スコープのガード、目標の確認

フェーズ 1:セッションデータの収集

$ARGUMENTS に基づいてデータソースを決定します。

現在のセッション(引数が空の場合)

会話のコンテキストを直接スキャンします。すべてのツール呼び出し結果、エラー、メッセージを参照できます。

最近のセッション(引数が recent の場合)

エージェントごとに最新のセッションを見つけます。

echo "=== LATEST SESSIONS ==="

echo "## Claude"
CLAUDE_LATEST=$(stat -c '%Y %n' ~/.claude/projects/*/*.jsonl 2>/dev/null | sort -rn | head -1 | cut -d' ' -f2-)
[ -n "$CLAUDE_LATEST" ] && echo "  $CLAUDE_LATEST ($(wc -l < "$CLAUDE_LATEST") lines)" || echo "  No sessions found"

echo "## Claude Active Sessions"
for f in "$HOME/.claude/sessions"/*.json; do
  [ -f "$f" ] || continue
  PID=$(basename "$f" .json)
  kill -0 "$PID" 2>/dev/null && echo "  ACTIVE: $(cat "$f")" || echo "  STALE: PID=$PID"
done

echo "## Codex"
CODEX_LATEST=$(stat -c '%Y %n' ~/.codex/sessions/????/??/??/rollout-*.jsonl 2>/dev/null | sort -rn | head -1 | cut -d' ' -f2-)
[ -n "$CODEX_LATEST" ] && echo "  $CODEX_LATEST ($(wc -l < "$CODEX_LATEST") lines)" || echo "  No sessions found"

JSONL セッションから生データを抽出

見つかった各セッションファイル($F)に対して実行します。

echo "=== TOOL CALLS ==="
grep -oE '"name"\s*:\s*"[^"]*"' "$F" 2>/dev/null | sed 's/"name"\s*:\s*"//;s/"//' | sort | uniq -c | sort -rn | head -30

echo "=== ERRORS ==="
grep -oE 'NOOP_EDIT|TEXT_NOT_FOUND|FILE_NOT_FOUND|HASH_HINT|DANGEROUS|out of range|mismatch|tool_use_error|permission denied' "$F" 2>/dev/null | sort | uniq -c | sort -rn

echo "=== TOOL LOOPS (3+ consecutive) ==="
grep -oE '"name"\s*:\s*"[^"]*"' "$F" 2>/dev/null | sed 's/"name"\s*:\s*"//;s/"//' | uniq -c | sort -rn | awk '$1 >= 3'

echo "=== BUILT-IN vs MCP ==="
grep -oE '"name"\s*:\s*"(Read|Edit|Write|Grep|mcp__hex-line__\w+)"' "$F" 2>/dev/null | sed 's/.*"name"\s*:\s*"//;s/"//' | sort | uniq -c | sort -rn

echo "=== HOOK EVENTS ==="
grep -oE 'hook_progress|blocking error|PreToolUse|PostToolUse|hex-confirmed|Obligatory use|Use mcp__hex-line' "$F" 2>/dev/null | sort | uniq -c | sort -rn

echo "=== SKILL/COMMAND INVOCATIONS ==="
grep -oE '"display":\s*"/[a-z-]+' "$F" 2>/dev/null | sed 's/"display":\s*"//' | sort | uniq -c | sort -rn

キーワードに基づくエラー件数は、あくまでヒューリスティックとして扱ってください。 報告された一致が、同じ文字列を含むプロンプト、テンプレート、参照ドキュメントではなく、実際のツール失敗イベントまたは結果イベントに由来することを確認してください。

Claude JSONL からトークン統計を抽出

実際のトークン使用量を取得するため、Claude のセッションファイル($F)に対して実行します。

echo "=== TOKEN STATS ==="
TOTAL_IN=$(grep -oE '"input_tokens":[0-9]+' "$F" | grep -oE '[0-9]+' | paste -sd+ | bc 2>/dev/null)
TOTAL_OUT=$(grep -oE '"output_tokens":[0-9]+' "$F" | grep -oE '[0-9]+' | paste -sd+ | bc 2>/dev/null)
CACHE_CREATE=$(grep -oE '"cache_creation_input_tokens":[0-9]+' "$F" | grep -oE '[0-9]+' | paste -sd+ | bc 2>/dev/null)
CACHE_READ=$(grep -oE '"cache_read_input_tokens":[0-9]+' "$F" | grep -oE '[0-9]+' | paste -sd+ | bc 2>/dev/null)
echo "in=${TOTAL_IN:-0} out=${TOTAL_OUT:-0} cache_create=${CACHE_CREATE:-0} cache_read=${CACHE_READ:-0}"

フェーズ 2:観点ごとの分析

収集したデータに D1~D10 を適用します。各所見を分類してください。

重大度観点意味
エラーD1、D5問題が発生 — ツールの失敗、権限の拒否
無駄D2、D4、D8不要な作業 — 重複した読み込み、場当たり的なスクリプト、情報の再収集
パターンD3、D6、D7、D9、D10改善できる行動 — ループ、コミュニケーション、意思決定
D1:ツールエラー

種類ごとに件数を数えます:NOOP_EDIT、TEXT_NOT_FOUND、ハッシュの不一致、範囲外、FILE_NOT_FOUND。それぞれについて、原因となった手順またはフェーズを特定します。

D2: ツールの無駄
  • 事前のアウトラインなしでの読み取り (100 行超のファイル)
  • 同じファイルを 3 回以上読み取り
  • MCP に同等のものが存在するのに Bash の cat/grep/head/sed を使用
D3: プロセスの問題
  • ツールループ: 進展がないまま同じツールを同じファイルに 3 回以上実行
  • リトライの嵐: 異なるパラメータで 3 回以上の試行
  • 行き止まり: アプローチを検討した後に放棄
  • 対象の誤り: Y が必要なのにファイル X を参照
D4: スクリプトの抽出
  • セッション中に作成された Bash/Python スクリプト
  • スキルの実行ごとにスクリプトが必要になる場合 → references/scripts/ の候補
D5: フックとパーミッション
  • フックのブロック (PreToolUse/PostToolUse のブロッキングエラー)
  • MCP が強制されているのに組み込みの Read/Edit/Write/Grep を使用
  • hex-confirmed のバイパス — それらは正当化されていたか?
D6: コミュニケーション
  • メッセージ長の分布 (過剰な説明 vs 簡潔)
  • 不要な確認 (「進めてよろしいですか?」)
  • マイルストーンでのステータス更新の欠如
  • 冗長なサマリー
D7: 意思決定の質
  • エラーを検知して方針転換するまでの時間 (エラーと修正の間のツール呼び出し)
  • 試行錯誤の連続 vs 的を絞ったアプローチ
  • ツール選択の理由 (最初に誤ったツールを使用)
D8: コンテキストの圧迫
  • フェーズをまたいで同じファイルを複数回読み取り
  • すでに利用可能だった情報を再度収集
  • スレッドを見失う兆候 (解決済みの質問を再質問)
D9: サブエージェントの品質
  • 結果が空または低価値な Agent ツールの呼び出し
  • Agent のタイムアウト
  • 範囲が広すぎるプロンプト (エージェントがやりすぎた、またはやらなさすぎた)
D10: スコープの逸脱
  • 当初の目標 vs 実際の成果物 — 逸脱はあるか?
  • 実行中の計画外の追加
  • 明示的な理由のない方針転換

フェーズ 3: 修正へのマッピング

各所見について、具体的な対象と修正を特定します:

対象の種類例
SKILL.md のステップ「ln-400 ステップ 2: ファイルパス src/config.ts を追加」
SKILL.md のフェーズ「ln-300 フェーズ 3: 3a〜3c のサブステップに分解」
allowed-tools「ln-400: mcp__hex-line__edit_file を追加」
フック設定「settings.json: npm test の例外を追加」
references/scripts/「ln-520: test_harness.sh を references/scripts/ に移動」
CLAUDE.md「優先設定を追加: 簡潔な応答、末尾のサマリーなし」
MCP ツール「hex-line edit_file: 同時編集時のハッシュ不一致」
Agent プロンプト「ln-310 Agent A: スコープをセキュリティ専用に絞る」
スコープガード「ln-400: フェーズ 1 に Goal Articulation Gate を追加」

フェーズ 4: レポート

references/meta_analysis_protocol.md の形式に従ってチャットに出力します。

### Session Analysis: {session identifier}

#### Improvements
| # | Dim | Finding | Target | Fix |
|---|-----|---------|--------|-----|
| 1 | D1 | 3 edit failures Phase 4 | ln-400 Step 2 | Add file path |
| 2 | D4 | test.sh written ad-hoc | ln-520 | Move to references/scripts/ |
| 3 | D6 | Over-explained 5 times | CLAUDE.md | Add "terse" pref |
| 4 | D5 | Hook blocked Read 4x | settings.json | Add MCP permission |

#### Session Errors
| Problem Type | Count | Examples |
|-------------|-------|---------|
| Retry storm | 4 | 3x edit_file on config.ts |
| Wrong target | 2 | Read utils.ts not helpers.ts |

#### Subagent Errors: {Agent Name}  (per agent, if any)
| Problem Type | Count | Examples |
|-------------|-------|---------|
| {type} | {N} | {brief} |

IF no findings AND no errors: "Session analysis: clean run."

アンチパターン

やってはいけないこと代わりに
独自の出力テンプレートを定義するプロトコルの形式を参照する
セッションに含まれないファイルを分析する実際に使用されたものだけを分析する
一般的な推奨事項各修正を特定のファイル + 位置に結び付ける
問題のない次元を報告する問題のある所見のみ

フェーズ 5: メタ分析

任意の参照: ユーザーが実行後のメタ分析またはプロトコル形式の実行リフレクションを求めた場合にのみ、references/meta_analysis_protocol.md を読み込みます。

求められた場合は、プロトコル §7 に従ってこのセッションを分析します。プロトコルの形式に従って出力します。


完了の定義

  • D1〜D10 の次元を確認済み
  • JSONL スキャンが機能する (recent モード)
  • 各所見に具体的な対象 + 修正がある
  • プロトコル形式で出力 (改善点のみ)
  • テンプレートの重複がない
  • メタ分析を実行済み

バージョン: 1.1.0 最終更新: 2026-04-05

コメント