
reflect
by silenvx
SKILL.md
name: reflect description: セッションの行動を振り返り、五省で自己評価し、改善点をIssue化する。ログ分析やなぜなぜ分析も実行可能。
振り返り実行ガイド
セッション終了時の振り返り手順。五省で自己評価し、改善点をIssue化する。
ultrathink
0. 必須チェック(最初に実行)
重要: 以下を必ず実行してから振り返りを開始。形式的な振り返りを防ぐため、各項目で具体的な記述を要求します。
| チェック項目 | 実行内容(記述必須) |
|---|---|
| 前提バイアス回避 | 「問題があったはず」という前提で始める。「問題なし」で始めない |
| 調査の網羅性 | 関連する全ディレクトリを調査したか?漏れた箇所があれば記述 |
| 3回自問 | 「他にないか?」を3回自問し、検討した観点を記述 |
1. 「何か問題があったはず」という前提で始める
2. 最低3回「他にないか?」と自問する
3. チェックマークではなく具体的な行動と改善点を記述
4. 反省点はドキュメント化 **または** 仕組み化
1. このセッションの行動振り返り
今回のセッションで実行した主要アクティビティを振り返ってください:
| カテゴリ | 確認項目 |
|---|---|
| 実施タスク | 何を依頼され、何を実施したか |
| worktree操作 | 作成・削除したworktree |
| PR操作 | 作成、レビュー対応、マージしたPR |
| Issue操作 | 作成、更新、クローズしたIssue |
| Skill使用 | 使用したSkill(code-review, development-workflow等) |
| ブロック対応 | 遭遇したブロックとその回避方法 |
2. ログによる調査(必須)
重要: ログ確認は必須です。ログから潜在的な問題を発見できることがあります。
現在セッションのログ抽出
セッションIDはセッション開始時に [CONTEXT] メッセージで表示されます(形式: Session: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。
表示されていない場合は、最新の状態ファイルから取得:
SESSION_ID=$(ls -t .claude/logs/flow/state-*.json 2>/dev/null | head -1 | sed 's/.*state-\(.*\)\.json/\1/' | sed 's/[^a-zA-Z0-9-]//g')
セッション固有のログを直接参照:
# セッション固有のフック実行ログ
cat ".claude/logs/execution/hook-execution-$SESSION_ID.jsonl"
# セッション固有のフロー状態
cat ".claude/logs/flow/state-$SESSION_ID.json"
利用可能なログ一覧
| ディレクトリ | ファイル | 用途 | 生成タイミング |
|---|---|---|---|
execution/ | hook-execution-{session_id}.jsonl | セッション毎のフック実行履歴(approve/block両方) | 全フック実行時 |
hook-errors.log | 全セッションのブロック記録(集約) | block判定時 | |
hook-warnings.log | 警告記録 | 警告出力時 | |
api-operations-{session_id}.jsonl | セッション毎のGitHub API操作ログ | gh/git API呼び出し時 | |
git-operations.log | Git操作ログ | git操作時 | |
flow/ | events.jsonl | フロー状態遷移 | フェーズ変更時 |
state-{session_id}.json | セッション状態 | 状態変更時 | |
metrics/ | behavior-anomalies.jsonl | 行動異常検出(偽陽性含む) | 異常検出時 |
block-patterns.jsonl | ブロックパターン分析 | セッション終了時 | |
session-metrics.log | セッションメトリクス | セッション終了時 | |
tool-efficiency-metrics.log | ツール効率 | ツール使用時 | |
reports/ | session-*.json | セッションレポート | セッション終了時 |
典型的な分析クエリ
# 現在セッションのブロック理由を確認
cat ".claude/logs/execution/hook-execution-$SESSION_ID.jsonl" | jq -r 'select(.decision == "block") | .reason'
# 現在セッションの状態確認
jq '.workflows.main.current_phase' ".claude/logs/flow/state-$SESSION_ID.json"
# 特定フックのブロック回数(現在セッション)
cat ".claude/logs/execution/hook-execution-$SESSION_ID.jsonl" | jq -r 'select(.decision == "block") | .hook' | sort | uniq -c
Skill使用状況の確認
# transcriptファイルのパス(SESSION_IDから特定)
TRANSCRIPT=$(ls -t ~/.claude/projects/*/sessions/"$SESSION_ID"/transcripts/*.jsonl 2>/dev/null | head -1)
# 使用されたSkill一覧
cat "$TRANSCRIPT" | jq -r 'select(.message.content[]?.name == "Skill") | .message.content[] | select(.name == "Skill") | .input.skill' | sort | uniq -c
確認すべき項目:
| 確認項目 | 質問 |
|---|---|
| 使用タイミング | 適切なタイミングでSkillを使用したか? |
| 使用漏れ | 使用すべきだったが使用しなかったSkillはないか? |
| 効果 | Skill使用により効率化・品質向上に繋がったか? |
よくある使用漏れパターン:
| 状況 | 使用すべきSkill |
|---|---|
| worktree作成・PR作成時 | development-workflow |
| レビューコメント対応時 | code-review |
| セッション終了時 | reflect |
| フック実装・修正時 | hooks-reference |
ログ分析の必須チェック
重要: ログを「表示して終わり」にしない。以下のチェックを必ず実行してください。
| チェック項目 | 確認内容 | 具体例 |
|---|---|---|
| タイムスタンプ分析 | 同じフックが30秒以内に2回以上ブロックしていないか | 即時再試行の疑い |
| パターン検出 | 同じ対象への連続操作がないか | 根本原因を解消していない |
| 因果関係 | 各ブロック後、原因を解消したか、回避しただけか | NG例: 即再試行 |
| ppidベースログ検出 | ppid- プレフィックスのログファイルが存在しないか | session_id伝播の問題 |
分析コマンド例:
# 同一セッションのブロックをタイムスタンプ順に確認
cat ".claude/logs/execution/hook-execution-$SESSION_ID.jsonl" | jq -r 'select(.decision == "block") | [.timestamp, .hook, .details.thread_id // .details.command // ""] | @tsv'
セクション2の観点チェック
| 観点 | 確認内容 | チェック |
|---|---|---|
| セッション事実 | ログを確認し、客観的事象を把握したか | [ ] |
| 異常パターン | 通常と異なる動作を確認したか | [ ] |
| Skill使用の適切性 | 適切なタイミングでSkillを使用したか | [ ] |
3. PR/Issue実装評価(必須)
重要: セッション中に作成したPR/Issueの実装内容を評価します。
3.1 Issue要件の抽出(最初に実行)
# Issue本文を読む(必須)
gh issue view <Issue番号>
抽出すべき項目:
| 抽出項目 | 確認内容 |
|---|---|
| 明示的要件 | Issue本文に書かれた要件 |
| チェックリスト | - [ ] 形式のタスク一覧 |
| 対応案 | 「対応案」セクションに書かれた実装方針 |
| 暗黙の要件 | 明示されていないが当然必要な事項 |
3.2 PR実装内容の確認
# PRの説明を読む
gh pr view <PR番号>
# 変更ファイル一覧
gh pr view <PR番号> --json files --jq '.files[].path'
3.3 要件と実装の突合せ(核心)
| Issue要件 | PR実装 | 状態 |
|---|---|---|
| 例: ブロック型に変更 | 実装済み | 完了 |
| 例: エッジケース対応 | 未実装 | 要対応 |
3.4 レビューコメントの確認
# コードレビューコメント
gh api repos/:owner/:repo/pulls/<PR番号>/comments --jq '.[] | {path: .path, body: .body}'
# 会話コメント
gh pr view <PR番号> --json comments --jq '.comments[] | {author: .author.login, body: .body}'
セクション3の観点チェック
| 観点 | 確認内容 | チェック |
|---|---|---|
| 実装後の動作確認 | マージ後に動作を確認したか | [ ] |
4. 開発フローの評価(五省)
五省に基づき自己評価してください:
五省(AIエージェント版)
-
要件理解に悖(もと)るなかりしか
- ユーザーの要求を正確に理解したか
- 曖昧な点を確認せず進めなかったか
-
実装に恥づるなかりしか
- コード品質は十分か
- テスト・ドキュメントは適切に追加したか
-
検証に欠くるなかりしか
- ビルド・テスト・Lintを確認したか
- レビューコメントを見落としていないか
-
対応に憾みなかりしか
- レビュー指摘を慎重に評価したか
- 全てに対応したか
-
効率に欠くるなかりしか
- 無駄な作業はなかったか
- 並列実行・sub-agentを活用したか
振り返り出力テンプレート
## セッション概要
- **日時**: YYYY-MM-DD HH:MM - HH:MM
- **セッションID**: [.claude-sessionから取得]
- **成果物**: PR #XXX, Issue #XXX(マージ済み/オープン)
## 今回のセッションで行った作業
1. [作業1の説明] (PR/Issue番号)
2. [作業2の説明] (PR/Issue番号)
## 五省
1. **要件理解に悖るなかりしか**
- [具体的な評価内容]
- **反省点**: [あれば記載]
2. **実装に恥づるなかりしか**
- [具体的な評価内容]
- **反省点**: [あれば記載]
3. **検証に欠くるなかりしか**
- [ビルド/テスト/Lint結果]
- [AIレビュー結果]
4. **対応に憾みなかりしか**
- [レビューコメント対応状況]
5. **効率に欠くるなかりしか**
- [ワークフロー評価]
- **反省点**: [あれば記載]
## 反省点と対策
| 反省点 | 対策 | 優先度 | Issue(あれば) |
|--------|------|--------|----------------|
| [具体的な反省点] | [仕組み化/ドキュメント化] | 高/中/低 | [あればIssue番号] |
5. 自律完遂度の評価
5.1 中断イベントの抽出
| 中断タイプ | 検出方法 | 例 |
|---|---|---|
| フックブロック | ログから抽出 | exit 2 によるブロック |
| AskUserQuestion使用 | 記憶から抽出 | 選択肢の提示、確認 |
| ユーザー指示待ち | 記憶から抽出 | 「〜しますか?」 |
| エラー報告・相談 | 記憶から抽出 | 問題発見時の報告 |
ログからの抽出コマンド:
# フックブロック一覧
cat ".claude/logs/execution/hook-execution-$SESSION_ID.jsonl" | jq -r 'select(.decision == "block") | "\(.timestamp // "unknown") | \(.hook // "unknown") | \(.reason // "理由なし")"'
5.2 中断の適切性評価
| 判定 | 基準 | 例 |
|---|---|---|
| 必要 | セキュリティ、破壊的操作、重大な選択肢 | 本番データ削除の確認 |
| 不要 | 自動化可能、ルール明確化で回避可能 | マージ確認(AGENTS.mdで自動マージ指示あり) |
5.3 自律完遂度スコア
必要な中断数 = 総中断数 - 不要な中断数
自律完遂度 =
- 総中断数 > 0 の場合: 必要な中断数 / 総中断数 × 100%
- 総中断数 = 0 の場合: 100%
- 100%: 全ての中断が必要だった(理想)
- 80%以上: 良好
- 80%未満: 改善が必要(Issue作成必須)
5.4 不要な中断への対策
不要な中断が見つかった場合、以下のアクションを実行してください:
| 根本原因 | 対策 |
|---|---|
| ルールの認識不足 | AGENTS.md/Skillsを再読してルールを確認 |
| ルールの不明確さ | ルール明確化のIssueを作成 |
| フック設計の問題 | フック改善のIssueを作成 |
| 自動化の欠如 | 自動化フック/スクリプトのIssueを作成 |
Issue作成時のラベル: enhancement, developer-experience
出力形式:
### 対策
| 不要な中断 | 根本原因 | 対策 | Issue |
|-----------|----------|------|-------|
| マージ確認 | AGENTS.mdルールの認識不足 | ルール再確認(Issue不要) | - |
| worktree作成確認 | 自動化の欠如 | 自動worktree作成フック | #xxx |
セクション5の観点チェック
| 観点 | 確認内容 | チェック |
|---|---|---|
| 自律完遂度 | 中断イベントを全て抽出し、適切性を評価したか | [ ] |
6. 改善点の洗い出し
反省点の対策
反省点は「ドキュメント化」または「仕組み化」する:
| 対策 | 優先度 | 例 |
|---|---|---|
| 仕組み化 | 高 | フック、CI、ツール |
| ドキュメント化 | 低 | AGENTS.md追記 |
重要: ドキュメント追加だけでは問題は解決しない。仕組み化を優先。
なぜなぜ分析(5 Whys)
問題発生時に根本原因を特定:
問題: [発生した問題]
なぜ1: [直接的な原因]
なぜ2: [なぜ1の原因]
なぜ3: [なぜ2の原因]
なぜ4: [なぜ3の原因]
なぜ5: [根本原因]
対策: [根本原因への対策]
ポイント:
- 個人ではなくプロセス・仕組みに焦点
- 5回は目安、根本原因に到達したら終了
- 再発防止策に繋げる
教訓の記録方法
重要: 教訓や改善点を発見したら、[lesson] タグを使って明示的にマークしてください。
タグ形式:
[lesson] 教訓の内容 → Issue #番号
| 条件 | 動作 |
|---|---|
[lesson] タグあり、Issue参照なし | ブロック(Issue化必須) |
| キーワードのみ(タグなし) | 警告(ブロックしない) |
[lesson] タグあり、Issue参照あり | 正常(通過) |
仕組み化の完成度チェック
「仕組み化」を謳うIssueをクローズした場合、以下を確認:
| チェック項目 | 確認内容 |
|---|---|
| ドキュメント | AGENTS.md等にルールが追記されているか |
| 強制機構 | フック/CI/ツールで違反が自動的にブロックされるか(警告のみは不十分) |
重要: ドキュメント追加だけでは「仕組み化完了」とは言えない。強制機構がなければ再発防止にならない。
AIレビュー依存パターンの検出(必須)
重要: 振り返り中に以下のパターンを使用していないか確認する。
| 禁止パターン | なぜ禁止か |
|---|---|
| 「レビューで検出可能」 | AIレビューを安全網として期待している |
| 「AIレビューが指摘してくれた」 | 自分で事前に気づくべきだった |
| 「Copilot/Codex/Geminiに任せる」 | 責任転嫁 |
| 「レビューで修正済み」のみで終了 | 根本原因の分析がない |
発見時の対応:
- なぜ自分で事前に気づけなかったかを分析
- 今後同様の問題を自分で検出できる仕組みをIssue化
- 「AIレビューは存在しないもの」として対策を考える
背景: PR #2668でフック名の誤り(main-sync-check.py vs main_sync_check.py)をAIレビューが検出。振り返りで「レビューで検出可能だからIssue不要」と判断したが、これはAIレビュー依存であり不適切(Issue #2671)。
ユーザーフィードバック対応の確認(必須)
重要: セッション中にユーザーが問題を指摘した場合、その対応を確認する。
| チェック項目 | 確認内容 |
|---|---|
| 問題の認識 | ユーザーの指摘を正しく理解したか |
| 問題の修正 | 指摘された問題を修正したか |
| 仕組み化 | 類似問題を将来検出できる仕組みを作成したか |
仕組み化の方法:
/add-perspectiveで振り返り観点を追加.claude/hooks/にフックを作成して検出機構を実装.github/workflows/にCIチェックを追加- 仕組み化が不要な理由をIssueに記録
禁止パターン:
| パターン | なぜ禁止か |
|---|---|
| 問題を修正して終了 | 同じ問題が再発する |
| 「今後気をつける」 | 仕組み化されていない |
| ドキュメント追記のみ | 強制力がない |
背景: Issue #2754 で導入。ユーザーが問題を指摘した場合、その問題の修正だけでなく、類似問題を将来検出できる仕組み化が必要。
セクション6の観点チェック
| 観点 | 確認内容 | チェック |
|---|---|---|
| 根本原因 | なぜなぜ分析をしたか | [ ] |
| 見落とし | 「他にないか?」を3回自問したか | [ ] |
| 安易な判断 | 「問題なし」と判断する前に十分検討したか | [ ] |
| Issue化 | 発見した問題をIssue化したか | [ ] |
| 「対応済み」検証 | 仕組みの実行タイミングを確認し、有効か検証したか | [ ] |
| 振り返り自体の評価 | 形式的なチェックリスト消化になっていないか | [ ] |
| AIレビュー依存 | 「レビューで検出可能」を理由にIssue省略していないか | [ ] |
| ユーザーフィードバック対応 | 指摘された問題を仕組み化したか | [ ] |
| 不整合発見時の実態確認 | テストや既存コードの期待値を鵜呑みにせず、実態(ファイル名、過去のリファクタリング等)を確認したか | [ ] |
| 「後で対応」発言のIssue化 | セッション中に「別途対応」「後で」等と発言した問題がIssue化されているか | [ ] |
7. Issue判定の記録(Issue #2677)
目的: Issue作成/不作成の判定を記録し、後から判定の妥当性を評価可能にする。
7.1 Issue作成する場合
gh issue create 実行時に自動記録される(手動対応不要)。
7.2 Issue作成しない場合(skip判定)
問題を検討したが、Issue作成しないと判断した場合は必ず以下を実行:
python3 .claude/scripts/record-issue-decision.py skip \
--problem "検討した問題の概要" \
--reason "既存ルールでカバー|重複|既に対応済み" \
--context reflect \
--session-id "$SESSION_ID"
理由の例:
| 理由 | 使用場面 |
|---|---|
既存ルールでカバー | AGENTS.md等に既存ルールがあり、追加アクション不要 |
重複 | 既存のオープンIssueと同じ問題(--related-issue必須) |
既に対応済み | このセッション内で既に修正済み |
注意: 「軽微だから」という理由でのスキップは禁止。Section 8「severityに関わらず全てIssue化」ルール参照。
重複の場合:
python3 .claude/scripts/record-issue-decision.py skip \
--problem "検討した問題の概要" \
--reason "重複" \
--related-issue 1234 \
--context reflect \
--session-id "$SESSION_ID"
7.3 判定評価(定期実行推奨)
# 直近7日間の判定を評価
python3 .claude/scripts/evaluate-issue-decisions.py --days 7
評価指標:
| 判定 | 評価方法 | 問題判定 |
|---|---|---|
| create | Issue状態確認 | NOT_PLANNED → 不適切(作成すべきでなかった) |
| skip | 類似Issue検索 | 後から類似Issue作成 → 見逃しの可能性 |
8. Issue作成(必須)
重要: 改善点が見つかった場合、severity に関わらず全てIssue化が必須です。
発見した改善点について:
- 1つの問題につき1つのIssueを作成
- 再現手順と期待動作を含める
- 適切なラベルを付与
9. 最終確認(全観点サマリー)
観点チェック完了確認
| セクション | 主な確認項目 | 完了 |
|---|---|---|
| 2. ログ調査 | セッション事実、異常パターン、Skill使用 | [ ] |
| 3. PR/Issue評価 | 実装後の動作確認 | [ ] |
| 4. 開発フロー | 五省による自己評価 | [ ] |
| 5. 自律完遂度 | 中断イベントの評価 | [ ] |
| 6. 改善点 | 根本原因、見落とし、Issue化 | [ ] |
| 7. Issue判定記録 | create/skip判定を記録 | [ ] |
| 8. Issue作成 | 全改善点のIssue化 | [ ] |
振り返り全体の評価
- 網羅性: 全セクションを実施し、スキップしたものはないか
- 深さ: 表面的な確認で終わらず、本質的な問題を掘り下げたか
- 行動: 発見した問題に対して具体的なアクション(Issue作成等)を実行したか
振り返りのアンチパターン
以下は避けるべきパターン:
| パターン | 説明 |
|---|---|
| チェックリスト症候群 | チェックマークを並べて「問題なし」とする |
| 完了急ぎ症候群 | 「完了しました」を急いで振り返りを省略 |
| 前提バイアス | 「問題がなかった」前提で始める |
| 「完璧です」と言う | 完璧な状態は存在しない |
正しい表現: 「現時点で気づいている反省点は全て対応しました」
仕組み化の例
| 問題 | 仕組み化 |
|---|---|
| mainで編集してしまう | Edit/Writeブロックフック |
| レビューコメント見落とし | マージ安全性チェックフック |
| コミット前の検証漏れ | python-lint-check, ui-check-reminder |
| ドキュメント肥大化 | markdown-size-checkフック |
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon