Cheatsheet

写作速查表

写完 SKILL.md 之后,对着这一页过一遍。三分钟,能避开大部分坑。

01

description 公式

它是整个 Skill 里最重要的 100 个字,也是唯一始终在上下文中的东西。

FORMULAdescription
[做什么,输出什么] + [什么时候用:场景 / 输入特征] + [触发词:用户可能会怎么讲]
场景✕ 反例✓ 正例
会议纪要处理会议相关的文本内容 将会议录音或逐字稿整理为结构化纪要,输出决议、待办(含责任人与截止时间)与风险项。触发词:会议纪要、整理录音、会议记录
代码简化提升代码质量 重构与简化已有代码,在保持外部行为不变的前提下降低复杂度。当用户要求「简化 / 重构这段代码」或提交 code review 意见后使用
图片转视频处理图片和视频 将一组图片按文件名顺序合成为带交叉淡入淡出转场的 MP4 幻灯片。触发词:图片转视频、照片幻灯片
知识检索搜索资料 在个人知识库中做语义检索,返回带来源链接的摘录。当用户询问「我之前记过…」「知识库里有没有…」时使用

触发词从哪来(按有效性排序)

  • 你自己的原话 — 回想你上次需要这个能力时打的第一句话
  • 同义表达 — 中文口语、英文术语、缩写、动词名词化
  • 相邻概念 — 用户可能用另一种工具的名字来喊它

两类失准的调优

  • 漏触发(该来没来)→ 把用户实际说的那句话原样加进 description
  • 误触发(不该来却来)→ 加限定收窄:动作限定 / 输出限定 / 明确排除项

02

字段与命名速查

frontmatter 字段
name必需。小写字母 + 连字符,与目录名一致
description必需。触发路由的唯一依据,30–80 字
agent_created推荐。标记 AI 创建,允许自动化工具改写
version可选。配合 git 做版本追踪
allowed-tools视平台。限制可用工具,只读类 Skill 建议加
read_when视平台。补充更细的加载判据
name 命名规范
✓ my-skill-name小写字母 + 连字符
✓ pdf-extract「动作-对象」结构,一眼知道干什么
✕ MySkillName不要用驼峰
✕ my_skill不要用下划线
✕ 我的技能不要用中文,跨客户端兼容性差
✕ helper / utils / tools通用词会污染路由
目录职责判据
SKILL.md每次执行都必须读的部分才留下。< 500 行
scripts/每次结果必须一模一样 → 脚本
references/需要知道,但不是每次都要 → 按场景切分
assets/原样拿去用,而非读完再重写
脚本三条硬规矩
1 · 独立可运行不依赖调用方的隐式状态,参数从命令行传
2 · 失败要说话非零退出码 + 人类可读错误,让模型知道往哪修
3 · 路径不写死用相对路径,或要求调用方传入绝对路径
+ 输出 JSON模型解析 JSON 比解析自由文本可靠得多

03

SKILL.md 骨架

五段式。缺任何一段,都对应一个具体的失败模式。

MARKDOWN标准骨架
---
name: my-skill
description: 做什么 + 什么时候用 + 触发词
agent_created: true
---

# 任务名

## 目标
一句话说清交付物是什么。

## 流程
1. 第一步(有明确输入输出)
2. 第二步
3. 若遇到 X,读 references/y.md 后继续

## 边界与禁忌
- 不要做什么
- 遇到什么情况先停下来问

## 交付前自查
- [ ] 检查项一
- [ ] 检查项二
每段对应什么失败模式
目标缺 → 模型产出方向跑偏,输出了但你不能用
流程(编号)写成散文 → 遵循度显著下降,步骤被跳过
指路条件句缺 → references 要么全读要么一个不读
边界与禁忌缺 → 模型会做你没说、但不想要的事
交付前自查缺 → 没有 Critic,错误直接流到下游
兜底规则别忘了。「缺失则写 @待确认」这类一句话, 能让输出永远完整,不出现半成品。

