recovery について
recoveryは、コンテキストの喪失やセッション中断、エラーの後に作業を再開するためのエージェント向けワークフロー復旧スキルです。計画、ゲートファイル、推論記録、成果物から進捗を再構成し、次の手順を特定して重複作業を防ぎます。
主な機能
- 01最後に検証済みの手順を特定
- 02計画と成果物から状態を再構成
- 03障害を分類して復旧方法を選択
- 04失敗した対応の反復を検出
- 05再開前に状態を検証
活用シーン
- 01コンテキスト枯渇後の作業再開
- 02セッション中断や消失後の継続
- 03ワークフロー状態が不明な場合の進捗復旧
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oimiragieo/ agent-studio --skill recoveryインストール後、Claude Code で/recoveryを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
commands/recovery.mdhooks/post-execute.cjspre-execute.cjsreferences/failure-types.mdmerge-strategies.mdrecovery-actions.mdresearch-requirements.mdrules/recovery.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/implementation-template.md詳細
リカバリースキル
リカバリースキル - コンテキストの喪失、セッションの中断、エラーの発生後にワークフローを再開するためのワークフロー復旧プロトコルです。状態の再構築、成果物の復旧、ワークフローのシームレスな継続を処理します。 - コンテキストウィンドウの上限到達後にワークフローを再開する - セッションの中断から復旧する - 成果物とゲートファイルからワークフローの状態を再構築する - 最後に完了したステップを特定し、そこから続行する - 復旧中の重複作業を防ぐ使用するタイミング
- ワークフローの途中でコンテキストウィンドウの上限に達した場合
- セッションが中断または失われた場合
- 最後に完了したステップから再開する必要がある場合
- ワークフローの状態を再構築する必要がある場合
ステップ 1:最後に完了したステップを特定する
-
ゲートファイルを確認して、最後に成功した検証を特定します:
- 場所:
.claude/context/history/gates/{workflow_id}/ - validation_status: "pass" のステップのうち、最も番号の大きいものを見つけます
- これが最後に正常に完了したステップです
- 場所:
-
推論ファイルを確認して、進捗を把握します:
- 場所:
.claude/context/history/reasoning/{workflow_id}/ - 最後に完了したステップまでの推論ファイルを読み込みます
- コンテキストと決定事項を抽出します
- 場所:
-
作成された成果物を特定します:
- 成果物レジストリを確認します:
.claude/context/artifacts/registry-{workflow_id}.json - 最後のステップまでに作成されたすべての成果物を一覧表示します
- 成果物ファイルが存在することを確認します
- 成果物レジストリを確認します:
ステップ 2:計画ドキュメントを読み込む
-
計画ドキュメントを読み込みます(ステートレス):
- 成果物レジストリから
plan-{workflow_id}.jsonを読み込みます - 現在のワークフローの状態を抽出します
- 完了済みタスクと保留中のタスクを特定します
- 成果物レジストリから
-
関連するフェーズ計画を読み込みます(複数フェーズの場合):
- プロジェクトが複数フェーズかどうかを確認します(phase_size_max_lines のしきい値を超えているか)
- アクティブなフェーズ計画を読み込みます:
plan-{workflow_id}-phase-{n}.json - フェーズの境界と依存関係を把握します
-
現在の状態を把握します:
- 完了済みタスクを計画に対応付けます
- 次のステップを特定します
- 依存関係を確認します
ステップ 3:コンテキストを復旧する
-
最後に完了したステップの成果物を読み込みます:
- 成果物レジストリを読み込みます
- validation_status: "pass" の成果物をすべて読み込みます
- 成果物の完全性を確認します
-
推論ファイルを読んでコンテキストを把握します:
- 完了済みのステップの推論ファイルを読み込みます
- 重要な決定事項とコンテキストを抽出します
- ワークフローの進行状況を把握します
-
ワークフローの状態を再構築します:
- 計画、成果物、推論を組み合わせます
- 復旧状態ドキュメントを作成します
- 状態の整合性を検証します
ステップ 4:実行を再開する
-
次のステップから続行します:
- 最後に完了したステップの次のステップを特定します
- 計画からステップの要件を読み込みます
- 次のステップへの入力を準備します
-
プランナーが計画のステータスを更新します(ステートレス):
- plan-{workflow_id}.json を現在のステータスで更新します
- 完了したステップに印を付けます
- 進捗の追跡情報を更新します
-
オーケストレーターが次のエージェントを調整します:
- 復旧した成果物を次のステップに渡します
- ワークフローの実行を再開します
- 追加の中断がないか監視します
</execution_process>
失敗の分類
タスクが失敗した場合は、失敗の種類を分類します:
| 失敗の種類 | 指標 | 復旧アクション |
|---|---|---|
| BROKEN_BUILD | ビルドエラー、構文エラー、モジュールが見つからない | ロールバック+修正 |
| VERIFICATION_FAILED | テスト失敗、検証エラー、アサーションエラー | 修正して再試行(最大 3 回) |
| CIRCULAR_FIX | 同じエラーが 3 回以上発生、類似の方法を繰り返し実施 | スキップまたはエスカレーション |
| CONTEXT_EXHAUSTED | トークン制限に到達、最大長を超過 | コンテキストを圧縮して続行 |
| UNKNOWN | 該当するパターンなし | 1 回再試行し、その後エスカレーション |
絶対原則:同じアプローチを 3 回以上試しても成功しない場合は、停止してください。
循環的な修正を検出した場合:
- 現在のアプローチを直ちに停止する
- 試した内容(アプローチ、エラー、ファイル)を記録する
- 根本的に異なるアプローチ(別のライブラリ、別のパターン、よりシンプルな実装)を試す
- それでも失敗する場合は、人間の介入を要請する
検出アルゴリズム:
- 現在のアプローチからキーワードを抽出する(ストップワードを除く)
- 直近 3 回の試行のキーワードと比較する
- 2 回以上の試行でジャカード類似度が 30% を超えた場合、循環的と判定する
例:
Attempt 1: "Using async await for fetch"
Attempt 2: "Using async/await with try-catch"
Attempt 3: "Trying async await pattern again"
=> CIRCULAR FIX DETECTED - Stop and try callback pattern instead
試行回数のしきい値
| 失敗の種類 | 最大試行回数 | その後のアクション |
|---|---|---|
| VERIFICATION_FAILED | 3 | スキップ + エスカレーション |
| UNKNOWN | 2 | エスカレーション |
| BROKEN_BUILD | 1 | ロールバック(正常なコミットがある場合) |
| CIRCULAR_FIX | 0 | 直ちにスキップ |
参考資料
詳細なパターンについては references/ を参照してください。
failure-types.md- 失敗の分類に関する詳細と指標recovery-actions.md- 復旧アクションの判断ツリーと実行方法merge-strategies.md- マルチエージェントのシナリオにおけるファイルのマージ戦略
<best_practices>
復旧の検証チェックリスト
- 最後に完了したステップを正しく特定した
- 計画ドキュメントを読み込み、検証した
- 完了したステップのすべての成果物を利用できる
- 状況を把握するために推論ファイルを確認した
- ワークフローの状態を正確に再構築した
- 作業が重複して実行されない
- 次のステップに必要な入力を準備した
- 復旧内容を推論ファイルに記録した
</best_practices>
<error_handling>
エラー処理
- 計画ドキュメントがない場合:要件から計画を再作成するようプランナーに依頼する
- 成果物がない場合:ソースエージェントに成果物の再作成を依頼する
- 成果物が破損している場合:検証を伴う成果物の再作成を依頼する
- 推論が不完全な場合:成果物レジストリとゲートファイルを使って状態を再構築する
</error_handling>
**コンテキスト喪失後の復旧**:# 1. Check gate files for last completed step
ls .claude/context/history/gates/{workflow_id}/
# 2. Load plan document
cat .claude/context/artifacts/plan-{workflow_id}.json
# 3. Review reasoning files
cat .claude/context/history/reasoning/{workflow_id}/*.json
# 4. Resume from next step
</usage_example>
<usage_example> 自然言語による呼び出し:
"Resume the workflow from where we left off"
"Recover the workflow state and continue"
"What was the last completed step?"
</usage_example>
関連項目
- プランナーエージェント:
.claude/agents/core/planner.md - メモリファイル:
.claude/context/memory/
メモリプロトコル(必須)
開始前:
cat .claude/context/memory/learnings.md
完了後:
- 新しいパターン ->
.claude/context/memory/learnings.md - 問題を発見 ->
.claude/context/memory/issues.md - 決定事項 ->
.claude/context/memory/decisions.md
中断されることを前提にしてください。コンテキストはリセットされる可能性があります。メモリに記録されていないことは、起きていないのと同じです。