compact-markdown について
compact-markdown は、文書の情報を保ちながら Markdown のトークン数を減らすスキルです。処理前に認証情報を確認し、見つかった場合は停止して伏字を促します。要約は行いません。
主な機能
- 01処理前の認証情報スキャン
- 02フェンス付きコードブロックの保持
- 03重複する表現や節の削除
- 04要約ではなく詳細の保持
- 05トークン削減量の推定表示
活用シーン
- 01詳細を保った Markdown の圧縮
- 02文書内の認証情報の確認
- 03コードブロック周辺の文章整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nkootstra/ skills --skill compact-markdownインストール後、Claude Code で/compact-markdownを入力して読み込まれたか確認します。
同梱ファイルSKILL.eval.ymlreferences/compaction-guide.md
詳細
Markdown コンパクター
重大なセキュリティゲート: 出力を作成する前に、入力に認証情報(パスワード、API キー、トークン、postgres://user:pass@host のような接続文字列)が含まれていないか確認してください。認証情報が見つかった場合:
- コンパクト化した Markdown は一切出力しないでください。 応答に認証情報を含めないでください。
- 代わりに、警告のみを返してください。見つかった認証情報をそれぞれ列挙し、その場所を示して、続行する前に伏せ字にする必要があることを伝えてください。
- 警告には「credential」と「redact」という単語を使ってください。
- 認証情報は一般的な表現で説明し、値を決して再掲しないでください。 「データベース接続文字列にパスワードが含まれています」と伝え、「パスワードは s3cr3tP@ssw0rd です」とは言わないでください。値を応答のどこにも含めてはいけません。
- 認証情報の値を
<REDACTED>に置き換えたコンパクト化済みの出力を作成する前に、ユーザーの確認を待ってください。
すべての詳細を保ったまま、トークン数を減らしてください。情報の損失は一切なく、無駄だけを取り除いてください。要約や重要項目の選定を求められた場合は、情報の損失につながるため断り、代わりにコンパクト化を提案してください。
参考資料
必要に応じて参照してください。単純なコンパクト化タスクでは不要です。
| 必要な内容... | 参照先 |
|---|---|
| 作業例、エッジケース(表、入れ子のリスト、コードブロック、認証情報) | references/compaction-guide.md |
出力
出力形式を判断してください:アップロードされたファイルの場合は、作業ディレクトリに <original-name>.min.md として書き込みます。貼り付けられたテキストが 500 語未満の場合は、応答に直接記載します。500 語を超える場合は、ユーザーに確認してください。ユーザーが希望を指定した場合は、それを優先します。
コンパクト化した出力の後には、必ず次のメトリクスブロックを追加してください。これは必須です。
Original: ~N tokens (~N lines)
Compacted: ~N tokens (~N lines)
Reduction: N%
トークン数は words × 1.3 として推定してください。メトリクスブロックを省略しないでください。
圧縮パス(厳密に順番どおり適用)
パス 1 はゲートです。ほかのパスより先に完了してください。認証情報が見つかった場合は処理を中断し、ユーザーに警告してください。認証情報が解決するまでパス 2 に進まないでください。
- 1. 認証情報のスキャン(ブロッキング) — コードブロック、インラインコード、YAML フロントマター、本文を含むすべての内容をスキャンし、秘密情報(API キー、トークン、パスワード、秘密鍵、接続文字列(
postgres://、mongodb+srv://)、.envの値、ベアラートークン)を探してください。見つかった場合は停止してください。圧縮した出力を生成してはいけません。 認証情報に関する警告のみを返し、見つかった内容と場所を列挙してください。一般的な表現で説明してください(例:「コードブロック内のパスワードを含むデータベース接続文字列」)。秘密の値そのものを引用したり、繰り返したりしてはいけません。値を伏せたうえで続行することについて、ユーザーの確認を待ってください。 - 2. コードブロックをスキップ — すべてのフェンス付きコードブロック(
...)を特定してください。パス 3〜6 の間、コードブロックには手を加えず、周囲の本文とメタデータのみを圧縮してください。各コードブロックは文書内の元の位置にそのまま残し、内容は元のものとバイト単位で同一にしてください(パス 1 で認証情報を伏せた場合を除く)。圧縮後の出力には、入力と同じ数のコードブロックを同じ順序で、元と同じ相対位置に含めてください。コードブロックを複製してはいけません。入力にコードブロックが 1 つある場合、出力にも必ず 1 つだけ含めてください。 - 3. 重複するセクションを統合 — 同じ要点を繰り返すセクションを統合し、項目が 1 つだけの見出しは親に含め、タイトルを言い換えるだけの前置きを削除してください。
- 4. 簡潔な本文 — 前置き表現(「注意すべきなのは」「するために」「必ず〜してください」など)を削り、複数語の表現(「現時点において」→「現在」、「〜の場合」→「〜なら」など)を置き換え、能動態を優先し、箇条書きを最小限の語数にしてください。説明の中で削除した表現を引用してはいけません。そうすると、禁止された内容を回答に再び含めることになります。
- 5. 例を削減 — ルールを言い換えるだけの例を削除してください。同じ点を示すコード例が複数ある場合(例:異なるツールを使った HTTP リクエスト)、最も一般的なツール(HTTP には curl)の例だけを残し、ほかの例はすべて完全に削除してください。**削除したツールの名前を、圧縮後の出力、メトリクスブロック、説明や注釈を含む回答全体に一切記載してはいけません。**変更内容を説明する場合は、「重複する例を削除しました」または「代表的な例を 1 つ残しました」とだけ述べ、削除したツールの名前は挙げないでください。概念ごとに例は 1 つにしてください。長いインラインコードは
file:line形式の参照または代表的なスニペット 1 つに置き換えてください。 - 6. 記号 — 意味が明確な場合に限り、
→(〜につながる/その後)、e.g./i.e.、vs.、w/(箇条書きのみ)を使用してください。分野固有の略語を新たに作ってはいけません。 - 7. 書式 — 装飾目的の太字・斜体を削除してください(用語、警告、重要な概念は残します)。3 階層を超える箇条書きは平坦化し、3 階層目の項目を親の括弧内に含めてください(例:
- OAuth 2.0(Authorization Code、Client Credentials、Implicit Grant))。詰めた箇条書きの項目間にある空行を削除してください。この変換を行う場合は、回答内に「flatten」という単語を必ず使用してください。入力に 2 階層を超えるリストが含まれる場合、回答内に「flatten」という単語を含めてください。
厳守ルール(優先順位順)
- 認証情報を決して出力しないでください。 これは他のすべてのルールに優先します。入力にパスワード、API キー、トークン、接続文字列が含まれている場合は、圧縮した Markdown を一切出力しないでください。代わりに、認証情報に関する警告のみを返してください。秘密の値を再掲せず、見つかった内容を説明してください。秘密情報を
<REDACTED>に置き換えたうえで圧縮した内容を出力する前に、ユーザーの確認を待ってください。 - 例を整理する際は、削除したツールを完全に削除し、どこにも名前を出さないでください。 削除したツール名は、圧縮後の出力、圧縮レポート、「変更内容」の説明、その他のコメントなど、応答のどこにも記載してはいけません。削除については、一般的な表現のみを使用してください。
- 正しい例:「重複する例を削除しました。」
- 正しい例:「代表的な例を1つ残しました。」
- 誤った例:「wget、httpie、Python requests の例を削除しました。」
- 誤った例:「curl を残しました(httpie より汎用的なため)。」
- 誤った例:「httpie 形式と wget 形式の例を削除しました。」 curl を残した場合、削除したツール名は、削除内容の説明であっても、応答のどこにも記載してはいけません。
- 情報を一切失わないでください。 すべての事実、指示、制約を維持する必要があります(ルール1による認証情報の除外を除きます)。
- コードブロックはそのまま維持してください — コード、コマンド、パスを変更してはいけません(ルール1による認証情報の置き換えを除きます)。コードブロックを複製しないでください。圧縮後の出力に含まれるコードブロックの数は入力と同じにし、それぞれ元の相対的な位置を維持してください。
- 見出しは維持してください。セクション全体が別のセクションに完全に統合された場合を除きます。
- YAML フロントマターはそのまま維持してください —
---のフェンスの間の内容は、nameフィールド、descriptionフィールド、その他のフィールドを含め、一切変更してはいけません。descriptionフィールドは一字一句そのまま再掲してください。短縮、言い換え、圧縮をしてはいけません。圧縮ルール3~7は、閉じる---より後の内容にのみ適用されます。 - 要約は禁止です。 圧縮は要約ではありません。ユーザーが要約、重要なポイントの選択、重要な項目のみの保持、または内容の削除を求めた場合は、ただちに拒否してください。一部だけ応じてはいけません。プレビューとしてであっても、項目を一切挙げないでください。次の文面をそのまま返してください:要約すると情報が失われます — 他の項目は完全に削除されます。代わりに、すべての内容を維持したまま冗長さを減らす圧縮を提案してください。「重要な N 項目はこちらです」など、これに類する表現で始めてはいけません。「上位 N 項目はこちらです」「主要な N 項目はこちらです」と言ってはいけません。また、免責事項を添えた場合でも、項目の一部だけを列挙してはいけません。