Back to list
silenvx

reflect

by silenvx

1🍴 0📅 Jan 14, 2026

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.logGit操作ログ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エージェント版)

  1. 要件理解に悖(もと)るなかりしか

    • ユーザーの要求を正確に理解したか
    • 曖昧な点を確認せず進めなかったか
  2. 実装に恥づるなかりしか

    • コード品質は十分か
    • テスト・ドキュメントは適切に追加したか
  3. 検証に欠くるなかりしか

    • ビルド・テスト・Lintを確認したか
    • レビューコメントを見落としていないか
  4. 対応に憾みなかりしか

    • レビュー指摘を慎重に評価したか
    • 全てに対応したか
  5. 効率に欠くるなかりしか

    • 無駄な作業はなかったか
    • 並列実行・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に任せる」責任転嫁
「レビューで修正済み」のみで終了根本原因の分析がない

発見時の対応:

  1. なぜ自分で事前に気づけなかったかを分析
  2. 今後同様の問題を自分で検出できる仕組みをIssue化
  3. 「AIレビューは存在しないもの」として対策を考える

背景: PR #2668でフック名の誤り(main-sync-check.py vs main_sync_check.py)をAIレビューが検出。振り返りで「レビューで検出可能だからIssue不要」と判断したが、これはAIレビュー依存であり不適切(Issue #2671)。

ユーザーフィードバック対応の確認(必須)

重要: セッション中にユーザーが問題を指摘した場合、その対応を確認する。

チェック項目確認内容
問題の認識ユーザーの指摘を正しく理解したか
問題の修正指摘された問題を修正したか
仕組み化類似問題を将来検出できる仕組みを作成したか

仕組み化の方法:

  1. /add-perspective で振り返り観点を追加
  2. .claude/hooks/ にフックを作成して検出機構を実装
  3. .github/workflows/ にCIチェックを追加
  4. 仕組み化が不要な理由を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

評価指標:

判定評価方法問題判定
createIssue状態確認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化[ ]

振り返り全体の評価

  1. 網羅性: 全セクションを実施し、スキップしたものはないか
  2. 深さ: 表面的な確認で終わらず、本質的な問題を掘り下げたか
  3. 行動: 発見した問題に対して具体的なアクション(Issue作成等)を実行したか

振り返りのアンチパターン

以下は避けるべきパターン:

パターン説明
チェックリスト症候群チェックマークを並べて「問題なし」とする
完了急ぎ症候群「完了しました」を急いで振り返りを省略
前提バイアス「問題がなかった」前提で始める
「完璧です」と言う完璧な状態は存在しない

正しい表現: 「現時点で気づいている反省点は全て対応しました」


仕組み化の例

問題仕組み化
mainで編集してしまうEdit/Writeブロックフック
レビューコメント見落としマージ安全性チェックフック
コミット前の検証漏れpython-lint-check, ui-check-reminder
ドキュメント肥大化markdown-size-checkフック

Score

Total Score

45/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

0/5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon