AI Tool Conversation History Summary
Analyze AI tool conversation histories for a given period and generate themed work summaries.
Scheduling
Goal
Collect AI tool conversation history for a date or window and synthesize it into a themed, project-oriented recap with saved Markdown output.
Intent signature
- User asks for daily recap, weekly/monthly summary, standup notes, work log, tool usage pattern, or AI conversation history analysis.
- User wants conversation histories grouped by work content rather than raw chronological logs.
When to use
- Summarizing a day or period of work activity
- Understanding the overall flow of work across multiple AI tools
- Analyzing tool-switching patterns between sessions
- Preparing daily standups, weekly retros, or work logs
When NOT to use
- Git commit-based code change retrospective -> use
oma retro
- Real-time agent monitoring -> use
oma dashboard terminal
- Productivity metrics -> use
oma stats get
Expected inputs
- Date, relative date, time window, or tool filter
- Conversation history available through
oma recap --json or fallback sources
- Desired daily or multi-day recap scope
Expected outputs
- Markdown recap saved to
.agents/results/recap/{date}.md or range filename
- TL;DR, overview, themes/projects, miscellaneous or side projects, and tool usage patterns
- User-facing summary in configured response language
Dependencies
oma recap --json
- Optional Claude fallback history at
~/.claude/history.jsonl
.agents/oma-config.yaml for language behavior
Control-flow features
- Branches by date resolution, window length, available tool history, and daily vs multi-day output shape
- Reads local history data and writes Markdown recap files
- Groups by content, not by tool
Structural Flow
Entry
- Resolve requested date or window.
- Collect normalized conversation history.
- Decide daily versus multi-day output structure.
Scenes
- PREPARE: Resolve time range and tool filters.
- ACQUIRE: Collect history through CLI or fallback.
- REASON: Group by content, infer themes/projects, decisions, artifacts, and tool-switching patterns.
- ACT: Write recap Markdown in the required format.
- VERIFY: Check TL;DR, grouping, language, and output path.
- FINALIZE: Save and display summary.
Transitions
- If no date is specified, use today via
--date (bare --window is a rolling window ending now, not calendar-aligned).
- If window is 3 days or longer, group by project instead of day chronology.
- If CLI is unavailable, use Claude fallback only and report scope limits.
- If tasks are under threshold, group them into Miscellaneous or Side Projects.
Failure and recovery
- If history is unavailable, report missing source and requested range.
- If timestamps are ambiguous, use configured timezone and state assumption.
- If extracted data is sparse, produce a concise recap and note limited coverage.
Exit
- Success: recap file exists and summary is displayed.
- Partial success: missing tools/history or fallback-only coverage is explicit.
Logical Operations
Actions
| Action |
SSL primitive |
Evidence |
| Resolve date/window |
INFER |
Natural-language date rules |
| Collect history |
CALL_TOOL |
oma recap --json or jq fallback |
| Read extracted records |
READ |
Conversation history |
| Group themes/projects |
INFER |
Time/content grouping rules |
| Validate output shape |
VALIDATE |
Daily or multi-day template |
| Write recap |
WRITE |
.agents/results/recap/ |
| Report summary |
NOTIFY |
Displayed recap |
Tools and instruments
oma recap --json
jq fallback for Claude history
- Markdown output templates
Canonical command path
oma recap --date YYYY-MM-DD --json
oma recap --window 7d --json
oma recap --json # rolling last 24h, not "today"
Resource scope
| Scope |
Resource target |
LOCAL_FS |
Conversation history and recap output files |
PROCESS |
oma recap, jq, date commands |
USER_DATA |
Conversation prompts and project activity |
MEMORY |
Theme grouping and summary notes |
Preconditions
- Requested time range can be resolved.
- At least one history source is available.
Effects and side effects
- Writes recap Markdown under
.agents/results/recap/.
- Reads local conversation history data.
Guardrails
- TL;DR required: Top 3 lines of "what I accomplished". Project name + outcome. No tool names or technical details.
- Overview: After TL;DR, describe the flow. Start with "I" as subject.
- Daily: themes by time block (15+ min). Rest goes to "Miscellaneous".
- Multi-day (3d+): sections by project, ordered by activity. Read like a sprint report, not a daily log.
- 2-4 bullets per theme/project: Concise essentials only. Don't enumerate every step.
- Themes by content: Group by actual work, not by tool.
- Time range (daily only):
(AM/PM/Evening HH:MM~HH:MM). AM: 12:00, PM: 12:0018:00, Evening: 18:00~.
- Save results: Write markdown to
.agents/results/recap/.
- Response language: Follows
language setting in .agents/oma-config.yaml if configured.
- No em dashes: Use commas, periods, or parentheses instead of
— (em dash).
Process
1. Resolve Date
Determine the target date or window from the user's natural language input. Default is today.
Resolution rules:
- Relative day references (today, yesterday, day before yesterday, etc.) → calculate
--date YYYY-MM-DD
- Specific date mentions (month + day, or full date) → convert to
--date YYYY-MM-DD
- Relative weekday references (last Monday, this Friday, etc.) → calculate the date
- Period references (this week, last 3 days, past 2 weeks, etc.) → convert to
--window Nd
- No date specified → today, resolved to
--date YYYY-MM-DD (bare --window 1d is a rolling 24-hour window ending now, not the calendar day)
- The CLI caps windows at 30 days (longer values are trimmed with a warning) — when a requested period gets capped, say so in the recap
2. Collect Data
Extract normalized conversation history via CLI.
# Today (calendar day, all tools)
oma recap --date $(date +%F) --json
# Last 24 hours (rolling window ending now)
oma recap --json
# Time window (rolling, ends now; capped at 30d)
oma recap --window 7d --json
# Specific date
oma recap --date 2026-04-10 --json
# Tool filter (supported: grok, claude, codex, gemini, qwen, cursor, antigravity)
oma recap --tool claude,codex --json
Fallback when CLI is not installed: process Claude history only via inline jq:
# Uses the system timezone; export TZ=<zone> first to override, and state the
# timezone assumption in the recap (per the Failure and recovery rules).
TARGET_DATE=$(date +%Y-%m-%d)
# macOS/BSD date:
start_ts=$(date -j -f "%Y-%m-%d %H:%M:%S" "${TARGET_DATE} 00:00:00" +%s)000
# Linux/GNU date alternative:
# start_ts=$(date -d "${TARGET_DATE} 00:00:00" +%s)000
end_ts=$((start_ts + 86400000))
jq -r --argjson start "$start_ts" --argjson end "$end_ts" '
select(.timestamp >= $start and .timestamp < $end and .display != null and .display != "") |
{
time: (.timestamp / 1000 | localtime | strftime("%H:%M")),
project: (.project | split("/") | .[-1]),
prompt: (.display | gsub("\n"; " ") | if length > 150 then .[0:150] + "..." else . end)
}
' ~/.claude/history.jsonl
3. Theme Analysis and Grouping
Read all extracted data and analyze with the following criteria:
Grouping rules:
- Only classify as a separate theme if the work spans 15+ minutes (based on timestamp gaps and prompt count)
- Merge consecutive prompts on the same topic into one theme
- Collect sub-15-minute tasks into a "Miscellaneous" section
- Group by work content, not by tool
Cross-tool analysis:
- Track workflow when multiple tools are used in the same time window
- Example: "Designed in Antigravity -> Implemented in Claude -> Reviewed in Codex"
- Derive insights from tool-switching patterns
Extract from each theme:
- Core work performed
- Key decisions made
- Tool combinations used
- Artifacts produced (docs, code, config, etc.)
4. Output Format
Save results to .agents/results/recap/{date}.md and display simultaneously.
Use the markdown templates in resources/output-formats.md:
- Daily format (1d or specific date): TL;DR → Overview → time-blocked themes → Miscellaneous → Tool Usage Patterns.
- Multi-day format (3d+): project-driven sprint-report structure with Side Projects for small (<30 prompts) work; follow the multi-day grouping rules in the same file.
Response language follows language setting in .agents/oma-config.yaml.
5. Save Results
Save to .agents/results/recap/{date}.md.
For window ranges, use {start-date}~{end-date}.md format.
# Example paths
.agents/results/recap/2026-04-12.md
.agents/results/recap/2026-04-06~2026-04-12.md
References
- Output format templates:
resources/output-formats.md
- Recap CLI:
oma recap --json
- Output directory:
.agents/results/recap/
- Language config:
.agents/oma-config.yaml
- Claude fallback history:
~/.claude/history.jsonl
1---
2name: oma-recap
3description: Analyze conversation histories from multiple AI tools (Grok,
4 Claude, Codex, Gemini, Qwen, Cursor, Antigravity) and generate themed
5 daily/period work summaries. Filter by date or time window.
6---
7
8# AI Tool Conversation History Summary
9
10Analyze AI tool conversation histories for a given period and generate themed work summaries.
11
12## Scheduling
13
14### Goal
15Collect AI tool conversation history for a date or window and synthesize it into a themed, project-oriented recap with saved Markdown output.
16
17### Intent signature
18- User asks for daily recap, weekly/monthly summary, standup notes, work log, tool usage pattern, or AI conversation history analysis.
19- User wants conversation histories grouped by work content rather than raw chronological logs.
20
21### When to use
22- Summarizing a day or period of work activity
23- Understanding the overall flow of work across multiple AI tools
24- Analyzing tool-switching patterns between sessions
25- Preparing daily standups, weekly retros, or work logs
26
27### When NOT to use
28- Git commit-based code change retrospective -> use `oma retro`
29- Real-time agent monitoring -> use `oma dashboard terminal`
30- Productivity metrics -> use `oma stats get`
31
32### Expected inputs
33- Date, relative date, time window, or tool filter
34- Conversation history available through `oma recap --json` or fallback sources
35- Desired daily or multi-day recap scope
36
37### Expected outputs
38- Markdown recap saved to `.agents/results/recap/{date}.md` or range filename
39- TL;DR, overview, themes/projects, miscellaneous or side projects, and tool usage patterns
40- User-facing summary in configured response language
41
42### Dependencies
43- `oma recap --json`
44- Optional Claude fallback history at `~/.claude/history.jsonl`
45- `.agents/oma-config.yaml` for language behavior
46
47### Control-flow features
48- Branches by date resolution, window length, available tool history, and daily vs multi-day output shape
49- Reads local history data and writes Markdown recap files
50- Groups by content, not by tool
51
52## Structural Flow
53
54### Entry
551. Resolve requested date or window.
562. Collect normalized conversation history.
573. Decide daily versus multi-day output structure.
58
59### Scenes
601. **PREPARE**: Resolve time range and tool filters.
612. **ACQUIRE**: Collect history through CLI or fallback.
623. **REASON**: Group by content, infer themes/projects, decisions, artifacts, and tool-switching patterns.
634. **ACT**: Write recap Markdown in the required format.
645. **VERIFY**: Check TL;DR, grouping, language, and output path.
656. **FINALIZE**: Save and display summary.
66
67### Transitions
68- If no date is specified, use today via `--date` (bare `--window` is a rolling window ending now, not calendar-aligned).
69- If window is 3 days or longer, group by project instead of day chronology.
70- If CLI is unavailable, use Claude fallback only and report scope limits.
71- If tasks are under threshold, group them into Miscellaneous or Side Projects.
72
73### Failure and recovery
74- If history is unavailable, report missing source and requested range.
75- If timestamps are ambiguous, use configured timezone and state assumption.
76- If extracted data is sparse, produce a concise recap and note limited coverage.
77
78### Exit
79- Success: recap file exists and summary is displayed.
80- Partial success: missing tools/history or fallback-only coverage is explicit.
81
82## Logical Operations
83
84### Actions
85| Action | SSL primitive | Evidence |
86|--------|---------------|----------|
87| Resolve date/window | `INFER` | Natural-language date rules |
88| Collect history | `CALL_TOOL` | `oma recap --json` or `jq` fallback |
89| Read extracted records | `READ` | Conversation history |
90| Group themes/projects | `INFER` | Time/content grouping rules |
91| Validate output shape | `VALIDATE` | Daily or multi-day template |
92| Write recap | `WRITE` | `.agents/results/recap/` |
93| Report summary | `NOTIFY` | Displayed recap |
94
95### Tools and instruments
96- `oma recap --json`
97- `jq` fallback for Claude history
98- Markdown output templates
99
100### Canonical command path
101```bash
102oma recap --date YYYY-MM-DD --json
103oma recap --window 7d --json
104oma recap --json # rolling last 24h, not "today"
105```
106
107### Resource scope
108| Scope | Resource target |
109|-------|-----------------|
110| `LOCAL_FS` | Conversation history and recap output files |
111| `PROCESS` | `oma recap`, `jq`, date commands |
112| `USER_DATA` | Conversation prompts and project activity |
113| `MEMORY` | Theme grouping and summary notes |
114
115### Preconditions
116- Requested time range can be resolved.
117- At least one history source is available.
118
119### Effects and side effects
120- Writes recap Markdown under `.agents/results/recap/`.
121- Reads local conversation history data.
122
123### Guardrails
124
1251. **TL;DR required**: Top 3 lines of "what I accomplished". Project name + outcome. No tool names or technical details.
1262. **Overview**: After TL;DR, describe the flow. Start with "I" as subject.
1273. **Daily**: themes by time block (15+ min). Rest goes to "Miscellaneous".
1284. **Multi-day (3d+)**: sections by project, ordered by activity. Read like a sprint report, not a daily log.
1295. **2-4 bullets per theme/project**: Concise essentials only. Don't enumerate every step.
1306. **Themes by content**: Group by actual work, not by tool.
1317. **Time range (daily only)**: `(AM/PM/Evening HH:MM~HH:MM)`. AM: ~12:00, PM: 12:00~18:00, Evening: 18:00~.
1328. **Save results**: Write markdown to `.agents/results/recap/`.
1339. **Response language**: Follows `language` setting in `.agents/oma-config.yaml` if configured.
13410. **No em dashes**: Use commas, periods, or parentheses instead of `—` (em dash).
135
136### Process
137
138### 1. Resolve Date
139
140Determine the target date or window from the user's natural language input. Default is today.
141
142**Resolution rules:**
143- Relative day references (today, yesterday, day before yesterday, etc.) → calculate `--date YYYY-MM-DD`
144- Specific date mentions (month + day, or full date) → convert to `--date YYYY-MM-DD`
145- Relative weekday references (last Monday, this Friday, etc.) → calculate the date
146- Period references (this week, last 3 days, past 2 weeks, etc.) → convert to `--window Nd`
147- No date specified → today, resolved to `--date YYYY-MM-DD` (bare `--window 1d` is a rolling 24-hour window ending now, not the calendar day)
148- The CLI caps windows at 30 days (longer values are trimmed with a warning) — when a requested period gets capped, say so in the recap
149
150### 2. Collect Data
151
152Extract normalized conversation history via CLI.
153
154```bash
155# Today (calendar day, all tools)
156oma recap --date $(date +%F) --json
157
158# Last 24 hours (rolling window ending now)
159oma recap --json
160
161# Time window (rolling, ends now; capped at 30d)
162oma recap --window 7d --json
163
164# Specific date
165oma recap --date 2026-04-10 --json
166
167# Tool filter (supported: grok, claude, codex, gemini, qwen, cursor, antigravity)
168oma recap --tool claude,codex --json
169```
170
171**Fallback when CLI is not installed**: process Claude history only via inline jq:
172
173```bash
174# Uses the system timezone; export TZ=<zone> first to override, and state the
175# timezone assumption in the recap (per the Failure and recovery rules).
176TARGET_DATE=$(date +%Y-%m-%d)
177# macOS/BSD date:
178start_ts=$(date -j -f "%Y-%m-%d %H:%M:%S" "${TARGET_DATE} 00:00:00" +%s)000
179# Linux/GNU date alternative:
180# start_ts=$(date -d "${TARGET_DATE} 00:00:00" +%s)000
181end_ts=$((start_ts + 86400000))
182
183jq -r --argjson start "$start_ts" --argjson end "$end_ts" '
184 select(.timestamp >= $start and .timestamp < $end and .display != null and .display != "") |
185 {
186 time: (.timestamp / 1000 | localtime | strftime("%H:%M")),
187 project: (.project | split("/") | .[-1]),
188 prompt: (.display | gsub("\n"; " ") | if length > 150 then .[0:150] + "..." else . end)
189 }
190' ~/.claude/history.jsonl
191```
192
193### 3. Theme Analysis and Grouping
194
195Read **all** extracted data and analyze with the following criteria:
196
197**Grouping rules:**
198- Only classify as a separate theme if the work spans **15+ minutes** (based on timestamp gaps and prompt count)
199- Merge consecutive prompts on the same topic into one theme
200- Collect sub-15-minute tasks into a "Miscellaneous" section
201- Group by **work content**, not by tool
202
203**Cross-tool analysis:**
204- Track workflow when multiple tools are used in the same time window
205- Example: "Designed in Antigravity -> Implemented in Claude -> Reviewed in Codex"
206- Derive insights from tool-switching patterns
207
208**Extract from each theme:**
209- Core work performed
210- Key decisions made
211- Tool combinations used
212- Artifacts produced (docs, code, config, etc.)
213
214### 4. Output Format
215
216Save results to `.agents/results/recap/{date}.md` and display simultaneously.
217
218Use the markdown templates in `resources/output-formats.md`:
219- **Daily format** (1d or specific date): TL;DR → Overview → time-blocked themes → Miscellaneous → Tool Usage Patterns.
220- **Multi-day format** (3d+): project-driven sprint-report structure with Side Projects for small (<30 prompts) work; follow the multi-day grouping rules in the same file.
221
222**Response language follows `language` setting in `.agents/oma-config.yaml`.**
223
224### 5. Save Results
225
226Save to `.agents/results/recap/{date}.md`.
227For window ranges, use `{start-date}~{end-date}.md` format.
228
229```bash
230# Example paths
231.agents/results/recap/2026-04-12.md
232.agents/results/recap/2026-04-06~2026-04-12.md
233```
234
235## References
236
237- Output format templates: `resources/output-formats.md`
238- Recap CLI: `oma recap --json`
239- Output directory: `.agents/results/recap/`
240- Language config: `.agents/oma-config.yaml`
241- Claude fallback history: `~/.claude/history.jsonl`