Skill 学习
一、为什么需要 Skill
1.1 从重复 Prompt 到可复用能力包
- 普通 Prompt 适合一次性任务说明。
- Skill 适合沉淀长期、重复、稳定的任务流程。
- Skill 的核心价值是减少重复解释,让模型在合适场景下自动进入专业工作流。
1.2 Skill 解决的主要问题
- 避免每次都重新说明背景、规则和输出格式。
- 把专业领域知识、流程和模板集中管理。
- 降低上下文占用,让模型按需读取信息。
- 让 Agent 从“会聊天”变成“会执行某类任务”。
二、概述
2.1 Skill 是什么
- Skill 是一个以文件夹形式组织的能力包。
- 每个 Skill 至少包含一个
SKILL.md文件。 SKILL.md负责说明 Skill 什么时候触发,以及触发后应该如何工作。- Skill 还可以附带脚本、模板、参考资料和资源文件。
2.2 Skill 的核心结构
Metadata 层(元数据层)
位于 SKILL.md 的 YAML front matter 中。
- 作用:路由与触发器,决定 Agent 何时调用、何时不调用
- 核心字段:
name、description、category、tags、should_trigger/should_not_trigger - 原则:边界优于描述,description 是给模型看的路由规则,而非宣传文案
Instructions 层(指令层)
位于 SKILL.md 正文中(YAML front matter 后),描述具体工作流。
- 作用:定义契约、流程边界、执行步骤、约束规则
- 内容:执行步骤、输入输出格式、Gotchas(避坑指南)、异常处理、退出条件
- 原则:命令式步骤,而非松散建议;明确禁止行为 > 只描述允许行为
Resources / Scripts 层(资源/脚本)
位于 Skill 目录下的 references/、scripts/、assets/ 等子目录中。
- 作用:承载确定性逻辑、模板、脚本、外部资源
- 内容:代码片段、CLI/SDK 调用逻辑、模板文件、配置、可执行函数
- 原则:易变信息外置,复杂逻辑脚本化,减少 prompt 负担

2.3 Skill 的目录结构
最小结构
1 | my-skill/ |
推荐结构
1 | my-skill/ |
各目录职责
SKILL.md:核心入口,包含元数据和主要工作流。references/:存放详细说明、规范文档、领域知识。scripts/:存放可执行脚本,用于处理稳定、机械、可验证的步骤。assets/:存放模板、图片、字体、样例文件等资源。examples/:存放输入输出示例,帮助模型理解完成标准。
2.4 Skill 与长 Prompt 的区别
- 长 Prompt 是一次性塞入上下文。
- Skill 是按需加载的结构化能力。
- 长 Prompt 更像临时说明,Skill 更像可复用 SOP。
- Skill 更适合团队共享、版本管理和持续迭代。
三、工作机制:渐进式披露
3.1 第一层:元数据常驻
- 模型启动或会话开始时,只读取 Skill 的名称和描述。
description决定模型是否知道这个 Skill 适合当前任务。- 这一层通常只占用较少 token。
3.2 第二层:核心指令按需加载
- 当用户任务匹配某个 Skill 的描述时,模型读取完整
SKILL.md。 - 此时工作流、输出格式、边界条件和示例才进入上下文。
- 这一步让模型获得完成任务的具体方法。
3.3 第三层:资源和脚本按需读取
- 复杂 Skill 可以把细节拆到独立文件中。
- 需要时再读取参考资料、模板或执行脚本。
- 脚本执行结果进入上下文,脚本源码本身不一定需要全部进入上下文。
四、设计原则
- 单一职责原则
每个skill只做一类明确的事情,不要把多个能力混在一起。
- 输入输出明确
有明确的输入和输出格式。
- 可组合性
不应该只能在一个固定场景中使用,而应该可以被多个流程复用。
- 最小权限原则
只应该拥有完成任务所必需的权限。
- 可观测性
Skill 的执行过程应该可以被记录、追踪和解释。
- 安全边界清晰
明确哪些事情能做,哪些事情不能做。
- 幂等性
在相同输入下多次执行,应该尽量产生相同结果,避免重复副作用。
- 失败可恢复
Skill 设计时要默认它可能失败,并提供明确的失败信息,而不是只返回“失败”。
五、Skill、MCP 与 Subagent 的关系
5.1 Skill 解决什么
- Skill 解决“Agent 自己应该怎么做某类任务”。
- 更偏向流程、知识、模板和领域 SOP。
- 适合标准化、可复用的内部能力。
5.2 MCP 解决什么
- MCP 解决“Agent 如何连接外部系统”。
- 更偏向工具调用、数据访问和服务集成。
- 适合连接数据库、文档系统、CRM、API 等外部资源。
5.3 Subagent 解决什么
- Subagent 解决“复杂任务是否需要交给独立专家处理”。
- 更偏向多步骤、长上下文、需要隔离思考的子任务。
- 适合代码审查、数据分析、研究整理等复杂任务。
5.4 三者如何协同
用 MCP 获取外部数据。
用 Skill 固定处理流程和输出标准。
用 Subagent 拆分复杂分析或并行任务。
最后由主 Agent 汇总结果并交付。
六、思考
10.1 Skill 的核心思想
- Skill 不是简单的提示词集合。
- Skill 是面向 Agent 的可复用能力封装。
- 它把“知识、流程、资源、工具调用方式”组织成可加载的结构。
10.2 对个人工作流的启发
- 高频任务值得沉淀成 Skill。
- 写作、开发、博客维护、文档处理都适合 Skill 化。
- Skill 可以成为个人知识库和自动化工作流之间的桥梁。
10.3 后续实践方向
- 为博客写作创建专用 Skill。
- 为 Hexo 维护创建专用 Skill。
- 为代码审查创建专用 Skill。
- 为学习笔记整理创建专用 Skill。
- 尝试将 Skill 与 MCP、Subagent 联合使用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Guailper 的博客!