04

13 个反模式

按出现频率排序。看完整版 →

✕ DON'T
  • description 写成功能自述,没有触发信息
  • SKILL.md 超过 500 行
  • 把 API 文档全文贴进正文
  • 让模型现写代码做确定性任务
  • 只列 references 清单,不写触发条件
  • 用散文描述流程,不编号
  • 缺「边界与禁忌」一节
  • 没有兜底规则,输出半成品
  • 跳过交付前自查清单
  • 路径写死,换个机器就废
  • 命名用 helper / utils 这类通用词
  • 与另一个 Skill 职责重叠
  • 写完从不回写,同样的坑反复踩
✓ DO
  • 写清做什么 + 输出什么 + 何时用 + 3 个真实触发词
  • 正文控制在 500 行内,把分支细节推到 references
  • 大文档放 references,正文写「调用前先读 xxx.md」
  • 格式转换、数据校验、环境探测一律脚本化
  • 指路句必须带条件:「若遇到 X,读 references/y.md」
  • 流程用编号步骤,每步有明确输入输出
  • 负面约束和正面指令同等重要
  • 「缺失则写 @待确认」,让输出永远完整
  • 结尾加可勾选自查清单 + 元规则
  • 全相对路径 / 参数化
  • 用「动作-对象」结构命名,唯一无歧义
  • 职责重叠就合并,或加互斥限定
  • 发现问题时立刻回写,别等「有空再整理」

05

评审打分表

每维度 0–2 分,总分 20。低于 14 分建议重写,不要打补丁。

维度0 分1 分2 分
description无触发信息有功能说明功能 + 场景 + 触发词俱全
正文长度> 800 行500–800 行< 500 行且无冗余
流程结构散文有分节没编号编号步骤 + 明确输入输出
资源分层全塞正文拆了但没指路分层清晰 + 条件句指路
确定性要求模型现写脚本有脚本不完备确定性操作全部脚本化
边界约束只有正面指令正负约束都有,含兜底
自查机制有一两句可勾选清单 + 元规则
可移植性路径写死部分硬编码全相对路径 / 参数化
命名通用词能看懂但模糊动作-对象,唯一无歧义
触发精度未测试只测了正向正反向都测过

Quick check · 3 分钟版

没时间逐项打分?只问这五个问题

  1. description 里有没有至少 3 个真实触发词
  2. SKILL.md 是不是 500 行以内
  3. 流程是不是编号的
  4. 有没有「边界与禁忌」一节?
  5. 结尾有没有交付前自查清单

有一个答「否」,就先修那一处再上线。

06

到底该不该写成 Skill

✓ 值得做

  • 这件事你今年会重复做十次以上
  • 做法有明确套路,且希望每次都按同一套路走
  • 正确做法很难靠模型自己猜出来(内部规范、专有流程、踩过的坑)

✕ 不值得做

  • 只做一次的一次性任务
  • 你怎么说模型都能做对,没有额外知识要传递
  • 每次结果都需要你临场判断,没有稳定套路
最容易被忽略的一条:Skill 的价值 = 你脑子里有、但模型猜不到的那部分。 如果模型本来就能做对,你写的 Skill 只是在浪费上下文。
DECISION能力栈选型
Q1. Agent 是不是根本连不上需要的外部系统?
    ├─ 是 → 接 MCP(或先加一个 Tool)
    └─ 否 ↓

Q2. Agent 缺的到底是「能力」还是「方法」?
    ├─ 缺能力(没有这个动作)→ 加 Tool / MCP
    └─ 缺方法(有手但不会用)→ 写 Skill

Q3. 任务是否需要独立上下文,与主对话隔离?
    ├─ 是(长任务 / 会污染上下文 / 可并行)→ SubAgent
    └─ 否 ↓

Q4. 这个任务的「标准做法」是否稳定且需要复用?
    ├─ 是 → 写 Skill
    └─ 否(一次性)→ 直接写 Prompt 就行