enmr10/skill-doctor

GitHub: enmr10/skill-doctor

一款零依赖的 Claude Skills 审计工具,通过碰撞评分模型诊断并定位错误触发的 Skill,给出精确修复建议。

Stars: 0 | Forks: 0

skill-doctor — find out why the wrong Claude skill keeps triggering

# skill-doctor 🩺 — 审计您的 Claude Skills 以排查冲突与碰撞 [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Zero dependencies](https://img.shields.io/badge/dependencies-zero-blue.svg)](#requirements) [![Python 3.8+](https://img.shields.io/badge/python-3.8%2B-blue.svg)](#requirements) [![Works offline](https://img.shields.io/badge/runs-offline-success.svg)](#requirements) 如果您已经安装了超过 20 个 Claude skills,并且发现 Claude 为提示词选错了 **skill**,这就是解决方案。skill-doctor 能够诊断 skills *为何* 会被错误路由,并为您提供准确的修改建议来解决此问题。 ## 问题所在:为什么总是触发了错误的 Claude skill 当某个 skill 的 `description` 与您的意图匹配时,它就会被触发。当两个描述表达了**重叠的**意图时,模型就只能去猜测——并且有时会猜错。由于每个新增的 skill 都会与现有的每个 skill 形成配对,潜在碰撞的数量呈**二次方**增长:20 个 skills = 190 对,67 个 skills = 2,211 对。任何人都无法通过手动来对此进行审计。 **真实示例(3 个 skills,1 个提示词):** 提示词 *"analyze my competitors"* 可以匹配 `competitors`、`competitor-profiling` **以及** `customer-research` ——这三个 skill 都声称包含 "competitor"(竞争对手)一词。Claude 会从中选择一个,但经常选错,从而导致您得到较差的结果,且找不到明显的原因。 ## skill-doctor 的功能 | 功能 | 详情 | |---|---| | 🔍 **碰撞评分** | 使用 3 信号模型(TF-IDF + 触发器重叠 + 关键词重叠)对每对 skill 进行评分 | | ⚠️ **重复触发器检测** | 找出被 2 个及以上 skills 同时声明的完全相同的触发器短语——这是导致错误路由的头号原因 | | 🧩 **易混淆集群** | 将争夺相同提示词的整个 skill 家族进行分组 | | 🛠️ **可操作的修复建议** | 针对每对 skill 提供 MERGE / ABSORB / DISAMBIGUATE 建议,并附带置信度 | | 📊 **健康评分** | 提供单一的 0–100 分数值,方便您追踪随时间推移的改进情况 | | 🌡️ **热力图 + 报告** | 生成 Markdown 报告、ASCII 热力图以及 JSON 输出,适用于 CI 门控 | | 🚦 **CI 门控** | `--fail-on critical` 将会阻止引入碰撞的 PR | ## 快速开始 skill-doctor 既可以读取 **skills 目录**(`/SKILL.md`),也可以读取 Claude Code 的 **`manifest.json`**。 ``` # 输出 Markdown 报告到你的 console python3 -m scripts /path/to/skills # 保存报告 python3 -m scripts /path/to/skills --out report.md # 用于 CI 的机器可读输出 python3 -m scripts /path/to/skills --format json --fail-on critical ``` 无需安装,无需 pip,无需 API key。纯 Python 标准库实现。 ## 实际效果(对包含 67 个 skills 的库进行的审计) 我们在一个真实安装的包含 **67 个 skills** 的库上运行了 skill-doctor,随后应用了它的建议并重新运行: | 指标 | 调整前 | 调整后 | 变化 | |---|:--:|:--:|:--:| | 健康评分 | 43/100 | 51/100 | ▲ +8 | | 易混淆集群 | 3 | **0** | ✅ 已消除 | | HIGH 严重性重叠 | 5 | **0** | ✅ 已消除 | | HIGH 总问题数 | 9 | 4 | ▼ | 它甚至捕捉到了由于*合并*共享了模板化描述的 skills 而引入的碰撞——这正是大多数 skill-pack 作者最容易犯的错误。 ## 碰撞评分的工作原理 ``` collision = 0.50 · cosine(TF-IDF of descriptions) # semantic overlap + 0.35 · jaccard(trigger phrases) # explicit, deadliest + 0.15 · jaccard(domain keywords) # lexical backstop ``` | 分数 | 等级 | 含义 | |---|---|---| | < 0.22 | LOW | 安全 | | 0.22–0.38 | MEDIUM | 添加边界说明 | | 0.38–0.55 | HIGH | 有时会路由错误 | | ≥ 0.55 | CRITICAL | 需要合并或硬性消除歧义 | 三个独立的信号胜过单一信号:触发器短语重叠能够捕捉到纯 embedding 会平滑处理掉的复制粘贴的触发器列表,而 TF-IDF 余弦相似度则能捕捉到用不同措辞描述相同工作的 skills。完整原理说明见 [`methodology.md`](skills/skill-doctor/references/methodology.md)。 ## 安装 ### 选项 A — Claude Code 插件市场 ``` /plugin marketplace add /skill-doctor /plugin install skill-doctor ``` ### 选项 B — 手动安装 下载最新版本,并通过 **Add Skill** 上传 `skill-doctor.zip`,或者将 `skills/skill-doctor/` 复制到您的 skills 目录中。 ## 环境要求 - Python **3.8+**(仅使用标准库——**零第三方依赖**) - 完全**离线**运行;无需 API key,无需网络调用,无需遥测 - 跨平台(Windows / macOS / Linux)。即使在 Windows 控制台上也能安全输出 UTF-8 字符。 ## 常见问题 ### 为什么 Claude 会触发错误的 skill? 因为两个或更多的 skill `description` 字段声明了重叠的意图,或者共享了完全相同的触发器短语。模型无法区分它们,所以只能猜测。 skill-doctor 会找出每一个此类重叠,并告诉您如何将它们区分开来。 ### 我该如何审计我的 Claude skills 是否存在冲突? 将 skill-doctor 指向您的 skills 目录或 `manifest.json`: `python3 -m scripts /path/to/skills`。它会返回一个排好序的碰撞配对列表、重复触发器、易混淆集群以及具体的修复建议。 ### 出现多少个 skills 之后碰撞会成为问题? 大约 20 个。在 20 个 skills 时会有 190 个潜在配对;碰撞呈二次方增长,因此包含 30 个以上 skills 的库几乎总是至少存在一个碰撞。 ### 它会自动修改我的 skills 吗? 不会。该引擎是**只读**的。它生成报告和建议;由您(或您的 agent)在审查后应用修改,因此未经您的批准,任何内容都不会被更改。 ### 它支持 Agent Skills 标准 / 跨 agent 的 skills 吗? 支持。任何带有标准 `SKILL.md` frontmatter(`name` + `description`)的 skill 都受支持,此外还支持 Claude Code 的 `manifest.json` 文件。 ### 我可以在 CI 中使用它吗? 可以。`--fail-on critical` 会在存在严重问题时以非零状态退出,因此引入碰撞 skill 的 PR 将导致构建失败。 ## 使用场景 - **个人库** —— 阻止触发错误的 skill - **Skill-pack 作者** —— 发布内部零碰撞的 pack - **团队** —— 在共享的 skill 库不断扩大的同时保持其整洁 - **市场 / 审核人员** —— 审查提交内容以确保描述质量 ## 关键词 Claude Code skills · skill 冲突 · skill 碰撞检测器 · 错误的 skill 触发 · 审计 Claude skills · skill 描述重叠 · Agent Skills linter · skill 路由器 · Claude skill 质量 · skill 库健康度 · 触发器短语冲突 · skill 市场 QA ## 许可证 MIT — 详见 [LICENSE](LICENSE)。 *由 Claude 构建。最后更新:2026-06-16。*
标签:Claude, CVE检测, DLL 劫持, Python, 大语言模型, 开发辅助, 无后门, 逆向工具