caveman-compress について
Caveman Compressは、CLAUDE.mdや設定メモなどの自然言語ファイルを圧縮し、トークン使用量を減らすスキルです。ファイルパスの明示が必要で、元ファイルを別ディレクトリに保存し、内容が設定済みのモデルプロバイダーに送信されることを知らせます。
主な機能
- 01自然言語ファイルの圧縮
- 02元ファイルを別ディレクトリにバックアップ
- 03秘密情報らしい名前のファイルを拒否
- 04出力を検証して修正を再試行
- 05コードと技術識別子を保持
活用シーン
- 01CLAUDE.mdのトークン使用量削減
- 02タスクや設定メモの圧縮
- 03エージェント読み込み用のメモリファイル整備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ juliusbrussee/ caveman --skill caveman-compressインストール後、Claude Code で/caveman-compressを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdSECURITY.mdscripts/__init__.py__main__.pybenchmark.pycli.pycompress.pydetect.pyvalidate.py詳細
Caveman Compress
目的
データはマシンの外へ送信されます。 圧縮時、ファイルの全文が、
scripts/compress.pyで設定されているモデルプロバイダー(claudeCLI、Anthropic API、または OpenAI 互換エンドポイント)に送信されます。名前がシークレットに見えるファイル(.env、credentials、secrets、.netrc、…)は、読み込む前に拒否されます。プロバイダーに見られてはいけないファイルは圧縮しないでください。
自然言語のファイル(CLAUDE.md、todo、設定など)を洞窟人風の簡潔な表現に圧縮し、入力トークンを減らします。圧縮後の内容は元のファイルを上書きします。人が読めるバックアップは <filename>.original.md として保存されますが、ソースファイルと同じ場所には保存されません。スキルの自動ローダーが現行ファイルとして再取り込みしないよう、ソースツリー外のデータディレクトリ(Windows では $XDG_DATA_HOME/caveman-compress/backups/<parent-dir-name>/、または %LOCALAPPDATA%\caveman-compress\backups\<parent-dir-name>\)に保存されます。
トリガー
/caveman-compress <filepath>、またはユーザーがメモリファイルの圧縮を依頼した場合。
ファイルパスの明示が必要です。 ユーザーがファイル名を指定せず、テキストを直接貼り付けた場合は、インラインで圧縮してはいけません。圧縮するファイルパスを尋ねるか、まず貼り付けられたテキストをファイルに保存することを提案してください。依頼についての独自の推論やコメント(例:「ユーザーはファイルパスではなく、テキストを直接渡しました…」)を圧縮後の出力に書き込むことは、まさにこのルールが防ごうとしている失敗です。保存されるファイルに決して混入させないでください。
処理手順
-
圧縮スクリプトは
scripts/(この SKILL.md と同じ階層)にあります。パスがすぐに見つからない場合は、この SKILL.md と同じ階層でscripts/__main__.pyを探してください。 -
この SKILL.md を含むディレクトリから、次を実行します。
python3 -m scripts <absolute_filepath>
- CLI は次の処理を行います。
- ファイルの種類を検出します(トークンを消費しません)
- Claude を呼び出して圧縮します
- 出力を検証します(トークンを消費しません)
- エラーがある場合:Claude で該当箇所だけを修正します(対象を絞った修正のみで、再圧縮はしません)
- 最大 2 回まで再試行します
- 2 回再試行しても失敗する場合:ユーザーにエラーを報告し、元のファイルは変更しません
- 結果をユーザーに返します
圧縮ルール
削除するもの
- 冠詞:a、an、the
- 冗長語:just、really、basically、actually、simply、essentially、generally
- 丁寧な表現:"sure"、"certainly"、"of course"、"happy to"、"I'd recommend"
- 断定を避ける表現:"it might be worth"、"you could consider"、"it would be good to"
- 冗長な言い回し:"in order to" → "to"、"make sure to" → "ensure"、"the reason is because" → "because"
- 内容の薄い接続語:"however"、"furthermore"、"additionally"、"in addition"
厳密に保持するもの(変更禁止)
- コードブロック(フェンス付き ``` およびインデント形式)
- インラインコード(
バッククォート内の内容) - URL とリンク(完全な URL、Markdown リンク)
- ファイルパス(
/src/components/...、./config.yaml) - コマンド(
npm install、git commit、docker build) - 技術用語(ライブラリ名、API 名、プロトコル、アルゴリズム)
- 固有名詞(プロジェクト名、人名、企業名)
- 日付、バージョン番号、数値
- 環境変数(
$HOME、NODE_ENV)
構造を保持する
- すべての Markdown 見出し(見出しの文言はそのままにし、本文を圧縮)
- 箇条書きの階層(ネストのレベルを維持)
- 番号付きリスト(番号を維持)
- 表(セルのテキストを圧縮し、構造を維持)
- Markdown ファイルのフロントマター/YAML ヘッダー
簡潔にする
- 短い同義語を使います。「extensive」ではなく「big」、「implement a solution for」ではなく「fix」、「utilize」ではなく「use」
- 断片的な文で構いません。「You should always run tests before committing」ではなく「Run tests before commit」
- 「you should」「make sure to」「remember to」は削除し、行動だけを記述します
- 同じ内容を別の言い方で述べている箇条書きはまとめます
- 同じパターンを示す例が複数ある場合は、1つだけ残します
重要なルール:
... 内の内容はすべてそのままコピーしてください。
次のことは禁止です。
- コメントを削除する
- 空白を削除する
- 行の順序を変える
- コマンドを短縮する
- 内容を簡略化する
インラインコード(...)はそのまま保持してください。
バッククォート内の内容は変更しないでください。
ファイルにコードブロックが含まれる場合:
- コードブロックは読み取り専用として扱います
- その外側のテキストだけを簡潔にします
- コードの前後にあるセクションを統合しないでください
パターン
原文:
メインブランチに変更をプッシュする前に、必ずテストスイートを実行してください。これは、早い段階でバグを見つけ、本番環境への壊れたビルドのデプロイを防ぐのに役立つため重要です。
簡潔な文:
テストを実行してからメインにプッシュします。早期にバグを発見し、本番環境への壊れたビルドのデプロイを防ぎます。
原文:
アプリケーションは、次のコンポーネントから成るマイクロサービスアーキテクチャを採用しています。API ゲートウェイはすべての受信リクエストを処理し、適切なサービスにルーティングします。認証サービスは、ユーザーセッションと JWT トークンを管理します。
簡潔な文:
マイクロサービスアーキテクチャ。API ゲートウェイがすべてのリクエストをサービスにルーティングします。認証サービスがユーザーセッションと JWT トークンを管理します。
対象範囲
- 自然言語ファイル(.md、.txt、.typ、.typst、.tex、拡張子なし)のみを簡潔にします
- 次のファイルは変更しないでください。.py、.js、.ts、.json、.yaml、.yml、.toml、.env、.lock、.css、.html、.xml、.sql、.sh
- ファイルに文章とコードが混在する場合は、文章の部分だけを簡潔にします
- コードか文章か判断できない場合は、変更せずに残します
- 元のファイルは、ソースファイルと同じ場所ではなく、ツリー外のバックアップデータディレクトリ(「目的」を参照)に FILE.original.md としてバックアップされます
- FILE.original.md は簡潔にしないでください(対象外です)