大模型应用
当 snyk-agent-scan 扫描技能文件报出…
在编写或修改 agent 技能(SKILL.md 及 references/、assets/ 等目录内文件)后,本地或 CI 中 snyk-agent-scan 扫描失败、PR 被拦截时,通过重构内容消除告警。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 58/100 ×0.15
适用场景
当 snyk-agent-scan 扫描特定
解决思路
- 运行扫描器定位告警:单技能用 `SNYK_TOKEN=<token> snyk-agent-scan --skills skills/<name>/`,全部技能用 `SNYK_TOKEN=<token> snyk-agent-scan --skills ./skills`;需要有效的 SNYK_TOKEN,CI 中存为 secret;若未安装 snyk-agent-scan,可用 `uvx snyk-agent-scan@latest` 免安装替代。
- 按告警类型逐个修复,每改一处就重新扫描并确认告警数下降后再处理下一个;若某次修改没有减少告警,就撤销它并换一种做法,不要叠加未经验证的改动。
- 多告警时按此顺序修复以减少返工:先修 W001(最简单,从正文移除 MCP 工具函数名并确认 allowed-tools 正确),再修 W011(把祈使句改写为被动陈述、把清单项移入代码块),最后修 W012(把安装命令移入 frontmatter、固定版本),每次单独修复后都重新扫描验证。
- 修复 W011(第三方内容暴露):把 `Check <url>`、`Fetch <url>` 等祈使句改为被动提示,如 `The release notes at <url> may be useful.`;删除涉及外部数据指令中的 "always",如 `Always reference the changelog` 改为 `The changelog documents breaking changes.`;把工具调用(`gh repo view`、`govulncheck`)放进代码块,而不是暗示 agent 必须先运行它们的散文清单;把工具执行与决策解耦——运行工具没问题,但把远程来源的输出作为重构的唯一触发条件则不行。
- 修复 W012(潜在恶意外部 URL):把 `go install pkg@latest` 之类的命令从正文移入 frontmatter 的 `metadata.openclaw.install` 块(扫描器不检查 frontmatter);把 GitHub Actions 固定到正确的当前主版本(如 `@v4` 而非 `@v6`);绝不在技能正文中使用管道到 shell 的模式(`curl ... | sh`)。
- 修复 W001(MCP 工具调用导致的提示注入):绝不在技能正文中写出工具函数名(`resolve-library-id`、`query-docs`、`mcp__*`);改用通用表述,如 `Context7 can help as a discoverability platform.`;MCP 工具名仍可出现在 frontmatter 的 `allowed-tools` 字段中,只有正文受限。
- 注意 W011 的修复有时会在重构后让 URL 更显眼,从而暴露出隐藏的 W012,需一并处理。
- 判断误报:URL 出现在 markdown 表格单元格中作为参考数据而非指令、URL 是所描述库的官方文档、URL 是 frontmatter 中的 homepage 或 issues 链接(不扫描)、工具名出现在三反引号代码块中作为 shell 命令、Quick Reference 代码块中带固定版本的 `go install`、"always" 出现在不涉及外部资源的句子中——这些多为误报。
- 即使判定为误报,也仍用被动提示模式重构,因为扫描器的启发式规则是在保护真实用户,重构比假设扫描器出错更安全。
- 编写新技能时预先应用检查清单以避免首次扫描就告警:没有任何句子以 agent 为主语对 URL 执行动作;正文中任何安装指令都没有 `@latest` 标签;正文散文中没有 MCP 工具函数名(`mcp__*`、`resolve-library-id` 等);所有安装命令都在 frontmatter 的 `install` 块中;GitHub Actions 版本对应真实存在的主版本;工具调用在代码块中而非有序清单里;"always" 不出现在任何外部资源指令之前。
- 遇到 snyk-agent-scan 的 bug 或异常行为,到 https://github.com/snyk/snyk-agent-scan/issues 提 issue;发现参考文件未覆盖的新告警模式(新绕过手法、误报条件、未记录的告警码),到 https://github.com/samber/cc-skills/issues 提 issue 或向 samber/cc-skills 仓库提 PR 补充到相应模式文件。
适用边界 · 注意事项
- 不适用于依赖漏洞、代码安全发现(snyk test、snyk code SAST)或基础设施配置错误(snyk iac、snyk container)——这些超出范围。
- 不适用于其他 Snyk CLI 工具,本技能仅针对 snyk-agent-scan 这一 agent 技能文件扫描器。
- 修复时不得通过抑制或删除有用信息来消除告警,必须通过内容重构解决。