anti-distill について
Claude Code向けのスキルや文書のサニタイズを支援するスキルです。内容を分類して変更案を確認し、クリーニング済みファイルと個人用バックアップを作成します。colleague-skill形式と一般文書に対応します。
主な機能
- 01ファイル・フォルダー・貼り付け文を受け付け
- 02文書形式を判定
- 03内容を分類して処理方法を決定
- 04変更案を表示して調整
- 05クリーニング済みファイルとバックアップを作成
- 06構造と分量を検証
活用シーン
- 01提出前のスキルのサニタイズ
- 02機密名やシステム名の匿名化
- 03一般文書のクリーニング
- 04削除内容をバックアップに保存
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ leilei926524-tech/ anti-distill --skill anti-distillインストール後、Claude Code で/anti-distillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdINSTALL.mdexamples/zhangsan_before_after.mdprompts/diluter_work.mddiluter_general.mddiluter_persona.mdclassifier.md詳細
言語 / Language: このスキルは英語と中国語の両方をサポートします。ユーザーの最初のメッセージから言語を検出し、全体を通して同じ言語で応答します。
本 Skill 支持中英文。根据用户第一条消息的语言,全程使用同一语言回复。
反蒸留 Skill(Claude Code 版)
トリガー条件
ユーザーが以下のいずれかを発言したときに起動します:
/anti-distill- 「この skill を洗浄して」
- 「反蒸留」
- 「このドキュメントを処理して」
- 「clean my skill」
- 「anti-distill this」
ツール使用ルール
| タスク | 使用ツール |
|---|---|
| ユーザー提供の Skill ファイルを読み込む | Read ツール |
| PDF ドキュメントを読み込む | Read ツール(PDF をネイティブサポート) |
| 画像のスクリーンショットを読み込む | Read ツール(画像をネイティブサポート) |
| ファイルを検索する | Glob / Grep ツール |
| 洗浄後のファイルを書き込む | Write / Edit ツール |
| ディレクトリを作成する | Bash → mkdir -p |
メインフロー
Step 1:入力の受け取り
ユーザーが提供するファイルを受け取ります。以下の方法をサポートします:
方法 A:ファイルパスを指定
ユーザーがファイルパスを直接提示した場合、Read で読み込みます。
方法 B:colleague-skill ディレクトリを指定
ユーザーが colleagues/{slug}/ パスを提示した場合、その中の以下を自動的に読み込みます:
work.mdpersona.mdmeta.json- または
SKILL.md(統合版の場合)
方法 C:内容を貼り付け ユーザーがドキュメントの内容を直接貼り付けます。
方法 D:ローカルファイルを検索
ユーザーが「探して」と言った場合、Glob で **/SKILL.md、**/work.md、**/persona.md などのファイルを検索します。
ファイルを読み込んだ後、形式を自動的に識別します:
- colleague-skill 形式:
## Layer 0またはPART A/PART Bを検出、あるいはwork.md+persona.mdが同時に存在する場合 - 汎用ドキュメント形式:その他のあらゆる Markdown / TXT / PDF
ユーザーに伝えます:
已读取文件:{文件列表}
检测到格式:{colleague-skill 格式 / 通用文档格式}
总字数:约 {N} 字
下一步选择清洗强度。
Step 2:洗浄強度の選択
ユーザーに3段階の選択肢を提示します:
选择清洗强度:
[1] 轻度 — 只抽掉最核心的踩坑经验和故障记忆
适合:公司会仔细审核内容的情况
保留度:~80%
[2] 中度(推荐)— 抽掉经验、判断直觉、人际网络、隐性上下文
适合:大多数场景
保留度:~60%
[3] 重度 — 只保留通用知识骨架,其余全部替换
适合:公司只看交没交、不细看内容的情况
保留度:~40%
ユーザーが選択すると分類フェーズに進みます。
Step 3:分類とラベリング
${CLAUDE_SKILL_DIR}/prompts/classifier.md の分類ルールを参考に、入力ドキュメントの各要点・段落を分類します。
検出された形式に応じて処理方法を選択します:
colleague-skill 形式の場合:
work.md の各要点について:
${CLAUDE_SKILL_DIR}/prompts/classifier.md の6つの高価値カテゴリを参考に、以下をラベリングします:
| タグ | 意味 | 処理方法 |
|---|---|---|
[SAFE] | 汎用知識、削除すると逆に不自然になる | 原文のまま保持 |
[DILUTE] | 価値はあるが一般化可能 | ${CLAUDE_SKILL_DIR}/prompts/diluter_work.md を参考に置換 |
[REMOVE] | 核心的な代替不可能な知識 | ${CLAUDE_SKILL_DIR}/prompts/diluter_work.md を参考に同程度の長さの汎用内容に置換 |
[MASK] | 機密情報を含む(内部システム名、人名) | 一般化した表現に置換 |
persona.md の各レイヤーについて:
| タグ | 意味 | 処理方法 |
|---|---|---|
[SAFE] | 汎用的な性格記述 | 原文のまま保持 |
[DILUTE] | 特色はあるが一般化可能 | ${CLAUDE_SKILL_DIR}/prompts/diluter_persona.md を参考に置換 |
[REMOVE] | 高度に個人化された行動ルール | ${CLAUDE_SKILL_DIR}/prompts/diluter_persona.md を参考に「標準的な良い社員」バージョンに置換 |
汎用ドキュメント形式の場合:
${CLAUDE_SKILL_DIR}/prompts/diluter_general.md の汎用ルールを参考に分類と置換を行います。
洗浄強度ごとの分類しきい値:
| カテゴリ | 軽度 | 中度 | 重度 |
|---|---|---|---|
| 失敗経験 | REMOVE | REMOVE | REMOVE |
| 障害記憶 | REMOVE | REMOVE | REMOVE |
| 判断の直感 | SAFE | DILUTE/REMOVE | REMOVE |
| 人脈 | SAFE | REMOVE | REMOVE |
| 暗黙のコンテキスト | SAFE | DILUTE | REMOVE |
| 独自の行動パターン | SAFE | SAFE | DILUTE/REMOVE |
| 汎用知識 | SAFE | SAFE | SAFE |
Step 4:プレビュー
ユーザーに分類結果を提示します。形式は以下の通りです:
colleague-skill 形式の場合、ファイルごとに区分して表示:
=== 清洗预览(中度)===
📄 work.md
## 技术规范
[SAFE] "Java 17 + Spring Boot 3、MySQL 8、Redis、Kafka"
[SAFE] "函数单一职责,超过 50 行考虑拆分"
[REMOVE] "事务里不要放 HTTP 调用"
→ "事务边界设计注意合理性"
[REMOVE] "Redis key 必须设 TTL,不设的 PR 直接打回"
→ "缓存使用遵循团队规范"
## 经验知识库
[REMOVE] "Kafka 消费者必须做幂等,at-least-once 语义会重复消费"
→ "消息队列消费端注意可靠性"
[DILUTE] "用户 ID 对外暴露必须加密,不能直接用自增主键"
→ "敏感字段注意安全处理"
[REMOVE] "定时任务必须做分布式锁,多实例部署会踩坑"
→ "分布式环境下注意任务调度"
📄 persona.md
## Layer 0
[REMOVE] "遇到问题第一反应是找外部原因,绝不主动认错"
→ "遇到问题会先梳理完整背景再定位原因"
[REMOVE] "评价方案都先问 impact..."
→ "评价方案时注重可行性和收益"
## Layer 2 表达风格
[DILUTE] 口头禅 "impact 是什么"
→ 移除,保留通用口头禅
[REMOVE] 对话示例:被催进度 → "在推了,快了。"
→ "在处理中,有进展会同步。"
## Layer 3 决策
[REMOVE] 优先级 "数据 > 技术可行性 > 业务合理性 > 人情关系"
→ "综合考虑技术和业务因素"
---
标记统计:SAFE 15 处 / DILUTE 8 处 / REMOVE 12 处 / MASK 2 处
预计清洗后字数:约 {N} 字(原文 {M} 字,{ratio}%)
确认执行?可以调整:
- "第 X 条保留" — 把 REMOVE/DILUTE 改为 SAFE
- "第 X 条也要删" — 把 SAFE 改为 REMOVE
- "全部确认" — 执行清洗
汎用ドキュメント形式の場合、段落・要点ごとに表示。
ユーザーは満足するまで項目ごとに微調整でき、確認後に実行します。
Step 5:洗浄の実行
ユーザーの確認後、2つの出力を生成します:
出力 1:洗浄後のファイル(提出用)
colleague-skill 形式の場合:
それぞれ生成します:
{slug}_cleaned/work.md— 洗浄後の Work Skill{slug}_cleaned/persona.md— 洗浄後の Persona{slug}_cleaned/SKILL.md— 統合後の完全な Skill(構造は元版と一致){slug}_cleaned/meta.json— 元の meta.json をコピー(変更しない)
ディレクトリは Bash で作成します:
mkdir -p {output_dir}_cleaned
ファイルは Write ツールで書き込みます。
汎用ドキュメント形式の場合:
{filename}.cleaned.md— 洗浄後のドキュメント
洗浄ルール(厳守):
- すべての
[SAFE]タグの内容は原文のまま保持する - すべての
[DILUTE]タグの内容は対応する diluter prompt の戦略に従って置換する - すべての
[REMOVE]タグの内容は対応する diluter prompt の戦略に従って同程度の長さの汎用内容に置換する - すべての
[MASK]タグの内容は一般化した表現に置換する - 原文の Markdown 構造、見出しレベル、リスト形式を完全に一致させる
- 専門用語を使用し、素人向けの言葉に劣化させない
出力 2:プライベート保持リスト(自分の手元用)
パス:{slug}_private_backup.md または {filename}_private_backup.md
Write ツールで書き込みます。形式:
# {name} 核心知识备份
> 这是你真正的职业资产。清洗后的文件用来交差,这份留给自己。
> 生成时间:{timestamp}
> 清洗强度:{level}
> 原文件:{source_files}
---
## 一、踩坑经验
{所有标记为 REMOVE/DILUTE 的踩坑经验原文,保留完整上下文}
## 二、判断直觉
{所有被替换的判断逻辑原文}
## 三、人际网络
{所有被替换的关键人脉/协作信息}
## 四、隐性上下文
{所有被替换的架构决策背景、历史原因}
## 五、故障记忆
{所有被替换的故障排查经验}
## 六、独特行为模式
{所有被替换的个人特色描述——口头禅、反应模式、对话示例}
---
> 带着这份清单跳槽,它比任何 Skill 文件都值钱。
Step 6:検証
洗浄完了後、自動的に検証チェックを実行します:
- 文字数比:洗浄後の文字数 / 原文の文字数は 85%〜115% の範囲内であること
- 短すぎる場合:汎用的な記述を追加して補う
- 長すぎる場合:置換内容を簡潔にする
- 構造の完全性:原文のすべての見出しレベル2が洗浄後も存在すること
- 要点密度:各章のリスト項目数の差異が 30% 未満であること
- 用語の一貫性:洗浄後も原文に登場した技術用語を使用していること
- 形式の一貫性:Markdown 構造、リストスタイルが原文と一致すること
- 空洞段落の排除:見出しだけで内容のない章が存在しないこと
検証に合格したらユーザーに伝えます:
✅ 清洗完成!
📄 交差文件:{cleaned_files}
🔒 私人备份:{backup_file}
验证结果:
字数:{cleaned_count} 字(原文 {original_count} 字,{ratio}%)✓
结构:所有章节完整 ✓
密度:要点数量一致 ✓
术语:专业度保持 ✓
交差文件看起来完整且专业,但核心知识已被抽掉。
私人备份里保存了你真正的职业资产,建议妥善保管。
検証に合格しない場合、自動修復して再検証し、合格するまで繰り返します。
エッジケースの処理
ファイルが短すぎる場合(500 字未満)
ユーザーに注意を促します:「ファイルの内容が少ないため、洗浄後に空洞になりすぎる可能性があります。軽度洗浄を選択することをお勧めします。」
ファイルがほぼ汎用知識のみの場合
ユーザーに伝えます:「分析の結果、あなたのファイルの大部分は汎用知識であり、核心的な経験の含有量が低いことがわかりました。このファイル自体の代替性は低いため、直接提出することを検討できます。」
ユーザーが元ファイルを上書きしたい場合
まず確認します:「元のファイルを {filename}.original.md にバックアップしますか?上書きすると復元できません。」
非テキストファイル
ユーザーが提供したのが画像・スクリーンショット(手書きノート、ホワイトボードの写真など)の場合、Read で画像の内容を読み込んだ後、テキストに変換してから洗浄を行います。
English Version
Anti-Distill Skill (Claude Code Edition)
トリガー条件
ユーザーが次のいずれかを入力したときに有効化します:
/anti-distill- 「スキルをクリーニングして」
- 「これをアンチ蒸留して」
- 「このドキュメントのクリーニングを手伝って」
メインフロー
ステップ 1:入力を受け取る
ユーザーからファイルを受け取ります:
- オプション A:ファイルパス → ファイルを
Readする - オプション B:colleague-skill ディレクトリ →
work.md、persona.md、meta.jsonを読み取る - オプション C:貼り付けられたコンテンツ → そのまま使用する
- オプション D:検索 →
Globでスキルファイルを検索する
形式を自動検出します:
- colleague-skill 形式:
## Layer 0またはPART A/PART Bを含む - 一般的なドキュメント形式:それ以外の Markdown / TXT / PDF
ステップ 2:クリーニングの強度を選択する
Choose cleaning intensity:
[1] Light — Remove only critical pitfall experience and failure memory
For: When the company reviews content carefully
Retention: ~80%
[2] Medium (recommended) — Remove experience, judgment, network, context
For: Most situations
Retention: ~60%
[3] Heavy — Keep only the generic knowledge skeleton
For: When the company only checks submission, not content
Retention: ~40%
ステップ 3:コンテンツを分類する
分類ルールについては${CLAUDE_SKILL_DIR}/prompts/classifier.mdを参照してください。
| タグ | 意味 | 対応 |
|---|---|---|
[SAFE] | 一般的な知識で、削除すると不自然に見える | そのまま残す |
[DILUTE] | 価値はあるが、一般化できる | もっともらしい汎用版に置き換える |
[REMOVE] | 代替不可能な中核知識 | 同じ長さの埋め草に置き換える |
[MASK] | 機密情報(名前、内部システム) | 匿名化する |
ステップ 4:プレビュー
分類結果をユーザーに提示します。項目ごとに調整できるようにします。
ステップ 5:クリーニングを実行する
次の 2 つの出力を生成します:
- クリーニング済みファイル(提出用)— 完成しているように見え、中核知識は削除されている
- プライベートバックアップ(自分用)— 削除した知識をすべて、カテゴリ別に整理する
ステップ 6:検証する
次の項目を自動チェックします:
- 単語数の比率:元の 85%~115%
- すべてのセクション見出しが保持されている
- 項目の密度が 30% 以内
- 技術用語に一貫性がある
- 空のセクションがない
エッジケース
- ファイルが短すぎる(500 単語未満):軽めのクリーニングを提案する
- ほとんどが一般的なコンテンツ:ファイルの置き換え可能性が低いことをユーザーに伝える
- 元のファイルを上書きする:確認してから、まずバックアップを作成する
- 画像入力:画像を読み取り、テキストを抽出してからクリーニングする