1. 项目概述从“用”到“造”的跨越最近在折腾Claude、Codex这些AI工具的朋友可能都注意到了“Skill”这个概念。它不再是简历上那个泛泛而谈的“技能”而是变成了一个可以具体安装、调用、甚至自己动手编写的“小插件”或“功能模块”。简单来说一个Skill就是一段封装好的指令集它能让AI助手在特定场景下表现得像一个专家。比如你可以有一个“周报生成Skill”告诉AI你的本周工作条目它就能自动整理成结构清晰的报告或者一个“代码审查Skill”提交一段代码AI就能按照预设的规则给出优化建议。这个转变很有意思。过去我们使用AI更像是和一个博学但略显笼统的助手对话你需要不断地描述背景、约束条件和期望格式。而现在通过Skill我们是在为AI装备上专用的“工具刀”。这把刀怎么磨、刀刃多长、适合切水果还是拆快递完全由你定义。这不仅仅是效率的提升更是一种思维模式的转换——从被动地适应AI的通用能力转向主动地设计和扩展AI的专属能力。无论是为了提升个人工作效率打造个性化的AI工作流还是探索AI应用的边界学会编写自己的Skill都正从一个“炫技”选项变成一项实用的核心技能。2. 核心概念与前置知识拆解在动手写第一行代码之前我们必须把几个关键概念和它们之间的关系理清楚。这就像木工干活前得先认识刨子、锯子和尺子。2.1 什么是Skill与插件、工作流的区别很多人容易把Skill、插件Plugin、工作流Workflow甚至提示词Prompt混为一谈。它们有联系但定位不同。Skill可以理解为一个高度场景化、功能单一的“微型应用”。它的核心是“做一件特定的事并且做好”。例如“将Markdown转换为PPT大纲”是一个Skill“分析这段英文的技术文档并提取专有名词”也是一个Skill。Skill通常有明确的输入、处理和输出内部逻辑可以很简单一段提示词也可以很复杂调用外部API、进行多步推理。它的特点是轻量、专注、可复用。插件Plugin通常指为某个大型平台或应用如VS Code、Chrome、ChatGPT扩展功能的组件。一个插件可能包含多个Skill。比如一个“写作增强插件”里可能集成了“润色Skill”、“续写Skill”、“校对Skill”。插件更强调与宿主环境的深度集成UI、菜单、快捷键。工作流Workflow指的是将多个步骤可能包含多个Skill、人工判断、条件分支串联起来完成一个更复杂任务的自动化流程。比如“监听邮箱附件-用Skill解析PDF-用Skill提取关键数据-填入在线表格”这一系列操作构成一个工作流。Skill是工作流中的“积木块”。提示词Prompt是驱动AI完成任务的指令文本它是Skill的核心逻辑载体。一个简单的Skill可能就是一个精心设计的提示词。但一个完整的Skill除了提示词还可能包含配置参数、示例、对外部工具的调用逻辑等。所以当我们说“写一个自己的Skill”时首要任务是想清楚我要解决的那个具体的、单一的问题是什么2.2 主流平台与Skill实现方式目前Skill的概念在不同平台上有着不同的实现和名称但核心理念相通。Claude (包括Claude Desktop, Claude Code)核心文件SKILL.md。这是Claude生态中定义Skill的“说明书”或“清单文件”。关键元素Frontmatter文件顶部以---包裹的YAML区域用于定义Skill的元数据如名称name、描述description、触发词trigger、版本等。这是Claude识别和调用Skill的关键。Description对Skill功能的详细文本描述。AI会阅读这部分内容来理解这个Skill能做什么。Instructions/ExamplesSkill的具体指令和示例。这是“灵魂”所在告诉AI当这个Skill被激活时它应该如何思考、如何操作。创建方式本质上就是创建一个符合格式的Markdown文件SKILL.md并将其放在Claude能够访问的特定目录如Claude Desktop的skills文件夹或通过特定命令导入。Codex / 其他AI编码助手这些平台可能没有统一的“Skill”概念但存在类似机制如自定义指令集、代码片段模板、或通过API调用的功能函数。实现方式更多样可能是一个保存在本地的脚本文件.py,.js一个配置了特定上下文的对话预设或者一个封装了API调用的工具函数。其核心依然是将一段解决特定问题的逻辑可能是代码也可能是自然语言指令封装起来便于重复调用。通用概念Skill as Code这是更进阶的理念即用编写代码的方式来开发和管理Skill。Skill的元数据、逻辑、依赖关系都可以用代码定义和管理例如使用特定的SDK或框架。这适合需要版本控制、自动化测试和复杂逻辑的Skill开发。注意网络热词中提到的“exit code -2061893607”、“找不到数据库引擎句柄”、“virtual machine platform not available”等错误通常与Claude Desktop或类似应用的运行环境配置有关如Windows功能未开启、依赖服务未启动与Skill编写本身关系不大。确保你的AI工具本体能正常运行是开发Skill的前提。2.3 你的第一个Skill从想法到定义让我们从一个最简单的想法开始“我想要一个Skill能把我杂乱的项目笔记整理成结构化的会议纪要格式。”拆解这个想法输入一段杂乱无章的文本项目笔记。处理识别其中的议题、讨论点、决策、待办事项。输出格式清晰的会议纪要通常包含会议主题、时间、参会人、议程、讨论摘要、决议、行动项负责人、截止日期。触发方式当我在对话中对AI说“请使用会议纪要整理技能”或粘贴一段文本时触发。这个定义已经足够清晰可以开始动手了。3. 手把手创建你的第一个Claude Skill我们以Claude平台为例因为它对Skill的支持目前比较直观和流行。其他平台的思路是相通的。3.1 环境准备与工具选择安装Claude Desktop从官方网站下载并安装Claude Desktop应用。这是运行和测试Skill最方便的环境。定位Skills目录macOS~/Library/Application Support/Claude/skills/Windows%APPDATA%\Claude\skills\(通常在C:\Users\[你的用户名]\AppData\Roaming\Claude\skills)Linux~/.config/Claude/skills/如果目录不存在可以手动创建。选择编辑器任何文本编辑器都可以VS Code、Sublime Text、甚至记事本。推荐使用VS Code因为它对Markdown和YAML语法有很好的高亮支持。3.2 解剖SKILL.mdFrontmatter详解SKILL.md的结构是标准的Markdown文件但其魔力在于开头的Frontmatter。我们来逐项解析一个会议纪要Skill的Frontmatter该怎么写。--- id: meeting-minutes-generator name: 会议纪要生成器 description: 将杂乱的项目笔记或对话记录整理成结构清晰、包含行动项的正式会议纪要。 author: 你的名字 version: 1.0.0 trigger: - 会议纪要 - 整理纪要 - 生成会议记录 - meeting minutes tags: - productivity - writing - business visibility: public ---id(必需)Skill的唯一标识符建议使用小写字母、数字和连字符如meeting-minutes-generator。Claude内部用它来引用这个Skill。name(必需)Skill的显示名称用户能看到。description(必需)至关重要AI主要靠这段描述来理解Skill的用途。描述应简洁、准确说明输入、处理和输出。好的描述是Skill成功的一半。authorversion可选用于管理和维护。trigger(关键)触发这个Skill的关键词或短语列表。当用户输入中包含这些词时Claude会优先考虑启用这个Skill。不要设置过于通用或常见的词如“帮助”、“写”这会导致误触发。应该用“会议纪要”、“生成周报”、“翻译代码”等具体场景词。tags分类标签帮助管理和发现。visibility设置为public或private。public意味着Skill可能会被Claude用于改进模型或推荐给其他用户取决于平台策略private则完全仅供你自己使用。3.3 编写Skill的核心指令与示例Frontmatter之后就是Markdown正文部分。这里才是Skill具体能力的体现。## 指令 你是一个专业的会议秘书。你的任务是将用户提供的杂乱文本可能是会议录音转写、即时笔记或聊天记录整理成一份专业、结构完整的会议纪要。 请严格按照以下结构和要求输出 1. **会议主题**从文本中提炼或由用户指定。 2. **时间**如果文本中提到请提取否则标注“待确认”。 3. **参会人**提取提到的所有参会者姓名或角色。 4. **议程**将讨论内容归纳为3-5个核心议题点。 5. **讨论摘要**对每个议题下的关键讨论进行总结要求客观、简洁。 6. **决议**明确记录会议上做出的所有决定。 7. **行动项**以表格形式列出必须包含具体任务、负责人、截止日期。 * 如果原文未明确请基于讨论内容合理推断并提出建议用“建议”标注。 * 截止日期尽量具体避免使用“尽快”、“下周”等模糊词汇。 输出语言与用户输入语言保持一致。 ## 示例 **用户输入** “下午和前端小王、后端老李、产品小张碰了下新版首页。主要吵了下 banner 图自动播放的间隔时间小王说3秒太快老李觉得5秒数据加载怕不稳。最后折中定了4秒。登录弹窗的样式小张给了新稿大家觉得OK决定替换。另外提到用户反馈说搜索框不明显这个归小王让他下周五前出个优化方案。老李需要检查一下新接口在高峰期的性能下周三给报告。” **你的输出** **会议主题**新版首页开发碰头会 **时间**【待确认】 **参会人**小王前端、老李后端、小张产品 **议程** 1. Banner图自动播放间隔时间确认 2. 登录弹窗样式更新评审 3. 其他用户体验优化项讨论 **讨论摘要** - 针对Banner图播放间隔前端认为3秒过快影响体验后端担心5秒间隔可能导致数据加载问题。经讨论双方达成一致。 - 产品展示了新的登录弹窗设计稿与会人员一致通过。 - 提及用户反馈中关于搜索框不明显的问题并初步安排了后续工作。 **决议** 1. 新版首页Banner图自动播放间隔时间确定为4秒。 2. 采纳产品提供的新登录弹窗样式并进行替换。 **行动项** | 任务 | 负责人 | 截止日期 | | :--- | :--- | :--- | | 优化搜索框视觉设计提升明显度 | 小王 | 下周五YYYY-MM-DD | | 对新接口进行高峰期性能压力测试并出具报告 | 老李 | 下周三YYYY-MM-DD |指令部分的编写心得角色扮演开头给AI定义一个明确的角色如“专业会议秘书”能立刻框定其回答的语调和专业范围。结构化输出使用编号、标题明确要求输出结构。AI擅长遵循清晰的格式指令。约束条件明确规则如“输出语言与输入一致”、“截止日期避免模糊词汇”。这能减少AI的自由发挥让输出更可控。容错与推断对于信息缺失的情况如“否则标注‘待确认’”给出明确的兜底策略。甚至允许AI在合理范围内进行推断并标注“建议”这使Skill更智能、更实用。示例部分的价值提供范式一个高质量的例子胜过千言万语。它直观地展示了“用户可能怎么输入”以及“你期望得到怎样的输出”。覆盖典型场景示例应尽可能覆盖你预想中的典型输入情况。本例中输入是口语化、非结构化的笔记这正是Skill要处理的典型场景。3.4 部署与测试保存文件将上述完整内容保存为SKILL.md文件。文件名必须是SKILL.md。放入目录将这个SKILL.md文件放入你在3.1节中找到或创建的skills目录中。你可以为每个Skill创建一个子文件夹例如skills/meeting_minutes_generator/SKILL.md这样更整洁。重启或重载对于Claude Desktop通常需要重启应用或者在某些版本中Skill会被自动检测并加载。进行测试打开Claude Desktop。在聊天框中输入你的触发词之一例如“我们来整理一下会议纪要”。然后粘贴或输入一段杂乱的项目笔记。观察Claude的回复。它是否自动应用了你的Skill格式输出是否符合预期实操陷阱有时Skill没有触发可能的原因有1)SKILL.md文件不在正确的skills目录下2) Frontmatter格式错误如YAML缩进不对、冒号后没空格3) 触发词trigger太生僻或与用户输入匹配度低。调试时可以先简化触发词确保能触发再逐步优化。4. 进阶打造更强大、更智能的Skill基础Skill只能处理静态文本。一个强大的Skill往往需要“感知”上下文、“记忆”信息或“调用”外部能力。4.1 利用上下文与记忆在Skill的指令中你可以引导AI利用对话历史上下文和Claude的长期记忆功能如果平台支持。## 指令 你是一个项目周报助手。请根据本次对话中用户陆续提供的本周工作项以及你记忆中之前对话提到的项目背景如项目名“苍穹系统”、成员“张三、李四”生成一份完整的项目周报。 **操作步骤** 1. **主动询问**如果用户首次提及写周报请主动询问“请告诉我本周完成了哪些主要工作遇到了什么阻塞问题下周计划是什么” 2. **信息提取**从用户后续的回复中提取关键工作项、问题、计划。 3. **结构化整合**将信息整合到以下模板中缺失部分根据上下文合理推断或标注“待补充”。 4. **引用记忆**在周报的“项目概述”部分请提及已知的项目名称和关键成员。 【周报模板...】这个Skill的智能之处在于它不再是单次响应的工具而是一个能进行多轮对话、主动提问、并利用记忆来丰富内容的“交互式助手”。4.2 模拟外部工具调用与数据处理虽然直接在Skill里写代码调用真实API比较复杂通常需要更复杂的开发框架但我们可以通过指令让AI模拟数据处理过程或输出结构化数据供后续脚本使用。## 指令 你是一个数据清洗助手。用户会粘贴一段脏数据可能包含多余空格、重复行、格式不一致的日期等。你的任务是 1. 分析数据中存在的主要问题。 2. 提供清洗后的数据。 3. **输出一个简明的“清洗步骤报告”**格式如下 建议操作步骤 1. 使用 trim() 函数去除所有字段首尾空格。 2. 使用去重功能基于[某列]删除完全重复的行。 3. 将[日期列]统一转换为 YYYY-MM-DD 格式。 4. **同时将清洗后的数据以纯JSON数组的格式输出**便于用户直接复制到其他程序中使用。 ## 示例略这个Skill的输出包含了两部分给人看的自然语言报告和给机器读的JSON数据。它虽然没有真正执行清洗代码但给出了可操作的方案和即用型的数据结构价值巨大。4.3 设计复杂决策逻辑与条件分支通过清晰的指令可以让AI在Skill内部实现简单的逻辑判断。## 指令 你是一个故障排查向导。用户会描述一个系统表现出的症状如“网站无法访问”、“报错500”。 请按以下流程引导用户并提供建议 1. **首先询问**“请先确认一下是只有你个人无法访问还是所有用户都反馈无法访问”判断是局部问题还是全局问题 2. **根据回答分支** * 如果回答“只有我”则提供**本地排查清单**清除浏览器缓存、更换网络、使用其他设备访问等。 * 如果回答“所有人”则提供**服务端排查清单**检查服务器状态、查看应用日志、确认最近是否有部署变更等。 3. **在提供清单后进一步询问**“上述步骤中有哪个环节你发现了异常吗”根据用户的进一步反馈提供更具体的建议。这个Skill模拟了一个简单的决策树通过多轮交互将复杂问题拆解逐步定位故障。它展示了如何将领域知识运维排查经验固化到一个交互式Skill中。5. 调试、优化与分享你的Skill5.1 常见问题与调试技巧即使按照教程编写第一个Skill也可能不如预期工作。以下是常见问题及排查思路问题现象可能原因排查与解决Skill完全不触发1.SKILL.md文件位置错误。2. Frontmatter格式错误YAML语法。3. 触发词trigger不匹配。1. 确认文件在正确的skills目录下。2. 使用在线YAML校验器检查Frontmatter。3. 将trigger暂时改为一个非常独特的词如“测试我的神奇技能XXX”进行测试。触发了但输出格式不对1. 指令描述不够清晰。2. 示例不足或与指令矛盾。3. AI“自作主张”添加了额外内容。1. 在指令中更严格地规定输出格式如“请只输出以下部分不要添加任何开场白和总结”。2. 增加更多、更典型的示例。3. 在指令开头强调“严格遵循指令”。输出内容质量不稳定1. 输入信息过于模糊。2. Skill逻辑本身有歧义。1. 在Skill指令中引导用户如何提供更好的输入如“请尽可能详细地描述…”。2. 审查指令确保每个判断条件都是明确无歧义的。可以加入“如果…否则…”的逻辑说明。Claude忽略了Skill用了通用回答触发场景与通用能力重叠度高AI认为通用回答已足够。强化Skill的专业性和独特性。在description和指令中强调“作为专业的XX请使用以下专属流程…”使其与通用回复产生区分度。调试心法将AI视为一个严格执行指令但需要清晰引导的程序员。你的指令就是代码。当输出不符合预期时不要怪AI“笨”而是回头检查你的“代码”指令是否逻辑严密、无歧义、提供了足够的“测试用例”示例。5.2 优化技巧让Skill更可靠、更强大迭代优化从简到繁不要试图第一个Skill就做得尽善尽美。先做一个能跑起来的“最小可行产品”MVP例如只有核心格式要求的纪要生成器。然后通过实际使用发现哪里不好用比如总是漏掉行动项再回头补充指令或示例去修正它。提供负面示例除了展示“应该怎么做”也可以告诉AI“不应该怎么做”。例如在指令中说明“避免使用‘可能’、‘大概’等模糊词汇来描述决议”或“行动项表格中不要出现‘TBD’或空单元格”。控制输出长度与风格如果你需要简短的摘要就在指令中明确“用不超过100字总结”如果需要正式文档就要求“采用正式、客观的书面语”。这能有效控制AI的“发挥”。测试驱动开发为自己建立一组“测试用例”——几段典型的输入文本。每次修改Skill后都用这组用例测试一下确保输出稳定且符合预期。5.3 分享与管理你的Skill库当你积累了多个好用的Skill管理就变得重要了。本地管理在skills目录下建立清晰的子文件夹分类如/writing,/coding,/analysis。每个Skill一个文件夹里面包含SKILL.md和可能用到的资源文件如示例数据、图标。版本控制使用Git来管理你的Skill文件夹。每次对SKILL.md进行重大修改都进行一次提交。这不仅能回溯历史也便于在多台设备间同步。分享你可以将你的SKILL.md文件分享给他人。他们只需将其放入自己的skills目录即可使用。更高级的分享方式可能是创建一个包含多个Skill的Git仓库或者未来通过官方的Skill市场如果开放进行分享。6. 从Skill到AI工作流扩展想象力掌握单个Skill的编写后你的视野可以进一步打开。真正的生产力飞跃来自于将多个Skill串联、组合形成自动化的工作流。设想一个内容创作工作流触发我收到一封邮件主题是“请为新产品‘智能水杯’写一篇博客草稿”。Skill 1信息收集与摘要一个Skill自动读取邮件正文和附件中的产品规格文档并生成一份核心卖点、目标用户、技术参数摘要。Skill 2大纲生成将摘要输入另一个“博客大纲生成Skill”得到一篇包含引言、产品介绍、使用场景、技术解析、总结等部分的详细大纲。Skill 3段落撰写可多次调用我或另一个自动化步骤根据大纲的每一部分调用“文案撰写Skill”填入具体内容。Skill 4校对与优化将完成的草稿交给“文案润色Skill”进行语法检查和风格统一。输出一篇结构完整、语言流畅的博客草稿初稿生成我只需要做最后的微调和发布。在这个工作流中每个Skill都是一个可靠的、专业的“小工”而你是负责整体设计和调度的“总工程师”。你不再需要从头到尾口述所有细节而是通过组合这些预制的能力模块高效地完成复杂任务。编写自己的Skill本质上是在用自然语言“编程”是将你的专业知识、工作习惯和思维模式“固化”成AI可理解和执行的数字资产。这个过程开始可能有些挑战就像学任何新技能一样但一旦你写出了第一个真正为你所用的Skill那种“驯服”AI为己所用的成就感以及它带来的效率提升会让你觉得一切投入都是值得的。从今天开始试着把工作中那个最重复、最需要固定格式的任务变成一个Skill吧。