oma-recap について
oma-recapは、指定期間のAIツールの会話履歴を分析するスキルです。作業の振り返りやスタンドアップ記録、利用状況の確認に向けて、活動をテーマやプロジェクト別にまとめ、根拠に基づくMarkdownを保存します。
主な機能
- 01日付や期間を指定した履歴収集
- 02作業テーマやプロジェクト別の分類
- 03根拠に基づくタスク状態の判定
- 04Markdown形式のレポート保存
活用シーン
- 01日次・週次の作業振り返り
- 02複数AIツールでの作業の確認
- 03スタンドアップ記録や作業ログの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ first-fluke/ oh-my-agent --skill oma-recapインストール後、Claude Code で/oma-recapを入力して読み込まれたか確認します。
同梱ファイルresources/output-formats.md
詳細
AI ツールの会話履歴の要約
指定した期間の AI ツールの会話履歴を分析し、テーマ別の作業サマリーを生成します。
スケジューリング
目標
日付または期間を指定して AI ツールの会話履歴を収集し、テーマ別かつプロジェクト中心の振り返りにまとめ、Markdown ファイルとして保存します。
インテントの特徴
- 日次の振り返り、週次・月次サマリー、スタンドアップノート、作業ログ、ツールの使用パターン、または AI の会話履歴の分析を求められた場合。
- 生の時系列ログではなく、作業内容ごとにグループ化した会話履歴を求められた場合。
使用する場面
- 1 日または一定期間の作業活動を要約する場合
- 複数の AI ツールをまたぐ作業の全体的な流れを把握する場合
- セッション間のツール切り替えパターンを分析する場合
- 日次のスタンドアップ、週次の振り返り、または作業ログを準備する場合
使用しない場面
- Git コミットに基づくコード変更の振り返り →
oma retroを使用 - エージェントのリアルタイム監視 →
oma dashboard terminalを使用 - 生産性指標 →
oma stats getを使用
想定される入力
- 日付、相対日付、期間、またはツールのフィルター
oma recap --jsonまたは代替ソースから取得できる会話履歴- 希望する日次または複数日分の振り返り範囲
想定される出力
.agents/results/recap/{date}.mdまたは期間を示すファイル名で保存される Markdown の振り返り- TL;DR、概要、テーマ・プロジェクト、その他またはサイドプロジェクト、ツールの使用パターン
- 設定された応答言語でのユーザー向けサマリー
依存関係
oma recap --json- オプションの Claude 代替履歴
~/.claude/history.jsonl - 言語動作を設定する
.agents/oma-config.yaml
制御フローの特徴
- 日付の解決、期間の長さ、利用可能なツール履歴、日次または複数日分の出力形式に応じて分岐します
- ローカルの履歴データを読み取り、Markdown の振り返りファイルを書き込みます
- ツールではなく、内容ごとにグループ化します
構造の流れ
開始
- 指定された日付または期間を解決します。
- 正規化された会話履歴を収集します。
- 日次と複数日分のどちらの出力形式にするかを決定します。
段階
- PREPARE:期間とツールのフィルターを解決します。
- ACQUIRE:CLI または代替手段で履歴を収集し、利用可能な場合は完了の証拠を保持します。
- REASON:内容ごとにグループ化し、証拠に基づいて各項目を「依頼済み」「進行中」「完了」に分類します。
- ACT:必要な形式で振り返りの Markdown を作成します。
- VERIFY:完了の主張すべてに直接的な証拠があることを確認し、その後、グループ分け、言語、出力先を確認します。
- FINALIZE:保存してサマリーを表示します。
遷移
- 日付が指定されていない場合は、
--dateで今日を使用します(--windowのみを指定した場合は、現在を終点とするローリング期間であり、暦日に合わせた期間ではありません)。 - 期間が 3 日以上の場合は、日ごとの時系列ではなく、プロジェクトごとにグループ化します。
- CLI が利用できない場合は Claude の代替手段のみを使用し、対象範囲の制限を報告します。
- タスクがしきい値を下回る場合は、「その他」または「サイドプロジェクト」にまとめます。
失敗と復旧
- 履歴を利用できない場合は、見つからないソースと指定された期間を報告します。
- タイムスタンプが曖昧な場合は、設定されたタイムゾーンを使用し、前提を明記します。
- 抽出データが少ない場合は、簡潔な振り返りを作成し、対象範囲が限られていることを記載します。
終了
- 成功:振り返りファイルが存在し、サマリーが表示されます。
- 部分的な成功:利用できないツールや履歴、または代替手段のみでカバーした範囲を明示します。
論理操作
アクション
| アクション | SSL プリミティブ | 証拠 |
|---|---|---|
| 日付・期間を解決 | INFER | 自然言語による日付ルール |
| 履歴を収集 | CALL_TOOL | oma recap --json または jq による代替手段 |
| 抽出した記録を読む | READ | 会話履歴 |
| テーマ・プロジェクトをグループ化して分類 | INFER | 時間・内容のルールと、プロンプト、進捗、完了、受領確認、または成果物の証拠 |
| 出力形式を検証 | VALIDATE | 日次または複数日分のテンプレート |
| 振り返りを作成 | WRITE | .agents/results/recap/ |
| サマリーを報告 | NOTIFY | 表示された振り返り |
ツールと機器
oma recap --json- Claude の履歴を取得する
jqによる代替手段 - Markdown 出力テンプレート
標準的なコマンドパス
oma recap --date YYYY-MM-DD --json
oma recap --window 7d --json
oma recap --json # rolling last 24h, not "today"
リソースの範囲
| 範囲 | リソースの対象 |
|---|---|
LOCAL_FS | 会話履歴と振り返りの出力ファイル |
PROCESS | oma recap、jq、日付コマンド |
USER_DATA | 会話プロンプトとプロジェクトのアクティビティ |
MEMORY | テーマのグループ化と要約メモ |
前提条件
- 要求された期間を特定できること。
- 少なくとも1つの履歴ソースを利用できること。
影響と副作用
.agents/results/recap/の下に振り返りの Markdown を書き込みます。- ローカルの会話履歴データを読み取ります。
ガードレール
- 証拠のステータス:プロンプトだけで確認できるのは依頼であり、結果ではありません。明示的な完了/結果メッセージ、受領記録、または記載された成果を裏付ける成果物がある場合にのみ、作業を完了とします。進捗を示す証拠がある場合は進行中とし、それ以外は依頼済みとします。ツールの呼び出しや経過時間から完了を推測しないでください。
- TL;DR 必須:裏付けのある成果を上位3件記載します。証拠のステータスに関するルールを満たす場合にのみ「完了」とし、それ以外は依頼中または進行中の作業を明確に要約します。プロジェクト名+ステータス/成果を記載します。ツール名や不要な詳細は記載しません。
- 概要:TL;DR の後に、作業の流れを説明します。主語を「I」にして始め、証拠のステータスを維持します。
- 日次:15分以上の時間ブロックごとにテーマをまとめます。それ以外は「その他」に含めます。
- 複数日(3日以上):プロジェクトごとにセクションを分け、アクティビティ順に並べます。日次ログではなく、スプリントレポートのようにまとめます。
- テーマ/プロジェクトごとに2~4件の箇条書き:要点のみを簡潔に記載します。すべての手順を列挙しないでください。
- 内容ごとのテーマ分け:ツールではなく、実際の作業内容に基づいてグループ化します。
- 期間(日次のみ):
(AM/PM/Evening HH:MM~HH:MM)。AM:~12:00、PM:12:00~18:00、Evening:18:00~。 - 結果の保存:Markdown を
.agents/results/recap/に書き込みます。 - 応答言語:
.agents/oma-config.yamlにlanguageの設定がある場合、その設定に従います。 - エムダッシュ禁止:
—(エムダッシュ)の代わりに、コンマ、ピリオド、または括弧を使用します。
プロセス
1. 日付の特定
ユーザーの自然言語入力から対象の日付または期間を特定します。デフォルトは今日です。
特定ルール:
- 相対的な日付の表現(今日、昨日、一昨日など)→
--date YYYY-MM-DDを計算します - 特定の日付の指定(月+日、または完全な日付)→
--date YYYY-MM-DDに変換します - 相対的な曜日の表現(先週の月曜日、今週の金曜日など)→ 日付を計算します
- 期間の表現(今週、過去3日間、過去2週間など)→
--window Ndに変換します - 日付の指定がない場合 → 今日とし、
--date YYYY-MM-DDに解決します(単独の--window 1dは暦日ではなく、現在を終点とする直近24時間です) - CLI のウィンドウ上限は30日です(それより長い値は警告とともに短縮されます)。要求された期間が上限で短縮された場合は、振り返りにその旨を記載します
2. データの収集
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
CLI がインストールされていない場合のフォールバック:インライン jq を使って Claude の履歴のみを処理します。
# 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: advance the calendar date, then parse both local midnights.
next_date=$(date -j -v+1d -f "%Y-%m-%d %H:%M:%S" "${TARGET_DATE} 12:00:00" +%Y-%m-%d)
start_ts=$(date -j -f "%Y-%m-%d %H:%M:%S" "${TARGET_DATE} 00:00:00" +%s)000
end_ts=$(date -j -f "%Y-%m-%d %H:%M:%S" "${next_date} 00:00:00" +%s)000
# Linux/GNU date alternatives (replace all three lines above):
# next_date=$(date -d "${TARGET_DATE} 12:00:00 tomorrow" +%Y-%m-%d)
# start_ts=$(date -d "${TARGET_DATE} 00:00:00" +%s)000
# end_ts=$(date -d "${next_date} 00:00:00" +%s)000
# Do not add a fixed 24 hours: DST calendar days can have 23 or 25 hours.
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. テーマの分析とグループ化
抽出したデータをすべて読み込み、以下の基準に従って分析します。
グループ化ルール:
- 作業が15分以上にわたる場合にのみ、個別のテーマとして分類します(タイムスタンプの間隔とプロンプト数に基づきます)
- 同じトピックに関する連続したプロンプトは、1つのテーマにまとめます
- 15分未満のタスクは「その他」セクションにまとめます
- ツールではなく、作業内容に基づいてグループ化します
複数ツールの分析:
- 同じ時間帯に複数のツールを使用した場合は、ワークフローを記録します
- 例:「Antigravity で設計 -> Claude で実装 -> Codex でレビュー」
- ツールの切り替えパターンから知見を導きます
各テーマから抽出する内容:
- 実施した主な作業
- 重要な決定事項
- 使用したツールの組み合わせ
- 作成した成果物(ドキュメント、コード、設定など)
4. 出力形式
結果を .agents/results/recap/{date}.md に保存し、同時に表示します。
resources/output-formats.md の Markdown テンプレートを使用します。
- 日次形式(1d または特定の日付):TL;DR → 概要 → 時間帯別のテーマ → その他 → ツールの使用パターン。
- 複数日形式(3d 以上):プロジェクト主導のスプリントレポート形式を使用します。小規模(30 プロンプト未満)の作業には「サイドプロジェクト」を使用し、同じファイルに記載されている複数日分のグループ化ルールに従います。
応答言語は .agents/oma-config.yaml の language 設定に従います。
5. 結果の保存
.agents/results/recap/{date}.md に保存します。
期間を指定する場合は、{start-date}~{end-date}.md 形式を使用します。
# Example paths
.agents/results/recap/2026-04-12.md
.agents/results/recap/2026-04-06~2026-04-12.md
参考資料
- 出力形式のテンプレート:
resources/output-formats.md - Recap CLI:
oma recap --json - 出力ディレクトリ:
.agents/results/recap/ - 言語設定:
.agents/oma-config.yaml - Claude のフォールバック履歴:
~/.claude/history.jsonl