Skill 是什么?一篇带你从本质到原理完整拆解
本文系统解析了AI领域"skill"的概念与实现原理。skill本质是结构化Markdown文件,包含任务执行标准与步骤,具有固定格式、可复用、可组合等特点。文章详细介绍了三种skill形态(纯Prompt型、Prompt+脚本型、Prompt+MCP服务型)及其适用场景,阐述了自动触发与斜杠命令两种调用方式。技术层面,skill采用渐进式披露机制,通过100token的fro
Skill 是什么?一篇带你从本质到原理完整拆解
如果你用过 Claude Code 或关注过 AI agent 工具链,一定看到过"skill"这个概念。这篇文章从本质出发,帮你彻底搞清楚 skill 是什么形态、怎么运作、背后的技术原理是什么。
一、Skill 的本质:结构化的 Prompt
先说结论:单个 skill 的本质,就是一个结构化的 Markdown prompt 文件。
它告诉 AI “在某类任务里,你应该按什么标准、什么步骤做事”。与普通 prompt 的区别在于:
- 有固定格式(frontmatter + 正文)
- 可复用(安装一次,到处生效)
- 可组合(多个 skill 可以同时激活)
- 按需加载(不相关的 skill 不会占用上下文)
一个最简单的 skill 文件长这样:
---
name: prd-development
description: "Use when user wants to create a PRD or product requirements document."
triggers:
- "PRD"
- "需求文档"
- "产品需求"
---
# PRD Development Workflow
## 第一步:澄清背景
在开始写作前,先向用户确认以下信息:
- 产品背景和目标用户
- 核心功能范围
...
--- 之间是摘要(frontmatter),之后是完整的指令正文。这个区分非常重要,后面会解释为什么。
二、Skill 的三种形态
随着复杂度升级,skill 呈现出三种截然不同的文件结构。
形态一:纯 Prompt 型
prd-development/
└── SKILL.md
只有一个文件,全是自然语言指令。AI 用自身已有的能力去执行,不需要任何外部程序。
适合场景:编码规范、写作风格、文档模板、任何"告诉 AI 怎么思考"的任务。
形态二:Prompt + 脚本型
feishu-doc/
├── SKILL.md
├── create.js
├── append_simple.js
├── download_file.js
├── config.json
└── node_modules/
SKILL.md 里描述的某些操作,AI 自己做不到——比如"调用飞书 API 创建文档"。这时 skill 会附带可执行的脚本,SKILL.md 告诉 AI 什么时候调用哪个脚本,脚本负责真正跑 API 请求。
SKILL.md 是大脑,脚本是手脚。 简单 skill 只有大脑,复杂 skill 大脑和手脚都有。
形态三:Prompt + MCP Server 型
结构上等同于"一个打包好的 MCP Server + 配套使用说明"。skill 文件描述工具能干什么,背后跑着一个完整的 Node.js 或 Python 服务,监听在本地端口。
这类 skill 使用前需要先 npm install 安装依赖,再把它注册为本地 MCP Server,SKILL.md 的指令才能真正发挥作用。
三、Skill 的触发方式
Skill 的调用有两种模式,由 frontmatter 里的配置决定:
自动触发(model-invoked)
AI 根据你的请求内容,自动判断是否加载某个 skill。适合"规范类" skill,比如代码风格指南——你不用主动说"用这个 skill",AI 在写代码时会自动遵循。
斜杠命令触发(user-invoked)
你主动输入 /skill名称 来触发。适合"任务类" skill,比如创建 PRD、执行部署、提交 PR——你明确知道自己要做什么,直接调用更可控。
四、Skill 生态现状
来源分类
官方预置 skill
Anthropic 提供了几个开箱即用的官方 skill,主要是文档处理类:PowerPoint、Excel、Word、PDF。在 Claude.ai 里直接内置,背后也是 skill 驱动的。
社区开源 skill
目前社区最活跃的平台是 skills.sh,汇聚了大量开发者贡献的 skill。值得注意的是,SKILL.md 格式已经成为跨工具的开放标准——Claude Code、Cursor、Gemini CLI、GitHub Copilot 都能使用同一套 skill 文件,不需要任何修改。
自己编写
把文件放入 ~/.claude/skills/ 目录,Claude Code 会自动发现并加载,无需任何额外配置。
一个常见的误区
在 skills.sh 或 GitHub 上找到一个 skill 的介绍页,对应的是整个仓库——里面包含管理工具、测试脚本、CI/CD 配置等等。作为使用者,你只需要其中的 skills/skill名称/SKILL.md 这一个文件,其余都是仓库维护者自用的工具。
五、进阶:三层结构的 Agent 体系
当任务足够复杂时,单个 skill 不够用,就出现了 skill → workflow → agent 三层结构。
以"整理本周工作并发布博客"为例:
skill(领域容器):"博客"
│
├── workflow(具体任务流程):"收集素材"
│ └── 步骤1 → 步骤2 → 步骤3…
│
├── workflow:"写初稿"
│ └── 步骤1 → 步骤2 → 步骤3…
│
└── workflow:"发布"
└── 步骤1 → 步骤2 → 步骤3…
- Skill 是领域容器,声明"这个领域我有哪些能力",本身不直接干活
- Workflow 是嵌套在 skill 里的具体任务流程,才是真正的执行单元
- Agent 是并行执行 workflow 的独立工作者——多个 agent 同时运行,互不干扰
本质上是把大任务拆解成更精细的层级,让 AI 系统可以像团队一样协作,而不是单个 AI 从头做到尾。这是目前 AI agent 工程化的主流思路之一。
六、技术原理:渐进式披露
这是整个 skill 机制里最值得理解的部分。
100 token 摘要的作用
每个 SKILL.md 最顶部的 YAML frontmatter,就是这个 skill 的"索引"。它的内容极简——name、description、triggers——通常不超过 100 token。
所有已安装 skill 的完整正文加在一起可能有几万 token,但 frontmatter 加在一起只有几百 token。这就是系统可以"全部常驻上下文"的原因。
加载流程
第一步:启动时建立索引
系统启动时扫描所有 skill 目录,只读取每个 SKILL.md 的 frontmatter 部分,拼成一段系统提示词注入上下文:
You have access to the following skills:
- prd-development: Use when user wants to create a PRD... triggers: PRD, 需求文档
- feishu-doc: Use when user wants to write to Feishu... triggers: 飞书, feishu
- docx: Use when user wants to create Word documents... triggers: word doc, .docx
第二步:AI 判断相关性
你发一条消息,AI 基于这些摘要判断哪个 skill 与当前任务相关。
第三步:按需加载正文
系统捕捉到 AI 的判断信号,把对应 skill 的完整 SKILL.md 正文读取出来,追加到上下文里,AI 再按完整指令执行。
用户消息
↓
系统提示词(含所有 skill 摘要)→ AI 判断:"需要 prd-development skill"
↓
系统读取 prd-development/SKILL.md 完整内容,追加到上下文
↓
AI 按完整指令执行
没有任何魔法
不管内部实现细节如何,上下文窗口始终是唯一的载体。所谓"按需加载",最终都是"把文本塞进上下文",只是在塞之前做了筛选,避免一次性把所有 skill 的完整内容都撑爆窗口。
这个模式在 AI 工程里有个通用名字:RAG(检索增强生成)的轻量版。先检索相关内容,再生成回答。skill 加载只是把"检索"这一步做得极其轻量——因为 skill 数量有限,不需要向量数据库,frontmatter 直接充当索引就够了。
总结
Skill 的本质
│
├── 按内容复杂度
│ ├── 纯 prompt(SKILL.md 一个文件)
│ ├── prompt + 脚本(附带 .py / .js)
│ └── prompt + MCP Server(完整服务程序)
│
├── 按触发方式
│ ├── 自动触发(AI 判断相关性后加载)
│ └── 斜杠命令(/skill名 手动调用)
│
├── 按来源
│ ├── 官方预置(pptx / xlsx / docx / pdf)
│ ├── 社区开源(skills.sh / GitHub)
│ └── 自己编写(~/.claude/skills/ 即生效)
│
└── 运作机制
├── frontmatter = 索引(常驻上下文,几百 token)
├── 正文 = 数据(按需加载,用完释放)
└── 本质 = RAG 的轻量版实现
Skill 把"如何使用 AI"这件事本身变成了可以版本管理、可以共享、可以组合的工程制品。随着社区生态的成熟,未来你用 AI 完成某类任务的最佳实践,很可能已经有人写成 skill 发布出来了——就像找一个好的 npm 包一样。
更多推荐


所有评论(0)