Agent skill
smart-compact
セッションのコンテキストを分析し、重要な情報を保持するためのプロンプトを生成して /compact コマンドの実行を支援するスキル。コンテキストウィンドウが逼迫してきた時や、セッションを整理したい時に使用。
Install this agent skill to your Project
npx add-skill https://github.com/sushichan044/dotfiles/tree/main/.agents/skills/smart-compact
SKILL.md
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の組み込みコマンドのため、スキルから直接実行はできない- 生成されたコマンドはユーザーが手動でコピー&実行する必要がある
- セッションが十分に長い(コンテキストが逼迫している)時に最も効果的
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
terraform-style-guide
Generate Terraform HCL code following HashiCorp's official style conventions and best practices. Use when writing, reviewing, or generating Terraform configurations.
fix-github-actions-ci
GitHub Actions CI の失敗を調査して修正するためのスキルです。CI ログを分析して失敗箇所・原因を特定し、そのまま修正作業まで行います。
dd-logs
Log management - search, pipelines, archives, and cost control.
golang-safety
Defensive Golang coding to prevent panics, silent data corruption, and subtle runtime bugs. Use whenever writing or reviewing Go code that involves nil-prone types (pointers, interfaces, maps, slices, channels), numeric conversions, resource lifecycle (defer in loops), or defensive copying. Also triggers on questions about nil panics, append aliasing, map concurrent access, float comparison, or zero-value design.
resolve-merge-conflict
現在の branch を分岐元の最新に rebase するときに使う。まず rebase を実行し、止まった conflict を順番に解消して前に進める。長い事前調査を避けて、必要な file だけ見て片付けたいときに使う。
golang-data-structures
Golang data structures — slices (internals, capacity growth, preallocation, slices package), maps (internals, hash buckets, maps package), arrays, container/list/heap/ring, strings.Builder vs bytes.Buffer, generic collections, pointers (unsafe.Pointer, weak.Pointer), and copy semantics. Use when choosing or optimizing Go data structures, implementing generic containers, using container/ packages, unsafe or weak pointers, or questioning slice/map internals.
Didn't find tool you were looking for?