opencode-conversation-analysis について
opencode-conversation-analysis は、OpenCode のセッション内のユーザーメッセージを調べ、コーディングエージェントへの指示に見られる反復的なテーマや傾向を探るスキルです。メッセージを抽出・分割し、並列のサブエージェントで分析した後、Markdown レポートにまとめます。
主な機能
- 01OpenCode セッションのメッセージ抽出
- 02分析用データの分割
- 03サブエージェントによる並列分析
- 04テーマと例の統合
- 05Markdown レポートの出力
活用シーン
- 01コーディングセッションでの定番のフィードバックを確認
- 02依頼の具体化や範囲設定の傾向を把握
- 03コミュニケーションの好みや修正方法を分析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ connorads/ dotfiles --skill opencode-conversation-analysisインストール後、Claude Code で/opencode-conversation-analysisを入力して読み込まれたか確認します。
同梱ファイルreferences/storage-format.mdscripts/extract.sh
詳細
会話分析
OpenCode セッションのユーザーメッセージを分析し、繰り返し現れるテーマ、コミュニケーションパターン、指示の調整方法を特定します。
重要なルール
- チャンクファイルを直接 cat したり読み込んだりしないでください。サイズが非常に大きく、コンテキストを圧迫します
- ファイルパスをサブエージェントに渡してください。各サブエージェントが独自に読み込んで分析します
- 並列サブエージェントを使用してください。チャンクごとに1つ起動し、同時に実行します
- サブエージェントからは構造化 JSON を受け取ります。最後に結果を統合します
ワークフロー
ステップ 1:抽出の実行
~/.agents/skills/opencode-conversation-analysis/scripts/extract.sh
このスクリプトは次の処理を行います。
- 利用可能な場合、
~/.local/share/opencode/opencode.db(SQLite)から読み込みます - 古い OpenCode のインストールでは、
~/.local/share/opencode/storage/にフォールバックします - メタデータ(session_id、title、timestamp、text)とともに、メインセッションからユーザーメッセージを抽出します
- 10 文字未満のメッセージを除外します
- 約 320k 文字(各約 80k トークン)のファイルにチャンク分割します
/tmp/opencode-analysis/chunk_*.jsonlに出力します
出力の概要を確認し、作成されたチャンクの数を確認します。
ステップ 2:並列サブエージェントの起動
各チャンクファイルについて、次のプロンプトテンプレートを使って general サブエージェントを起動します。
Read the file /tmp/opencode-analysis/chunk_N.jsonl which contains user messages from coding sessions (JSONL format with fields: session_id, session_title, timestamp, text).
Analyze these messages to identify recurring themes in how the user steers/guides AI coding assistants. Look for patterns like:
- How they give feedback
- How they correct mistakes
- How they scope/refine requests
- Communication style preferences
- Technical approaches they emphasize
For each theme you identify, provide:
1. Theme name (short, descriptive)
2. Description (1-2 sentences)
3. 2-3 direct quote examples from the messages
Return ONLY valid JSON in this format:
{
"themes": [
{
"name": "Theme Name",
"description": "Description of the pattern",
"examples": ["quote 1", "quote 2"]
}
]
}
すべてのチャンクサブエージェントを並列で起動します(1つのメッセージ内で複数の Task ツール呼び出しを行います)。
ステップ 3:結果の統合
すべてのサブエージェントから結果が返されたら、次の手順を実行します。
- すべてのチャンクからテーマオブジェクトを収集します
- 類似するテーマ(名前が同じもの、または説明が重複するもの)をグループ化します
- 重複するテーマの例を統合します
- 出現したチャンク数に基づいてテーマを順位付けします
- 各テーマにつき、最適な例を2~3個選びます
ステップ 4:出力形式
次の構成で、最終分析を Markdown として提示します。
# Themes in How You Steer AI Coding Assistants
Analysis of N messages across M sessions (date range)
---
## 1. Theme Name
Description of the pattern.
**Examples:**
- "direct quote 1"
- "direct quote 2"
- "direct quote 3"
---
## 2. Next Theme
...
結果はファイルに書き込まず、ユーザーに直接出力します(依頼された場合を除きます)。
カスタマイズオプション
ユーザーは次の項目を指定できます。
- 別のチャンクサイズ:
extract.shのCHUNK_SIZEを編集します(デフォルトは 320000 文字) - 別のメッセージフィルター:
extract.shのMIN_TEXT_LENを編集します(デフォルトは 10 文字) - サブエージェントのセッションを含める:
extract.shのparent_id IS NULL(SQLite)およびparentID(レガシー)のフィルターを削除します - 期間で絞り込む:
extract.shにタイムスタンプによるフィルタリングを追加します
ストレージ形式のリファレンス
OpenCode の会話ストレージ構造の詳細については、references/storage-format.md を参照してください。
コメント
Markdown 対応