optimize-prompt-token-efficiency について
CLAUDE.md、スキル、仕様書などのプロンプトを、意味を保ちながら短縮するスキルです。検証結果に基づいて反復的に修正し、確認後に元ファイルを置き換えます。
主な機能
- 01編集前の検証
- 02検証結果に基づく圧縮
- 03意味の保持を再検証
- 04最大5回の反復
- 05検証後に元ファイルを置換
活用シーン
- 01冗長なCLAUDE.mdの短縮
- 02エージェントプロンプトのトークン削減
- 03スキルや仕様書の圧縮
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ doodledood/ claude-code-plugins --skill optimize-prompt-token-efficiencyインストール後、Claude Code で/optimize-prompt-token-efficiencyを入力して読み込まれたか確認します。
詳細
プロンプトのトークン効率を最適化する
検証ループを通じて情報密度を最大化し、プロンプトのトークン効率を反復的に最適化します。主な目標: AI が消費するプロンプト(CLAUDE.md、スキル、エージェントプロンプト、仕様書)のすべての意味内容を保持しつつ、トークン消費量を削減することです。
概要
このスキルは、冗長なプロンプトをトークン効率の高いバージョンへと次の流れで変換します:
- まず検証 -
prompt-token-efficiency-verifierが変更を加える前に非効率性をチェックします - 最適化 - 検証者のフィードバックに基づいて対象を絞った圧縮を適用します
- 再検証 - 圧縮がロスレスであることを検証し、問題が残る場合は反復します(最大 5 回)
- 出力 - 検証に合格した後にのみアトミックに置き換えます
ループ: 読み込み → 検証 → (効率的なら終了) → フィードバックに基づいて最適化 → 再検証 → (問題があれば反復) → 出力
重要な原則: 一度のパスで最適化しようとしないでください。検証者がすべての変更を主導します - 非効率性が見つからなければ、そのプロンプトはすでにトークン効率が高いということです。
ワークフロー
フェーズ 0: タスクリストの作成(すぐにタスク管理を使用する)
ワークフローのフェーズを追跡する todo を作成します。リストは作業領域を反映するものであり、固定された手順ではありません。
開始時の todo:
- [ ] Input validation
- [ ] Initial verification
- [ ] (Expand: optimization iterations on INEFFICIENCIES_FOUND)
- [ ] Output optimized prompt
フェーズ 1: 入力の検証
「入力の検証」todo を in_progress にマークします。
ステップ 1.1: 引数の解析
$ARGUMENTS からファイルパスを抽出します。パスが指定されていない場合は、使用方法を示してエラーにします。
ステップ 1.2: ファイルの検証
- Read ツールを使用してファイルが存在するか確認します
- 対応する型を検証します:
.md、.txt、.yaml、.json - 対応していない場合はエラー: 「対応していないファイル形式です。対応形式: .md、.txt、.yaml、.json」
ステップ 1.3: 元の内容の読み込みと計測
- ファイルの内容を読み込みます
- トークン数を推定します:
Math.ceil(content.length / 4)(概算) - 比較用に元の内容とトークン数を保存します
ステップ 1.4: メタデータの保存
original_path: ソースファイルのパスoriginal_content: プロンプトの全文original_tokens: 推定トークン数working_path: 反復用の/tmp/optimized-efficiency-{timestamp}.{ext}
「入力の検証」todo を completed にマークします。
フェーズ 2: 初回の検証
「初回の検証」todo を in_progress にマークします。
ステップ 2.1: 作業パスへのコピー
Write ツールを使用して元の内容を作業パスにコピーします(検証にはファイルパスが必要です)。
ステップ 2.2: まず検証者を実行する
最適化を一切行う前に、Task ツールを介して prompt-token-efficiency-verifier エージェントを起動します:
- subagent_type: "prompt-engineering:prompt-token-efficiency-verifier"
- prompt: "Verify prompt token efficiency. File: {working_path}. Check for redundancy, verbose phrasing, filler words, structural inefficiencies, and compression opportunities. Report VERIFIED if already efficient, or INEFFICIENCIES_FOUND with specific details."
ステップ 2.3: 検証者の応答の処理
- 「VERIFIED」の場合: todo を completed にマークし、メッセージ「プロンプトはすでにトークン効率が高いです。変更は不要です。」とともにフェーズ 4(出力)へ直接進みます
- 「INEFFICIENCIES_FOUND」の場合: todo を completed にマークし、問題リストを保存し、「最適化の反復 1」todo を追加してフェーズ 3 へ進みます
- 検証者が失敗した、または予期しない形式を返した場合: 同一のパラメータで一度だけ再試行します。再試行が失敗した場合はエラーを報告します: 「検証に失敗しました - 検証者なしでは続行できません。」
ステップ 2.4: 検証者の検出結果の表示
非効率性が見つかった場合は、ユーザーに概要を表示して続行します:
Verifier found {count} token efficiency issues. Proceeding with optimization...
「初回の検証」todo を completed にマークします。
フェーズ 3: 最適化ループ (検証エージェント駆動)
「最適化イテレーション 1」の todo を in_progress にマークします。
重要な原則: すべての修正は検証エージェントのフィードバックに基づいて行います。プロンプトを独自に分析しないでください。検証エージェントが報告した特定の非効率性のみを修正します。
1 から 5 までの各イテレーションについて:
-
検証エージェントのフィードバックから圧縮を適用: 検証エージェントのレポートにある各非効率性について、提案された圧縮を適用します。最適化されたバージョンを working_path に書き込みます。
- 検証エージェントが特定した非効率性のみを修正してください。独自の改善を追加しないでください
-
再検証: Task ツール経由で prompt-token-efficiency-verifier エージェントを起動します:
- subagent_type: "prompt-engineering:prompt-token-efficiency-verifier"
- prompt: "圧縮がロスレスであることを検証してください。元のファイル: {original_path}。圧縮ファイル: {working_path}。意味内容を比較し、欠落した事実、変更された意味、失われた強調、削除されたニュアンスがないか確認してください。ロスレスであれば VERIFIED、具体的な欠落があれば ISSUES_FOUND を報告してください。"
-
応答の処理:
- 「VERIFIED」の場合: todo を完了としてマークし、ループを終了して、フェーズ 4 に進みます
- 「ISSUES_FOUND」かつイテレーション < 5 の場合: todo を完了としてマークし、新しい問題リストを保存し、「最適化イテレーション {next}」の todo を追加して、次のイテレーションに進みます
- 「ISSUES_FOUND」かつイテレーション = 5 の場合: 未解決の問題に関する注記とともに todo を完了としてマークし、警告を付けてフェーズ 4 に進みます
- 検証エージェントが失敗したか、予期しない形式を返した場合: ユーザーにエラーを表示し、同一のパラメータで 1 回再試行します。再試行が失敗した場合は、警告「検証が不完全です - 手動レビューを推奨します。」を付けてフェーズ 4 に進みます。
圧縮テクニック
検証エージェントが指摘した非効率性を修正するために、これらのテクニックを適用します:
| テクニック | 説明 | 変更前 → 変更後 |
|---|---|---|
| 冗長性の除去 | 繰り返される概念を排除する | "It is important to note that you should always remember to..." → "Always..." |
| 簡潔な表現 | 冗長な構文を置き換える | "In order to accomplish this task, you will need to..." → "To do this:" |
| フィラーの排除 | ヘッジ、修飾語、前置きを削除する | "Make sure that you do not forget to include..." → "Include:" |
| 構造の最適化 | セクションを統合・再編成する | "First X. After that Y. Then Z." → "Steps: X → Y → Z" |
| 文脈に応じた略称 | 最初の言及後に用語を略す | "Model Context Protocol server" (×10) → "MCP server" (最初の後) |
| 高密度フォーマット | リスト、テーブル、簡潔な記法を使用する | 散文の段落 → テーブル、箇条書き |
変換ルール:
- すべての意味情報を保持する - すべての事実、指示、制約、例が存在していなければなりません
- ニュアンスと強調を保持する - 優先度を示す太字、大文字、繰り返し、順序。意図的なヘッジ (不確実性が意味を持っていた場合)
- 再構成は許可される - 優先度のシグナルを失わずに密度が上がるなら、並べ替えやセクションの統合が可能です
- フォーマットの保持 - 出力は入力と同じフォーマットでなければなりません (markdown は markdown のまま)
- 削減目標なし - ニュアンスを保持した 10% 削減 > ニュアンスを失った 40% 削減
曖昧さを生み出さないようにする:
- トリガーの異なる条件を統合しない ("when A, do X; when B, do Y" ≠ "when A/B, do X/Y")
- 明示的な参照対象を保つ (文脈が不明確な場合、「Use Read tool」を「Use the tool」に短縮しない)
- 関係性を平坦化しない ("A requires B, C requires D" ≠ "A, C require B, D")
- スコープを明確にする (修飾語はどの項目に適用されるか?)
フェーズ 4: 出力
「最適化されたプロンプトを出力」ToDo を in_progress にマークします。
ステップ 4.1: メトリクスを計算する
- 元のトークン数(フェーズ 1 から)
- 圧縮後のトークン数:
Math.ceil(compressed_content.length / 4) - 削減率:
((original - compressed) / original * 100).toFixed(0)
ステップ 4.2: 変更を適用する(アトミックな置換)
検証に合格した場合:
# Replace original atomically
mv {working_path} {original_path}
ステップ 4.3: 結果を表示する
検証に合格した場合:
Optimized: {path}
Iterations: {count}
Original: {original_tokens} tokens
Optimized: {compressed_tokens} tokens
Reduction: {percentage}%
Changes applied:
- {summary of compressions}
Status: Token-efficient and lossless
5 回のイテレーション後も検証に失敗した場合:
Optimized with warnings: {path}
Iterations: 5
Original: {original_tokens} tokens
Optimized: {compressed_tokens} tokens
Reduction: {percentage}%
Unresolved issues:
- {list from last verification}
Review the changes manually.
「最適化されたプロンプトを出力」ToDo を completed にマークします。すべての ToDo を完了にマークします。
主要な原則
| 原則 | ルール |
|---|---|
| まず検証 | 最適化の前に必ず検証ツールを実行します。プロンプトがすでに効率的である可能性があります |
| 検証ツール主導 | 検証ツールが特定した非効率のみを修正します - 独自の分析や改善は行いません |
| 進捗の追跡 | タスク管理を使用してフェーズを追跡します。イテレーション時にタスクを拡張します |
| 可逆性 | 密度のために意味情報を犠牲にしません。すべての事実を保持する必要があります |
| ニュアンスの保持 | 強調、意図的なヘッジ、優先度シグナルを保持します。ニュアンスありの 10% > ニュアンスなしの 40% |
| 曖昧さなし | 圧縮後も元と同じくらい曖昧さがありません |
| 検証必須 | 検証ツールがチェックせずに出力しません |
| アトミック出力 | 検証に合格するまで元の内容には手を付けません |
エッジケース
| シナリオ | 対処 |
|---|---|
| 入力が提供されない | エラー: "Usage: /optimize-prompt-token-efficiency " |
| ファイルが見つからない | エラー: "File not found: {path}" |
| サポートされていない型 | エラー: "Unsupported file type. Supported: .md, .txt, .yaml, .json" |
| すでに効率的 | 検証ツールが最初のチェックで VERIFIED を返す → レポート: "Prompt is already token-efficient. No changes needed." |
| 初回の検証が失敗 | 1 回再試行します。それでも失敗する場合、エラー: "Verification failed - cannot proceed without verifier." |
| 再検証が失敗 | エラーを表示し、1 回再試行します。再試行が失敗する場合、警告付きで出力します |
| YAML/JSON 構造 | 構造の妥当性を保ち、文字列値のみを圧縮します |
| 非常に大きなファイル(>50KB) | 単一の単位として処理します |
| 0-10% の削減 | 成功: "Content was already near-optimal density" |
| 検証が 5 回失敗 | 最善の試行を警告付きで出力します |
使用例
# Optimize a verbose CLAUDE.md
/optimize-prompt-token-efficiency CLAUDE.md
# Optimize a skill file
/optimize-prompt-token-efficiency claude-plugins/my-plugin/skills/my-skill/SKILL.md
# Optimize an agent prompt
/optimize-prompt-token-efficiency agents/code-reviewer.md
出力例
Optimized: docs/README.md
Iterations: 2
Original: 4,250 tokens
Optimized: 3,612 tokens
Reduction: 15%
Changes applied:
- Removed redundant intro section
- Consolidated overlapping examples
- Tersified verbose instructions
- Preserved emphasis markers and conditional logic
Status: Token-efficient and lossless
Prompt is already token-efficient. No changes needed.
Original: 1,995 tokens