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, 云安全监控, 对抗攻击, 敏感信息检测, 自动化攻击, 静态分析