
1. 从“skills”这个热词说起它到底在解决什么问题最近半年不管是在技术社区还是开发者群里“skills”这个词出现的频率高得离谱。很多人第一次看到它会以为是某种新的编程语言特性或者某个框架的插件系统。但如果你真的去翻 Claude Code、Codex 这些工具的文档会发现 skills 其实是一个更底层、也更实用的概念——它本质上是一套可复用的能力封装机制让 AI 编程助手能够按照你预设的流程、规范和知识去执行特定任务。我最初接触 skills 是因为一个很具体的痛点每次让 AI 帮我写代码它总是“自由发挥”。比如我要求它生成一个符合团队规范的 React 组件它每次给出的目录结构、命名风格、甚至 import 顺序都不一样。后来我发现与其每次在 prompt 里重复一堆约束不如把这些约束写成一个 skill让 AI 在需要的时候自动加载。这就是 skills 最核心的价值把重复的指令变成可复用的能力模块。从热词分布来看大家关注的点主要集中在几个方向Claude Code 的 skills 怎么安装和配置、Codex 的 skills 怎么用、skills 开发的基本流程、以及在不同 IDE比如 VS Code、IDEA里怎么集成。还有一个很有意思的现象是很多人搜“skills推荐”和“好用的skills”说明大家已经不满足于知道它是什么而是想知道哪些 skills 真正能提升日常开发效率。这篇文章我会从实际使用的角度把 skills 的来龙去脉、核心原理、安装配置、开发方法、常见坑点全部讲清楚。不管你是刚听说这个概念的新手还是已经在用 Claude Code 或 Codex 但还没碰过 skills 的老用户都能从中找到可以直接抄作业的内容。2. Skills 的核心机制为什么它不是普通的插件2.1 Skills 与 Plugin、Agents 的本质区别很多人会把 skills 和 plugin、agents 混为一谈觉得都是“给 AI 加功能”。但实际上它们解决的问题完全不同。我用一个生活化的类比来解释Plugin像是给手机装了一个新 App它扩展的是工具本身的功能边界。比如你给 VS Code 装了一个 Git 插件VS Code 就多了 Git 相关的操作能力。Agents像是一个能自主决策的助手你给它一个目标它会自己规划步骤、调用工具、检查结果。它关注的是“自主完成任务”。Skills则更像是一本操作手册。它不改变工具的能力也不负责自主决策它做的是当 AI 遇到某类任务时告诉它“按照这个流程、这个规范、这个知识库来做”。这个区别非常关键。Plugin 是代码层面的扩展Agents 是决策层面的扩展而 skills 是知识和流程层面的扩展。它不需要你写复杂的代码通常就是一个 Markdown 文件加上一些元数据描述清楚“什么时候用、怎么用、注意什么”。2.2 Skills 的文件结构与加载逻辑一个标准的 skill 通常包含以下几个部分--- name: react-component-generator description: 生成符合团队规范的 React 函数组件 trigger: 当用户要求创建新的 React 组件时 --- ## 组件结构规范 - 使用函数组件 TypeScript - 文件命名使用 PascalCase - 每个组件必须包含 Props 类型定义 ## 生成步骤 1. 创建组件文件 2. 定义 Props 接口 3. 实现组件逻辑 4. 导出组件这里有几个关键点需要注意。首先是trigger字段它决定了这个 skill 什么时候被激活。有些工具支持自动匹配有些需要手动调用。其次是description它不仅是给人看的AI 也会根据这个描述来判断当前任务是否匹配这个 skill。加载逻辑上不同工具的实现略有差异。Claude Code 通常会在项目根目录或用户配置目录下扫描 skills 文件夹Codex 则可能通过配置文件指定 skills 路径。但核心思路是一致的按需加载匹配触发。这意味着你不需要一次性把所有 skills 都塞给 AI而是让它在需要的时候自己去查。2.3 为什么 Skills 对 AI 编程助手如此重要没有 skills 的时候AI 编程助手的能力完全取决于两件事模型本身的训练数据以及你在 prompt 里临时给的指令。这导致两个问题一是一致性差同样的需求每次生成的结果可能不同二是知识无法沉淀你这次教它的规范下次它又忘了。Skills 解决的就是这两个问题。它把“临时指令”变成了“持久化知识”把“每次都要说”变成了“一次配置长期生效”。我实测下来在配置了合适的 skills 之后AI 生成代码的返工率至少降低了 40%。尤其是团队协作场景新人不需要反复问“我们的代码规范是什么”AI 会直接按照 skill 里的规范来生成。还有一个容易被忽略的价值skills 是可版本控制的。你可以把 skills 文件夹放进 Git 仓库团队成员共享同一套 skills。当规范更新时只需要改 skill 文件所有人的 AI 助手都会同步更新。这比写一份 Word 文档然后指望大家去看要靠谱得多。3. 主流工具的 Skills 安装与配置实操3.1 Claude Code 的 Skills 安装全流程Claude Code 是目前对 skills 支持最完善的工具之一。安装 skills 的流程分为几个步骤我按照实际操作的顺序来讲。第一步是确认 Claude Code 已经正确安装。在终端里执行claude --version如果能正常输出版本号说明安装没问题。如果提示命令不存在需要先完成 Claude Code 的安装。安装方式根据操作系统不同有所差异Windows 用户可以通过官方安装包macOS 和 Linux 用户通常使用命令行安装脚本。第二步是找到 skills 的存放目录。Claude Code 默认会从两个位置加载 skills项目根目录下的.claude/skills/文件夹以及用户主目录下的.claude/skills/文件夹。项目级的 skills 只对当前项目生效用户级的 skills 对所有项目生效。我的建议是通用规范放用户级项目特定规范放项目级。第三步是创建 skill 文件。每个 skill 是一个独立的 Markdown 文件放在 skills 目录下。文件名建议用英文小写加连字符比如react-component.md。文件内容按照前面提到的格式包含 frontmatter 和正文。第四步是验证加载。在 Claude Code 里输入/skills命令不同版本可能略有差异可以查看当前已加载的 skills 列表。如果没看到你刚创建的 skill检查一下文件路径和格式是否正确。注意Claude Code 对 skill 文件的 frontmatter 格式要求比较严格name和description是必填字段缺少任何一个都可能导致加载失败。3.2 Codex 的 Skills 配置方法Codex 的 skills 机制和 Claude Code 略有不同。Codex 更倾向于通过配置文件来管理 skills而不是自动扫描目录。你需要在 Codex 的配置文件中显式指定 skills 的路径和启用状态。配置的基本结构是这样的{ skills: { enabled: true, paths: [ ./skills, ~/.codex/skills ], autoLoad: true } }这里autoLoad设置为 true 时Codex 会根据 skill 的 description 自动判断是否加载。如果设置为 false则需要手动通过命令调用。我个人的经验是对于高频使用的 skill开启自动加载对于偶尔用到的手动调用更可控。Codex 还有一个比较实用的功能是skill 优先级。当多个 skill 的触发条件重叠时可以通过在 frontmatter 里设置priority字段来决定哪个先被加载。数值越大优先级越高。这个在团队协作场景下很有用比如项目级 skill 可以覆盖用户级 skill 的某些规范。3.3 在 VS Code 和 IDEA 中集成 Skills很多人的日常开发环境是 VS Code 或 IDEA所以如何在 IDE 里使用 skills 是一个高频问题。VS Code 的话如果你用的是 Claude Code 的 VS Code 扩展skills 的加载逻辑和命令行版本是一致的。扩展会自动读取项目根目录和用户目录下的 skills 文件夹。你可以在 VS Code 的设置里搜索claude skills来确认相关配置项。有一个小技巧是把 skills 文件夹加到 VS Code 的 workspace 里这样你可以直接在编辑器里修改 skill 文件保存后 AI 助手会实时加载最新版本。IDEA 的情况稍微复杂一些。目前 IDEA 没有官方的 Claude Code 或 Codex 插件但可以通过外部工具的方式集成。具体做法是在 IDEA 的 External Tools 里配置一个调用 Claude Code 命令行的工具然后把 skills 目录作为参数传进去。虽然不如 VS Code 那么无缝但实测下来也能用。提示不管用哪个 IDEskills 文件本身都是纯文本的 Markdown所以你可以用任何编辑器来编写和维护。IDE 集成的核心价值在于减少切换成本而不是 skills 本身的功能差异。4. 开发一个高质量 Skill 的完整流程4.1 从需求到 Skill如何拆解一个可复用的能力开发 skill 的第一步不是写文件而是想清楚“这个 skill 要解决什么问题”。我见过很多人一上来就写了一大堆规范结果 AI 根本不知道怎么用。一个好的 skill 应该聚焦在一个具体的、可重复的任务上。我通常用这几个问题来拆解需求这个任务是不是经常重复出现每次执行时有没有固定的步骤或规范这些步骤和规范能不能用文字清晰描述AI 在执行这个任务时最容易犯什么错误如果四个问题的答案都是肯定的那这个任务就适合做成 skill。比如“生成 API 接口文档”就是一个典型的适合做 skill 的任务它经常重复、有固定格式、容易用文字描述、AI 经常漏掉某些字段。反过来“帮我调试这个 bug”就不适合做成 skill因为每次 bug 的情况都不一样没有固定的流程可以复用。4.2 Skill 文件的结构设计与参数计算一个高质量的 skill 文件结构上应该包含这几个部分元数据区frontmatter定义 skill 的名称、描述、触发条件、优先级。这里的 description 要写得既简洁又准确因为 AI 会根据它来判断是否加载。我一般会写成“当用户需要 [具体场景] 时使用输出 [具体结果]”的格式。规范区列出这个任务必须遵守的规则。比如代码风格、文件命名、目录结构等。这部分要具体不要写“代码要规范”这种模糊的话而要写“函数名使用 camelCase组件名使用 PascalCase”。步骤区把任务拆解成有序的步骤。每一步都要足够具体让 AI 能直接执行。比如“第一步检查目标目录是否存在不存在则创建”就比“第一步准备目录”要好得多。示例区给出一个完整的输入输出示例。这是最容易被忽略但效果最好的部分。AI 通过示例能更准确地理解你的意图。示例不需要很长但要是真实可用的。边界条件区说明什么情况下不应该使用这个 skill或者需要特殊处理的情况。比如“如果目标文件已存在先询问用户是否覆盖”。关于参数计算如果你的 skill 涉及到一些需要动态计算的值比如根据文件大小决定分片数量一定要在 skill 里写清楚计算公式和边界值。我见过一个 skill 因为没写清楚分片阈值导致 AI 每次生成的分片数量都不一样。4.3 测试与迭代让 Skill 真正好用写完 skill 只是第一步真正让它好用需要反复测试和迭代。我的做法是第一轮测试用最简单的场景跑一遍看 AI 能不能正确加载 skill 并按照步骤执行。这一轮主要检查格式和基本逻辑。第二轮测试用边界场景跑一遍。比如输入为空、输入格式不对、目标文件已存在等情况看 AI 能不能正确处理。第三轮测试让团队里其他人用这个 skill收集他们的反馈。很多时候你自己觉得写清楚了别人用的时候还是会遇到问题。迭代的时候我建议每次只改一个地方然后重新测试。如果一次改太多出了问题很难定位是哪个改动导致的。另外skill 文件建议用 Git 管理每次修改都提交一次这样出问题可以快速回滚。实操心得skill 的 description 字段值得反复打磨。我通常会写三到五个版本然后分别测试哪个版本的触发准确率最高。这个字段直接决定了 skill 会不会在正确的时机被加载。5. 常见问题与排查技巧实录5.1 Skill 不加载或加载失败的排查思路这是最常见的问题。AI 助手明明应该用某个 skill但实际执行时完全没有按照 skill 里的规范来。排查的时候按照以下顺序检查排查项检查方法常见原因文件路径确认 skill 文件在正确的目录下放错了文件夹或者目录名拼写错误文件格式检查 frontmatter 是否完整缺少 name 或 description 字段触发条件查看 description 是否匹配当前任务description 写得太模糊或太具体加载状态用工具命令查看已加载的 skills 列表skill 没有被扫描到优先级冲突检查是否有其他 skill 覆盖了当前 skillpriority 设置不当我遇到最多的情况是 description 写得太宽泛导致 AI 觉得“这个 skill 好像可以用又好像不可以用”最后干脆不用。解决办法是把 description 写得更具体明确限定使用场景。5.2 多个 Skill 冲突时的处理策略当项目变大之后skills 数量会越来越多冲突几乎不可避免。比如一个 skill 说“组件文件放在 components 目录”另一个 skill 说“所有新文件放在 src 目录”。AI 遇到这种情况会随机选一个结果就是时对时错。处理冲突的核心原则是明确优先级避免重叠。具体做法包括在 frontmatter 里设置 priority数值大的优先把通用规范放在用户级 skill项目特定规范放在项目级 skill项目级自动覆盖用户级定期审查 skills 列表合并功能重叠的 skill在 skill 里明确写出“本 skill 不适用于 XX 场景”我个人的习惯是每个月 review 一次 skills 文件夹把不再使用的删掉把功能相似的合并。skills 不是越多越好维护成本会随着数量增加而快速上升。5.3 性能与加载速度优化Skills 太多会导致 AI 助手的启动变慢因为每次都要扫描和加载所有 skill 文件。我实测过当 skills 数量超过 50 个时启动时间会明显增加。优化的方法有几个一是把不常用的 skill 设置为手动加载而不是自动加载二是把大段的规范拆分成多个小 skill按需组合三是定期清理不再使用的 skill。另外skill 文件本身也要保持精简不要塞太多无关内容。一个 skill 文件控制在 200 行以内比较合适超过这个长度就应该考虑拆分了。还有一个容易被忽略的点是skill 里的示例代码不要写得太长。有些人喜欢在 skill 里放一个完整的项目示例结果文件几百行加载慢不说AI 还容易被示例带偏。示例只需要展示关键部分即可。6. 我实际使用 Skills 的一些体会用了大半年 skills 之后我最大的感受是它不是一个“配置完就完事”的东西而是需要持续维护的。就像代码需要重构一样skills 也需要定期 review 和更新。我现在的做法是每次团队规范有变动第一件事就是更新对应的 skill 文件然后提交到 Git。这样 AI 助手永远用的是最新规范不会出现“文档更新了但 AI 还在用旧规范”的情况。另外我发现 skills 最适合的场景是有明确输入输出的重复性任务。比如生成 CRUD 代码、写单元测试、生成 API 文档、格式化日志输出等。这些任务每次的流程都一样做成 skill 之后效率提升非常明显。但对于探索性的任务比如“帮我设计一个架构”skills 的作用就有限因为这类任务没有固定流程可以复用。最后分享一个小技巧如果你不确定一个 skill 该怎么写可以先手动让 AI 执行几次任务把它每次的输出和你的修改意见记录下来然后把这些记录整理成 skill。这样写出来的 skill 最贴近实际使用场景也最容易生效。