playpark
ホーム会社概要サービスソリューションブログお知らせお問い合わせ
playpark

あらゆる仕事を楽しむ

会社概要サービスソリューションお問い合わせ特定商取引法に基づく表記

© 2019-2026 合同会社playpark All Rights Reserved.

  1. ホーム
  2. ブログ
  3. 技術Tips
  4. 【Claude Code】auto-compact対策と状態管理の設計パターン|Skills長時間ワークフロー完遂ガイド
ブログ一覧に戻る
技術Tips

【Claude Code】auto-compact対策と状態管理の設計パターン|Skills長時間ワークフロー完遂ガイド

Claude Codeのauto-compactによるコンテキスト消失問題を解決する状態管理設計パターン。kickoff.jsonによる永続化・復帰ポイント設計など、Skills長時間ワークフローを確実に完遂する手法を解説。

2026年2月10日21分で読める
Claude Codeauto-compact状態管理Claude Code SkillsAI業務自動化開発効率化CLIリカバリ設計パターン
【Claude Code】auto-compact対策と状態管理の設計パターン|Skills長時間ワークフロー完遂ガイド

「あれ、さっきどこまでやったっけ...」

Claude Codeで長いワークフローを実行していると、突然のauto-compactで会話コンテキストがリセットされることがあります。 Issue分析が終わって、実装に入ったところで...「今どのフェーズだったか分からない」。

この3分前の自分が何をしていたか忘れる問題、心当たりありませんか?

前回の記事ではSkillsの設計思想と自作方法を解説しました。今回は、そのSkillsを確実に完遂するための状態管理設計に焦点を当てます。

この記事で学べること

  • 揮発性問題をファイル永続化で解決するアプローチ
  • 状態スキーマの設計パターン
  • 復帰ポイント(next_actions)の設計意図
  • 人間可読な状態保存の価値
  • 自作Skillに状態管理を組み込む際の指針

揮発性の問題:なぜ状態管理が必要か

Claude Codeの会話コンテキストは揮発性です(settings.jsonのhooksで一部の事故は防げますが、記憶の消失自体は防げません)。以下のタイミングでリセットされます:

トリガー状況
auto-compactトークン上限に達した時
手動クリア/clear コマンド実行時
セッション終了ターミナルを閉じた時

6フェーズのワークフロー(dev-kickoff)を実行する場合、Phase 3(実装)の途中でauto-compactが発生すると、「どこまで終わったか」が分からなくなります。

この問題の本質: AIの記憶は会話に依存しており、会話が消えると記憶も消える。 (人間だって5分前のタスク忘れるのに、AIに期待しすぎでは?)

解決アプローチ:ファイルシステムへの永続化

解決策はシンプルです。ファイルに状態を書き出す。

.claude/
├── kickoff.json    # dev-kickoffの進捗状態
└── iterate.json    # pr-iterateの進捗状態

Claude Codeの記憶は消えても、JSONファイルは残ります。復帰時にこれを読むだけで「続き」から再開できます。

「JSONに書くだけでしょ?」と思うかもしれません。でも、適当に書くと後で泣きます。私たちが実装したdev-kickoffスキルを例に、設計パターンを解説します。

設計パターン1:状態スキーマの設計

なぜスキーマを定義するのか

「とりあえず必要な情報をJSONに書く」だけでは不十分です。以下の問題が発生します:

  • 不整合: フェーズ名がphase3だったり3_implementだったりバラバラ(過去の自分を恨む瞬間)
  • 欠落: 必須フィールドが抜け落ちて復帰不能に
  • 冗長: 不要なデータが蓄積してファイルが肥大化

設計意図: JSON Schemaで状態の形を厳密に定義することで、一貫性を保証する。

kickoff.jsonの構造

{
  "version": "1.0",
  "issue": 123,
  "branch": "feature/issue-123-m",
  "worktree": "/path/to/worktree",
  "current_phase": "3_implement",
  "phases": {
    "1_prepare": { "status": "done", "result": "Worktree created" },
    "2_analyze": { "status": "done", "result": "Identified 5 files" },
    "3_implement": { "status": "in_progress" },
    "4_validate": { "status": "pending" },
    "5_commit": { "status": "pending" },
    "6_pr": { "status": "pending" }
  },
  "next_actions": ["Continue implementation"],
  "config": {
    "strategy": "tdd",
    "depth": "standard"
  }
}

設計上の重要ポイント

フィールド設計意図
versionスキーマ変更時の互換性確保(未来の自分への保険)
current_phase「今どこにいるか」を一目で判断
phases[].status各フェーズの詳細な状態を追跡
next_actions復帰時の次アクションを明示
configワークフロー開始時の設定を保持

current_phaseとphasesを両方持つ理由: current_phaseは「今どこか」を即座に判断するため。phasesは「各フェーズがどうなったか」の詳細を保持するため。冗長に見えますが、用途が異なります。

設計パターン2:フェーズ遷移の設計

なぜ5状態が必要か

