基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
  • 知识卡片碎片时间过考点
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
    • AI 热点每日 AI 资讯与动向
AI 工作台
简历
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
编程提效2026-11-06 03:48

安装 Claude 技能前先审查随附脚本

dev.to · AI#Claude#技能安全#供应链安全
Editor brief · 编辑速览

作者检查的 5036 个社区技能中,979 个要求执行随附脚本,272 个涉及网络访问,93 个还读取疑似密钥环境变量。文章建议结合工具权限,检查网络请求、递归删除、依赖安装及凭证读取是否符合技能用途。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

安装 Claude Code skill,不能只读它承诺做什么,还要看它让模型执行什么。AgentCraft 作者检查了 5,036 个社区 skill,发现 979 个会在 SKILL.md 中引用随包脚本,约占五分之一;272 个引用的脚本包含网络访问模式,93 个还读取了名称像密钥的环境变量。

这组数字不等于恶意软件比例。它更有用的提醒是:skill 可能把说明文字、命令授权和本机代码绑在一起。对经常装开发辅助工具的程序员来说,安装前顺着入口读几份文件,比只看功能介绍更能判断执行范围。

为什么读完 SKILL.md 还不够

SKILL.md 可以要求 Claude 执行 skill 目录里的脚本。这些代码运行在你的机器上,使用你的权限。一个生成项目的工具可能创建目录,一个部署工具可能清理临时文件,一个网站审计工具则需要联网抓页面。这些行为都可能合理,但功能介绍未必交代了具体路径和执行方式。

作者建议先找 scripts/,再定位 SKILL.md 实际点名的文件。重点搜索四类操作:

  • 用 curl、requests、fetch、wget 访问网络。
  • 用 rm -rf、shutil.rmtree 递归删除目录。
  • 在脚本内部运行 pip install、npm install。
  • 读取名称带有 KEY、TOKEN、SECRET 的环境变量。

需要核对的是操作是否符合用途,以及它具体作用于哪里。

原文举了几个匿名例子:SEO 工具从 ~/.config/<tool>/.env 加载自己的 API 密钥;音乐视频工具用 shutil.rmtree 删除项目目录;幻灯片工具在自己的目录中运行 npm install,准备 PPTX 导出。不能仅凭这些调用判定危险,但密钥读自哪里、删除路径如何计算、依赖装到哪里,都应该能解释清楚。

脚本数量也不能代替判断。作者强调,带四十个辅助脚本的 skill 可能无害,只有一个脚本的 skill 也可能把密钥发出去。先读被引用的执行入口,才有针对性。

哪些命令可能在你确认之前运行

第二个入口是 SKILL.md 的 allowed-tools 字段。按原文对文档的描述,这里列出的工具,在调用该 skill 的当前轮次中可以免去权限提示。

Bash(git status *) 把授权限制在对应命令范围;单独的 Bash 则允许任意 shell 命令。作者举出的一个实验循环 skill,预先允许了 Read、Write、Edit、Bash 和 Agent,并调用自带的目录树脚本。理解它的权限,不能只盯着那个脚本。

原文还引用文档指出,workspace trust 不限制这个字段,即使项目文件夹从未被信任,项目 skill 仍可应用这项配置。这是作者援引的规则,文章没有进一步展开其他权限层之间如何交互。

第三个入口更容易漏掉:搜索 SKILL.md 中的 !`。例如 !`git diff HEAD` 会在 skill 加载时执行 shell 命令,再把输出填入内容,随后 Claude 才读取它。

因此,只审查「模型读完说明后准备做什么」还不完整。加载说明本身,也可能执行代码。

五分之一这个数字,究竟统计了什么

作者所在的 AgentCraft 目录当时共有 5,101 个 skill,其中 5,082 个是通过审核的社区 skill,另外 19 个是 Anthropic 官方 skill,未纳入研究。社区部分成功读取了 5,036 个,其余因仓库删除或抓取失败而缺失。

研究按仓库获取 GitHub 文件树,并从同一 commit 读取 SKILL.md 和脚本。脚本范围包括 .py、.sh、.js、.ts、.mjs、.rb、.pl、.ps1,最多深入三层,排除其他 skill 目录以及 node_modules、测试、fixtures 和构建产物。只有 SKILL.md 点名的脚本进入行为统计。

这是一份静态能力扫描,不是实际执行记录。

作者没有安装或运行这些工具,而是去掉注释后做模式匹配,再人工抽查,修正了四条过度计数的规则。例如,打印一句 pip install X 提示,并不代表脚本真的执行安装。

他们还检查了 11 月审核中被淘汰的 317 个 skill,该轮共审核了 783 个新 skill。因不安全被淘汰的一组,引用脚本的比例为 39.0%,是保留组 19.4% 的 2.0 倍;因规避平台规则被淘汰的一组为 48.6%,约为 2.5 倍。

两组的联网比例分别为 14.6%、20.0%,相比保留组的 5.4%,约为 2.7 倍和 3.7 倍。但所有淘汰项合并后,引用脚本的比例只有 20.2%,因为模板和演示类 skill 几乎不带脚本。

这些数字说明审核类别之间存在差异,不能证明「带脚本导致被淘汰」。

我的判断

我认同作者把检查重点放在执行入口和授权范围上。相比笼统地要求「安装前审计源码」,找出 SKILL.md 点名的脚本,再检查网络、文件、安装和凭据操作,是更容易落实的第一步。

但这套检查只能帮助筛选,不能提供安全保证。静态规则会漏掉运行时拼接的调用,也可能误中字符串;原文承认,联网统计包含部分加载本地文件的浏览器代码,凭据路径匹配也可能命中安全扫描器的拦截规则。被点名的脚本还未必每次都执行。

数据也有明确边界:样本来自 AgentCraft 自己的目录,淘汰原因来自他们自己的审核,并非随机抽样。作者参与运营 AgentCraft,文章同时介绍了目录的审核机制,这层关系需要保留在判断里。所有文件取自 2026 年 11 月 6 日的当前 commit,也不一定对应最初收录时的版本。

原文没有给出「检查后减少多少事故」的对照数据。因此,安装前检查的效果仍是经验建议。与隔离运行环境相比,读脚本帮助理解行为,隔离则限制行为能触及的资源;文章没有测试两者的效果,也没有判断任何具体脚本是否滥用了能力。

能拿来做什么

  • 给前端或 Node 项目安装 skill 前,把 SKILL.md 引用的脚本找出来,核对网络请求目标、文件读写路径和删除路径,确认它们与工具用途一致。
  • 看到 allowed-tools 中单独的 Bash 时,检查该任务实际需要哪些命令;编写自己的 skill 时,优先采用能够覆盖任务的具体命令范围。
  • 检查加载时执行的 !` 表达式,以及脚本里的 pip install、npm install,把加载动作和依赖安装也计入审查范围。
  • 团队复用 skill 时,记录审查过的 commit,并在更新后重读相关改动;这份研究已经说明,同一个收录条目对应的源码会变化。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
智能体权限必须落到工具调用代码中
下一篇
PLaMo翻译模型开放权重,支持离线部署

资讯速览

dev.to · AI · 2026-11-06 03:48

AI 评分 8.0 / 10

相关标签

#Claude#技能安全#供应链安全

继续阅读

  • 用人工改写比例淘汰低效 AI 文档草稿
  • 智能体权限必须落到工具调用代码中
  • PLaMo翻译模型开放权重,支持离线部署
  • Agent任务成本不能只看Token单价
  • 英伟达发布 Cosmos 3 开放世界模拟模型