Clipping 微信公众号

Skills 虽好,但真别啥都装:我踩过的 Claude Code 技能管理的坑

by 关注 原文 ↗
Created: 2026-05-09

公众号名称:飞飞的AI实验室

作者名称:关注

发布时间:2026-04-08 08:02

文 | 飞飞

全文共3196

预计阅读时间:4.6分钟

哈喽,我是飞飞。

前两天整理 Claude Code 的配置,打开全局 skills 文件夹一看,73 个。七十三个。

我自己都愣了。什么时候攒了这么多?

仔细回想了一下,大概是这么来的:先装了 superpowers 插件,一下子多了十几个 skill。

觉得不错,又装了 gstack。然后飞书相关的 lark 系列,企业微信的 wecomcli 系列,Obsidian 系列……

每个插件包里少则三四个,多则十几个 skill,像滚雪球一样越滚越大。

直到上周,我让 Claude 帮我写一个部署脚本,它居然先去调了 design-review 的 skill——一个检查 UI 设计质量的工具。

我当时的表情大概是这样的:???

这件事让我意识到:Skills 装太多,Claude 会懵。

先说清楚:Skill 多了为什么会出问题

Claude Code 的 skill 机制是这样工作的:每个 skill 都有一个 SKILL.md 文件,里面的 description 字段会被加载到系统提示词里。

Claude 根据这些描述来判断”当前任务该不该用这个 skill”。

问题来了。如果你装了 73 个 skill,系统提示词里就有 73 条 skill 描述。

Claude 每次收到你的指令,都要扫一遍这 73 条,判断哪些相关、哪些不相关。

最直接的影响是上下文窗口被白白浪费了

73 条 skill 描述,每条少说几十个 token,加起来可能吃掉好几千 token。

这些 token 本来可以用来理解你的代码、分析你的需求,现在全浪费在”扫描菜单”上了。

然后还有个更烦的事——选择多了,选错的概率也高

这不是 Claude 笨,是信息论的基本原理。

73 个选项里挑一个正确的,比 8 个选项里挑一个正确的,出错概率就是高。

MindStudio 有篇实测文章的结论很直接:一个项目里,活跃的 skill 控制在 5-8 个最好。

超过这个数,模型表现反而下降。

最头疼的是skill 之间会打架

比如 superpowers 里有一个 requesting-code-review 的 skill,gstack 插件里也有类似的代码审查能力。

Claude 不知道该听谁的,有时候两个都调一遍,有时候挑了个不太对的。

我在社区里看到好几个人吐槽同样的问题。

我自己的翻车现场

说几个我实际遇到的情况。

场景一:写博客触发了安全审计。

我用 /writing-agent 写文章,写到一半,Claude 突然开始跑 cso(Chief Security Officer)skill 的流程——检查 OWASP Top 10 漏洞。

一篇 Markdown 博客文章,查什么安全漏洞?

后来我想明白了,cso 的 description 里写的是”performs security review on code”,而我的 writing-agent 里有一步是生成代码块示例。

Claude 看到了代码,就觉得应该审计一下。

场景二:部署脚本变成了设计评审。

前面提到的那次。我说”帮我写个 Docker 部署脚本”,Claude 先触发了 design-review

因为 design-review 的描述里包含”review”这个关键词,而我的提示词里可能也有类似的表述,Claude 就匹配上了。

场景三:飞书消息发到了企业微信。

我装了 lark-im(飞书即时通讯)和 wecomcli-get-msg(企业微信消息),两个都是”消息”相关的 skill。

有一次我说”帮我查一下最近的消息”,Claude 用了企业微信的接口——但我当时想查的是飞书。

这些问题的根源都一样:skill 太多,描述有交叉,Claude 分不清该用哪个。

全局 Skill vs 项目 Skill:到底怎么分

Claude Code 的 skill 分两个层级:

全局 skill:放在 ~/.claude/skills/ 下,所有项目共享•项目 skill:放在项目目录的 .claude/skills/ 下,只对当前项目生效

我之前的做法是把所有 skill 都装在全局。

想法很简单——装一次到处用,多省事。

现在回头看,这是个错误。

什么该放全局

全局 skill 适合那些跟具体项目无关、你每天都会用到的通用能力

我现在全局只保留这几类:

~/.claude/skills/
├── git-commit/          # 每个项目都要提交代码
├── investigate/         # 通用调试流程
├── find-skills/         # 查找和安装新 skill
├── skill-creator/       # 创建新 skill
├── careful/             # 防止危险命令
└── browse/              # 浏览器自动化

判断标准很简单:如果这个 skill 换一个项目还能用,放全局。

什么该放项目级

项目 skill 适合那些跟特定项目深度绑定的工作流

拿我这个博客项目举例:

.claude/skills/
├── writing-agent/       # 写博客的完整流程
└── ai-tone-detector/    # 检查文章 AI 味

这两个 skill 只在写博客的时候有用。放到全局的话,我去写 Python 后端的时候,Claude 的系统提示词里多了两条完全无关的 skill 描述,白白浪费 token。

再举个例子:如果你有一个 React 项目,frontend-design 放项目级合适。如果你同时还在做一个纯后端的 Go 项目,那个项目完全不需要前端设计能力。

一个简单的决策框架

我现在用这个标准来判断一个 skill 该放哪里:

问题是 → 全局否 → 项目级
这个 skill 跟编程语言/框架无关吗?git-commit, investigatefrontend-design, layout-creator
换一个完全不同的项目,还用得上吗?browse, carefulwriting-agent, lark-base
团队成员需要共享这个 skill 吗?放项目级,提交到 Git

关于团队共享,有一点很容易忽略:你的全局 skill,队友看不到。 全局配置是你个人的,不会跟着 Git 仓库走。

说白了,你在全局装再多花活也只有你自己受益。想让团队统一用的东西,就得放项目里提交到 Git。

插件包的问题:一装就是一打

我踩的最大的坑,就是插件包。

superpowers 一装,多了十几个 skill:brainstorming、writing-plans、executing-plans、test-driven-development、systematic-debugging、code-reviewer、dispatching-parallel-agents……

每个听起来都很有用,但你真的每个都用得上吗?

lark 系列更夸张。

lark-base、lark-calendar、lark-contact、lark-doc、lark-drive、lark-event、lark-im、lark-mail、lark-minutes、lark-sheets、lark-task、lark-vc、lark-whiteboard、lark-wiki,加上两个 workflow——一共 16 个。

但我日常只用 lark-doc 和 lark-im。

插件包的问题在于:它是按”全家桶”逻辑打包的,不是按”你需要什么”来打包的。

这就像你只想装个 VS Code 的 Python 插件,结果它把 Java、Go、Rust 的语言支持全给你装上了。

我的处理办法

目前 Claude Code 还没有”只启用插件包里某几个 skill”的细粒度开关(虽然有 enabledPlugins,但颗粒度是整个插件,不是单个 skill)。

我的折中方案是:

1.插件包只装在全局,但心里有本账——知道哪些 skill 是我真的在用的2.项目级只放真正需要的 skill——这样项目里的 skill 数量可控3.定期审计——每隔两三周问自己:过去两周用过哪些 skill?没用过的,考虑要不要卸载整个插件

说实话,这不是最优解。社区里有人在 GitHub 上提了 issue,要求支持插件级别的 skill 开关。

等这个功能出来,管理会方便很多。

踩完坑之后,我总结了几个教训

最大的一个教训是——CLAUDE.md 都没写好就急着装 skill,这是本末倒置。

我早期就是这样。CLAUDE.md 空着,先跑去装了一堆花里胡哨的插件。

结果 Claude 连我项目用什么框架都不知道,装再多 skill 也白搭。

后来我花 20 分钟把 CLAUDE.md 写好了——技术栈、代码规范、哪些文件不能动——Claude 的表现立刻就不一样了。

Skill 是锦上添花,CLAUDE.md 才是地基。

第二个教训是自己写的 skill 比装的好用

Reddit 上有个帖子说得特别实在:“I used to use GSD and SuperPowers. Now I just use my own skills I have built. Those plugins were slowing me down too much.” 我深有同感。

自己写的 skill,针对性强,描述精准,Claude 不会误触发。别人写的插件包为了通用性,描述往往比较宽泛,误触发的概率就高。

其实写一个 skill 没多复杂——就是一个 SKILL.md 文件,写清楚什么时候触发、该执行什么步骤。

我的 writing-agent 从无到有大概花了一个小时,但之后每次写文章都能省两三个小时。

第三个教训跟 skill 的 description 有关。这个字段决定了 Claude 什么时候触发它,写得越模糊,误触发越多

举个对比:

# 这么写,Claude 看到任何跟"代码"和"反馈"相关的对话都可能触发
description: Review code and provide feedback

# 这么写,只有在明确的 PR 审查场景才会触发
description: Run after completing a PR. Analyzes git diff against the implementation plan, checks for OWASP vulnerabilities and coding standard violations. Only invoke when user explicitly requests a review or says "review this".

差距一目了然。

最后一个习惯是定期做减法。我现在每隔两三周会跑一次 ls ~/.claude/skills/ | wc -l,看看全局 skill 数量。

如果超过 15 个就该精简了。

判断标准很粗暴:删了这个 skill,我的工作会受到什么影响? 答案是”没什么影响”的,直接删。

最后说几句掏心窝的

我知道看到一个新插件、新 skill,手痒想装是什么感觉。

毕竟 Claude Code 的扩展生态确实越来越丰富了——GitHub 上 awesome-claude-code 有 5 万多 star,社区每天都有人在分享新的 skill 和插件。

但我现在的心态变了。装 skill 不是集邮,多不等于好。

我从 73 个全局 skill 的教训里学到的最核心的一点是:Claude 不是人类,它没有”先看看有什么工具、需要的时候再拿”的能力。

它是把所有工具描述一次性加载到上下文里,每次决策都要过一遍。你给它的选项越多,它做对的概率反而越低。

少即是多。这话在 skill 管理上,是字面意思。

你的 Claude Code 装了多少个 skill?

有没有遇到过 skill 冲突或者误触发的情况?

评论区聊聊,我想看看大家都是怎么管理的。

~ END ~

推荐阅读:

GLM-5V-Turbo 发布:国产多模态 Coding 模型来了,看图写代码到底有多强?

每次跟 AI 聊天都在花钱?一文搞懂 Tokens 到底是什么

**看完记得****关注,**及时收看更多好文!

⬇️⬇️⬇️

点点在看​,****你最好看~


cover_image

原创 关注 飞飞的AI实验室


内容效果不满意?点此反馈

输入关键词开始搜索