各フェーズのstatusは以下の5状態を取ります:

status意味いつ使うか
pending未着手初期状態
in_progress実行中フェーズ開始時
done完了フェーズ成功時
failed失敗エラー発生時
skippedスキップ意図的に飛ばした時

「doneとin_progress、そんなに区別いる?」と思うかもしれません。

設計意図: この区別がないと、「途中で止まった」のか「完了した」のかが分からない。復帰時に「あれ、実装終わったんだっけ?テスト通ったんだっけ?」となります(経験談)。

状態遷移の流れ

読み込み中...図を読み込み中

重要な設計判断: フェーズ完了時にcurrent_phaseを自動で次に進める。これにより、「完了したのに次に進んでいない」という不整合を防ぎます。

設計パターン3:復帰ポイントの設計

next_actionsの意図

{
  "current_phase": "3_implement",
  "next_actions": ["Continue implementation"]
}

current_phaseだけでは「次に何をすべきか」が曖昧です。Phase 3がin_progressのとき、「実装を続けるのか」「レビューを待つのか」「テストを先に書くのか」が分かりません。

設計意図: next_actionsに具体的な次アクションを明記することで、復帰時の判断を不要にする。

auto-compact後のClaudeに「えーっと、何してたんだっけ」と考えさせない。ファイルを読めば即座に動ける状態にしておく。

PR作成後の状態例

{
  "current_phase": "completed",
  "pr": {
    "number": 456,
    "url": "https://github.com/org/repo/pull/456"
  },
  "next_action": "pr-iterate"
}

Phase 6完了後はnext_action: "pr-iterate"を設定。復帰時に「次はpr-iterateを呼べばいい」と即座に分かります。迷う余地がない。

設計パターン4:人間可読な状態保存

なぜJSONだけでは不十分か

auto-compact後、Claudeは状態ファイルを読みます。しかし、JSONは機械向けのフォーマットです。

{"current_phase":"3_implement","phases":{"1_prepare":{"status":"done"},...}}

これを解析するより、人間が読める形式で状態を保存しておく方が効率的です。そして何より、デバッグ時に人間が泣かない。

STATE.mdの設計

auto-compact直前に、JSONをMarkdown形式に変換して保存します:

# Development State

_Auto-generated at 2026-03-26T10:00:00Z_

## Kickoff Status

- **Issue**: #123
- **Branch**: `feature/issue-123-m`
- **Current Phase**: `3_implement`

### Phase Progress

| Phase       | Status                       |
| ----------- | ---------------------------- |
| 1_prepare   | ✅ done - Worktree created   |
| 2_analyze   | ✅ done - Identified 5 files |
| 3_implement | 🔄 in_progress               |
| 4_validate  | ⏳ pending                   |
| 5_commit    | ⏳ pending                   |
| 6_pr        | ⏳ pending                   |

### Next Actions

- [ ] Continue implementation

設計意図: Claudeが読むだけでなく、人間(開発者)も状況を把握できる形式にする。「なんかSkillが止まってるんだけど...」というとき、このファイルを見れば一発で分かります。

設計パターン5:イテレーション状態の管理

PRレビューは「1回で終わる」とは限りません。というか、だいたい終わらない。レビュー→修正→再レビューのループを追跡する必要があります。

iterate.jsonの構造

{
  "version": "1.0",
  "pr_number": 456,
  "current_iteration": 2,
  "max_iterations": 10,
  "status": "in_progress",
  "iterations": [
    {
      "number": 1,
      "review": { "decision": "request-changes", "issues": ["Fix typo"] },
      "ci_status": "passed",
      "fixes_applied": ["Fixed typo"]
    },
    {
      "number": 2,
      "review": { "decision": "pending" },
      "ci_status": "pending"
    }
  ],
  "next_actions": ["Wait for review"]
}

設計上の重要ポイント

フィールド設計意図
max_iterations無限ループ防止(10回で強制停止。それ以上は人間が見たほうがいい)
iterations[]各回の詳細を履歴として保持
fixes_applied何を修正したかを記録(同じ指摘を繰り返さない。学習しないAIは困る)

自作Skillへの応用:skill-creatorに伝えるべきこと

これらの設計パターンを自作Skillに適用したい場合、/skill-creatorに以下を伝えます。スクリプトの実装詳細は気にしなくてOK。設計意図を伝えれば、適切なコードを生成してくれます。

伝えるべき要件

  1. 揮発性対策が必要

    • 「長時間ワークフローでauto-compactが発生する可能性がある」
    • 「途中で止まっても続きから再開したい」
  2. 状態スキーマの設計

    • 「フェーズは〇〇、△△、□□の3段階」
    • 「各フェーズのstatusはpending/in_progress/done/failedを取る」
  3. 復帰ポイントの明示

    • 「next_actionsフィールドで次にやるべきことを明記する」
  4. 人間可読な出力(オプション)

    • 「auto-compact前にMarkdown形式で状態を出力したい」

具体例

