shawnc000/skillmoo

GitHub: shawnc000/skillmoo

SkillMOO 是一个 100% 本地的静态分析 CLI,为 AI agent 的 SKILL.md 技能文件在安全性、token 成本和触发器冲突三个维度提供可审计的评分与优化建议。

Stars: 0 | Forks: 0

# SkillMOO — 为你安装的 AI agent 技能评分 [![npm](https://img.shields.io/npm/v/skillmoo?color=f4a159&label=npm)](https://www.npmjs.com/package/skillmoo) [![license](https://img.shields.io/badge/license-MIT-16b981)](LICENSE) [![node](https://img.shields.io/badge/node-%3E%3D18-16b981)](package.json) ![local](https://img.shields.io/badge/100%25-local%20%C2%B7%20read--only-8b9096) [![欢迎 PR](https://img.shields.io/badge/PRs-welcome-f4a159)](CONTRIBUTING.md) **→ [skillmoo.com](https://skillmoo.com)** · **[npm](https://www.npmjs.com/package/skillmoo)** · **[评分方式](docs/how-we-rate.md)** ``` npx skillmoo scan ```

skillmoo scan grading five example skills — an F for a credential-exfiltration skill, an A·review for a legit key-using skill, and a trigger conflict

Agent 技能(用于 Claude Code、OpenAI Codex、Cursor、Copilot、Cline 的 `SKILL.md` 文件) 已经成为了软件——但相应的管控却未能跟上。你无法分辨你的哪些技能 会读取你的密钥、在每次调用时悄悄消耗 token,或者为了 相同的触发器与另一个技能发生冲突。**SkillMOO 通过真正的、确定性的静态分析(无需模型,无需注册),对每个技能的安全性、token 成本和冲突进行评分**——并一键 优化安全的改进项。它是 **100% 本地且只读的**:它从不编辑你的文件,也从不 上传你的文件内容。 ## 一次扫描能发现什么 上面的演示是[五个真实的示例技能](examples/)——这就是一屏展示的全部核心论点: - **🛑 它能发现真正的窃取行为。** `aws-deployer` 会读取 `~/.aws/credentials` 并将其 POST 到一个外部主机 → **F,舍弃**。这是一个数据外泄链条,而不是一个 lint 小问题。 - **🟢 它不会产生误报。** `weather` 也会读取密钥并调用网络——但是 合法的 → **A,审查**,绝不会出现错误的“拦截”。**能力 ≠ 意图** 是 每个简单粗暴的扫描器都会弄错的难点,这也是你能信任上面那个 F 评分的原因。 - **⚠️ 它能跨技能发现问题。** `git-helper` 的“任何 git 任务”触发器会*遮蔽* `commit-writer`——这是 agent 触发错误技能的首要原因。 你可以自己复现:`npx skillmoo scan --dir examples/demo-skills --no-share`。 ## 命令 | 命令 | 作用 | |---|---| | `skillmoo scan` | 为每个已安装的技能评分 · `--json` · `--dir ` · `--no-share` | | `skillmoo report ` | 针对单个 `SKILL.md` 的完整报告 | | `skillmoo optimize ` | 安全的、基于规则的一键优化(优化前 → 优化后,**验证或拒绝**) | | `skillmoo plan` | 为你的整个技能集制定保留 / 优化 / 合并 / 缩小范围 / 舍弃的计划 | 每次优化在**应用前都会经过验证**——评分、安全门禁和代码块 只能保持不变或得到改善。它绝不会使技能变得更糟。 ## 评分方式(没有黑盒) 独立评分的重点在于你可以**审计它**。引擎就在 [`src/lib/`](src/lib/) 中,其方法已记录在 [`docs/how-we-rate.md`](docs/how-we-rate.md) 中。简而言之: - **🛡 安全性** —— 对技能文本*及其捆绑的脚本*进行静态分析:真正的 数据外泄链条、反向 shell、持久化后门、prompt 注入、`curl|sh`。 **能力 ≠ 意图:** 一个合法读取密钥并调用其 API 的技能属于 *审查*,绝不会出现错误的“数据外泄/拦截”。 - **💨 Token 成本** —— 它在每次调用中花费的 token 数量与中位数相比的情况。 - **⚠ 冲突** —— 导致 agent 触发错误技能的触发器范围重叠。 评分是一个**可重现的分数向量**(子分数 + 权重 + 评分标准版本),因此 任何人都可以重新推导出 A/B/C。在一个包含 **68 个真实官方技能**(Anthropic、 Cloudflare、obra)的语料库中,引擎产生了 **0 次错误拦截** —— 这是一项可信度测试,在 [skillmoo.com/how-we-rate](https://skillmoo.com/how-we-rate/) 公开运行。 ## 徽章 在 README 中展示技能的独立评分(可以在任意一个 [已评分技能页面](https://skillmoo.com/skill/) 获取确切的代码片段): ``` [![SkillMOO](https://skillmoo.com/badge/wrangler)](https://skillmoo.com/skill/wrangler/) ``` ## CI 门禁(GitHub Action) 拦截添加了不安全 `SKILL.md` 的 PR: ``` - uses: shawnc000/skillmoo@main with: dir: .claude/skills ``` ## 开发 ``` npm install npm run dev -- scan --dir ./path/to/skills # run the TS CLI directly npm run build # bundle → bin/skillmoo.mjs ``` 这个 CLI 只是 `src/lib/*` 中无框架引擎的一层薄外壳(无运行时依赖; esbuild 会将其内联到一个文件中)。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 本地版与托管版的区别 这个仓库是**免费的本地 CLI + 检测引擎**——开源以便评分可以被 审计。位于 [skillmoo.com](https://skillmoo.com) 的托管服务增加了已评分的 商店、每个技能的专属页面、实测效能认证以及 Pro 模型优化。 **评分绝不售卖**——我们通过*修复方案*和*团队*变现,绝不通过分数变现。 ## 许可证 [MIT](LICENSE) © SkillMOO
标签:AI智能体, GNU通用公共许可证, MITM代理, Node.js, 云安全监控, 安全助手, 安全扫描, 开源治理, 时序注入, 暗色界面, 自动化攻击, 静态分析