一个好的 Skill 核心不是“功能多”,而是 职责清晰、调用稳定、结果可信、可组合。
我会用下面 8 个标准判断:
1. 单一职责
一个 Skill 最好解决一个明确问题。
- 好:
github-pr-review - 差:
developer-helper,里面同时写代码、搜资料、部署、测试、发 PR
2. 触发条件明确
Agent 能快速判断:
什么时候应该调用它,什么时候不应该调用它。
Skill 描述不能含糊,否则会产生误调用和额外 Token。
3. 输入 / 输出明确
输入需要什么、输出会得到什么,都应该有稳定约定。
例如:
仓库 + PR → Review 结果 + 风险 + 修改建议
4. 过程可执行,而不是知识堆积
Skill 应该告诉 Agent 怎么完成任务,而不是塞几十页背景知识。
最理想结构通常是:
判断 → 获取信息 → 执行 → 验证 → 输出
5. 结果可验证
好 Skill 必须有明确的完成条件。
例如代码 Skill:
修改代码 → lint → test → 检查 diff → 才算完成
而不是 Agent 自己说“应该没问题”。
6. 失败可恢复
要定义:
- 工具失败怎么办
- 数据缺失怎么办
- 权限不足怎么办
- 验证失败怎么办
不能一失败就整个流程崩掉。
7. 可组合
Skill 不应该绑定整个大工作流,而应该能够被其他 Skill / Workflow 复用。
例如:
search-docs
analyze-code
run-tests
create-pr
可以组合成完整开发流程。
8. 低 Token 成本
Skill 本身应该尽可能短,把大量信息按需加载,而不是每次调用都读取完整说明。
一个好的 Skill 应该做到: 最少上下文 → 足够决策 → 必要时再展开。
如果进一步压缩,我认为一个优秀 Skill 可以用这个公式判断:
好 Skill = 明确触发 + 单一职责 + 最小上下文 + 确定流程 + 可验证输出 + 失败处理 + 可组合
其中最重要的其实只有三个:
知道什么时候用 → 知道怎么做 → 知道什么时候算做完。
这三个如果设计好了,Skill 基本就不会差。
第一,不要让“写 Skill 的 Skill”自己变成超级 Skill。它负责 Skill Engineering,而不是同时负责研究业务、执行业务、测试业务、发布业务。
第二,Description 比很多人想象得更重要。Skill 写得再好,如果 Agent 根本不知道什么时候调用它,基本等于没写。
第三,先设计 Contract,再写自然语言。否则 Agent 很容易生成一篇“看起来非常专业”的 SKILL.md,但实际没有稳定执行逻辑。
第四,Verification 必须是生成流程的一部分。Meta Skill 不应该以“文件成功生成”为完成标准,而应该是:
生成完成 + 结构正确 + 规则一致 + 可执行 + 可验证
第五,默认最小化。不要默认创建 references / examples / templates / scripts。复杂度应该由任务需求驱动。
第六,避免让 Skill 重复宿主 Agent 已经知道的通用知识。Skill 应该保存的是特殊流程、约束、判断规则和领域操作方法,而不是诸如“认真分析问题”“确保高质量输出”这种废话。
所以我会把这个 Skill Writer Skill 的生命周期最终定成:
Analyze → Qualify → Scope → Contract → Design → Generate → Validate → Refine → Deliver
而它的起点应该是:
“这个需求是否值得成为一个 Skill?”
它的终点应该是:
“得到一个通过校验、可以被 Agent 正确发现和执行的 Skill。”
而不是“成功写出一个 SKILL.md 文件”。