用第 3 课创建的 Skill,执行完整的测试流程:
Level 1:调试你的 Skill- 准备 3 个测试用例(1 个正常、1 个边界、1 个异常)
- 记录每个用例的预期输出和实际输出
- 找出至少 1 个问题
- 修改 SKILL.md
- 重新测试,验证问题是否修复
学习目标:
- 掌握测试 Skill 的基本方法
- 学会诊断常见问题
- 理解迭代改进的流程
- 知道如何验证 Skill 是否真的有用
你写了第一个 Skill,调用它,发现:
这很正常。
Skill 和写代码一样,第一次跑通只是开始。真正有用的 Skill,都是经过多次迭代的。1
这一课教你如何系统地测试和修复问题。
最简单的是直接调用测试:用 /skill-name 调用一次,观察输出。2
在调用之前,先准备 3-5 个测试用例:
正常情况:
边界情况:
异常情况:
在 Claude Code 里,逐个测试:
观察三件事:
用一个简单的表格记录:
有时候问题不在 instructions,而在 frontmatter。
现象: 你说"帮我整理这些任务",Claude 没用你的 task-organizer Skill
可能原因:
description 太泛化
修复: 加上关键词
description 没有触发关键词
如果你说"帮我整理这些待办",但 description 里没有"待办"这个词,Claude 可能不会想起这个 Skill。3
修复: 把用户可能说的词都写进 description
现象: 你想用 task-organizer,但 Claude 加载了另一个 Skill
可能原因: 另一个 Skill 的 description 跟你的输入更匹配
修复: 用 /task-organizer 强制调用,或者改进你的 description 让它更具体
现象: Skill 执行了,但输出格式乱
示例:
你希望的是带 emoji 和标题的分组,但 Claude 输出了纯文本列表。
原因: 输出格式说明不够清楚,或者没有给示例
修复: 在 SKILL.md 的"输出格式"部分,加上完整示例:
加上"必须按以下格式",然后给完整示例。
现象: 有些任务没被识别出来,或者分类错了
示例:
输入:
输出:
两个都有明确时间,但都被标记为"无明确截止"。
原因: 处理步骤里的时间识别规则不够全
修复: 补充规则
关键: 把所有可能的表达方式都列出来
现象: 正常输入没问题,但特殊输入时 Skill 行为异常
示例:
输入:空字符串
输出:Claude 卡住了,或者输出了一堆无意义内容
原因: "注意事项"里没有说明怎么处理空输入
修复:
好的 Skill 不是一次写成的,是测试-修复-测试的循环:1
不要期望第一个版本就完美。 先让它能跑,再让它跑对,最后让它跑好。
技术上能跑通了,但还要验证一个更重要的问题:这个 Skill 是否真的节省了时间?1
对比测试的做法很直接:同一个任务,用和不用 Skill 各跑几次,计时比较。
不用 Skill 的情况:
计时:你每次手动解释流程,Claude 执行,平均需要多久?
用 Skill 的情况:
计时:你调用 Skill,Claude 执行,平均需要多久?
如果 Skill 版本没有更快,或者质量更差,说明这个 Skill 还需要改进。
真正的测试是实际使用。4
记录这些指标:
如果一周内调用次数少于 3 次,说明这个任务本身可能不够"重复",不值得写成 Skill。
遇到 Skill 用不起来的情况,先做一次加载失败诊断——按下表逐项排查文件路径、frontmatter 格式和触发关键词。
下一课,我们通过一个完整的代码审查 Skill 案例,学习如何处理更复杂的工作流。
Claude Code Skills:.NET 工作流与可复用提示 — https://codewithmukesh.com/blog/skills-claude-code/ ↩ ↩2 ↩3
Claude Code 官方文档:Skills 扩展指南 — https://code.claude.com/docs/en/skills ↩
构建 Claude Skill 实战教程:YAML Frontmatter 与测试 — https://sjramblings.io/building-skills-for-claude-part-2/ ↩
Claude Skills 作为自文档化的 Runbook — https://zackproser.com/blog/claude-skills-internal-training ↩
记下想法、痛点、没懂的地方。只写进这门课的附录,正课文件不动。
完成季度报告审查 PR #234,周五之前明天修复登录 bug(空输入)这是一段完全无关的文字,没有任何任务asldfkjasldfj!@#$%/task-organizer
完成季度报告审查 PR #234,周五之前明天修复登录 bugdescription: 处理任务 # 太泛,Claude 不知道什么时候用
description: 整理待办事项,按优先级和截止日期分组。用于处理混乱的任务列表或会议行动项
紧急:修复登录 bug - 明天重要:审查 PR #234 - 周五## 输出格式
必须按以下格式输出,包括 emoji、标题和缩进:
### 🔴 紧急(今天或明天)
- 修复登录 bug - 明天
### 🟡 重要(本周)
- 审查 PR #234 - 周五
### ⚪ 普通
- 完成季度报告 - 无明确截止
明天要改那个 bug周五之前准备 demo### ⚪ 普通- 明天要改那个 bug - 无明确截止- 周五之前准备 demo - 无明确截止2. **识别时间信息**
- 查找日期关键词:
* 今天、今日
* 明天、明日
* 后天
* 本周、这周、周X(周一到周日)
* 下周、下周X
* 具体日期(2024-01-15、1月15日、1/15)
- 查找时间表达:
* XX 之前、XX 前
* 截止 XX、deadline XX
* XX 要、XX 需要
## 注意事项
- **空输入或无有效任务时**,输出"未识别到有效任务,请提供待办事项列表"
- **所有任务都没有时间信息时**,全部归为"普通"类别,输出提示"未检测到明确截止日期"
- **任务描述超过 100 字时**,截断为前 80 字 + "..."
- **输入包含已完成标记(`[x]`)的任务时**,忽略不处理
1. 写第一个版本(核心功能)2. 用 3-5 个测试用例测试3. 记录哪里不对4. 修改 SKILL.md5. 再测试6. 重复 3-5,直到通过所有测试用例7. 实际使用一周8. 发现新问题9. 回到第 4 步