/skill-creator データ移行を3フェーズで実行するSkillを作って。
- Phase 1: バックアップ
- Phase 2: 変換
- Phase 3: 検証
auto-compactが発生しても途中から再開できるように、
.claude/migration.jsonに状態を保存して。
各フェーズのstatusとnext_actionsを持たせて。

skill-creatorは、この指示に基づいて適切な状態管理スクリプトを生成します。あなたがupdate-phase.shの実装を書く必要はありません(そういう時代になりました)。なお、SKILL.md自体を軽量に保つコツはSKILL.mdの書き方と設計パターンで解説しています。

まとめ

Claude Code Skillsの状態管理は、揮発性の会話コンテキストをファイルで永続化することで、長時間ワークフローの確実な完遂を実現します。

5つの設計パターン

パターン設計意図
状態スキーマ一貫性のある状態構造を保証
フェーズ遷移「途中で止まった」と「完了した」を区別
復帰ポイントnext_actionsで次アクションを明示
人間可読保存デバッグと手動介入を容易に
イテレーション管理ループ処理の履歴を追跡

自作Skillへの適用

  1. 「揮発性対策が必要」とskill-creatorに伝える
  2. フェーズ構成とstatus定義を明確にする
  3. next_actionsで復帰ポイントを設計する

「途中で止まっても、どこまでやったか分かる」。 これが、Skillsを使った開発ワークフローを安心して任せられる理由です。

この状態管理パターンは、git worktreeを使った並列開発の自動タスク分解と統合でも同じ思想で拡張しています。単体ワークフローのkickoff.jsonが、並列パイプラインのflow.jsonへと進化した形です。

(auto-compactが来ても、もう怖くない)


→ お問い合わせはこちら

この技術を活用した事例

記事の技術が実際のプロジェクトでどう活かされているかをご紹介します

【自社導入事例】ブログ運用を完全自動化 - GitHubリポジトリから記事・サムネイル・SNS投稿まで

「ブログ書くのしんどい」「SNS投稿めんどくさい」を解決。GitHubリポジトリから記事生成、サムネイル作成、SNS投稿文まで自動化した、playpark自身の導入事例を紹介します。

事例を読む

【MiTERAS×CrowdLog連携】勤怠の二重入力を95%削減する方法

勤怠システム(MiTERAS)とプロジェクト管理(CrowdLog)のAPI連携で二重入力問題を解決。月間入力作業時間を95%削減した事例をご紹介します。

事例を読む

【勤怠集計自動化】月次レポート・メール通知・CSV出力を一元管理

Webベースの出席管理システムで、月次集計・メール通知・CSV出力を自動化。手作業を大幅削減した事例をご紹介します。

事例を読む

関連ソリューション

この記事に関連するplayparkのソリューション

業務自動化ソリューション

Excel脱却・API連携で手作業を自動化。作業時間を大幅に削減します。

ソリューションを見るSHITATEYAを見る

サービス紹介

最先端技術を活用したソフトウェア開発・業務自動化サービスの詳細はこちら。

ソリューションを見る
About playpark

「あらゆる仕事を楽しむ」をミッションに、業務自動化・AI活用を手がける合同会社です。このブログの運用自体も、自社開発のClaude Code Skillsで完全自動化しています。

会社概要サービス
一緒に実験しませんか?
ブログ一覧に戻る

関連記事

すべての記事
【Claude Code Skills】SKILL.mdの書き方と設計パターン|肥大化87%削減の実践ガイド
技術Tips
2026年1月22日22分で読める
【Claude Code Skills】SKILL.mdの書き方と設計パターン|肥大化87%削減の実践ガイド

Claude Code SkillsのSKILL.md設計パターンと書き方ガイド。skill.mdの肥大化を87%削減するスクリプト化戦略、設計ベストプラクティスを実例付きで解説します。

Claude CodeClaude Code Skillsskill.md+8
【Claude Code】Skillsの設計思想と自作ガイド - 開発ワークフローを再利用可能にする
技術Tips
2026年2月3日25分で読める
【Claude Code】Skillsの設計思想と自作ガイド - 開発ワークフローを再利用可能にする

Claude Code Skillsの設計思想と自作方法を解説。開発ワークフローを再利用可能なスキルとして体系化し、Issue分析からPR作成までを効率化するアプローチを紹介します。

Claude CodeAI業務自動化+2
【Claude Code】Skillオーケストレーション設計 - 複数Skillを連携させる実践パターン
実験レポート
2026年1月24日24分で読める
【Claude Code】Skillオーケストレーション設計 - 複数Skillを連携させる実践パターン

1つのSkillだけじゃ物足りない。GitHubリポジトリからブログ記事・サムネイル・SNS投稿まで一気通貫で自動化した「Skillオーケストレーション」の設計パターンを解説。

Claude CodeClaude Code Skillsskills+4

この技術を活用したサービス

記事の技術を使って、業務課題を解決しませんか?playparkのソリューションをご覧ください。

ソリューション一覧へ