# Dev:git Reflect

> Git履歴から作業セッションを自動検出し、ブロック単位で振り返りサマリーを生成する。 日付境界でなく、コミット間隔の空白（ギャップ）から自然な作業ブロックを識別する。 「振り返り」「作業履歴」「/dev:git-reflect」で起動。 Trigger: 振り返り, 作業振り返り, git-reflect, git振り返り, /dev:git-reflect, 最近何やった

- Skill: `ryryo/dev-git-reflect` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add ryryo/dev-git-reflect`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ryryo/dev-git-reflect/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ryryo (https://skillmd.com/u/ryryo)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/ryryo/dev-git-reflect

---


# Git 作業振り返り（dev:git-reflect）

## 概要

Git コミット履歴を時系列で取得し、コミット間のタイムギャップからセッション境界を自動検出。
各ブロックの詳細分析を **block-analyzer エージェントに並列委譲**（中程度の軽量モデル推奨）し、
結果を統合して振り返りサマリーを表示する。

## 引数

| 引数 | デフォルト | 説明 |
|------|-----------|------|
| ブロック数 | 3 | 振り返るブロック数。ユーザーが「5ブロック」等と指定した場合はそれに従う |
| ギャップ閾値 | 3時間 | この時間以上コミット間隔が空いたらブロック境界とみなす |

ユーザーが「今日の」「先週の」など期間を指定した場合は `--since` / `--until` で絞る。

---

## 実行手順

### Step 1: コミットログ取得

```bash
git log --format="%h %aI %s" -100
```

- 直近100件を取得（ブロック数に応じて足りなければ追加取得）
- `%aI` で ISO 8601 タイムスタンプを使用（タイムゾーン込み）

### Step 2: ブロック分割

コミットを時系列順（古い順）に並べ、隣接コミット間の時間差を計算する。

**分割ルール:**
1. ギャップが **3時間以上** → ブロック境界
2. 日付が変わっても深夜〜早朝の連続作業（例: 23:00→01:00）はギャップが3時間未満なら同一ブロック
3. 必要なブロック数が揃うまで、新しい方から数える

分割結果として、各ブロックについて以下を確定する:
- コミットハッシュのリスト（古い順）
- 時間範囲（"MM/DD HH:MM〜HH:MM"）
- 所要時間（"約X時間"）

### Step 3: コミットメッセージからブロックごとの概要を把握

Step 1 で取得済みのコミットメッセージ（`%h %aI %s`）を各ブロックに振り分け、
メインスレッドでブロックごとのテーマ・作業の流れをざっくり把握しておく。

この時点での理解は「コミットメッセージから読み取れる範囲」に留める。

### Step 4: block-analyzer エージェントを並列起動

各ブロックごとにサブエージェントとして `block-analyzer`（agents/block-analyzer.md）を起動する。
**全ブロックを1つのメッセージで同時に起動すること（並列実行）。** 軽量〜中程度のモデルで十分。

各エージェントへのプロンプトに含める情報:
- block_number
- commits（ハッシュリスト）
- time_range
- duration
- 「agents/block-analyzer.md の手順に従って分析し、diff --stat やファイル変更の詳細を報告せよ」

エージェントの役割は **変更ファイル・行数・ディレクトリ分布など、コミットメッセージだけでは見えない詳細情報の収集・整理**。

### Step 5: メインスレッドでマージ・出力

Step 3 のコミットメッセージベースの概要と、Step 4 のエージェント報告をマージしてサマリーを生成する。

**マージの方針:**
- コミットメッセージから読み取れるテーマ・流れをベースにする
- エージェント報告の diff 統計・ファイル分布で**裏付け・補足・修正**する
  - メッセージからは見えなかったテーマの発見（例: メッセージは "fix" だが実際は大規模リファクタ）
  - 変更の重さの定量情報（+X -Y, Nファイル）
  - ディレクトリ分布からのテーマ分割の精緻化
- 最終出力は **ブロック番号順（新しい順: Block 1 が最新）** に並べる

3ブロック以上の場合、最後に全体の流れを一言で補足する。

---

## 出力例

```
## Block 1: 3/23 11:19〜15:30 (約4時間) — キーカード LLM 選出

**キーカード選出の大改修**
- finetuning CSV データ整備（140例→100例に精査）
- `select-keycard.ts` をCLI→関数化→Haiku API実装まで段階的に進化
- Z.AI プロキシの Structured Output 問題を修正
- 仕様書 Gate A〜F 全完了

**SKILL.md 改善**
- Predict/Scenario/Learn 分析結果マージ、Thinking phase追加

**コミット数:** 25件 | **変更:** +1200 -300 (42ファイル)
```

## エージェント構成

| エージェント | 推奨モデル | 役割 |
|-------------|-----------|------|
| block-analyzer | 軽量〜中程度 | diff --stat・ファイル分布・変更規模を調査し詳細レポートを返す（サマリー生成はしない） |

## 注意事項

- 作業内容の良し悪しを評価しない（純粋な振り返り）
- ユーザーが「何してたっけ」と聞いている前提で、思い出しやすい粒度にする
- メモリに保存すべき情報があれば提案するが、自動保存はしない

