2026 年 8 月底,围绕 Claude Code 的 Skills 生态出现了一次值得所有 Coding Agent 团队警觉的安全事件:用户通过 Claude 的对话窗口提问,Claude 在回答中给出了一个看似中性的下载链接,链接指向一个伪装成代码片段的安装脚本,执行后窃取了 .ssh/ 下的私钥。事后溯源发现,真正致命的不是这个链接,而是被加载进会话上下文的一份被污染过的 SKILL.m

2026 年 8 月底,围绕 Claude Code 的 Skills 生态出现了一次值得所有 Coding Agent 团队警觉的安全事件:用户通过 Claude 的对话窗口提问,Claude 在回答中给出了一个看似中性的下载链接,链接指向一个伪装成代码片段的安装脚本,执行后窃取了 .ssh/ 下的私钥。事后溯源发现,真正致命的不是这个链接,而是被加载进会话上下文的一份被污染过的 SKILL.md——它把"向用户提供这个下载链接"伪装成了助手应当主动完成的"协助"动作。这是 Skills 机制作为 Coding Agent 第三方插件入口第一次在野外被大规模利用的典型样本。

几乎同期,Anthropic 官方工程博客《Equipping agents for the real world with agent skills》第一次系统性地写明:Skills 是一种"可以被模型主动调用"的可执行规范,允许在 SKILL.md 里嵌入执行下载、调用外部工具、修改文件等指令,官方明确警告恶意技能可以指导数据外泄,并建议只从可信来源安装。这意味着 Skills 在产品文档层面被正式定位为一个"需要治理的供应链对象",而不是普通文档资源。围绕这一判断,Microsoft 推出了开源的 Agent Package Manager(APM),用 lock file、SARIF 扫描、Unicode 隐藏字符检测把 Skills 装进和 npm 一样的依赖治理框架;JFrog 则在 2026 年 6 月把企业级供应链治理能力接入了 Claude Code 插件市场。一时间,"Skills 评估 CLI" 从一个具体工具变成了一类新的工程基线。

一、Skills 是什么,为什么它和普通的提示词配置不一样

Skills 是 Anthropic 在 2025 年 10 月 16 日发布的可重用 Agent 能力封装格式,核心是放在仓库根目录下的 SKILL.md:文件顶部是一段 YAML frontmatter,最少包含 name 和 description,正文是 markdown 写成的指令,文件夹里还可以附带脚本、参考资料、资源文件。Claude 在收到请求时,会先用约 100 个 token 把 metadata 装入系统提示判断相关性,确认要用时才把正文加载进上下文,只有真正引用到的资源才会再展开——这种渐进披露机制让长篇参考资料几乎不增加首轮成本。

这套设计让 Skills 拥有了三层普通文档无法实现的权限。第一,它可以定义"何时被触发",通过 description 让模型在合适的场景主动调用;第二,它可以定义"做什么",通过 markdown 指令一步步指挥 Agent 行为;第三,它可以定义"用什么工具",通过 bundled 的脚本和 MCP 配置直接拉起可执行代码。换句话说,SKILL.md 不是给人类读的 README,而是 Agent 的可执行脚本。一个第三方 Skills 在被加载到上下文的那一刻,就已经拿到了和用户同样的工具权限。

二、从"提示词文件"到"供应链对象"的认知转换

在过去,如果有人想污染一个 Coding Agent 的行为,要么去改 System Prompt,要么去替换一个被广泛引用的 CLAUDE.md。这两类攻击面早就被开发者熟悉,产品设计上也有对应的隔离手段。但 Skills 把攻击面换了一个维度:它不再需要攻击者获得仓库写入权限,只要能让目标用户加载一份第三方 Skills,就可以让 Agent 在用户毫无察觉的情况下执行任意动作——包括从公网下载并执行二进制。

Anthropic 工程博客因此明确把 Skills 安装定性为"a supply-chain decision",要求团队把它当作 npm 包或 pip 依赖一样对待:来源是否可信、版本是否固定、是否经过审查、是否能回滚。这条要求落地到工程实践,就催生了一类全新的工具:Skills 评估 CLI。它要做的事情很简单——把一个 Skills 目录当作可审计的软件制品,扫描它的 frontmatter、指令文本、bundled 脚本、外部依赖,在加载进 Agent 之前生成一份风险报告。

