Interleaved Conversation Report
[Created by Claude: 757cc520-4b58-4827-9132-c6982d3f8aba]
Generate a chronologically interleaved view of user prompts across multiple agents, organized by the user's intention/theme.
When to Use This Skill
- •User asks for "interleaved conversation" or "interleaved prompts"
- •User wants to see "conversation by theme" or "prompts grouped by theme"
- •User asks about "multi-agent conversation timeline"
- •User wants to understand "what was the user doing across all these agents"
- •User asks to "aggregate prompts by intention"
Prerequisites
MUST read first: dump-agent-data-for-rg skill for dumping conversation data.
This skill builds on top of the dump tool's --prompt-only output.
Step-by-Step Workflow
Step 1: Get Session IDs
First, identify which sessions to include. You may already have a list, or use:
cd ~/swe/telemetry_projects/agent_dump && \ python launchers/dump_conversations.py \ --start-hour 72 --end-hour 0 --prompt-only --agent both
This outputs JSON with all sessions and their prompts.
Step 2: Extract Prompts to JSON
Save the output to a file for processing:
cd ~/swe/telemetry_projects/agent_dump && \ python launchers/dump_conversations.py \ --start-hour 72 --end-hour 0 --prompt-only --agent claude > /tmp/all_prompts.json
Step 3: Classify Prompts by Theme
Write a Python script to:
- •Load the JSON
- •Map agent SIDs to names (if known)
- •Classify each prompt into themes based on keywords
- •Group prompts by theme
- •Sort chronologically within each theme
Theme Classification Strategy (keyword-based):
| Theme | Keywords |
|---|---|
| Version Investigation | version, 0.77, 0.88, symlink, what's new, trace |
| VS Code Extension | extension, vscode, vs code, shim, binary, crash, port |
| New Features | steer, sub agent, subagent, skill.toml |
| Observability Tooling | dump, sqlite, archive, sse_lines, launcher, query, timeout |
| Code Analysis | thinking, anthropic, message-ordering |
| Isolated/Misc | (everything else) |
Step 4: Generate Markdown Report
Output format must follow this structure:
# [Title] — Interleaved Conversation by Theme
*Generated by Claude: `{agent-id}`*
This document shows the user's prompts **interleaved chronologically** across all agents,
organized by the user's **intention/theme**.
---
## 1. [Theme Name]
> [Theme description]
**{N} prompts** across **{M} agents**
[YYYY-MM-DD HH:MM:SS] AgentName │ prompt text here (truncated if > 200 chars)... [YYYY-MM-DD HH:MM:SS] AgentName │ another prompt
--- ## 2. [Next Theme] ... --- ## Summary | Theme | Prompts | Agents | Time Span | |-------|---------|--------|-----------| | Theme 1 | N | Agent1, Agent2... | MM-DD HH:MM → MM-DD HH:MM | ... ## Narrative Summary (optional) [Brief paragraph describing the timeline of work]
Complete Python Template
import json
import re
# Load data
with open('/tmp/all_prompts.json', 'r') as f:
data = json.load(f)
# Agent mapping (customize as needed)
agents_info = {
"sid-here": {"name": "Agent Name", "short": "ShortName"},
# Add more agents...
}
# Collect all prompts
all_prompts = []
for session in data:
sid = session.get('sid')
agent_name = agents_info.get(sid, {}).get('short', sid[:8])
for p in session.get('user_prompts', []):
t = p.get('t', '')
text = p.get('prompt', '')
# Clean text
text = re.sub(r'Your agent Id is:[^\n]*\n?', '', text)
text = re.sub(r'\s+', ' ', text).strip()
if text and len(text) > 3:
all_prompts.append({
'datetime': t,
'agent': agent_name,
'sid': sid[:8],
'text': text
})
# Sort by datetime
all_prompts.sort(key=lambda x: x['datetime'])
# Classify themes
def classify_theme(text):
text_lower = text.lower()
if any(k in text_lower for k in ['version', '0.77', '0.88', 'symlink', "what's new"]):
return 'version_investigation'
if any(k in text_lower for k in ['extension', 'vscode', 'shim', 'binary', 'crash']):
return 'vscode_extension'
if any(k in text_lower for k in ['steer', 'sub agent', 'subagent']):
return 'new_features'
if any(k in text_lower for k in ['dump', 'sqlite', 'archive', 'sse_lines', 'query']):
return 'observability_tooling'
if any(k in text_lower for k in ['thinking', 'anthropic']):
return 'code_analysis'
return 'isolated'
for p in all_prompts:
p['theme'] = classify_theme(p['text'])
# Group by theme
themes = {
'version_investigation': {'title': '1. Version Investigation', 'desc': 'Understanding version changes', 'prompts': []},
'vscode_extension': {'title': '2. VS Code Extension Issues', 'desc': 'Binary resolution, crashes, shim servers', 'prompts': []},
'new_features': {'title': '3. New Features Exploration', 'desc': 'New capabilities and modes', 'prompts': []},
'observability_tooling': {'title': '4. Observability Tooling', 'desc': 'Building dump scripts, queries', 'prompts': []},
'code_analysis': {'title': '5. Code Analysis', 'desc': 'Analyzing code changes', 'prompts': []},
'isolated': {'title': '6. Isolated / Misc', 'desc': 'Orphan prompts', 'prompts': []},
}
for p in all_prompts:
theme = p['theme']
if theme in themes:
themes[theme]['prompts'].append(p)
# Generate markdown output
for theme_key, theme in themes.items():
prompts = theme['prompts']
if not prompts:
continue
print(f"## {theme['title']}")
print(f"\n> {theme['desc']}")
print(f"\n**{len(prompts)} prompts** across **{len(set(p['agent'] for p in prompts))} agents**")
print("\n```")
for p in prompts:
dt = p['datetime']
agent = p['agent']
text = p['text'][:200] + "..." if len(p['text']) > 200 else p['text']
print(f"[{dt}] {agent:12} │ {text}")
print("```\n")
Output Format Requirements
Datetime Format
Always use: YYYY-MM-DD HH:MM:SS (24-hour, local time)
Example: [2026-01-22 17:33:13]
Agent Column
- •Fixed width: 12 characters, left-aligned
- •Use short names (Scout, Debugger, Logger, etc.)
- •If no name mapping, use first 8 chars of SID
Prompt Text
- •Truncate at 200 characters with
... - •Remove agent ID boilerplate (
Your agent Id is:...) - •Collapse whitespace to single spaces
- •Skip empty prompts and interruption messages
Separator
Use vertical bar with spaces: │ (Unicode box drawing character U+2502)
Example Output (Truncated)
# Codex 0.88.0 Porting — Interleaved Conversation by Theme *Generated by Claude: `757cc520-4b58-4827-9132-c6982d3f8aba`* --- ## 1. Version Investigation > Understanding changes from 0.77 → 0.88, tracing symlinks **27 prompts** across **16 agents**
[2026-01-21 16:06:19] Scout │ check the repo at /tmp/codex then Tell me what's new from 0.77 to 0.87.0 [2026-01-21 16:15:06] Scout │ Highlights TUI: Ctrl+G external editor; major transcript copy/scroll UX... [2026-01-22 14:26:44] Architect │ check ~/symlinks/codex and trace it to its codex version... [2026-01-22 14:37:59] Analyst │ check ~/symlinks/codex and trace it to its codex version...
--- ## 2. VS Code Extension Issues > Binary resolution, crashes, shim servers, observability **34 prompts** across **6 agents**
[2026-01-22 17:11:33] Debugger │ (Opened extension.js in IDE) [2026-01-22 17:33:13] Debugger │ which file exactly does the extension use? Answer succinctly, with line number [2026-01-22 18:30:16] Builder │ load vscode investigation codex extension jutsu [2026-01-23 03:19:43] Sentinel │ I had 2 codex sessions crash in VS code, help me check for any locks
--- ## Summary | Theme | Prompts | Agents | Time Span | |-------|---------|--------|-----------| | Version Investigation | 27 | Scout, Architect, Analyst... | 01-21 16:06 → 01-23 14:47 | | VS Code Extension | 34 | Debugger, Builder, Validator... | 01-22 17:11 → 01-23 14:34 | | New Features | 9 | Scout, NightOwl, Logger | 01-21 16:08 → 01-23 12:48 | | Observability Tooling | 25 | Logger, Continuator, Finalizer | 01-22 19:52 → 01-23 14:46 | | Isolated / Misc | 47 | (various) | 01-21 16:47 → 01-23 14:20 | ## Narrative Summary **Day 1 (Jan 21)**: The Scout agent explored what's new in Codex 0.77→0.88. **Day 2 (Jan 22)**: VS Code extension issues emerged. Multiple agents investigated binary resolution and shim servers. **Day 3 (Jan 23)**: Heavy observability tooling development. Agent search retrospective.
Theme Customization
Themes should be customized based on the user's request. The example themes above are for a "codex porting" project. For different projects:
- •Analyze the first few prompts to identify major topics
- •Create theme categories based on observed patterns
- •Build keyword lists for each theme
- •Include an "Isolated/Misc" theme for unclassified prompts
Always ask the user if the themes look correct before generating the full report.
Tips
- •
Name agents meaningfully - Give agents descriptive names based on their primary task (Scout, Debugger, Builder, etc.)
- •
Keep themes broad - 5-8 themes is ideal. Too many themes fragments the narrative.
- •
Include narrative summary - A few sentences explaining the timeline helps readers understand the big picture.
- •
Truncate long prompts - 200 chars max in the interleaved view. Full prompts can be in a separate exhaustive report.
- •
Handle "Isolated" gracefully - Many prompts are greetings, confirmations, or follow-ups. Group them together at the end.
Related Skills
- •
dump-agent-data-for-rg- Technical details on dumping conversation data - •
search-agent-conversation- Finding agents that worked on specific topics