mcpField
H
history-insight

history-insight

github.com/ai-native-campエージェントワークフロー191.3k 回インストール31 週間前に更新
リポジトリ

history-insight について

history-insightは、Claude Codeのセッション履歴を分析して傾向を抽出するスキルです。検索範囲の選択を案内し、必要に応じてJSONLファイルを一括処理して、完全なパスを表示せずに結果を報告します。

主な機能

  1. 01現在のプロジェクトまたは全セッションの検索
  2. 02ファイル更新日時によるセッション絞り込み
  3. 03JSONLファイルの解析と一括処理
  4. 04大規模バッチの並列分析
  5. 05抽出した知見の報告

活用シーン

  1. 01プロジェクトのセッションに見られる傾向の確認
  2. 02指定期間のセッション分析
  3. 03多数のセッションファイルからテーマを抽出

インストール

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

$npx skills add https://github.com/ai-native-camp/camp-2 --skill history-insight

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

同梱ファイルreferences/session-file-format.mdscripts/extract-session.sh

詳細

履歴のインサイト

Claude Code のセッション履歴を分析し、インサイトを抽出します。


データの場所

~/.claude/projects/<encoded-cwd>/*.jsonl

パスのエンコーディング: /Users/foo/project → -Users-foo-project

詳細なファイル形式: ${baseDir}/references/session-file-format.md


実行アルゴリズム

ステップ 1: スコープを確認する [MANDATORY]

スコープの決定:

  1. 明示されている場合(AskUserQuestion の省略可):

    • 「現在のプロジェクトのみ」/「このプロジェクト」 → current_project
    • 「すべてのセッション」/「全体」 → all_sessions
  2. 明示されていない場合 - AskUserQuestion を呼び出す:

    question: "세션 검색 범위를 선택하세요"
    options:
      - "현재 프로젝트만" → ~/.claude/projects/<encoded-cwd>/*.jsonl
      - "모든 Claude Code 세션" → ~/.claude/projects/**/*.jsonl
    

ステップ 2: セッションファイルを検索する
# Current project only
find ~/.claude/projects/<encoded-cwd> -name "*.jsonl" -type f

# All sessions (모든 프로젝트)
find ~/.claude/projects -name "*.jsonl" -type f

日付フィルタリング: ファイルの mtime(更新日時)を確認してからフィルタリングします。OS によって stat のオプションが異なります:

  • macOS: stat -f "%Sm" -t "%Y-%m-%d" <file>
  • Linux: stat -c "%y" <file>

ステップ 3: セッションを処理する
判断ツリー
Session files found?
├─ No → Error: "No sessions found"
└─ Yes → How many files?
    ├─ 1-3 files → Direct Read + parse
    └─ 4+ files → Batch Extract Pipeline
1~3 個のファイル

Read で直接 JSONL を解析します。ファイルが大きい場合(≥5000 tokens)は、extract-session.sh を使用します:

${baseDir}/scripts/extract-session.sh <session.jsonl>
4 個以上のファイル: バッチ抽出パイプライン
  1. キャッシュディレクトリを作成します(/tmp/cc-cache/<analysis-name>/)
  2. セッション一覧を保存します(sessions.txt)
  3. jq でメッセージを一括抽出します(user_messages.txt)
  4. 整理してフィルタリングします(clean_messages.txt)
  5. Task(opus) で総合分析します
ファイルが大きすぎる場合: 並列バッチ分析

clean_messages.txt が大きすぎて Read に失敗する場合:

  1. ファイルを分割:

    split -l 2000 clean_messages.txt /tmp/cc-cache/<name>/batch_
    
  2. Task(opus) を並列で呼び出す:

    Task(subagent_type="general-purpose", model="opus", run_in_background=true)
    prompt: "batch_XX 파일을 읽고 주제/패턴 요약해줘"
    
  3. 結果を統合: Task(opus) で総合分析します


ステップ 4: 結果を報告する
## Session Capture Complete

- **Sessions:** N files processed
- **Messages:** X total, Y after filter

### Extracted Insights
[분석 결과]

エラー処理

シナリオ応答
セッションファイルが見つからない"このプロジェクトのセッションファイルが見つかりません。"
ファイルが大きすぎるextract-session.sh で自動的に前処理します
jq がインストールされていない"エラー: jq が必要です。次のコマンドでインストールしてください: brew install jq"
Task が失敗した"警告: [file] を処理できませんでした。スキップします。"
該当するセッションが 0 件"条件に一致するセッションはありません。"

セキュリティに関する注意事項

  • 出力に完全なパスを表示しないでください(~ プレフィックスを使用)

関連リソース

  • ${baseDir}/scripts/extract-session.sh - JSONL を圧縮します(thinking、tool_use を削除)
  • ${baseDir}/references/session-file-format.md - JSONL の構造と解析

コメント