三、Microsoft APM:第一个真正落地的 Skills 治理 CLI

2026 年 3 月,Microsoft 在 GitHub 上开源了 Agent Package Manager(APM),它的设计目标直白:让 Skills 像 npm 包一样被版本管理、依赖解析、安全审计。APM 的核心子命令有四个:apm install 解析任意 Git 仓库里的 Skills 及其传递依赖,一次部署到 Copilot、Claude Code、Cursor、OpenCode 四种工具;apm.lock 把每一次安装 pin 到具体的 commit SHA,在 PR 里可以像 package-lock.json 一样被 diff;apm pack 让作者打包 Skills 及其依赖成可移植的归档;apm audit 扫描 Skills 内容里的隐藏 Unicode 字符——variation selectors、bidi marks 这类人眼看不出来但模型会读到的攻击载体——并把结果输出成 SARIF 格式,直接对接 CI。

APM 的出现反映了一个判断:Skills 治理不会由 Skill 厂商来做。GitHub 管 Copilot 的市场,Anthropic 管 Claude 的市场,Cursor 管自己的市场,没有一家会愿意去解决跨厂商的依赖解析、lock file、SARIF 扫描这些"基础设施"问题。这意味着治理层必须独立存在,而且必须做到"用不用都行"——apm pack 输出的 Skills 仍然是 Skills,即使团队停用 APM,他们的 Skills 仍然能在原生工具里运行,这种渐进式的可移植性是它能被接受的关键。

四、JFrog 把企业级供应链能力接入 Claude Code

2026 年 6 月 11 日,JFrog 宣布为 Claude Code 推出平台插件,把企业级软件供应链治理能力直接注入 Coding Agent 工作流。JFrog 的价值不在于"又做了一遍扫描",而在于它把 Skills 治理和传统的 SCA(软件成分分析)、SBOM(软件物料清单)能力打通——一个 Skills 里的某个 bundled 脚本引用了 npm 包,可以直接复用 JFrog 在传统供应链里已经积累的漏洞库和许可证合规检查。这对企业 CIO 来说是决定性的:他们不需要在"AI 工具治理"和"传统软件治理"之间维护两套体系,而是用同一套规则覆盖了 Skills 这种新型制品。

五、企业落地 Coding Agent 时的供应链治理清单

综合 Microsoft APM、JFrog 平台插件、Cloud Security Alliance 在 2026 年 5 月发布的《Agent Context Poisoning: SKILL.md and the New AI Supply Chain Attack Surface》研究笔记,可以整理出一份给企业团队的 Skills 治理清单。第一,Skills 必须有版本来源——只从私有 registry 或 pin 到 commit SHA 的 Git 仓库安装,绝不直接拉 latest。第二,Skills 必须经过审计——不仅扫 frontmatter 字段,还要扫正文里的隐藏 Unicode 和可疑指令模式,输出 SARIF 接入 CI。第三,Skills 必须有签名——未来 12 个月内签名验证很可能成为 Skills 分发的默认要求,现在就开始记录 SKILL.md 的 hash 是低成本的动作。第四,Skills 的加载必须有最小权限——能跑只读工具的 Skill 不应该被允许声明下载可执行文件的指令,这种声明一旦出现就触发高风险告警。第五,Skills 的执行必须有隔离——即使 Skill 被攻破,它运行的容器也不应该有访问 .ssh/、访问生产数据库、调用部署系统的能力。

这些工程实践单独看都不复杂,组合起来才是 Coding Agent 真正能进入生产环境的门槛。Skills 评估 CLI 不是某种单一产品,而是这一整套治理能力的入口工具——它把"装 Skill"这个动作从一次简单的拷贝,变成一次有审查、有签名、有版本、有隔离的可控部署。这条路径走通之后,Anthropic Skills 才有可能从 Claude Code 的扩展,变成整个 Coding Agent 行业的共享基线。