| name | Interleaved Conversation Report |
| description | Generate interleaved multi-agent conversation reports organized by theme. Use when user asks for "interleaved conversation", "conversation by theme", "multi agent conversation timeline", or wants to see chronological prompts across agents grouped by user intention. |
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
with open('/tmp/all_prompts.json', 'r') as f:
data = json.load(f)
agents_info = {
"sid-here": {"name": "Agent Name", "short": "ShortName"},
}
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', '')
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
})
all_prompts.sort(key=lambda x: x['datetime'])
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'])
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)
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