从 SKILL.md 到渐进式披露,手把手教你开发一个 Skill
过去两年,大家给大模型「注入能力」的手段主要有两种:系统提示词(System Prompt)把规则一股脑塞进去,能力一多就臃肿、Token 暴涨,而且信息越多越难检索;工具调用 / MCP 让 Agent 能「动手」,但工具是零散的,Agent 并不知道「何时该用、按什么顺序用、做到什么程度算完成」。
Agent Skills 要填补的,正是这两者之间的空白——「专业流程」的沉淀与复用。
Agent Skills 是 Anthropic 在 2025 年 10 月随 Claude 发布的能力封装机制,同年 12 月被升格为开放标准(agentskills.io)并开源。截至目前已被 33+ 个 Agent 产品采纳,包括 Claude Code、OpenAI Codex、GitHub Copilot、Cursor、VS Code、Gemini CLI 等。
它的核心形态非常简单:一个包含 SKILL.md 的文件夹。
| 组成 | 作用 |
|---|---|
| 指令说明(Prompt) | 定义做什么、怎么做、何时停 |
| 配套脚本(Scripts) | 确定性、可重复执行的代码 |
| 参考资源(References) | 领域知识、规范、schema |
💡 一句话概括:Skill 不是 Prompt,而是围绕任务、工具、流程和输出边界的「结构化行为设计」。它不直接让模型更聪明,而是让专业经验可以被结构化地沉淀、复用和测试。
这是 Agent Skills 最精妙的设计。Anthropic 工程团队的原话是:*"Progressive disclosure is the core design principle that makes Agent Skills flexible and scalable."*
它借鉴 UI/UX 领域「按需展开信息」的思想,把 Skill 分成三层加载:
| 层级 | 加载内容 | 加载时机 | Token 成本 |
|---|---|---|---|
| L1 目录层 | 所有 Skill 的 name + description | 会话启动时 | 每个约 50–100 tokens |
| L2 指令层 | 完整 SKILL.md 正文 | Skill 被激活时 | 建议 < 5000 tokens |
| L3 资源层 | scripts/、references/、assets/ | 指令引用时按需 | 视文件大小 |
关键价值在于:即使安装 20 个 Skill,启动时的初始上下文也只有 1000–2000 tokens,相比单体提示词减少约 90%。
⚠️ 最常见的误区:很多人以为 Agent 选 Skill 时会细读全文。实际上 L1 层的入口信号只有 description,它像一个目录/索引,帮助模型快速判断「要不要深入读」。因此——description 的目标是「提高被选中的概率」,而不是塞入执行细节。
一个 Skill 的最小形态,只需要一个文件:
skill-name/
├── SKILL.md # 必需:YAML 元数据 + Markdown 指令
├── scripts/ # 可选:可执行脚本(Python/Bash/JS)
├── references/ # 可选:按需加载的参考文档
└── assets/ # 可选:模板、图标、字体等静态资源
工程规范要点:主文件必须命名为 SKILL.md(区分大小写);文件夹名必须用 kebab-case(如 my-skill-name)。这套约定已被 Claude Code(.claude/skills/)、CodeBuddy(.codebuddy/skills/)等环境统一采纳。
SKILL.md 由 YAML Frontmatter(元数据) + Markdown 正文(指令) 组成。最小示例只需 name 和 description:
---
name: pdf-processing
description: Extract PDF text, fill forms, merge files. Use when handling PDFs.
---
| 字段 | 是否必填 | 约束说明 |
|---|---|---|
name | ✅ 必需 | 唯一标识,见下方命名规则 |
description | ✅ 必需 | 1–1024 字符,说明功能 + 触发时机 |
license | ❌ 可选 | 许可证名称或文件引用 |
compatibility | ❌ 可选 | 最多 500 字符,环境/依赖要求 |
metadata | ❌ 可选 | 任意键值对,自定义扩展 |
allowed-tools | ❌ 可选 | 预授权工具列表(实验性) |
-;--);✅ name: pdf-processing
✅ name: code-review
❌ name: PDF-Processing # 不允许大写
❌ name: -pdf # 不能以连字符开头
❌ name: pdf--processing # 不允许连续连字符
官方只给了硬约束,但真正的门道在于:它是模型做「是否激活」决策的唯一依据。一个高质量的 description 要同时回答三件事——做什么、什么情境下用、有无硬限制。
Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs.
Use when working with PDF documents or when the user mentions PDFs, forms, or document extraction.
⚠️ 关键发现:description 只应描述「触发条件」,绝不要总结 Skill 的工作流程。测试发现,当 description 总结了工作流时,Agent 可能直接按 description 执行,而跳过阅读完整的 Skill 正文。
规范只告诉我们「Skill 长什么样」,没告诉我们「内部逻辑该怎么设计」。Google ADK 团队研究了生态中大量实现,总结出 5 种反复出现的设计模式:
| 模式 | 核心逻辑 | 适用场景 |
|---|---|---|
| Tool Wrapper | SKILL.md 不存完整知识,只告诉 Agent 去哪加载(references/) | 框架/库编码规范、团队风格指南 |
| Generator | 模板 + 风格指南强制输出一致性,缺信息主动问 | 标准化文档生成、脚手架 |
| Reviewer | 「查什么」和「怎么查」分离,清单独立维护 | 自动 PR 审查、安全扫描 |
| Inversion | Agent 先「采访」用户收集需求,再动手 | 需求不明时的需求澄清 |
| Pipeline | 严格顺序步骤 + 检查点,不跳步 | 从代码生成文档等复杂流程 |
💡 模式选择指南:不确定时,从 Tool Wrapper 开始——它最通用,也最符合「渐进式披露」的本意。
下面以 Git 工作流 Skill 为例完整走一遍开发流程,这套流程同样适用于 Claude Code、Codex、CodeBuddy 等环境。
git-workflow/ 目录,内含 SKILL.md、references/commit-spec.md、scripts/check_branch.sh。
skills-ref validate 校验后打包成 zip,分享给他人安装使用。
---
name: git-workflow
description: 当需要进行 Git 操作(创建分支、提交代码、同步仓库、解决冲突、准备 PR)时使用。涉及关键词:"git"、"commit"、"branch"、"push"、"pull request"、"rebase"、"merge"。
---
## 1. 分支命名规范
- feat/ 新功能
- fix/ 修复 Bug
- docs/ 文档变更
- refactor/ 代码重构
- chore/ 构建或辅助工具变动
## 2. 提交规范
必须遵循 Conventional Commits 格式。提交前参考 references/commit-spec.md。
基本格式:<type>(<scope>): <description>
## 3. 核心工作流
1. 同步基准:开发前从 main 拉取并 rebase
2. 变更原子化:每个 Commit 保持单一目的
3. 前置校验:提交前运行 lint 或 test
4. 清理历史:推送前用 rebase -i 合并 WIP 提交
## 4. 冲突处理
1. 停止操作并列出冲突文件
2. 分析冲突原因
3. 向用户建议保留方案,确认后再继续
## 5. 成功验收标准
- [ ] 分支名符合前缀规范
- [ ] 所有提交信息通过 commitlint 校验
- [ ] 本地 Lint 和单元测试全部通过
#!/usr/bin/env bash
# 校验当前分支名是否符合前缀规范
branch=$(git rev-parse --abbrev-ref HEAD)
if [[ ! "$branch" =~ ^(feat|fix|docs|refactor|chore)/ ]]; then
echo "错误:分支名 '$branch' 不符合规范前缀"
exit 1
fi
echo "分支名校验通过:$branch"
四个最佳实践:
Never ... / You may only ...,❌ Please avoid ...。| 反模式 | 表现 | 危害 |
|---|---|---|
| 百科全书型 | 内容像 Wiki,未拆分为小文件 | 上下文膨胀 |
| 全都要型 | 适用于所有任务的「技能」 | 那是规则,不是 Skill |
| 暗号型 | 描述太抽象 | Agent 从来不加载它 |
| 脆弱型 | 硬编码细节过多 | 仓库一变就失效 |
Agent Skills 生态正在快速成型,已形成一条清晰的知识链:规范标准(agentskills.io)→ 构建方法论(Anthropic skill-creator、Superpowers)→ 设计模式(Google ADK)→ 市场社区(skills.sh、skillsmp.com,以及收录 1000+ Skills 的 awesome-agent-skills)。
从「提示词工程」到「面向工作流编排」,Agent Skills 标志着大模型应用开发的一次范式跃迁。它让个人和团队第一次能把「专业经验」以可版本控制、可复用、可测试的方式沉淀下来。
有一点必须提前说清楚:开发、调试 Agent Skill 的过程,本身就是一场 Token 消耗战。Claude Code、Codex、CodeBuddy 这些 Coding Agent 每执行一步都要调用模型——读文件、写代码、跑脚本、A/B 对比测试,一次 skill-creator 的评测可能就要几十上百次模型调用,Token 消耗比普通聊天高出一个量级。
怎么把成本打下来?通过向量云获取字节跳动火山方舟官方 API 和 Key,给你的 Coding Agent 接入模型,天然享受三样东西:
ark-****-****-****-****-****-88888 格式),请求直连 ark.cn-beijing.volces.com 火山方舟官方接口,不经中转,延迟、稳定性、计费标准与官方完全一致;一把 Key 还能覆盖 Agent 的不同强度需求:深度推理用 DeepSeek V4 Pro(deepseek-v4-pro-ga-260813),日常快速任务用 DeepSeek V4 Flash(deepseek-v4-flash-ga-260731)。用好 Skill 沉淀专业能力,再用低成本官方 API 把每次调用压到最低,才是 Agent 玩家的省钱正道。
✅ 获取 API Key:打开 https://ark.tokenrize.cn/ 注册充值,创建 Key 后填入 Claude Code / Codex / CodeBuddy 的模型配置即可。
面向大模型应用落地的技术服务型企业,依托字节跳动火山方舟能力,为合作方提供低折扣模型 Token、可独立部署的运营支撑平台及全链路运营支持。
回顾全文,有三个认知值得带走:
description 比正文更重要,写好触发条件,是决定你的 Skill「是资产还是废品」的关键。现在,你可以动手了:从一个每天重复的小流程开始,建一个文件夹,写一个 SKILL.md。当 Agent 第一次在合适的时机自动加载你的 Skill 并漂亮地完成任务时,你会真正理解「给 AI 装技能」这件事的分量。
至于跑 Agent 烧掉的 Token 成本?交给向量云。你在用哪款 Agent 工具?有没有自己动手写过 Skill?欢迎在评论区聊聊。
火山方舟官方 API 与官方 Key 直连 · 向量云 · 按量计费享 Token 折扣
A. Agent Skills 是 AI Agent 时代的「Dockerfile」:一个带 SKILL.md 的文件夹,把 Prompt、脚本与领域规范打包成可复用、可版本控制、可测试的数字资产。
A. 按需加载:先只把 Skill 的名称与描述暴露给模型,命中后再加载完整指令与资源,从而控制上下文开销。
A. 核心是 SKILL.md 的 Frontmatter:name 有严格的命名规则,description 决定模型能否在正确时机命中这个 Skill,是整个 Skill 的「命门」。
A. 文中以 Git 工作流 Skill 为例,从目录结构、SKILL.md 规范到五种设计模式,完整走了一遍开发流程。