Skill 本质上是一个文件夹,核心文件是 SKILL.md。它的标准格式由两部分组成:
====== 第一部分:YAML 前置元数据 ======
文件顶部用 --- 包裹,包含必需和可选字段:
---
name: your-skill-name # 必需:唯一标识,小写+连字符,≤64字符
description: > # 必需:功能和触发场景,≤1024字符
清晰描述这个 Skill 做什么、什么时候用。
这是 AI 判断是否调用的关键依据。
license: MIT # 可选:许可证
version: "1.0" # 可选:版本号
metadata: # 可选:扩展信息
author: YourName
---
关于命名的硬性规则:
长度 2-64 字符,只能含小写字母、数字、连字符 -
首尾不能是 -,不能有连续的 --
不能使用 admin、api、auth 等保留字
====== 第二部分:Markdown 正文 ======
元数据之后就是自由格式的 Markdown 指令,告诉 AI 具体怎么执行。可以参考这个结构:
# Skill 名称
## 概述
说明这个 Skill 解决什么问题,核心价值是什么。
## 适用场景 / 触发条件
明确什么时候该用、什么时候不该用。
- ✅ 适用情况:...
- ❌ 不适用情况:...
## 前置条件
执行前需要满足的条件。
## 处理步骤
### Step 1: 具体动作
### Step 2: 具体动作
### Step 3: 具体动作
## 输入/输出示例
给出具体例子,让 AI 理解期望的结果。
## 失败处理
告诉 AI 遇到问题怎么办。
====== Skill 的进阶目录结构 ======
任务变得复杂时,可以把内容拆分到不同目录,而不是全部塞进 SKILL.md:
my-skill/
├── SKILL.md # 必需:入口指令文件
├── references/ # 可选:参考资料(模板、配置、术语表等)
│ ├── config.yaml
│ └── output-template.md
├── scripts/ # 可选:稳定动作脚本(解析、排序、去重等)
│ └── data_processor.py
└── assets/ # 可选:静态资源(图片、字体等)
└── template.json
每个目录的职责:
SKILL.md:只写触发条件、核心流程、边界规则
references/:放模板、配置、示例、偏好说明——AI 按需读取
scripts/:放可稳定执行的脚本——确定性动作交给代码,比让 AI 临场发挥更可靠
assets/:放图片、模板文件等静态资源
====== 设计 Skill 的核心原则 ======
===== 1. 精准的 description 决定触发率 =====
description 是 AI 判断"什么时候用这个 Skill"的唯一入口。写得越具体,触发越准。
❌ 差的描述:"翻译相关"
✅ 好的描述:"将中文内容翻译成英文。当用户说'翻译'、'translate'或要求把中文转成英文时使用,保留专业术语和原有的语气。"
口诀:动作 + 触发关键词 + 关键约束。
==== 2. 把稳定动作交给脚本 ====
下面这些事不应该让 AI 每次"临场发挥":
解析 XML/JSON
去重、排序
读取固定格式文件
格式转换和字段校验
这些动作一旦写成脚本,每次结果一致,不会出现"这次漏一条、下次排序变了"的问题。AI 的价值在判断价值、归纳总结、风格把控这些语义层面。
==== 3. 渐进式披露,控制 Token 成本 ====
Skill 的加载是分层的:
|层级 |内容 |加载时机|
|Level 1 |name + description|始终驻留在上下文|
|Level 2 |SKILL.md 正文|Skill被触发时加载|
|Level 3 |references/ + scripts/|执行中按需读取|
原则:Level 1 越精准越好,Level 2 越精简越好,Level 3 放心放(按需加载不占常驻空间)。
==== 4. 职责单一 ====
每个 Skill 只做一件事。把"运行测试 + 更新状态 + 发通知"塞进一个 Skill,AI 容易搞混,触发也容易错。
==== 快速上手:5 步设计法 ====
如果你手头有一个重复流程想做成 Skill,可以按这个步骤来:
写清楚触发场景——一句话说清什么情况下用
拆出固定流程——写成"先做什么、后做什么"的顺序步骤
把材料移到 references/——模板、配置、风格偏好别塞进 SKILL.md
把稳定动作脚本化——解析、排序、去重交给脚本
把 AI 留给真正需要判断的部分——价值判断、风格把控、归纳总结
==== 什么时候该写 Skill? ====
一个简单的判断标准:同样的规则跟 AI 纠正了 3 次以上,就该写 Skill 了。 一次性的任务直接用提示词,别折腾。