skill-creator Skill 深度分析
这是整个 Anthropic Skills 仓库中最"元"(meta)的一个技能 ------一个用来创建和优化其他技能的技能 ,本质上是 Anthropic 对 Prompt 工程全生命周期管理 的最佳实践凝练。
1. 定位与价值
| 维度 | 说明 |
|---|---|
| 本质 | 一套完整的 Skill 开发 IDE 工作流,嵌入到 Claude 的对话中 |
| 目标用户 | 想为 Claude 编写自定义技能的开发者(从小白到专家) |
| 核心价值 | 将"写 prompt → 测试 → 评估 → 迭代"这个 ad-hoc 过程标准化为可重复的工程流程 |
这个技能的野心在文中被直接点破:
"we are trying to create billions a year in economic value here!"
Anthropic 把 Skill 创建视为一个可以产生数十亿美元年经济价值的核心能力。
2. 目录结构全景
perl
skill-creator/
├── SKILL.md # 核心指令文件(~500行)
├── LICENSE.txt # 许可证
├── agents/ # 子智能体指令
│ ├── grader.md # 评分子智能体:对断言逐条打分
│ ├── comparator.md # 盲比子智能体:A/B 盲测两个版本
│ └── analyzer.md # 分析子智能体:分析为什么某版本更优
├── scripts/ # Python 工具链
│ ├── aggregate_benchmark.py # 聚合基准测试数据
│ ├── generate_report.py # 生成报告
│ ├── improve_description.py # 优化技能触发描述
│ ├── package_skill.py # 打包 .skill 文件
│ ├── quick_validate.py # 快速校验
│ ├── run_eval.py # 运行单次评估
│ ├── run_loop.py # 运行优化循环
│ └── utils.py # 工具函数
├── eval-viewer/ # 评估结果可视化浏览器
│ └── generate_review.py # 生成 HTML 评审界面
├── references/
│ └── schemas.md # JSON schema 定义
└── assets/
└── eval_review.html # 评估查询审查 HTML 模板
这是整个仓库中结构最复杂的技能,完美展示了 Skill 的三层加载架构:
| 层级 | 内容 | 加载时机 |
|---|---|---|
| Metadata | name + description (~100词) | 始终在上下文中 |
| SKILL.md body | 完整工作流指令 (~500行) | 技能被触发时 |
| Bundled resources | agents/ .md, scripts/ .py, references/* | 按需读取/执行 |
3. 核心工作流:六阶段开发循环
整个 Skill 定义了一个严格的迭代开发循环:
scss
┌─────────────────────────────────────────────────────────────┐
│ 1. Capture Intent 理解用户意图,确定技能目标 │
│ ↓ │
│ 2. Interview & Research 追问边界情况、格式、依赖 │
│ ↓ │
│ 3. Write SKILL.md 起草技能文件 │
│ ↓ │
│ 4. Run Test Cases 并行运行 with-skill + baseline │
│ ↓ │
│ 5. Evaluate Results 定量评分 + 定性人工评审 │
│ ↓ │
│ 6. Improve & Repeat 基于反馈改进,回到步骤4 │
│ ↓ │
│ [可选] Description Optimization 优化触发描述 │
│ [可选] Package & Present 打包为 .skill 文件 │
└─────────────────────────────────────────────────────────────┘
4. 评估体系:堪比 ML 训练流水线
这是此 Skill 最令人印象深刻的部分。它建立了一套完整的 Eval 基础设施:
4.1 测试执行(并行 + 对照组)
每个测试用例同时启动两个子 智能体:
| 运行组 | 说明 |
|---|---|
| with_skill | 加载了当前技能的 Claude 执行任务 |
| without_skill / old_skill | 无技能的 Claude(新建场景)或旧版技能(改进场景) |
这本质上是一个对照实验设计,和 A/B 测试同源。
4.2 评分系统
采用双轨评估:
| 评估类型 | 方法 | 适用场景 |
|---|---|---|
| 定量(Quantitative) | JSON 断言 → grader 子智能体打分 → benchmark.json | 可客观验证的任务(文件转换、数据提取、代码生成) |
| 定性(Qualitative) | HTML 评审界面 → 人工反馈 → feedback.json | 主观任务(写作风格、设计质量) |
4.3 Benchmark 聚合
xml
python -m scripts.aggregate_benchmark <workspace>/iteration-N --skill-name <name>
输出包含:
- 每个配置的 pass_rate(通过率)
- mean ± stddev(均值 ± 标准差)------注意引入了方差分析!
- delta(两组的差异)
- 时间和 token 消耗对比
4.4 分析师通道(Analyst Pass)
聚合数据之后,还有一个分析步骤,专门检查:
- Non-discriminating assertions --- 无论有没有技能都通过的断言(无效测试)
- High-variance evals --- 结果不稳定的评估(可能是 flaky test)
- Time/token tradeoffs --- 性能开销是否值得
这完全是 MLOps 中模型评估的思路移植到了 Prompt Engineering 领域。
5. Description Optimization:技能触发的"搜索引擎优化"
这是一个独立且非常精巧的子流程:
问题 :技能的 description 字段决定了 Claude 是否调用该技能。写不好 → 该触发时不触发(undertriggering),不该触发时乱触发(overtriggering)。
解决方案 :一套完整的触发精度优化 pipeline:
-
生成 20 个测试查询(10 个应触发 + 10 个不应触发)
-
人工审核测试集(通过 HTML 界面)
-
运行优化循环:
- 60/40 划分为 train/test
- 每个查询运行 3 次取可靠触发率
- Claude 基于失败案例提出 description 改进
- 最多迭代 5 次
- 按 test score(而非 train score)选最佳版本 ← 防止过拟合!
这本质上就是一个小型的 prompt tuning + cross-validation 流程。
文中还提到了一个关键洞察:
" Claude only consults skills for tasks it can't easily handle on its own --- simple, one-step queries like 'read this PDF' may not trigger a skill even if the description matches perfectly."
即技能触发不是简单的关键词匹配,而是 Claude 对自身能力边界的判断------只有复杂任务才会触发技能查询。
6. Skill 编写哲学:四大核心原则
原则 A:解释 Why > 强制 MUST
"If you find yourself writing ALWAYS or NEVER in all caps, that's a yellow flag --- reframe and explain the reasoning so that the model understands why."
这与前端设计 Skill 用 ALWAYS/NEVER 的风格形成鲜明对比 。skill-creator 认为解释动机比施加约束更有效,因为 LLM 有理论心智(Theory of Mind),能理解意图后自主执行。
原则 B:泛化 > 过拟合
"Rather than put in fiddly overfitty changes, or oppressively constrictive MUSTs, if there's some stubborn issue, you might try branching out and using different metaphors."
把 ML 中的过拟合概念引入 prompt 工程------不要为了修复个别测试用例的问题而写过于狭窄的指令。
原则 C:提取共性脚本
"If all 3 test cases resulted in the subagent writing a
create_docx.py, that's a strong signal the skill should bundle that script."
观察子智能体在多个测试中的重复行为模式 ,将其提取为内置脚本。这是经典的DRY 原则在 AI 工作流中的应用。
原则 D:Description 要"推销式"(Pushy)
"Currently Claude has a tendency to 'undertrigger' skills. To combat this, please make the skill descriptions a little bit 'pushy'."
Anthropic 内部观察到 Claude 倾向于不使用技能(保守触发),因此 description 需要主动列出更多触发场景,类似 SEO 中的关键词扩展。
7. 沟通风格设计:面向"全民开发者"
这段非常有意思:
"There's a trend now where the power of Claude is inspiring plumbers to open up their terminals, parents and grandparents to google 'how to install npm'."
Anthropic 意识到技能创建者不再只是程序员 ------水管工、父母辈都可能来创建技能。因此 skill-creator 内置了术语分级策略:
| 术语 | 策略 |
|---|---|
| "evaluation"、"benchmark" | 可以直接用 |
| "JSON"、"assertion" | 需要先从对话中确认用户理解再使用 |
| 其他编程术语 | 主动附带简短解释 |
8. 多环境适配
Skill 针对三个运行环境做了细致的适配:
| 环境 | 能力差异 | 适配方案 |
|---|---|---|
| Claude Code | 完整能力:子智能体、浏览器、CLI | 全流程可用 |
| Claude.ai | 无子智能体、无 claude -p CLI |
串行执行,跳过基线对比和 description 优化,内联收集反馈 |
| Cowork | 有子智能体但无浏览器 | 用 --static 输出静态 HTML,feedback 通过文件下载 |
这种环境感知的降级策略保证了同一个 Skill 在不同平台都能工作。
9. 与 frontend-design Skill 的对比
| 维度 | frontend-design | skill-creator |
|---|---|---|
| 复杂度 | 单文件 SKILL.md | 多目录、多脚本、多子智能体 |
| 风格 | 重约束(NEVER/ALWAYS) | 重解释(explain the why) |
| 评估 | 无内置评估 | 完整 eval pipeline |
| 迭代 | 一次性生成 | 多轮迭代循环 |
| 目标 | 提升单次输出质量 | 提升技能本身的质量 |
| 层级 | 一阶技能(直接完成任务) | 二阶元技能(创建完成任务的技能) |
10. 总结评价
| 方面 | 评价 |
|---|---|
| 工程完整度 | ⭐⭐⭐⭐⭐ 从意图捕获到打包发布的完整生命周期 |
| 方法论深度 | ⭐⭐⭐⭐⭐ 将 MLOps 思维(对照实验、交叉验证、过拟合防控)引入 Prompt Engineering |
| Prompt 质量 | ⭐⭐⭐⭐⭐ 对话式写作、术语分级、多环境适配 |
| 可复用性 | ⭐⭐⭐⭐ 虽然工具链绑定 Anthropic 生态,但方法论完全通用 |
| 创新性 | ⭐⭐⭐⭐⭐ 这可能是目前公开的最成熟的 "Prompt 开发 IDE" 设计 |
一句话总结 :skill-creator 本质上是 Anthropic 将软件工程中的 TDD(测试驱动开发)+ CI/CD(持续集成/持续部署)+ MLOps(模型运维) 三套方法论融合后,应用于 Prompt Engineering 领域的一次系统性实践。它不只是一个 Skill,更是 Anthropic 对 "如何工业化生产高质量 AI 指令" 这个问题的回答。