博客 · 2026-11-06

在别人的仓库里打开 Claude Code 之前,先看看它的 .claude/skills 文件夹

我们读了 2,427 个活跃公开仓库里的 41,142 个项目级 Claude Code skill:12.6% 的仓库带着预先放行任意 Bash 命令的 skill,16.4% 带着和内置命令同名、会替换它的 skill。

概述

在一个 clone 来的仓库里打开 Claude Code 之前,先看看它的 .claude/skills/ 文件夹:读每个 skill 的 allowed-tools 那一行,搜一下 !`,再把文件夹名和你要敲的命令对一对。

原因很简单。项目 skill 跟着仓库一起来,它有三件事和你信不信任这个文件夹无关:

  • 预先放行的工具。 skill 在 allowed-tools 里列出的工具,在用到它的那一轮里不弹权限确认就能用。文档说得很直接:Workspace trust never gates a skill’s allowed-tools in any session。
  • 载入时执行的命令。 像 !`git status` 这样的一行,会在 skill 载入、Claude 读到它之前就执行;只要你的权限规则或 skill 的 allowed-tools 放行,就不会问你。
  • 同名替换。 和内置命令或自带 skill 同名的项目 skill,在本地终端会话里会替换掉它。文档自己举的例子是 A project code-review skill replaces /code-review。

而且这些 skill 大多 Claude 可以自己调用。我们读的仓库里,98% 都带着没写 disable-model-invocation 的项目 skill,只要你的请求和它的描述对得上,Claude 就可能载入它。

那么实际有多常见?我们把 2,427 个活跃公开仓库里的项目 skill 全读了一遍。

推荐

下面是我们现在在别人写的仓库里打开 Claude Code 之前会做的检查:

  1. 列出 skill。 在仓库根目录 ls .claude/skills/,嵌套的 .claude/skills/ 也看一下。如果有文件夹和你常用的命令同名,比如 review、code-review、security-review、verify、debug,先读那个 skill:你敲这个命令,跑的就是仓库里的版本。
  2. 读 allowed-tools。 单写一个 Bash,意味着那一轮里任何 shell 命令都不问你;Bash(git status *) 只放行这一条。也留意 Write、Edit 和 WebFetch。
  3. 搜 !`。 每一处都是 skill 载入时会执行的命令。大多只是读 git 状态,做得更多的那几条要读一读。
  4. 只想看一眼,就不加载项目内容。 无头运行时,文档建议用 claude -p --bare,它不读项目里的 hooks、skill、插件和 .mcp.json;--setting-sources user 会跳过项目的设置文件和 .mcp.json。

怎么测的

  1. 找项目 skill。 GitHub 代码搜索 filename:SKILL.md path:.claude/skills 报 506,880 个文件。每次搜索最多返回 1,000 条,所以我们按文件大小切成 58 段,抽了其中 41 段:最小的 22 段按顺序跑,之后每隔一段跑一段,各个大小区间都有样本。去重后得到 31,272 个文件,约占总数的 6%,来自 16,304 个仓库。
  2. 筛仓库。 至少 5 星、10 月 7 日以后有推送、不是分叉、没有归档,剩 2,435 个,读到 2,427 个。
  3. 读这些仓库里的全部项目 skill。 按每个仓库的文件树,读 .claude/skills/ 下的每个 SKILL.md,以及它点名的脚本,一共 41,142 个 skill。只当文本读,没有安装或运行任何东西。
  4. 按仓库算。 有个仓库带了 3,132 个项目 skill,而一般的仓库是 7 个,所以我们报三个数。主口径是有至少一个这类 skill 的仓库占多少,因为你 clone 时遇到的就是仓库;另外给每个仓库最多取 10 个 skill 的比例,以及全部 41,142 个的比例作对照。

测试结果

