AgentSkillsCN

Interleaved Conversation Report

生成按主题分类的多代理交错对话报告。适用于用户提出“交错对话”、“按主题对话”、“多代理对话时间轴”,或希望按用户意图将各代理的时序提示词分组呈现时使用。

SKILL.md
--- frontmatter
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:

bash
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:

bash
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:

  1. Load the JSON
  2. Map agent SIDs to names (if known)
  3. Classify each prompt into themes based on keywords
  4. Group prompts by theme
  5. Sort chronologically within each theme

Theme Classification Strategy (keyword-based):

ThemeKeywords
Version Investigationversion, 0.77, 0.88, symlink, what's new, trace
VS Code Extensionextension, vscode, vs code, shim, binary, crash, port
New Featuressteer, sub agent, subagent, skill.toml
Observability Toolingdump, sqlite, archive, sse_lines, launcher, query, timeout
Code Analysisthinking, anthropic, message-ordering
Isolated/Misc(everything else)

Step 4: Generate Markdown Report

Output format must follow this structure:

markdown
# [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

code

---

## 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

python
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)

markdown
# 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...

code

---

## 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

code

---

## 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:

  1. Analyze the first few prompts to identify major topics
  2. Create theme categories based on observed patterns
  3. Build keyword lists for each theme
  4. Include an "Isolated/Misc" theme for unclassified prompts

Always ask the user if the themes look correct before generating the full report.


Tips

  1. Name agents meaningfully - Give agents descriptive names based on their primary task (Scout, Debugger, Builder, etc.)

  2. Keep themes broad - 5-8 themes is ideal. Too many themes fragments the narrative.

  3. Include narrative summary - A few sentences explaining the timeline helps readers understand the big picture.

  4. Truncate long prompts - 200 chars max in the interleaved view. Full prompts can be in a separate exhaustive report.

  5. 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