history-insight について
history-insightは、Claude Codeのセッション履歴を分析して傾向を抽出するスキルです。検索範囲の選択を案内し、必要に応じてJSONLファイルを一括処理して、完全なパスを表示せずに結果を報告します。
主な機能
- 01現在のプロジェクトまたは全セッションの検索
- 02ファイル更新日時によるセッション絞り込み
- 03JSONLファイルの解析と一括処理
- 04大規模バッチの並列分析
- 05抽出した知見の報告
活用シーン
- 01プロジェクトのセッションに見られる傾向の確認
- 02指定期間のセッション分析
- 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]
スコープの決定:
-
明示されている場合(AskUserQuestion の省略可):
- 「現在のプロジェクトのみ」/「このプロジェクト」 →
current_project - 「すべてのセッション」/「全体」 →
all_sessions
- 「現在のプロジェクトのみ」/「このプロジェクト」 →
-
明示されていない場合 - 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 個以上のファイル: バッチ抽出パイプライン
- キャッシュディレクトリを作成します(
/tmp/cc-cache/<analysis-name>/) - セッション一覧を保存します(
sessions.txt) - jq でメッセージを一括抽出します(
user_messages.txt) - 整理してフィルタリングします(
clean_messages.txt) - Task(opus) で総合分析します
ファイルが大きすぎる場合: 並列バッチ分析
clean_messages.txt が大きすぎて Read に失敗する場合:
-
ファイルを分割:
split -l 2000 clean_messages.txt /tmp/cc-cache/<name>/batch_ -
Task(opus) を並列で呼び出す:
Task(subagent_type="general-purpose", model="opus", run_in_background=true) prompt: "batch_XX 파일을 읽고 주제/패턴 요약해줘" -
結果を統合: 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 の構造と解析
コメント
Markdown 対応