
1. 从“skills”这个热词说起它到底是什么为什么突然火了最近几个月不管是在技术社区、建模比赛群还是前端开发交流圈“skills”这个词出现的频率高得离谱。很多人第一次看到它以为是某种新出的编程语言或者框架其实不是。这里的skills特指围绕 Claude 生态尤其是 Claude Code、Claude Desktop构建的一套可复用能力模块。你可以把它理解成给 AI 助手装的“技能包”——每个 skill 就是一份写好的指令集告诉 Claude 在特定场景下该怎么干活。我最早接触这个概念是在一个数学建模的群里有人发了一份SKILL.md文件说装上之后 Claude 写论文摘要和模型假设的速度快了一倍。当时我还不信后来自己动手试了试发现这东西确实有点东西。它的核心逻辑很简单把重复性的、有固定套路的任务提前写成结构化的指令文档让 AI 每次遇到同类任务时直接调用而不是从头理解你的需求。那为什么偏偏是现在火起来了我的判断是三个因素叠加。第一Claude Code 这个命令行工具降低了使用门槛让不写代码的人也能通过自然语言驱动 AI 干活第二社区里涌现了一批高质量的 skill 模板比如专门做前端开发的、专门做数学建模的、专门做漫剧脚本的覆盖场景越来越广第三SKILL.md这个格式足够简单本质上就是一个 Markdown 文件加一些约定好的字段谁都能写谁都能改。这篇文章适合谁看如果你是刚听说 skills 但不知道从哪下手的新手我会从最基础的概念讲起告诉你 skill 文件长什么样、怎么装、怎么用。如果你已经在用 Claude Code 但觉得效率没提上来我会分享几个我自己在用的 skill 写法以及踩过的坑。如果你是想自己开发 skill 的人我也会把SKILL.md的结构拆开讲清楚让你能照着写出第一个能跑的 skill。注意本文提到的所有操作均基于公开可获取的工具和文档不涉及任何需要特殊网络配置的内容。如果你在安装过程中遇到环境问题优先检查本地开发环境是否完整。2. skills 的核心机制为什么一份 Markdown 文件能改变 AI 的工作方式2.1 从“每次重新解释”到“一次定义反复调用”在没有 skills 之前我用 Claude 干活的典型流程是这样的打开对话框花三五分钟描述需求等它输出发现格式不对再补充说明来回折腾好几轮。下次遇到同类任务同样的描述还得再写一遍。这个过程最大的浪费不在于 AI 生成内容的速度而在于我每次都要重新把上下文和格式要求讲清楚。skills 解决的正是这个问题。它的本质是把提示词工程从一次性对话中抽离出来变成可持久化、可版本管理的文件。一个 skill 文件里通常包含几个关键部分这个 skill 叫什么名字、什么场景下触发、具体的执行步骤是什么、输出格式有什么要求、有没有需要特别注意的约束条件。当你把这份文件放到指定目录后Claude Code 在启动时会自动加载它之后你在对话中提到相关任务它就会按照 skill 里定义的流程来执行。我打个比方。没有 skills 的时候AI 像一个刚入职的实习生每次派活你都得从头讲一遍要求。有了 skills 之后相当于你给这个实习生配了一本工作手册里面写清楚了“遇到 A 类任务走这个流程遇到 B 类任务走那个流程”。他不用每次问你你也不用每次教。2.2 SKILL.md 的文件结构拆解一个标准的SKILL.md文件结构其实不复杂。我拿一个实际在用的前端开发 skill 举例把关键字段拆开讲。文件开头通常是一段 YAML 格式的元信息用三个短横线包裹。这部分定义了 skill 的基本属性--- name: frontend-component-generator description: 根据需求描述生成 React 组件代码包含样式和基础测试 trigger: 当用户要求创建新的前端组件时 ---name是 skill 的唯一标识建议用英文小写加连字符方便引用。description是一句话说明这个 skill 干什么用写得越具体Claude 判断是否调用它时就越准确。trigger字段是我自己加的习惯用来描述触发条件虽然有些版本的 Claude Code 不强制要求这个字段但写上之后逻辑更清晰。元信息下面是正文部分用 Markdown 组织。正文里我会写清楚几个东西输入要求用户需要提供什么信息、执行步骤按什么顺序做什么事、输出格式最终产物长什么样、约束条件哪些事不能做。比如前端组件生成这个 skill我会在正文里写明“组件必须使用函数式写法”“样式优先用 Tailwind 类名”“必须包含一个基础的渲染测试”。提示SKILL.md的文件名大小写敏感在 Linux 和 macOS 上必须严格写成大写SKILL.mdWindows 上虽然不区分大小写但建议保持一致避免跨平台时出问题。2.3 skills 和普通提示词模板的区别在哪有人可能会问这不就是把提示词存成文件吗和我自己在记事本里存一段常用提示词有什么区别区别主要在三个地方。第一是自动加载机制。普通提示词你得手动复制粘贴skills 是 Claude Code 启动时自动扫描指定目录并加载的你不需要每次提醒它“用那个前端组件的 skill”。第二是结构化程度。普通提示词往往是一段话skills 有明确的元信息字段和正文分区Claude 解析起来更准确不容易漏掉关键约束。第三是可组合性。你可以同时装多个 skillsClaude 会根据当前任务自动判断该调用哪个。比如你同时装了前端组件生成和数学建模论文写作两个 skill当你让它写组件时它不会去调用论文写作的那个。我实测下来用 skills 之后同类任务的首次输出可用率从大概百分之四十提升到了百分之七十以上。剩下的百分之三十主要是需求本身描述不清导致的和 skill 本身没关系。3. 从零开始skills 的获取、安装与首次运行3.1 安装 Claude Code 的前置准备skills 目前最主要的运行载体是 Claude Code所以第一步得先把 Claude Code 装好。Claude Code 是一个命令行工具支持 macOS、Linux 和 Windows。Windows 用户需要注意官方文档里提到在某些 Windows 版本上需要启用虚拟机平台功能如果你在安装过程中看到相关提示按照系统指引开启即可。安装方式根据系统不同有差异。macOS 和 Linux 用户通常可以通过包管理器安装Windows 用户建议使用官方提供的安装包。安装完成后在终端里输入claude命令如果能看到版本号和帮助信息说明安装成功。如果提示“无法将 claude 项识别为 cmdlet、函数、脚本文件或可运行程序的名称”大概率是环境变量没配好检查一下安装路径有没有加到 PATH 里。注意安装过程中如果遇到网络相关的报错优先检查本地网络环境是否正常。本文不涉及任何网络配置方面的指导所有操作均假设你在正常的网络环境下进行。3.2 获取 skills 的渠道和筛选方法skills 的获取渠道主要有几个。一是 GitHub 上的开源仓库搜索claude skills或者SKILL.md能找到不少别人整理好的合集。二是社区论坛和群组里有人分享的单个 skill 文件。三是自己写这个后面会详细讲。从 GitHub 上找 skills 的时候我一般会看几个指标star 数量虽然不能完全代表质量但太少的要谨慎、最近更新时间超过半年没更新的可能不兼容新版 Claude Code、README 里有没有使用说明连说明都不写的装上了大概率也跑不起来。下载方式很简单如果是单个SKILL.md文件直接复制内容保存到本地就行。如果是整个仓库可以用git clone或者直接下载压缩包。我一般习惯把下载下来的 skills 先放到一个临时目录打开看看内容再决定要不要正式安装。3.3 安装 skills 的具体操作步骤安装 skills 的核心操作就一步把SKILL.md文件放到 Claude Code 会扫描的目录里。这个目录的位置根据系统不同有所区别常见的位置是用户主目录下的.claude/skills/文件夹。如果这个文件夹不存在手动创建即可。具体操作流程我列一下确认 Claude Code 已经安装并能正常运行。找到或创建 skills 目录通常在~/.claude/skills/。每个 skill 单独建一个子文件夹文件夹名和 skill 的name字段保持一致。把SKILL.md文件放进对应的子文件夹里。重启 Claude Code让它重新扫描 skills 目录。重启之后你可以通过输入特定的命令来查看已加载的 skills 列表。不同版本的命令可能不一样常见的是/skills或者--list-skills参数。如果能看到你刚放进去的 skill 名字说明加载成功了。提示如果你同时装了多个 skills建议定期清理不再使用的。我自己的习惯是每个月过一遍 skills 目录把超过一个月没调用过的删掉或者移到备份文件夹保持目录干净减少 Claude 判断时的干扰。3.4 验证 skill 是否生效的简单方法装好之后怎么知道它真的在工作我的做法是直接给 Claude 派一个该 skill 应该处理的任务然后观察它的输出格式是否符合 skill 里定义的要求。比如我装了一个数学建模论文摘要的 skill里面规定了摘要必须包含“问题重述、方法概述、主要结果”三个部分那我就让它写一段摘要看输出里有没有这三个部分。如果有说明 skill 生效了如果没有可能是文件放错了位置或者元信息字段写错了导致 Claude 没识别出来。4. 实战几个高频场景下的 skills 写法与使用心得4.1 前端开发场景组件生成 skill 的完整写法前端开发是我用得最多的场景之一。每次新建项目都要写一堆重复的组件模板虽然可以用脚手架但脚手架生成的是固定结构没法根据具体需求灵活调整。用 skill 的好处是我可以把组件的通用规范写进去同时保留根据需求描述生成具体逻辑的能力。我写的那个前端组件 skill正文部分大概长这样## 输入要求 用户需要提供组件名称、主要功能描述、需要的 props 列表 ## 执行步骤 1. 根据组件名称创建对应的文件夹和文件 2. 生成函数式组件代码使用 TypeScript 3. 样式优先使用 Tailwind CSS 类名 4. 生成一个基础的渲染测试文件 5. 在组件文件顶部添加简短的 JSDoc 注释 ## 输出格式 - 组件文件ComponentName.tsx - 测试文件ComponentName.test.tsx - 样式内联 Tailwind 类名不单独建 CSS 文件 ## 约束条件 - 不使用 class 组件 - 不引入额外的状态管理库 - 测试只覆盖渲染和基本交互这个 skill 我用了大概两个月最大的感受是省去了每次解释项目规范的时间。新来的同事只要知道有这个 skill生成的代码风格就是统一的code review 的时候少了很多格式上的扯皮。4.2 数学建模场景论文写作 skill 的关键字段数学建模比赛的时间压力很大三天里要完成建模、求解、验证、写作四件事。写作部分虽然重要但往往被压缩到最后几个小时。我去年参加比赛的时候提前准备了一个论文写作 skill把摘要、模型假设、符号说明这几个固定部分的写法都定义好了。这个 skill 里我特别强调了几点摘要必须控制在 300 字以内模型假设要分条列出且每条不超过两行符号说明用三线表格式。这些要求写在 skill 里之后Claude 生成的内容直接就能用不需要我再手动调整格式。有个细节值得说一下。数学建模的 skill 里我加了一条约束“所有公式用 LaTeX 格式输出行内公式用单个美元符号包裹独立公式用双美元符号包裹。” 这条约束看起来不起眼但实际用的时候能省很多事因为不同的人写 LaTeX 习惯不一样统一之后复制到论文模板里不会出格式错误。4.3 内容创作场景漫剧脚本 skill 的结构设计AI 漫剧是最近比较火的方向我有个朋友在做这块找我帮忙写了个脚本生成的 skill。漫剧脚本和普通剧本不太一样它需要标注分镜、角色表情、场景切换这些给 AI 绘画工具用的信息。这个 skill 的结构设计上我把输出格式定义得比较严格## 输出格式 每一集脚本按以下结构输出 ### 场景 [编号] - 场景描述[一句话描述画面] - 角色[角色名] [表情] [动作] - 台词[角色名]“[台词内容]” - 镜头[远景/中景/近景/特写]这种结构化输出直接对接后续的绘画工具省去了中间转换的步骤。我朋友反馈说用了这个 skill 之后从脚本到分镜图的流程时间缩短了大概三分之一。4.4 我踩过的坑skill 写得太宽泛等于没写刚开始写 skill 的时候我犯过一个典型错误把 skill 写得太宽泛。比如我写过一个“代码审查”的 skill里面只写了“检查代码质量指出潜在问题”。结果 Claude 每次输出的审查意见都很泛什么“建议增加注释”“注意边界条件”全是正确的废话。后来我改了写法把审查维度拆开安全性检查有没有硬编码密钥、有没有 SQL 注入风险、性能检查有没有不必要的循环嵌套、有没有重复计算、可读性检查命名是否清晰、函数是否过长。每个维度下面再列具体的检查点。改完之后审查意见的针对性明显强了很多。这个经验让我明白一个道理skill 的价值不在于告诉 AI“做什么”而在于告诉它“怎么做”和“做到什么程度”。越具体的约束越能产出可用的结果。5. 自己动手写一个 skill从需求到可运行文件的完整流程5.1 确定 skill 的边界什么该写进去什么不该写 skill 的第一步不是打开编辑器而是想清楚这个 skill 要解决什么问题、不解决什么问题。我一般会问自己三个问题这个任务我是不是经常做做的时候有没有固定的套路这个套路能不能用文字描述清楚如果三个答案都是“是”那这个任务就适合写成 skill。如果任务本身变化很大每次的流程都不一样那写 skill 的意义就不大因为约束条件太多反而会限制 AI 的灵活性。举个例子。我经常需要把一段中文技术文档翻译成英文翻译的风格要求是“简洁、专业、避免口语化”。这个任务重复性高、要求固定适合写成 skill。但我很少把同一个 skill 用于翻译营销文案因为营销文案的风格要求每次都不一样写死了反而不好用。5.2 编写 SKILL.md 的实操步骤确定边界之后就可以动手写了。我的编写流程一般是这样的先写元信息。把name、description、trigger三个字段填好。name用英文description用一句话说清楚这个 skill 干什么trigger描述什么情况下应该调用它。再写输入要求。明确告诉 Claude使用这个 skill 时需要用户提供哪些信息。这一步很重要因为如果输入信息不全Claude 可能会自己瞎猜导致输出偏离预期。然后写执行步骤。按顺序列出 Claude 应该做的事情。步骤要具体不要写“分析需求”这种模糊的表述要写“从需求描述中提取组件名称和 props 列表”这种可操作的指令。接着写输出格式。用示例的方式展示最终产物应该长什么样。示例比描述更直观Claude 照着示例生成的准确率更高。最后写约束条件。把“不要做什么”列清楚。约束条件不用多但每一条都要有明确的理由否则 Claude 可能会忽略。写完之后我会先在一个临时对话里测试几轮看看输出是否符合预期。如果有偏差就回去修改对应的字段。一般迭代两三次就能稳定下来。5.3 调试 skill 的常用手法调试 skill 和调试代码有点像核心思路是定位问题出在哪个环节。如果 Claude 完全没有调用你的 skill那大概率是元信息有问题检查name和description是否准确。如果调用了但输出格式不对那问题出在输出格式定义上把示例写得更具体一些。如果输出内容质量不高那可能是执行步骤太笼统需要拆得更细。我常用的一个调试技巧是在 skill 里加一条“如果信息不足先向用户提问”的指令。这条指令能有效减少 Claude 瞎猜的情况。比如用户只说“帮我写个组件”没说要什么功能Claude 应该先问清楚再动手而不是随便生成一个。注意skill 文件修改后需要重启 Claude Code 才能生效。如果你改了文件但发现行为没变化先检查是不是忘了重启。5.4 版本管理与团队协作建议如果你是在团队里用 skills建议把 skill 文件纳入版本管理和代码放在同一个仓库里。这样每个人拉取最新代码后skills 也是最新的。我们团队的做法是在项目根目录下建一个.claude/skills/文件夹把项目相关的 skill 都放在里面然后在 README 里写清楚每个 skill 的用途和使用方法。个人使用的话我建议定期备份 skills 目录。我有一次不小心把整个.claude文件夹删了之前攒的十几个 skill 全没了只能凭记忆重写。从那以后我养成了每周备份一次的习惯用 Git 或者简单的压缩包都行。6. 常见问题与排查技巧实录6.1 安装与加载类问题速查问题现象可能原因排查方法输入claude命令提示找不到环境变量未配置检查安装路径是否加入 PATHskills 目录放了文件但列表里没有文件名或路径不对确认文件名是SKILL.md且放在正确的子文件夹里skill 加载了但从不被调用元信息描述不准确修改description和trigger让触发条件更明确修改 skill 后行为没变化未重启 Claude Code完全退出后重新启动Windows 上安装报虚拟机平台相关提示系统功能未启用按系统指引开启对应功能6.2 输出质量类问题的排查思路输出质量不达标是最常见的问题表现五花八门格式不对、内容太泛、遗漏关键信息、风格不统一。我的排查思路是从约束条件倒推。先看输出格式定义是否足够具体。如果只写了“输出 Markdown 格式”那 Claude 的自由度就很大可能用列表也可能用表格。改成“输出三线表格式表头包含 A、B、C 三列”之后格式就稳定了。再看执行步骤是否可操作。如果步骤里写了“优化代码”Claude 不知道优化到什么程度。改成“将循环内的重复计算提取到循环外减少时间复杂度”之后输出就有了明确的方向。最后看约束条件是否覆盖了常见错误。比如翻译类的 skill如果不写“避免直译”Claude 可能会输出很生硬的译文。加上这条约束之后译文会自然很多。6.3 几个我踩过的坑和对应的解法坑一skill 之间互相干扰。我有两个 skill 都涉及代码生成一个偏前端一个偏后端。有次我让它写一个 API 接口结果它调用了前端组件的 skill生成了一堆 React 代码。解法是在两个 skill 的trigger字段里写清楚区分条件前端 skill 写“当任务涉及 UI 组件、页面渲染时触发”后端 skill 写“当任务涉及接口定义、数据库操作时触发”。坑二skill 文件太长导致加载慢。我写过一个特别详细的 skill正文有三千多字结果 Claude Code 启动时间明显变长。后来我把非核心的说明性内容删掉只保留必要的字段和步骤文件压缩到八百字左右加载速度就正常了。skill 不是越详细越好关键信息到位就行。坑三中文 skill 在某些版本上识别不稳定。我早期写的 skill 正文全用中文发现偶尔会出现 Claude 理解偏差的情况。后来改成元信息用英文、正文用中文的混合写法稳定性好了很多。如果你的 skill 也遇到类似问题可以试试这个办法。6.4 性能与效率的平衡建议skills 装多了会有一个副作用Claude 在判断该调用哪个 skill 时需要花更多时间。我实测下来装五到八个 skill 的时候响应速度还可以接受超过十五个之后明显变慢。所以我的建议是按需安装定期清理。把当前项目用不到的 skill 先移出目录等需要的时候再放回来。另外skill 的description字段尽量写得有区分度。如果两个 skill 的描述都是“帮助写代码”Claude 就很难判断该用哪个。把描述写成“生成 React 函数式组件包含 Tailwind 样式和基础测试”和“生成 Python 数据处理脚本包含异常处理和日志记录”区分度就出来了。7. 关于 skills 后续可扩展方向的个人看法我现在的工作流里skills 已经成了固定的一环。每天早上打开 Claude Code它会自动加载我当前项目相关的几个 skill我直接派活就行省去了大量重复描述的时间。但我也清楚skills 不是万能的。它擅长处理的是有固定套路、重复性高、对一致性要求高的任务。对于需要大量创造性判断、每次需求都不同的任务写 skill 的投入产出比并不高。如果你刚开始接触 skills我的建议是从一个最简单的场景入手比如“生成 commit message”或者“格式化 JSON 输出”。先跑通整个流程理解 skill 文件的结构和加载机制再逐步扩展到更复杂的场景。不要一上来就写一个包罗万象的 skill那样大概率会失败。后续如果我想继续扩展可能会往两个方向走。一是把团队里常用的 code review 规范做成 skill让每次审查都有统一的检查清单。二是把一些跨项目的通用能力比如“生成 API 文档”“写单元测试”抽成独立的 skill 文件在不同项目之间复用。这两个方向都需要在实际使用中慢慢打磨急不来。