返回

Skill 的 Skill|Anthropic Skill-Creator 设计解读

Claude 家的 Skill-Creator 的代码近期更新了,其实 Claude Code 本身就内置了这个插件,相关目录在:

~/.claude/plugins/marketplaces/claude-plugins-official/plugins

你其实可以在命令行终端里直接说创建 Skill,Claude Code 就会自动调用,不需要用 /skill-creator 这个命令去人为触发。

这个 Skill-Creator 下的文件夹还是值得一看的。拆开看目录结构和写法,本身就是一份极好的 Skill 设计示范。

1. 目录结构

文件目录:

skill-creator/
├── SKILL.md              ← 第一层:核心指令(必须)
├── LICENSE.txt
├── agents/               ← 第三层:子 agent 指令(按需加载)
│   ├── grader.md         ← 评估 agent
│   ├── comparator.md     ← 盲比 agent
│   └── analyzer.md       ← 分析 agent
├── assets/               ← 静态资源
│   └── eval_review.html  ← 触发词评审的 HTML 模板
├── eval-viewer/          ← 评测结果可视化
│   ├── generate_review.py ← 生成评估页面
│   └── viewer.html       ← 评估页面模板
├── references/           ← 第三层:参考文档(按需加载)
│   └── schemas.md        ← 所有 JSON 数据结构定义
└── scripts/              ← 第三层:可执行脚本(无需读入上下文即可运行)
    ├── aggregate_benchmark.py  ← 聚合 benchmark 数据
    ├── generate_report.py      ← 生成报告
    ├── improve_description.py  ← 优化 description
    ├── package_skill.py        ← 打包 .skill 文件
    ├── quick_validate.py       ← 快速校验
    ├── run_eval.py             ← 运行单次评测
    ├── run_loop.py             ← 运行优化循环
    └── utils.py                ← 工具函数

其设计理念就是根据用户意图深度逐步展开。

这个架构叫 Progressive Disclosure(渐进式披露),分三层:

  • L1 是 name + description,约 100 词,始终驻留上下文;
  • L2 是 SKILL.md body,触发时才加载,500 行以内;
  • L3 是 agents/、references/、scripts/,按需读取,不读不占上下文。本质还是 Context 窗口有限,每一层都在压缩 token;

2. 三条设计原则

原则:

  • 能用程序就尽量用程序,而不用 .md 文件去描述 Prompt,比如 scripts 里的 Python 脚本。LLM 做判断和创意,脚本做计算和聚合,两者各司其职。
  • Agent 里有 3 个 agent .md。如果用户意图明确需要评估 Skill 的输出效果或者评估改善 Skill 内容后的效果,就会调用这里的 Agent:
    • Grader.md 负责评分,不只看表面,文件存在但内容是空的照样 FAIL;
    • Comparator.md 做盲比,A/B 标签随机分配,Agent 不知道哪个是新版哪个是旧版,消除确认偏差;
    • Analyzer.md 在盲比之后出场,解释为什么赢家赢了,给出改进建议;
  • 中间过程的数据格式用确定性的数据格式去定义,保证数据对 Agent 的可读性。schemas.md 定义了 6 种 JSON schema,作为多个 Agent 之间的数据协议。

3. SKILL.md 写法的几个要点

Description 作为触发机制,建议写得"pushy"一点,列举具体使用场景,因为 LLM 天生倾向于"少触发",你不主动推它就不会用。

写指令的时候,解释 Why 比堆 MUST 管用。官方原话是"如果你发现自己在写大写的 ALWAYS 或 NEVER,这是黄旗"。用祈使句,"Read the file" 而不是 "You should read the file",简洁直接。

还有一条:泛化而非过拟合。好的 Skill 要能处理百万次不同的 prompt,不能只对测试用例有效。SKILL.md 开头还会声明灵活性,明确告诉 Claude"用户说不需要评测就别跑"——是有需求弹性的。

4. 评估 Agent 取代了一整个产品模块

其实评估 & 比较 Agent,这是之前 Dify LLM Ops 类工具单独的一个产品模块,没想到被 Claude Code 以这样的方式也可以取代,真是开眼了。

以前做 LLM 应用的评估和对比,你得用 Dify 那样的平台,有专门的评估模块、对比界面、数据看板。现在三个 .md 文件就把这事给干了——评分、盲比、归因分析,一套完整的闭环。协作流程就是先分别跑 with_skill 和 without_skill 两组测试,然后 Grader 打分、Comparator 盲比、Analyzer 解释原因并给改进方向。

就是说,Skill-Creator 把 Dify 工作流的开发、测试、评审、改进循环,完整搬到了 Prompt 开发上。Skill 就是给 LLM 的 Prompt engineering,应该像软件一样可测试、可迭代、可度量。

5. 写 Skill 的要点

从 Skill-Creator 的设计总结下要点:

  • 执行中需要确定性计算逻辑的,直接下沉到 Python 脚本
  • 是否要 references 文件夹,SKILL.md 超过 300 行就该拆
  • 是否需要 Agents 文件夹?需要独立判断角色才拆,大部分情况下其实不需要
分享到