Smart Compact
セッションのコンテキストを分析し、ユーザーの意図に沿った /compact プロンプトを生成する。
実行フロー
Phase 1: セッションコンテキスト分析
会話履歴全体を分析し、以下の要素を抽出する:
- 作業中のタスク: 現在取り組んでいる実装・修正・調査の内容
- 重要な技術的決定: アーキテクチャ選定、ライブラリ選定、設計判断
- 未解決の問題: まだ対応が必要なエラー、バグ、課題
- ファイル変更履歴: セッション中に変更・作成したファイルとその目的
- コンテキスト依存情報: 後続の作業に必要な前提知識や制約
分析結果を簡潔に箇条書きで表示する。
Phase 2: ヒアリング
Phase 1の分析結果に基づき、AskUserQuestionでユーザーにヒアリングする。
質問の生成ルール:
- セッションの内容に応じて 動的に 選択肢を生成する
- 選択肢はそのセッション固有のコンテキスト(タスク名、ファイル名、技術スタック等)を含む具体的なものにする
- multiSelect: true で複数選択可能にする
- 2〜4個の選択肢を用意する
質問テンプレート:
質問: "compactで重点的に保持したい情報はどれですか?"
header: "保持情報"
multiSelect: true
選択肢の例(セッション内容に応じて動的生成):
- "<具体的なタスク名>の実装進捗と残作業"
- "<ファイル名>周辺のエラー調査コンテキスト"
- "<技術名>に関する設計判断と理由"
- "<機能名>のAPI仕様と型定義"
重要: プリセットの汎用的な選択肢ではなく、セッション分析結果から導出した具体的な選択肢を生成すること。
Phase 3: プロンプト生成
ユーザーの回答に基づき、/compact に渡すプロンプトを生成する。
プロンプト生成ガイドライン:
- ユーザーが選択した保持項目を最優先で含める
- 現在のタスクの継続に必要な最小限のコンテキストを含める
- 具体的なファイル名、関数名、エラーメッセージなど固有名詞を含める
- 「何を捨てるか」ではなく「何を保持するか」の指示として記述する
- プロンプトは日本語で生成する
生成フォーマット:
以下の情報を重点的に保持してコンテキストを圧縮してください:
1. [保持項目1の具体的な内容]
2. [保持項目2の具体的な内容]
3. [保持項目3の具体的な内容]
特に以下は正確に保持してください:
- [重要な固有名詞、パス、コマンドなど]
Phase 4: 確認と実行案内
生成したプロンプトをユーザーに提示し、AskUserQuestionで確認する。
AskUserQuestionで確認:
- "このプロンプトでcompactを実行しますか?"
- "実行する" - コマンドを表示
- "修正する" - 修正点を指示
- "キャンセル"
承認された場合:
以下のフォーマットでコピー可能なコマンドを出力する:
以下のコマンドをコピーして実行してください:
```
/compact <生成したプロンプト>
```
修正が必要な場合:
ユーザーの修正指示を反映してプロンプトを再生成し、再度確認する。
エラーハンドリング
| 状況 | 対応 |
| ------------------------------- | --------------------------------------- |
| セッションが短すぎてcompact不要 | compactの必要性が低いことを通知して終了 |
| 保持すべき情報が特にない場合 | 引数なしの /compact を提案 |
| ユーザーがキャンセルした場合 | 何もせず終了 |
使用例
> /smart-compact
=== Phase 1: セッションコンテキスト分析 ===
このセッションの主な内容:
- dotfiles CLIのMCPMerger機能の実装
- defu を使ったディープマージのバグ修正
- tests/core/mcp-merger.test.ts のテスト追加
=== Phase 2: ヒアリング ===
[AskUserQuestion]
compactで重点的に保持したい情報はどれですか?
[1] MCPMergerのdefu統合バグの調査経緯と修正内容
[2] mcp-merger.test.ts の追加テストケースと意図
[3] claude.jsonのマージ仕様(キー保持ルール)
[4] Other
> 1, 3 を選択
=== Phase 3: プロンプト生成 ===
生成したプロンプト:
---
以下の情報を重点的に保持してコンテキストを圧縮してください:
1. MCPMergerでdefuを使ったmcpServersマージ時に、既存キーが上書きされるバグの原因と修正内容(src/core/mcp-merger.ts の mergeConfig 関数)
2. claude.jsonのマージ仕様:mcpServersキーのみマージし、apiKey等の他キーはdefu経由で保持する設計判断
特に以下は正確に保持してください:
- src/core/mcp-merger.ts, tests/core/mcp-merger.test.ts のファイルパス
- defu の非破壊マージ挙動(ターゲット側の値が優先される仕様)
---
=== Phase 4: 確認 ===
[AskUserQuestion]
このプロンプトでcompactを実行しますか?
> 実行する
以下のコマンドをコピーして実行してください:
/compact 以下の情報を重点的に保持してコンテキストを圧縮してください:...
Notes
/compactはClaude Codeの組み込みコマンドのため、スキルから直接実行はできない- 生成されたコマンドはユーザーが手動でコピー&実行する必要がある
- セッションが十分に長い(コンテキストが逼迫している)時に最も効果的