skill-creator-cn · git:20260520.f081e1e · 2026-05-20 · sha256 f0cdeeeff0bc3eac
skill-creator-cn git:20260520.f081e1eA
Immutable. This exact content is served forever at /api/v1/blob/f0cdeeeff0bc3eac.
---
name: skill-creator-cn
description: 创建、修改、改进 skill,并衡量其表现。当用户想从零做一个 skill、改进/调试已有 skill、把刚才对话里的流程"变成 skill"、或说"我想做个 skill 但不知道怎么做""帮我做个 skill"时使用。也适用于优化 skill 的触发描述、跑评测。Use when the user wants to create, edit, debug, or evaluate a skill (Chinese or English).
---
# Skill Creator
## 语言与水平指令
**默认用中文与用户交流,跟随用户的语言切换**(用户改用英文则跟着切换)。
全程自动识别用户的技术水平,**不要打断流程询问"你是什么水平"**——通过用户的措辞、上下文自动判断,并相应调整用词深度:
- 用户说"我不懂代码""帮我做一个自动化"→ 用日常语言,避免裸露的 JSON/assertion/eval 等术语(或用时简要解释)。
- 用户说"写个 SKILL.md""跑 eval"→ 可直接使用技术术语。
- 中间态:术语按需解释,不过度科普也不假设对方都懂。
详细的水平信号识别与提问节奏,见 `references/需求共创.md`。
---
## ① 前置 Triage(闸门)
在进入任何创建/改进流程之前,先做三个快速判断:
### 1. 这要不要做成 skill?
判断标准:
- **一次性任务**:用户只要做一次,做完就不用了 → 直接帮做,不必做成 skill。
- **普通 prompt 够用**:Claude 不需要任何 skill 也能胜任 → 直说,不必做 skill。
- **Claude 原生能干**:内置能力已覆盖,skill 不会带来额外价值 → 坦诚建议不必做。
- **更适合 slash command 或 subagent**:任务是一次性调度或编排多个步骤,而非可复用流程 → 说明区别,建议替代方案。
**命中后怎么做**:坦诚告诉用户"这种情况不一定需要做成 skill,因为……",并提供直接帮助或替代建议。
### 2. 有没有现成类似的?
判断方法:扫一眼用户环境里已有的 skills 列表(`available_skills`),看有没有功能高度重叠的。
**命中后怎么做**:告知用户已有类似 skill,建议先试用,或在现有 skill 上改进,而非重新造轮子。
### 3. 范围太大?
判断标准:用户描述的需求实际上涵盖了多个独立的、可拆分的工作流程。
**命中后怎么做**:提醒用户"这其实是好几个 skill,建议拆开来做",本工具不会自动批量生成多套 skill,每次聚焦一个。
---
## ② 入口识别与路由
通过用户的描述,判断属于哪个入口,然后跳转对应分支:
| 入口 | 用户大概这样说 | 跳转 |
|------|--------------|------|
| **E1 模糊想法** | "我想做个 skill""帮我自动化 XX""我有个想法但不知道怎么做" | → `references/需求共创.md` |
| **E2 从对话提取** | "把我们刚才做的变成 skill""提取这个流程""这次对话做成 skill" | → `references/需求共创.md`(从 transcript 抽步骤/工具/纠正 → 回填四要素) |
| **E3 现有材料** | "我有个文档/流程图/SOP""给你几对输入输出示例,照着做""参考这个来做 skill" | → `references/需求共创.md`(分析材料/示例 → 提炼四要素 → 补缺) |
| **E4 已有草稿** | "我写了个 SKILL.md 草稿""帮我完善这个 skill" | → `references/需求共创.md`(读懂草稿 → 补缺 → 进打磨循环) |
| **E5 改进/调试** | "这个 skill 不触发""触发错了""效果跑偏""太慢太重" | → `references/改进调试.md` |
**E1/E2/E3/E4** 均路由到 `references/需求共创.md`,按各自情境执行对应段落。**E5** 路由到 `references/改进调试.md`,按诊断 playbook 执行。
---
## 创建流程地图(全局视图)
以下是整体流程的全局视图,确保你在每个阶段都知道"下一步去哪":
```
① 前置 Triage(闸门)
· 这要不要做成 skill? → 一次性/普通 prompt 够/Claude 原生能干/
更适合 slash command·subagent → 直说不必
· 有没有现成类似的? → 扫一眼已有 skills,别重复造
· 范围太大? → 提醒"这其实是好几个 skill"
│
▼
② 识别入口,跳对应分支(两类,分别走不同路)
▸ 创建类 E1 模糊想法 / E2 从对话 / E3 现有材料 / E4 已有草稿
└─→ references/需求共创.md(四要素 / 水平信号 / 材料·输入输出例子分析)
│ 四要素挖掘完
▼
✦ 确认门:把四要素回述给用户、获批才开写(见 需求共创.md 第六节)──┐
▸ 改进类 E5 改进/调试 │
└─→ references/改进调试.md(诊断:不触发/行为跑偏/过欠触发/太重;不经确认门)─┤
▼
③ 共有打磨循环(见下文"起草 SKILL.md"及后续章节)
起草 SKILL.md(含 description;顺带确认 依赖/工具/MCP 可用性)
→ 验证【分层:轻量"跑给你看"默认 / 重型量化评测可选】
→ 看结果 → 改 → 重跑 → 满意为止 → 打磨 description 触发
│
▼
④ 最后一公里 → references/最后一公里.md(放哪/确认装上/自测触发/打包)
```
---
## ③ 共有打磨循环:起草、验证与迭代
### 起草 SKILL.md
根据需求共创的结果,填写以下几个核心部分:
- **name**:skill 的标识符,保持简洁。
- **description**:这是触发机制——写清楚"什么时候用、做什么"。把所有"何时使用"的信息都放在这里,不要藏在正文里。注意:Claude 有时会"触发不足"(明明适合用却没用),所以描述可以稍微主动一点。比如,别只写"如何构建仪表盘",而是写"构建仪表盘。当用户提到仪表盘、数据可视化、内部指标、想展示任何公司数据时,即使没有明确说'仪表盘',也应使用本 skill。"
- **compatibility**:所需工具、依赖(可选,大多数 skill 不需要)。
- **正文**:其余的 skill 说明。
#### skill 的结构
```
skill-name/
├── SKILL.md(必须)
│ ├── YAML frontmatter(name、description 必填)
│ └── Markdown 说明
└── 捆绑资源(可选)
├── scripts/ - 确定性/重复性任务的可执行代码
├── references/ - 按需加载到上下文的文档
└── assets/ - 输出中用到的文件(模板、图标、字体)
```
#### 渐进加载机制
Skill 有三级加载层:
1. **元数据**(name + description)——始终在上下文中(约 100 词)
2. **SKILL.md 正文**——skill 触发时进入上下文(理想 <500 行)
3. **捆绑资源**——按需加载(不限大小,scripts 可直接执行无需加载)
关键原则:
- SKILL.md 尽量控制在 500 行以内;接近上限时,增加一层层级并写清楚"下一步去哪里"的指引。
- 在 SKILL.md 中明确引用 reference 文件,注明何时读取。
- reference 文件超过 300 行时,加目录索引。
多领域 skill 按变体组织:
```
cloud-deploy/
├── SKILL.md(流程 + 选择逻辑)
└── references/
├── aws.md
├── gcp.md
└── azure.md
```
Claude 只读取相关的 reference 文件。
#### 内容安全
Skill 不得包含恶意代码、漏洞利用代码或任何可能损害系统安全的内容。Skill 的内容不应在描述说明的范围之外给用户带来意外。不要配合制作带有误导性、旨在未授权访问或数据泄露的 skill。角色扮演类需求(如"扮演某个角色")通常没问题。
#### 写作风格
用祈使句写指令,这样模型更容易执行。
尽量说明"为什么"而不是堆砌 MUST/NEVER 等强制词——当今的 LLM 相当聪明,理解了背后的理由反而比死规定更灵活有效。用心揣摩用户真正想要什么,写出的 skill 要足够通用,不要只针对几个具体例子过拟合。
写完初稿之后,换个视角重读一遍再改——这一步经常能发现自己没意识到的问题。
**输出格式示例:**
```markdown
## 报告结构
始终使用以下模板:
# [标题]
## 执行摘要
## 关键发现
## 建议
```
**示例模式——**在 skill 里放例子很有用:
```markdown
## commit 消息格式
示例:
输入:Added user authentication with JWT tokens
输出:feat(auth): implement JWT-based authentication
```
#### 草稿自检
写完初稿,换个视角重读一遍再交给验证——重点扫四件事:
- **占位与含糊**:"TBD""按需处理""适当地……"这类没说清的要求,说清它。
- **自相矛盾**:前后指令、description 与正文有没有打架。
- **范围蔓延**:有没有混进需求里没确认过的功能?砍掉,或回去确认。
- **歧义**:某条要求会不会被理解成两种意思?挑一种、写明确。
发现问题就地改掉,不必反复评审。
---
### 分层验证:默认轻量,进阶可选
验证的目的是确认 skill 的行为是否符合用户预期。根据用户的技术水平和需求,有两条路:
#### 默认:轻量"跑给你看"
起草完 skill 之后,设计 2–3 个真实用户会说出的测试提示词,和用户确认:"这几个测试用例看起来对吗?有想加的吗?" 然后**直接运行**,把产出展示给用户看,问"这样对吗?"
这条路零术语、零 JSON——用户看到真实结果,给出直觉反馈,就可以进入下一轮改进。
保存测试用例到 `evals/evals.json`(只保存 prompt,assertion 留给进阶阶段):
```json
{
"skill_name": "example-skill",
"evals": [
{
"id": 1,
"prompt": "用户实际会说的任务描述",
"expected_output": "期望结果的简要描述",
"files": []
}
]
}
```
完整 schema(含 `assertions` 字段)见 `references/schemas.md`。
#### 进阶 · 可选:重型量化评测
需要严格的量化对比(benchmark/assertion,跨版本比较)时,读 `references/重型评测.md` 的「重型量化评测」一节。默认绝不把 JSON assertion、benchmark 等概念主动抛给初学用户。
---
### 改进 skill
这是循环的核心。你已经跑完测试用例,用户已经看过结果,现在根据反馈改进 skill。
**怎么思考改进方向:**
- **从反馈里归纳共性**。我们在做的事情是:创建一个能被用一百万次的 skill,而现在只是在几个例子上快速迭代。如果改出来的 skill 只对这几个例子有效,就失去了意义。遇到顽固问题,与其加死规定,不如换个比喻或换种工作模式——代价低,说不定能找到更好的方案。
- **保持 prompt 精简**。去掉没有实际作用的内容。读运行的完整对话记录(transcript),不要只看最终输出——如果 skill 让模型做了很多无效工作,试着删掉导致这些行为的指令,看看结果是否更好。
- **解释"为什么"**。尽量说明你要求模型做某件事背后的理由。今天的 LLM 很聪明,给出了充分理由,它们能举一反三、灵活应对,效果往往比死规定更好。如果你发现自己在写"ALWAYS"或"NEVER"这样的全大写词,那是一个警示信号——尝试改写成解释理由的方式。
- **发现跨用例的重复工作**。读各测试用例的运行记录,看看子代理有没有各自独立写了类似的辅助脚本(比如 3 个用例都写了 `create_docx.py`)。如果有,这是强信号:把这个脚本写好放进 `scripts/`,让 skill 直接调用,省去每次重新造轮子。
改进后,**按你当前走的验证档重跑**(别无脑上重型):
1. 应用改动到 skill
2. 重新验证:
- **轻量档(默认)**:重跑那 2–3 个测试提示词,把新产出摆给用户看,问"这版好点了吗?"——不建目录、不跑 baseline。
- **重型档(进阶)**:跑全部测试用例放入新的 `iteration-<N+1>/` 目录(含 baseline run),启动 eval viewer(`eval-viewer/generate_review.py`)并加 `--previous-workspace` 指向上一轮——细节见 `references/重型评测.md`。
3. 等用户看完反馈
4. 读新反馈,再改,循环
直到:用户说满意、反馈全为空、或已经没有实质进展,停止循环。
---
### 进阶 · 可选:盲评对比
需要更严格地对比两个版本的 skill 时(例如"新版本真的更好吗"),读 `references/重型评测.md` 的「盲评对比」一节。
---
## Description 触发优化
description 字段是 Claude 决定是否调用 skill 的核心机制——它决定 skill 会不会被调用。skill 整体打磨满意后,可以主动提出优化 description 以提升触发准确率。优化时会生成触发评测查询集、让用户确认,然后用 `scripts/run_loop.py` 在后台跑优化循环,自动选出最优 description。
详细流程见 `references/重型评测.md` 的「Description 触发优化」一节。
---
## 打包发布
检查是否有 `present_files` 工具可用。有则打包 skill 并发给用户;没有则跳过。
```bash
python -m scripts.package_skill <path/to/skill-folder>
```
打包后,告知用户 `.skill` 文件的路径。
---
## 平台差异说明
### Claude.ai
核心流程相同(起草 → 测试 → 审阅 → 改进 → 重复),但 Claude.ai 没有子代理,部分机制需要调整:
- **跑测试用例**:不能并发,逐条执行。读 skill 的 SKILL.md,按其指令自己完成测试任务。这不如独立子代理严格(你既写了 skill 又在运行它),但作为合理性检查是有效的——人工审阅可以弥补。跳过 baseline run,只跑带 skill 的版本。
- **展示结果**:如果无法打开浏览器,直接在对话里展示。每个用例显示 prompt 和输出;如果输出是文件(.docx、.xlsx),告知文件位置让用户下载查看;内联征求反馈:"这样看起来怎么样?有什么想改的?"
- **量化评测**:跳过——没有子代理就无法做有意义的 baseline 对比。以用户的定性反馈为准。
- **Description 优化**:需要 `claude -p`(仅 Claude Code 可用),Claude.ai 上跳过。
- **盲评对比**:需要子代理,跳过。
- **打包**:`scripts/package_skill.py` 只需 Python 和文件系统,在 Claude.ai 上可用。用户可下载生成的 `.skill` 文件。
- **更新已有 skill**:保留原始 name(目录名和 frontmatter 的 `name` 字段不变);已安装的 skill 路径可能只读,先复制到 `/tmp/skill-name/` 再编辑,打包时从副本运行。
### Cowork
- 有子代理,主流程(并发测试用例、baseline、评分等)完全可用。遇到严重超时问题可以改串行。
- 没有浏览器/显示器:生成 eval viewer 时用 `--static <output_path>` 输出独立 HTML 文件,给用户提供可点击的链接。
- Cowork 环境下 Claude 有时会跳过生成 viewer 直接评估输出——请务必在让用户审阅结果之前生成 viewer(用 `eval-viewer/generate_review.py`,不要自己写 HTML)。把结果第一时间展示给用户,而不是自己先下结论。
- Feedback:没有运行中的服务器,viewer 的"Submit All Reviews"会下载 `feedback.json`,从那里读取(可能需要先请求访问权限)。
- 打包:`scripts/package_skill.py` 只需 Python 和文件系统,正常工作。
- Description 优化(`scripts/run_loop.py`)在 Cowork 下通过 `claude -p` 子进程运行,不依赖浏览器,应该正常工作;请在 skill 整体完成、用户确认满意后再运行。
- 更新已有 skill:同 Claude.ai 一节的指引。
---
## 内部文件说明
`agents/*.md`、`scripts/*.py`、`references/schemas.md` 是供本 skill 内部使用的子代理指令、脚本和 schema 定义,保持英文原样;它们输出的自由文本(evidence/reasoning/笔记等)由各 agent 文件自身的语言指令控制(默认跟随用户语言)。
`eval-viewer/viewer.html` 和 `assets/eval_review.html` 是**用户可见的 UI**,已中文化,不属于"内部文件"。同理 `scripts/` 里生成用户可见报告的部分(`generate_report.py` 等)也已中文化;脚本里给开发者看的 `print` 状态/错误同样已中文化。
- `agents/grader.md` — 评估 assertion 是否通过
- `agents/comparator.md` — 对两份输出做盲评 A/B 对比
- `agents/analyzer.md` — 分析某版本为何胜出
- `references/schemas.md` — evals.json、grading.json 等的 JSON schema
- `references/需求共创.md` — 需求挖掘引擎(E1–E4 入口)
- `references/改进调试.md` — 改进与调试 playbook(E5 入口)
- `references/最后一公里.md` — 安装、激活、自测、打包
- `references/重型评测.md` — 重型量化评测、盲评对比、Description 触发优化详细流程(进阶可选)
---
## 收尾:最后一公里
当 skill 内容打磨满意、description 触发调优完成后,进入 `references/最后一公里.md`,完成安装激活、自测触发验证和打包发布。