技能发布前审核器(Publish Auditor)
用途
把一个即将发布到网上的技能从"能不能发"的角度做一遍体检。开发者在自己机器上打磨技能时,最容易把私人痕迹(截图、剪贴板、数据库、家庭局域网 IP)和开发产物(node_modules、运行日志)一起带出去——本技能用一份可复跑的脚本把这些风险自动揪出来,按严重程度分级,给出能否发布的结论。
适用:你写完一个技能、准备发到市场/仓库/群里共享之前,先跑一遍。
怎么跑(AI 执行)
cd <本技能目录> && node scripts/audit.js <待审核技能目录> [--json] [--verbose]
<待审核技能目录>:要审核的那个技能的根目录(包含 SKILL.md 的那一层)。--json:输出机器可读 JSON(适合再加工/CI)。--verbose:连 P2 也打印"建议"字段。- 退出码:
0= 无 P0;1= 存在 P0(阻断发布);2= 用法/路径错误。可用于 CI 卡点。
路径硬规则:命令走 POSIX shell,分隔符用正斜杠
/。推荐先cd进本技能目录再用相对路径,或给绝对路径时写成C:/Users/.../skill-x(带盘符),不要写/c/Users/...(Windows 版 node 会解析错)。
审核维度(详见 references/audit-checklist.md)
脚本自动覆盖的确定性检查:
| 维度 | 检查项 | 严重级 |
|---|---|---|
| 结构与元数据 | SKILL.md 存在 + frontmatter(name/description) 合法 | P0/P1 |
| 结构与元数据 | description 含激活关键词、长度合理 | P2 |
| 引用完整性 | SKILL.md 内引用的 scripts/...、references/... 路径都真实存在 |
P1 |
| 隐私·文件 | screenshot_*/clipboard_*/user_*/*_demo.db 等疑似私人数据文件 |
P1 |
| 隐私·图片 | uploads/、temp/ 等运行目录下的图片(可能含私人截图) |
P1 |
| 隐私·代码 | 硬编码私人局域网 IP(192.168/10./172.16-31.) | P0(代码)/P2(文档) |
| 隐私·代码 | 写死的私人绝对路径 C:/Users/xxx |
P2 |
| 隐私·凭证 | 疑似 API Key / token / 密码明文 | P1 |
| 运行产物 | uploads/、temp/ 残留真实使用痕迹 |
P1 |
| 依赖与体积 | 含 node_modules(体积提示)/ 缺 package.json / 依赖未随包 | P1/P2 |
| 合规 | 缺 LICENSE(与 package.json license 不一致更严肃) | P1/P2 |
| 合规 | 缺 .gitignore(运行产物会被误提交) | P2 |
| 文档 | 缺 README.md | P2 |
| 安全 | 使用 eval/new Function、子进程执行 |
P2 |
主观项(如激活词是否够自然、README 写得好不好)脚本只给提示,最终由人判断。
严重级含义
- P0(阻断):不修不能发。典型:硬编码私人 IP、缺 SKILL.md。修了再发,否则别人用不了或泄露你的隐私。
- P1(建议必改):发布前最好修完。典型:断链引用、运行目录残留私人截图、缺 LICENSE 文件。
- P2(可选优化):更规范/更好传播。典型:node_modules 瘦身、加 .gitignore/README、激活词扩写。
AI 在执行审核后该怎么做
- 跑
audit.js,把报告读给用户(尤其 P0/P1)。 - 对每条 P0/P1 给出具体修复动作(删哪个文件、改哪行、补哪个文件)。
- 涉及删除用户私人数据(截图/剪贴板/数据库)时,先列清单让用户确认,不要擅自删除。
- 修完再跑一遍,直到结论变为
READY或仅剩 P2。
与「发布技能」技能的关系
skill-publish-yashu 负责"把私有技能按白名单复制到公开目录"(发布动作本身,带硬黑名单防泄密);本技能负责"发布之前的体检"。推荐流程:先跑本审核 → 修掉 P0/P1 → 再用发布技能复制到公开目录。两者互补,不冲突。