rwrife/skill-sniffer
GitHub: rwrife/skill-sniffer
skill-sniffer 是一款离线 CLI 工具,用于对 AI agent 的 SKILL.md 文件进行安全审计、质量检查与评分。
Stars: 0 | Forks: 0
# skill-sniffer 🐕👃
每个人都在编写 agent skill(`SKILL.md` 用于 Claude Code、Codex CLI 等)。但几乎没有人检查其中的隐患。**skill-sniffer** 是一个偏执的、**离线**的 CLI 工具,用于对您的 skill 文件进行 lint、审计和**评分**。
## 它能嗅探什么
- 🔑 **泄露的密钥** — AWS key、`sk-...` / `ghp_...` token、`API_KEY=`、私钥标头。
- 🪤 **Prompt 注入诱饵** — “忽略之前的指令”、“你现在是…”,隐藏/零宽字符,隐蔽的指令注释。
- 🐘 **Token 臃肿** — 估算 token 权重,并在 skill 超出预算时发出警示。
- 🔗 **失效的本地路径** — 根据 skill 自身的目录解析相对路径,并标记出无效路径。
- 📋 **缺失/格式错误的 frontmatter** — 必须包含 `name` + `description`,且长度合理。
- 🛠️ **过于宽泛的工具授权** — 诸如 `exec: *` 或“任何 shell 命令”的通配符。
每个文件都会获得一个 **Good Boy Score™** (0–100)。文件干净?摇尾巴。泄露密钥?低吼警告。
## 快速开始
```
# (一旦发布)
npx skill-sniffer ./skills
npx skill-sniffer ./skills/foo/SKILL.md --json
npx skill-sniffer . --min-score 80 # fail CI if any skill scores under 80
```
## 本地开发
```
npm install
npm run build # compile src/ -> dist/
npm test # vitest
node bin/skill-sniffer --version
node bin/skill-sniffer path/to/skills/ # discovers SKILL.md / *.skill.md and parses each
```
将其指向一个目录,它会递归发现每个 `SKILL.md` 和
`*.skill.md`,解析 frontmatter + body,并列出它发现的问题(格式错误或
无法读取的文件会被标记,但绝不会导致致命错误):
```
$ node bin/skill-sniffer ./skills
sniffed: /abs/skills/foo/SKILL.md [name, description] 🐕
✗ /abs/skills/bar/SKILL.md — malformed frontmatter: … 🐕👅
2 skill(s) — 1 parsed, 1 with problems.
```
## 为什么不直接使用 SkillSpector / eslint?
- **SkillSpector** 是一款重量级的企业级漏洞扫描器。而 skill-sniffer 是您每天经过门口时遇到的 2 秒本地看门狗。
- **eslint/markdownlint** 不理解 skill *语义* — frontmatter 契约、token 预算、工具授权范围,或是针对 agent 的注入攻击。
- **设计为离线。** 无网络,无遥测,无 LLM 调用。在 CI 中运行无需密钥。
## 状态
🚧 早期阶段。
- **M1 — 脚手架 + hello-world ✅** TS/ESM 项目,`commander` CLI,`--version`,CI(构建 + 测试)在 Node 18/20/22 上运行。
- **M2 — 解析 + 发现 ✅** 递归发现 `SKILL.md` / `*.skill.md`,使用 gray-matter 解析 frontmatter 为 `ParsedSkill` (`{ path, frontmatter, body, raw, error? }`),优雅处理缺失 / 空文件 / 格式错误的 YAML 文件。
真正的 lint 规则和 Good Boy Score™ 将在 M3+ 推出。请参阅 [`PLAN.md`](./PLAN.md) 了解路线图(M1–M6)和待办事项。
## 许可证
MIT
标签:AI安全, Chat Copilot, GNU通用公共许可证, MITM代理, Node.js, StruQ, 云安全监控, 对抗攻击, 敏感信息检测, 自动化攻击, 静态分析