Conversation Analysis
Analyze user messages from OpenCode sessions to identify recurring themes, communication patterns, and steering behaviours.
Critical Rules
-
NEVER cat or read chunk files directly - they're huge and will explode your context
-
Pass file paths to subagents - let them read and analyze independently
-
Use parallel subagents - one per chunk, they run concurrently
-
Subagents return structured JSON - you synthesize at the end
Workflow
Step 1: Run Extraction
~/.agents/skills/opencode-conversation-analysis/scripts/extract.sh
This script:
-
Reads from ~/.local/share/opencode/opencode.db (SQLite) when available
-
Falls back to ~/.local/share/opencode/storage/ for older OpenCode installs
-
Extracts user messages from main sessions with metadata (session_id, title, timestamp, text)
-
Filters out messages < 10 characters
-
Chunks into ~320k char files (~80k tokens each)
-
Outputs to /tmp/opencode-analysis/chunk_*.jsonl
Review the output summary to see how many chunks were created.
Step 2: Launch Parallel Subagents
For each chunk file, spawn a general subagent with this prompt template:
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:
- Theme name (short, descriptive)
- Description (1-2 sentences)
- 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"] } ] }
Launch ALL chunk subagents in parallel (single message, multiple Task tool calls).
Step 3: Synthesize Results
Once all subagents return:
-
Collect all theme objects from all chunks
-
Group similar themes (same name or overlapping descriptions)
-
Merge examples from duplicate themes
-
Rank themes by how many chunks they appeared in
-
Pick the best 2-3 examples per theme
Step 4: Output Format
Present the final analysis as markdown with this structure:
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
...
Output directly to the user - don't write to a file unless asked.
Customisation Options
The user may request:
-
Different chunk sizes: Edit CHUNK_SIZE in extract.sh (default 320000 chars)
-
Different message filter: Edit MIN_TEXT_LEN in extract.sh (default 10 chars)
-
Include subagent sessions: Remove the parent_id IS NULL (SQLite) and parentID (legacy) filters in extract.sh
-
Time period filtering: Add timestamp filtering in extract.sh
Storage Format Reference
See references/storage-format.md for details on OpenCode's conversation storage structure.