说句实话,我是在一次跟朋友讨论 Claude Code 的时候,第一次认真意识到“skills”这个词已经在悄悄改变AI的使用方式。以前我们调教AI靠的是写一大段prompt,现在则是直接给它一组“技能包”,让它遇到对应任务时自己按流程干活。这个变化,比单纯换一个新模型更值得关注。
如果你已经在用 Claude Code、Codex、OpenCode 这类编程Agent,大概率刷到过GitHub上大量的skills仓库,比如 anthropics/skills、obra/superpowers、typesafe 相关的系列。很多人卡在第一步:仓库clone下来了,却不知道往哪里放;或者装了十几个skills,发现Agent反而变笨了。这篇文章就是要把这一整条链路讲清楚:什么是AI skills、怎么手动装、哪些仓库值得收藏、如何自己写一个、以及技能库什么时候该清理。无论你是前端、建模选手、做AI漫剧,还是只是想把日常任务自动化,都可以从这里找到能直接落地的部分。
1. Skills是什么,为什么现在大家都在聊
1.1 给AI装“外挂大脑”:从prompt到skills的进化
要理解skills,先回到最朴素的问题:你和AI对话的时候,是不是经常发现它“学得快,忘得也快”?同一个项目里,你上周告诉它代码风格怎么统一,这周它又写歪了;你让它按某个模板处理数据,每次都要重新贴一遍模板。原因是模型本身没有“跨对话记忆”,它的上下文窗口里装得越多,反而越容易被无关信息干扰。
skills的出现,本质上是把“知识+流程+工具”打包成一个独立模块。它不是一个prompt,而是一个包含说明文档、脚本、参考资产、运行规则的完整目录。当Agent判断当前任务匹配某个skill的触发条件时,就会主动加载这个目录,按照里面的步骤去执行。这相当于给AI装了一个“外挂大脑”:不需要每次重复交代背景,它自己就知道该调什么工具、按什么顺序处理、输出什么格式。
我举个生活化的例子。你让一个实习生做一份周报,你每次都要告诉他:“先拉数据,再做图表,最后按模板写结论。”如果这个实习生带了一份SOP手册,你只要说“做周报”,他就自动去翻手册按步骤执行,效率和稳定性都会高很多。Skills就是这个SOP手册,而且比人类手册更细致,因为它可以直接绑定脚本去跑数据、生成文件,不止是“告诉你该怎么做”,而是“替你做完”。
1.2 一个skill长什么样
任何一个符合规范的skill,核心都是一个名为 SKILL.md 的文件,文件名大写,放在以技能命名的目录里。这个文件包含两部分:
- YAML格式的frontmatter,声明技能的名称和描述。描述写得越精确,Agent越能在合适的时机触发它。
- 正文部分,由Human Messages构成,用来告诉Agent“这个技能怎么用”,包括适用场景、处理步骤、注意事项、输出要求。
目录里还可以放辅助内容,比如:
my-skill/ SKILL.md scripts/ run_task.py assets/ template.md reference.pdfscripts 里放的是可执行脚本,assets 放的是模板和参考资料。整个目录就是一个“可交付物”,可以被Git管理,可以被多个Agent共享。这种设计带来的直接好处是:技能可以做版本管理,可以审核code review,也可以多人协作维护。
1.3 别被概念绕晕:skills vs prompts vs MCP vs plugins
很多新手会被这几个词搞混,我按自己理解给你理一下。
Prompts是最原始的形态,本质是一段对话指令。优点是灵活,缺点是每次都要重写,而且容易受上下文位置影响。Skills是结构化的技能包,强调的是“流程固化+工具调用”,主要用于Agent自主执行任务。MCP(Model Context Protocol)是一套让AI连接外部工具和数据的标准协议,解决的是“AI如何访问你的文件、数据库、浏览器”这类连接问题。你可以把MCP理解为USB接口,技能理解为安装在电脑上的软件。Plugins则是更宽泛的概念,可以包含MCP工具、命令、Agent配置等多种元素的集合。
需要注意的是,skills并不是要替代MCP。实际使用中,技能里经常引用MCP工具完成某个子步骤。比如一个数据报表技能,SKILL.md里可能写着“调用数据库MCP获取数据,再用scripts/report.py生成图表”。两者是协作关系,不是竞争关系。
2. 手动安装GitHub上的skills,一篇讲透
2.1 先把环境准备好:安装目录与Agent配置
手动安装skills,最常被问到的问题就是“放哪个目录”。不同Agent的默认目录确实不一样,而且版本之间可能有差异,动手之前先确认你用的版本和文档,这个习惯能省掉很多麻烦。社区里比较常用的路径有这样几个:
- Claude Code:通常将技能放在
~/.claude/skills/下,每个技能一个子目录。 - Codex:常见配置目录是
~/.codex/,技能一般放在~/.codex/skills/。 - OpenCode:配置多在
~/.config/opencode/下,skill相关目录名称以当前版本文档为准。
如果你装了多个Agent,也可以考虑建一个统一目录,比如~/ai-skills/,然后通过软链接把技能分别链到各Agent的目录里。这样维护起来更省心,更新一次到处生效。不过用软链接前,先确认Agent是否会递归加载整个目录结构,如果它会扫描软链接指向的原始目录,那没问题;如果它把软链接当成普通文件跳过,你就得直接用复制的方式。
2.2 两种安装方式:git clone和手动下载
安装方式取决于你下载的是“技能仓库”还是“单个技能目录”。
如果你在GitHub上找到一个仓库,里面是成名已久的技能合集,比如 obra/superpowers,那么推荐用git clone完整拉下来。以superpowers为例:
git clone --recursive https://github.com/obra/superpowers.git这个仓库用了submodule方式组织多个技能,所以必须加上--recursive参数,否则拉下来一堆空目录。拉下来之后,进入仓库目录看一下结构:
ls superpowers/skills/你会发现里面是成体系的技能列表。接着,把skills目录里的内容复制或链接到Agent的skills目录:
cp -r superpowers/skills/* ~/.claude/skills/如果你只需要其中一个技能,不要整个仓库塞进去。技能目录越大,Agent扫描和匹配的负担就越重,所以按需复制是更推荐的做法:
mkdir -p ~/.claude/skills cp -r superpowers/skills/brainstorming ~/.claude/skills/如果仓库本身就是一个单技能仓库,直接clone到Agent的skills目录即可,注意让仓库根目录里的SKILL.md落在技能目录的一级位置。
2.3 装完怎么确认真生效
装完之后最怕的就是“我以为装好了,其实Agent根本没加载”。验证方法其实很简单。
在Claude Code中,你可以直接开一局对话,输入“你有哪些skills”,或者用/skill相关的命令查看当前已加载的技能列表。如果在对话中提到了某个技能名,但是Agent完全无反应,优先检查三件事:
SKILL.md是否在技能目录的一级位置,而不是嵌套在某个子目录里。- frontmatter中的
name字段是否填了,并且没有非法字符。 description是否写得足够完整和可检索。Agent是靠这段描述来匹配任务的,写得含糊,技能就会变成“装了但从不触发”的摆设。
在Codex或OpenCode里,同样可以先问一句“你当前有哪些可用技能”,或者查看各自的/skill命令输出。如果列表里没有,大概率是目录路径没对,或者Agent配置里没有启用对应的自定义技能加载选项。
2.4 手动安装踩坑记录
我把自己踩过的坑列一下,供你参考。
第一个坑是Git clone之后忘记拉submodule。很多合集仓库都用submodule管理外部技能,只clone主仓库不拉子模块,等Agent运行时就提示找不到文件。解决办法很简单:进入仓库目录,执行:
git submodule update --init --recursive第二个坑是权限问题。技能目录里的脚本需要在本地执行,如果文件权限不对,Agent调用时会报Permission Denied。尤其是.sh脚本,记得给执行权限:
chmod +x scripts/*.sh第三个坑是复制的时候把.git目录也复制进去了。这不会立刻报错,但会让你在技能目录里做git操作时产生混乱。复制时排除隐藏的.git目录更稳妥:
rsync -av --exclude='.git' superpowers/skills/ ~/.claude/skills/第四个坑是自己改乱了目录结构。有些仓库把skills放在子目录里,复制时没注意层级,导致SKILL.md变成了三重嵌套。建议复制完手动find ~/.claude/skills -name SKILL.md检查一遍,确认每个技能的SKILL.md都在对应的技能主目录下。
3. 值得收藏的skills源和推荐清单
3.1 官方与社区高星仓库
先列几个我常看的仓库和站点,覆盖“官方出品的标准技能”和“社区高频更新的实操技能”这两类。
anthropics/skills 是官方仓库,里面收录了docx、pdf、pptx、xlsx文档生成与处理技能,还有HTML、视频分析等实用性很强的模块。特点是标准化程度高、维护活跃,新手可以从这个仓库开始。只要clone下来,把需要的技能复制到本地skills目录即可,里面的SKILL.md写得很规范,适合当作“学习如何写技能”的范例。
obra/superpowers 则是社区里口碑很好的技能合集,包含系统思考、头脑风暴、项目规划、执行跟踪等一整套面向复杂任务的技能。它解决的问题是:把Agent从“被动回答”变成“主动执行”。如果你经常让Agent帮你做多步骤的任务,这个仓库一定要看。
typesafe系列是工程化气息更浓的技能库。这类仓库的脚本通常用TypeScript编写,依赖比较多,安装时需要先看README,执行npm install或bun install装好依赖,再让Agent调用。好处是类型安全、可测试性强,适合对稳定性要求高的场景。
除了GitHub仓库,还有一些web端的技能目录网站,比如AI技能聚合站、Glama这类服务,可以在浏览器里按分类浏览技能。网站上看到的技能,很多也提供了Git仓库地址和安装说明,本质上还是clone或下载目录。
3.2 按场景选:前端开发skills
做前端开发的人,日常大量重复劳动集中在:项目初始化、组件生成、样式调整、Bug调试和代码审查。
以Tailwind CSS为例,一个对应的skill可以内置项目的设计Token、常用类名组合、响应式断点规范,甚至自动检查不符合设计系统的样式。这样Agent在写界面时,就不会再“自由发挥”出和项目风格完全不一致的代码。
React/Vue项目里,组件生成类技能也很实用。这类技能通常会在SKILL.md里规定:组件文件结构、props定义方式、状态管理写法、测试文件是否需要一并生成。你只需要告诉它“给这个页面生成一个列表组件”,它就会按项目约定输出完整代码,而不是每次都写一套不同的风格。
我还推荐装一个“代码审查技能”,直接把团队的代码规范、检查清单、常见反模式写进去。每次提交代码前让Agent按这个技能过一遍,比自己肉眼review稳得多。技能里还可以加上“只检查,不直接改代码”的限制,避免它热心过度把无关文件改乱。
3.3 按场景选:数学建模skills
数学建模比赛场景下,时间和节奏极关键。这里说的“建模skills”不是指装一个技能就能拿奖,而是说技能可以把整个比赛流程中大量重复的工程工作自动化,让你和队友把精力集中在模型思路上。
我见过比较好用的建模技能一般包含这些内容:赛题文本解析、数据A初探与清洗、常规模型模板(预测、分类、优化、评价)、论文LaTeX排版骨架、图表导出规范。比如,你可以让它“读取附件数据,先做描述性统计,输出相关性热力图和初步结论”,它会自动跑Python脚本生成图表,再按建模论文的写作要求整理文字。
华为杯这类比赛,时间紧,很多队伍最后都死在论文排版和图表一致性上。一个论文排版技能可以绑定LaTeX模板,统一字体、公式、参考文献格式。不管谁写哪一部分,最终拼接时都能保持一致,这部分省下的时间非常可观。
装建模技能时,注意不要贪多。选一个比赛全流程合集,顶多再配一两个你常用的算法专项技能就足够了。技能装太多,Agent反而不知道选哪个,容易来回横跳。
3.4 按场景选:AI漫剧与创意内容skills
“AI漫剧”是最近在短视频平台快速走红的一种创作形态,靠AI生成漫画风格的分镜头画面,再配上配音和字幕做成连续短剧。做这个赛道的朋友,最头疼的往往是角色一致性、分镜稳定性和批量产出效率。
角色一致性技能可以内置角色的外貌描述、关键词、负面提示词,以及不同角度、不同表情下的prompt模板。每生成一帧画面之前,Agent先把角色描述拼进去,再配合文生图工具出图,就能大幅减少换脸跑偏的问题。
分镜脚本技能则更偏流程化:输入一段剧情大纲,按镜头语言生成分镜表,其中包括景别、运镜、台词、画面描述、时长。这个分镜表可以直接喂给视频生成工具,也能作为人工制作时的执行清单。
如果你在做批量内容,可以再配一个“素材管理技能”,把生成过的角色图、场景图、背景素材统一命名并归档,方便后续复用。很多AI漫剧团队做不下去,不是画质问题,而是素材混乱导致的效率崩塌。
3.5 快速上手的技能组合建议
如果你是第一次尝试,不建议一上来就装几十个技能。我给你一个最小组合:
- 一个文档输出技能,比如docx或pdf,用于日常报告和方案产出。
- 一个代码相关技能,比如代码审查或者项目初始化,解决日常开发痛点。
- 一个流程型技能,比如superpowers里的规划类技能,帮你用Agent管理复杂任务。
先用这三类把日常工作跑顺,跑顺之后再看具体场景需要补充什么。技能不是收藏得越多越好,而是用得越顺越好。
4. 不会写?从0到1开发自己的skill
4.1 写之前先想清楚
很多人问我“skills怎么写”,我通常先反问一句:你身边哪个任务最烦、重复率最高?答案往往就是你的第一个skill。
写skill之前,先完整记录你平时手动处理这个任务的全部步骤。比如你要做一个“周报生成”技能,就想想:你先从哪里拿数据?拿完之后怎么处理?输出给谁看?格式上有什么约定?哪些步骤是稳定的,哪些内容每次都不一样?
稳定的部分就是技能要固化的“流程骨架”,每次不一样的部分就是Agent需要根据实际输入去填充的“变量”。
我建议在SKILL.md的正文里明确写上“适合使用的情况”和“不适合使用的情况”。这个动作不是为了凑字数,而是帮助Agent做触发判断。触发判断错了,比不触发更糟糕。
4.2 SKILL.md的骨架与写法
一个标准的SKILL.md,骨架大概是这样的:
--- name: weekly-report description: 适用于生成周报场景,当用户提供工作内容、项目进度或数据文件时,生成结构化周报。不适合当用户要求写日报或月报时使用。 ---正文部分,用清晰的分段结构组织:
- 任务目标:一句话说明这个技能完成什么。
- 前置条件:需要哪些输入,要不要准备数据文件,需要安装哪些依赖。
- 执行步骤:按编号列出,每一步写清楚怎么做、输出什么。
- 输出规范:成品长什么样,用模板还是用脚本生成。
- 注意事项:哪些情况容易出错,如何避免。
正文不要写成长篇大论式的说明,而要写成Agent可以直接执行的指令。比如“读取data.csv,缺失值按行业惯例处理,并在结果末尾注明处理方式”,就比“请对数据做预处理”有效得多。因为技能是给机器读的,精确比文采更重要。
4.3 给skill配上脚本和资产
SKILL.md负责“告诉Agent该做什么”,scripts和assets则负责“让Agent真的有工具可用”。
以文档生成为例。如果你的技能要生成docx报告,你可以写一个Python脚本,用python-docx库按模板生成文档。SKILL.md里这样描述步骤:
- 根据用户输入整理标题和正文段落;
- 调用
scripts/generate_docx.py,传入整理后的JSON数据; - 脚本输出一个临时目录下的docx文件;
- 将文件移动到当前工作目录并告知用户。
写脚本时,建议加一层参数校验。因为Agent调用脚本时,传的参数格式和你预期的不一定完全一致,脚本里做好异常处理,能少很多幺蛾子。
assets目录里放模板文件时,也要在SKILL.md里说明具体用哪个文件、怎么用。不要只放文件不写说明,否则Agent不会主动去读。
4.4 在多个Agent间复用
技能写完之后,天然可以在不同Agent间复用。前提是你严格按照标准目录结构来组织,不写死某个Agent专属的工具调用方式。
比如你的脚本里如果直接调用shell命令,或者调用某个MCP工具,就要在SKILL.md的前置条件里写清楚,让Agent知道调用前需要检查什么。如果脚本依赖特定的Python包,最好在目录里加一个requirements.txt,并在SKILL.md里注明安装方式。
我自己习惯在技能目录里加一个install.sh,专门负责安装依赖、设置权限、检查外部命令。这样无论哪个Agent加载,只要第一步先执行install.sh,整个技能环境就准备完毕。这个习惯帮我少踩了很多“换个环境就失效”的坑。
5. 技能库的日常维护与清理
5.1 什么时候该清理
技能装得多了一定要清理,这件事不是在你有空的时候才做,而是当你发现Agent开始“迟钝”的时候就必须做。具体信号我总结成三条。
第一,Agent经常答非所问。你让它做A任务,它却突然调用了一个不太相干的技能路径,说明有技能的description写得过于宽泛,产生了误触发。第二,技能目录越来越大,克隆新仓库的速度变慢,启动时扫描耗时明显。第三,你自己已经忘了大部分技能是干嘛用的。如果一个技能你超过一个月没用过,它大概率也该被清理了。
社区里有一批喜欢折腾技能库的老玩家,比如tibo,关于清理的思路就很有参考价值。核心理念很简单:技能库是给Agent用的,不是给收藏夹用的。你装技能的目的是让Agent更精准地工作,而不是让目录列表更好看。
5.2 清理的判断标准
清理技能时,我按三层标准来判断。
第一层看是否高频使用。如果过去一个月里,这个技能从未被触发过,先把它的文件从技能目录移除,放到一个名为skills_disabled/的备份目录里。这样就算误删,也能随时找回。
第二层看触发关键词是否重叠。你装了三个技能,description里都写了“数据分析”这四个字,Agent在选择时就很容易纠结。保留那个描述最精确、流程最成熟的,其余两个或者调整描述,或者直接归档。
第三层看依赖是否健康。有些技能依赖的外部库已经停止维护,或者需要联网下载资源,这类技能在网络不佳或离线环境下就会坏掉。如果它本身不是核心技能,清理掉反而省心。
5.3 我的维护习惯和注意事项
我自己的维护节奏是每两周一次,时间不长,就十分钟。先看一眼技能目录里有没有新的未识别文件,再翻一下GitHub上收藏的项目有没有更新版本。
更新技能包时,我强烈建议先备份现有版本。比如你更新superpowers之前:
cp -r ~/.claude/skills ~/ai-skills-backup-$(date +%Y%m%d)这样如果新版技能的行为不符合预期,你可以快速回滚。备份这一步看似简单,但真能救你一次,我就遇到过技能更新后,原有的触发逻辑被改坏,导致Agent完全不认这个技能的情况。
另外,版本固定也是一个好习惯。如果你从GitHub上clone了一个技能仓库,可以记录当前提交的commit编号,放在技能目录下的README里。这样之后有问题时,可以快速查到这个技能是从哪个版本来的,避免“明明代码一样,行为却不一样”的诡异问题。
还有一点:注意技能目录里的临时文件。Agent运行技能时,可能在目录里生成中间文件或缓存文件。时间长了,这些文件越积越多,会干扰git操作和备份。建议熟悉每个技能会产生的临时文件类型,并把它们加入.gitignore或是定期清理。
6. 关于Skills学习路线的一点个人建议
技能这个方向,说实话还在快速演进里,今天流行的写法,过半年可能就成了旧规范。但底层的思路不会变:把复杂的任务流程拆解成可复用的模块,用工具去固化经验。
我自己重新走一遍的话,会采用三条原则。第一条,先手动再做技能。你没法把自己都没做明白的事情写清楚给Agent。任何一个技能需求产生后,先手动执行三次以上,把流程里每个拐点摸清,再开始写SKILL.md。第二条,先本地再云端。技能尽量在本机测试稳定后再考虑推给团队使用或发布到社区,避免把半成品包装成成品,坑了别人也消耗自己的信任。第三条,先一个再一串。不要试图一次写完一个全流程大技能,而是把它拆成三四个小技能,分别测试通过后,再用顶层技能去串联它们。
技能化这件事最大的价值,不是让你从此不用动脑,而是把你从重复劳动里解放出来,把注意力放到真正需要判断力和创造力的地方。我见过有人靠一堆精心维护的skills,把每周十小时的重复事务压到两小时内;也见过有人装了两百个技能,最后连Agent的正常问答都被干扰。差距不在数量,就在你有没有认真思考过“这个任务到底是怎么完成的”。
如果你看完这篇文章,想做的第一件事是去把收藏夹里的技能清一清,或者坐在电脑前开始写自己的第一个SKILL.md,那就对了。