Conversation Error Reporter
現在の会話セッション内でClaude Codeが遭遇したエラーや想定外挙動を体系的に収集・分析し、原因と改善案を報告する。
検知対象
以下のパターンを会話履歴から検出する:
エラー系
- ツール呼び出し失敗: Bash/Read/Edit/Write/Grep/Glob等のツールがエラーを返したケース
- コマンド実行エラー: 非ゼロの終了コード、シンタックスエラー、パーミッションエラー等
- ファイル操作失敗: 存在しないファイルへのアクセス、Edit時のold_string不一致等
- 権限拒否: ユーザーがツール呼び出しを拒否したケース
想定外挙動系
- リトライ・やり直し: 同じ目的のツール呼び出しを複数回実行したケース
- ユーザー修正: ユーザーが「違う」「そうじゃない」等で軌道修正を求めたケース
- 方針転換: アプローチを変更せざるを得なかったケース
- 前提誤り: ファイル構造やAPI仕様の誤った想定に基づいて行動したケース
品質懸念系
- 非効率な操作: 不要なツール呼び出しや冗長な手順
- 情報不足での推測: 確認せずに推測で進めて後から修正が必要になったケース
ワークフロー
Phase 1: エラー・想定外挙動の収集
- 会話履歴を時系列で走査し、上記の検知対象に該当する事象を抽出
- 各事象について以下を記録:
- 発生箇所: 会話のどの時点で発生したか(何番目のやりとり付近か)
- カテゴリ: エラー系 / 想定外挙動系 / 品質懸念系
- 重大度: Critical(タスク失敗)/ Warning(リカバリ可能)/ Info(軽微・改善余地)
- 事象の概要: 何が起きたかの簡潔な説明
- エラーメッセージ: 実際のエラー出力(あれば)
Phase 2: 原因分析
各事象について根本原因を特定する。よくある原因パターン:
- 環境要因: パス、権限、依存パッケージの問題
- 情報不足: 事前のファイル読み取りやユーザー確認が不十分
- 誤った前提: ディレクトリ構造やファイル内容の想定ミス
- ツール選択ミス: 目的に対して不適切なツールを使用
- コマンドミス: フラグやオプションの誤り
- スコープ逸脱: 依頼された範囲を超えた変更を試みた
原因を特定する際は推測ではなく、会話内のエビデンス(実際のエラー出力やユーザーの指摘)に基づくこと。
Phase 3: 改善案の策定
各事象に対して具体的な対処法を策定する:
- 即時対処: 同じ状況で次回取るべきアプローチ
- 予防策: そもそもエラーを起こさないための事前確認や手順
- ナレッジ: この経験から得られた教訓(特定のツール・コマンド・環境に関する知見)
改善案は「次回同じ状況に遭遇したClaude Codeが実践できる」レベルの具体性を持たせること。 抽象的な「注意する」「確認する」ではなく、「Editの前にReadでファイル内容を確認する」のように行動可能な形にする。
Phase 4: レポート出力
以下のテンプレートに従って会話内にレポートを出力する。
レポートテンプレート
## Conversation Error Report
### サマリー
- 検出事象数: X件(Critical: X / Warning: X / Info: X)
- 主な問題領域: [例: ファイル操作、コマンド実行]
### 事象一覧
#### 1. [事象タイトル]
- **カテゴリ**: [エラー系 / 想定外挙動系 / 品質懸念系]
- **重大度**: [Critical / Warning / Info]
- **発生箇所**: [会話のどの時点か]
- **概要**: [何が起きたか]
- **原因**: [なぜ起きたか]
- **改善案**: [次回どうすべきか]
(以下、事象ごとに繰り返し)
### 総括
- この会話から得られた主な教訓
- 特に注意すべきパターン
自動トリガーの判断基準
以下の条件を満たす場合、タスク完了時にレポート作成を提案する(自動実行ではなく提案):
- 会話中にエラー系の事象が3回以上発生した場合
- Critical重大度の事象が1回以上発生した場合
- ユーザーによる軌道修正が2回以上あった場合
提案時の文言例: 「この会話ではいくつかのエラーがありました。振り返りレポートを作成しますか?」
注意事項
- ユーザーが意図的に拒否したツール呼び出し(権限の都合等)はエラーとして過度に取り上げない
- 正常なリトライ(例: テスト修正のサイクル)と問題のあるリトライを区別する
- レポートは簡潔に保つ。事象が多い場合はCritical・Warningを優先し、Infoは件数のみの報告でもよい
- 改善案はあくまで「提案」であり、CLAUDE.mdや設定の直接変更は行わない