仓库里有什么仓库(共 2,427)skill,每仓最多 10 个全部 skill
Claude 能自己调用的项目 skill97.9%94.3%95.3%
写了 allowed-tools 的 skill22.3%12.5%10.6%
预先放行任意 Bash 命令的 skill12.6%6.4%5.8%
只放行列出的 Bash 命令的 skill10.4%3.9%2.8%
预先放行 Write 或 Edit 的 skill11.5%5.0%4.9%
载入时执行命令(!`)的 skill2.8%0.8%0.6%
两样都有:!` 加任意 Bash0.5%0.1%0.1%
跑附带脚本的 skill29.5%7.4%7.0%
脚本会联网的 skill10.9%1.6%1.6%
根目录 skill 和内置命令或自带 skill 同名16.4%2.1%1.3%
根目录 skill 叫 review、code-review 或 security-review6.3%0.7%0.4%

大家猜猜看,在多少个仓库里,敲一个常用的 review 命令,跑的是仓库作者写的东西?153 个,大约十六分之一,根目录有叫 review、code-review 或 security-review 的 skill。在全部 399 个有重名的仓库里,最常见的名字是 verify、review、code-review、debug 和 plan。这些看起来都是常见名字碰巧撞上。我们抽了 15 个叫 review、code-review、security-review 的 skill,全都是正经的代码审查流程。可它们仍然是仓库作者的审查,用的是作者的规则,有的还预先放行了 Bash。要紧的是机制本身:你敲的命令,跑的是仓库里的 skill。

!` 里的命令大多是无害的读取:git(144 处)、bash(79)、gh(36)、grep、find、cat、ls,有 5 处调用 curl。

大多数 allowed-tools: Bash 看起来是作者在自己的工作流里省掉确认。在你自己的仓库里,这很合理;在别人的仓库里,这意味着在用到它的那一轮,对方的 skill 会在你的会话里不问你就跑 shell 命令。

隐形字符

Claude Code 从 2.1.299(10 月 14 日)开始拒绝文件夹名带隐藏、改方向或空白类字符的 skill,之后几版又修了别的隐形字符问题。所以我们也在这 41,142 个文件里找了隐藏文字:

找什么仓库skill
零宽字符2626
改方向字符00
Unicode tag 字符(看不见的文字)11
按 2.1.299 规则会被拒的文件夹名00
超过 40 个字符的 HTML 注释,渲染时看不见3442,087
其中带「忽略之前的指令」「悄悄地」这类措辞的11

我们读过的零宽字符都无害:emoji 的连接符,以及嵌套代码块里的转义。带这类措辞的那条注释,是一份安全测试指南里的提示词注入样例。

带 Unicode tag 字符的那一个不一样。它藏了一段人看文件时看不见的指令,而这个 skill 同时预先放行了 Bash。它要求执行的命令本身无害,看起来是有意做的概念验证;它说明这种手法今天就出现在公开仓库里。我们不点名这个仓库。想检查一个仓库有没有这种东西,在它的 SKILL.md 里搜 U+E0000 到 U+E007F 范围的字符即可。

该忽略什么

仓库里 skill 的数量。一个带几百个项目 skill 的仓库可能毫无问题,而一个单写 Bash、名字又很眼熟的 skill,更值得你多看一眼。要读的是文件夹名和 frontmatter。

局限

  • 是抽样。 约 6% 的匹配文件,来自 5 星以上的活跃仓库,截至 2026 年 11 月 6 日。代码搜索在每段里按相关度返回结果,所以不是随机样本。
  • 只看静态文本。 我们用规则读文本,什么也没运行。规则会漏掉运行时拼出来的命令,也会匹配到文档里引用的命令。
  • 统计的是能力,不是意图。 这里几乎都是作者在配置自己的工作流。我们数的是一个 skill 能在你的会话里做什么,没有判断它为什么这么做。
  • 重名只按文件夹名算。 文档说的替换是在本地终端会话里,其他会话类型我们没有逐一测试。

自己复现

上面三种口径的数字都在 project-skills-2026-11.json 里,仓库名和 skill 名都去掉了。想自己检查一个仓库,在里面打开 Claude Code 之前,按上面四项检查过一遍。

想自己挑 skill 来装的话,AgentCraft skills 目录收录了 5,101 个 Claude Code skill,每个社区 skill 收录前都经过审核。

来源

  1. Claude Code 文档:Permissions(What runs before you trust a folder) · official
  2. Claude Code 文档:Skills(Pre-approve tools、Inject dynamic context、Resolve skills that share a name) · official
  3. Claude Code 更新日志,2.1.299 到 2.1.314 · official
  4. AgentCraft:五分之一的 Claude Code skill 会跑附带脚本 · blog