写了个 Skill,AI 有时候用、有时候不用、用了效果也一般?问题不在 Skill 本身,在于你没有训练它。这篇讲一套完整的 Skill 训练循环:写初版 → 跑 Eval → 看数据 → 改进 → 再跑 Eval,让 Skill 从"能用"进化到"精准"。
写在前面
大多数人写 Skill 的方式是这样的:
1
写一份 SKILL.md
2
试了两次,“好像能用”
3
收工
一个月后发现:有时候 AI 该触发的时候没触发,不该触发的时候乱触发。输出质量时好时坏,全看运气。
问题在哪?你没有用数据驱动地训练它。
Skill 不是写完就结束的静态文档。它是一个需要持续训练、度量、迭代的"模型行为规范"。好消息是,Claude Code 的 skill-creator 工具已经把整个训练循环自动化了——你只需要理解原理,然后让工具帮你跑。
一、Skill 的两个核心指标
训练 Skill 要优化的只有两件事:
1. 触发率(Triggering Accuracy)
“该触发的时候触发了吗?不该触发的时候没乱触发吗?”
这取决于description字段写得好不好。AI 根据 description 判断"这个 Skill 跟当前任务相关吗"。description 写得模糊,就会漏触发或误触发。
2. 输出质量(Output Quality)
“触发之后,AI 按 Skill 干活的效果好不好?”
这取决于 SKILL.md 正文的规则写得好不好。规则太模糊 AI 会自由发挥,规则没覆盖到的地方 AI 会按自己的默认行为来——未必是你想要的。
训练的目标:把触发率从 ~65% 拉到 95%,把输出质量从"勉强能用"拉到"稳定可靠"。
二、训练循环:4 步闭环
整个训练过程是一个循环,反复跑直到满意:
写/改 Skill → 跑 Eval → 看数据 → 改进 → 再跑 Eval → …
第 1 步:写初版 Skill
初版不用追求完美,能表达核心意图就行。重点关注:
description写清楚"什么时候用"(以 “Use when” 开头)
正文写 3-5 条核心规则
给 1 个完整示例
name: commit-message-zh
description: Use when 用户完成代码修改准备提交时,生成中文 commit message
中文 Commit Message
规则
commit message 用中文
格式:类型(范围): 描述
类型包括:feat/fix/refactor/docs/test/chore
描述不超过 50 字
不要写"更新了代码"这种废话,要写具体改了什么
示例
feat(auth): 添加 GitHub OAuth 登录
fix(payment): 修复月度订阅扣费金额计算错误
refactor(api): 将 user 路由拆分为独立文件
第 2 步:跑 Eval——让 skill-creator 帮你测
这一步是关键。用 skill-creator 跑评估(需要先安装:从github.com/anthropics/skills仓库把skill-creator目录放到~/.claude/skills/下):
帮我评估 commit-message-zh 这个 skill 的触发准确率和输出质量
skill-creator 会自动做这些事(以下为简化示意,实际输出包含更多细节):
触发率测试:
1
生成 20 个模拟查询(10 个应该触发、10 个不应该触发)
2
逐个测试 Skill 的 description 能否正确判断
3
输出触发率分数
触发率评估结果:
应触发的 10 个查询:8/10 正确触发 ✓
不应触发的 10 个查询:9/10 正确未触发 ✓
综合触发率:85%
误判案例:
“帮我写个 PR 描述” → 错误触发(PR 描述 ≠ commit message)
“提交代码” → 未触发(应该触发)
输出质量测试:
1
用 3-5 个真实场景测试 Skill 的输出
2
对比"有 Skill"和"没 Skill"的输出差异
3
评分
第 3 步:看数据,定位问题
根据 Eval 结果,问题通常归为两类:
触发率低?→ 改 description
常见原因:
太宽泛:“Use when writing commit messages”(写什么都可能触发)
太窄:“Use when using git commit -m”(只有精确匹配才触发)
有歧义:“Use when committing code”(PR 描述也算"committing"吗?)
输出质量差?→ 改正文规则
常见原因:
规则太模糊:“写好 commit message”(什么叫"好"?)
缺少反面示例:AI 不知道什么不该做
缺少边界情况:多文件修改时怎么写?破坏性变更怎么标注?
第 4 步:改进并重跑
根据第 3 步的诊断,做针对性修改。然后再跑一次 Eval,看数字有没有涨。
比如触发率从 85% 要拉到 95%,description 改成:
改前
description: Use when 用户完成代码修改准备提交时,生成中文 commit message
改后
description: Use when 用户说"提交"、“commit”、"写 commit message"或完成一轮代码修改后要求生成提交信息时。不适用于 PR 描述、changelog、release note。
关键改动:加了正面触发词 + 加了负面排除词。这样 AI 就不会把"写 PR 描述"误判为需要这个 Skill。
三、让 Skill 自进化:3 个机制
训练一次只是起点。真正厉害的是让 Skill持续自动进化:
机制 1:用户反馈驱动迭代
每次 Skill 的输出不符合你的预期时,直接告诉 AI:
“这个 commit message 不对,多文件修改时应该写最主要的改动,不要列所有文件”
AI 会自动把这条反馈存入记忆。下次再遇到同样情况,行为就会改变。
但更进一步——把这条反馈写回 Skill 本身:
边界情况
多文件修改:只描述最主要的改动意图,不逐一列举文件名
修改超过 5 个文件:用"重构 xx 模块"代替逐一描述
反馈 → 记忆 → 写回 Skill → 永久生效。这就是自进化。
机制 2:定期跑 Eval 回归测试
每两周跑一次 Eval。原因:
你的项目在演变,规范可能已经变了
你装了新的 Skill,可能跟旧的冲突
AI 模型更新后行为可能变化
把它当成"单元测试"——代码改了要跑测试,Skill 改了也要跑 Eval。
机制 3:description 自动优化
skill-creator 有一个杀手级功能:自动优化 description 的触发准确率。
帮我优化 commit-message-zh 的 description,提高触发准确率
它会:
1
生成 20 个测试查询
2
跑当前 description 的触发率(baseline)
3
自动改写 description(加触发词、加排除词、调措辞)
4
再跑一遍测试
5
对比 before/after,选分数更高的版本
根据社区实测分享(Reddit、Medium 上多位开发者的反馈),触发率从 ~70% 提升到 ~90% 是可预期的。
四、实战案例:一个 Skill 的 3 次进化
以我自己的code-reviewSkill 为例:
v1:初版(第一次跑 Eval 结果:触发率 65%,输出质量 C)
name: code-review
description: Use when reviewing code
Code Review
检查安全性
检查性能
检查可读性
问题:description 太模糊("reviewing code"太宽泛),规则太抽象("检查安全性"具体查什么?)。
v2:跑 Eval 后优化(触发率 82%,输出质量 B)
name: code-review
description: Use when 用户说"review"、“检查代码”、“看看有没有问题”,或在 git commit/push 之前要求审查代码质量。不适用于功能讨论或架构设计。
Code Review
检查项(按优先级)
安全:硬编码密钥?SQL 注入?未转义用户输入?
错误处理:Promise 有 catch 吗?边界值处理了吗?
类型安全:有 any 吗?类型断言合理吗?
可读性:命名能表达意图吗?嵌套超过 3 层了吗?
重复:有可提取的公共逻辑吗?
输出格式
每个问题标明严重程度:🔴高 🟡中 🟢低
给出具体修复建议,不只是指出问题
改进:description 加了具体触发词和排除场景,规则从抽象变具体。
v3:用户反馈 + 自动优化后(触发率 95%,输出质量 A)
name: code-review
description: Use when 用户在代码修改完成后要求审查质量(触发词:review、检查、看看有没有问题、帮我过一遍),或在 /commit 之前自动触发。不适用于:功能需求讨论、架构设计、写新代码。
Code Review
铁律
每次 review 必须至少指出一个改进点。如果真的没问题,说明为什么没问题。
不要只说"看起来没问题"——这等于没 review。
检查项(按优先级)
**安全**:硬编码密钥?SQL 注入?XSS?未验证的用户输入?
**错误处理**:Promise 有 catch?外部 API 调用有超时?错误信息对用户友好?
**类型安全**:有 any?类型断言有根据?泛型用对了?
**逻辑**:边界值测试了?空值处理了?并发安全?
**可读性**:命名表达意图?嵌套 ≤ 3 层?函数 ≤ 30 行?
输出格式
严重程度:🔴必须修 🟡建议修 🟢锦上添花
每个问题:位置 + 问题描述 + 修复建议 + 修复代码
反面案例(不要这样输出)
❌ “代码看起来还行” → 没有价值
❌ “建议加注释” → 太模糊,具体哪里加什么注释?
❌ 列出 20 个低优先级问题 → 信息过载,先说最重要的 3 个
改进:加了铁律(防止偷懒)、加了反面案例(防止废话输出)、description 经过自动优化触发率到 95%。
五、Skill 数量多了之后的管理
当你有 10+ 个 Skill 时,新问题出现:Skill 之间互相冲突或抢触发。
问题 1:多个 Skill 同时触发
比如你有code-review和security-review两个 Skill,用户说"帮我检查下这段代码"——两个都想触发。
解决方案:在 description 里明确划分边界:
code-review
description: … 不适用于专门的安全审查(安全审查用 /security-review)
security-review
description: Use when 用户明确要求安全审查、渗透测试、威胁建模…
问题 2:Skill 过时了
项目从 REST 迁到 tRPC 了,但你的api-designSkill 里还写着 REST 的规范。
解决方案:每月做一次"Skill 年检":
帮我检查所有 Skill,看哪些跟当前项目的技术栈/规范已经不匹配了
问题 3:不确定该不该新建 Skill
判断标准:你是否在不同会话中重复给 AI 同一条纠正指令了?
如果你发现自己反复说"不对,我们项目应该这样做"——就值得写成 Skill。一次性的、只在特定调试场景出现的指令不需要。
问题 4:什么内容该写在 CLAUDE.md,什么该写成独立 Skill
分层策略:
CLAUDE.md:放"是什么"——项目技术栈、目录结构、常用命令、团队规范等静态事实
Skill:放"怎么做"——具体工作流程、输出格式、检查清单、边界情况处理等动态行为规范
举例:
“我们用 vitest 做测试” → 写在 CLAUDE.md
“写测试时用 AAA 模式、describe 对应一个函数、mock 尽量少用” → 写成 test-conventions Skill
CLAUDE.md 给 AI 背景知识,Skill 给 AI 执行手册。两者配合,不要混在一起。
六、什么时候停止迭代
不是无限跑 Eval 就是好的。收敛标准:
触发率 ≥ 90% 就可以停。100% 不现实——有些边界查询本来就有歧义("帮我看看这段代码"到底是 review 还是解释?),追求 100% 反而会让 description 变得过度具体、丧失泛化能力。
输出质量连续 2 次 Eval 没有提升就停。说明当前规则已经到达了这个 Skill 能覆盖的上限。再想提升要么拆成多个 Skill,要么接受现状。
一个 Skill 的迭代轮数通常不超过 3-4 轮。如果 4 轮还不收敛,大概率是 Skill 的定义范围太大了——拆成 2 个更窄的 Skill 比硬优化一个宽 Skill 效果更好。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~