加载中

验证技能

第 3 课5 分钟
加载中

验证技能

随着项目的增长,您会开始注意到同样的工作一遍又一遍地发生。您已经知道技能是自动化重复工作的好方法。在本课中,我们来看一个技能特别适合处理的具体工作:验证您自己的工作。如果有一个技能值得最先构建,那就是它。

为什么验证技能是最值得最先构建的

想想您通常如何检查Claude的工作。您让它重构某些内容,它完成后,您必须记得去复查一遍。也许您会让它运行测试。也许您自己阅读diff。问题在于,检查这一步依赖于您记得去要求它。一旦漏掉这一步,糟糕的代码就会溜过去。

验证技能消除了这种依赖。它的形态是这样的。您让Claude重构某些内容。它完成后,这个改动与该技能的描述相匹配,于是技能会自行触发。从那时起,它会:

  • 运行测试套件。
  • 阅读diff。
  • 检查是否有测试仅仅为了通过而被削弱。
  • 报告通过或失败,并附上证据。

整个流程无需您开口就会运行。技能上的描述是触发它的依据,一旦触发,它每次都会走相同的步骤。

请注意这一连串检查中的最后一项。仅仅运行测试并看到绿色是不够的。测试可能被悄悄放宽,以至于无论如何都能通过。因此该技能会阅读diff,确认测试没有被削弱。"完成"不是仅凭阅读diff就得出的"代码看起来没问题"。完成是指各项关卡已被运行并被观察到,且结果被明确陈述出来。

这种形态适用于您团队重复的任何流程。一份发布清单。一份迁移方案。一次PR前检查。经验法则是:如果您已经把同一条多步骤指令输入了两次,那就是一个技能。

一个技能文件夹可以承载的不只是指令

一个技能不仅仅是一个单独的SKILL.md文件。围绕它的文件夹可以承载其他东西,这正是技能对验证有用的原因所在。

  • 在SKILL.md旁边放一个reference.md来存放详细材料,然后从SKILL.md中链接到它。Claude只有在需要那种深度时才会读取它。您的主文件保持简短。
  • 也可以把脚本放进文件夹里。Claude会执行它们,而不是把它们的内容加载进上下文。这意味着一个技能可以携带自己的工具,比如一个运行所有关卡检查的check.sh。

要点是:让SKILL.md本身保持精简。把繁重的材料(冗长的说明和可执行脚本)推到旁支文件中去。精简的文件描述要做什么。旁支文件承载深度内容和工具。

哪个指令载体负责哪条规则

到现在为止,您已经有了三个放置指令的地方,很容易把它们混在一起。这里有一个快速的方法来把它们理清楚。

始终适用的约定——比如命名规则或文件存放位置——属于您的CLAUDE.md文件。与特定类型任务相关的流程和参考材料属于技能。

还有第三种情况。一条Claude绝不能跳过的规则,属于钩子(hook),而不属于上述两者中的任何一个。这是因为CLAUDE.md和技能都是Claude遵循的指令,而钩子是实际运行的代码。如果跳过这条规则是不可接受的,就不要把它交给"遵循指令"来保证。

小结

一个技能是一个内含SKILL.md的文件夹:一个名称、一个用于触发它的描述,以及流程本身。只有描述会加载进上下文,直到需要某个技能时才会加载其余内容,因此把您重复的每一个流程都打包成技能,成本很低。

从验证开始。构建这个技能,将它纳入您项目的.claude/skills中,现在整个团队都会继承同样的做法。每个人的工作都会以同样的方式被自动检查,无需任何人记得去要求检查。