Labs

赋能AI智能体:用SKILL.md教Claude Code玩转CLI工具

赋能AI智能体:用SKILL.md教Claude Code玩转CLI工具

想象一下,你开发了一个全新的命令行界面(CLI)工具。当你观察AI智能体Claude Code使用它时,你会发现一个反复出现的现象:它并非不理解工具本身,而是在每次新任务中重复学习相同的命令集合。这表明它缺乏一个简洁的引导,告诉它从何开始。

SKILL.md正是为了解决这个问题而生。它不会改变你的CLI工具本身,而是为智能体提供一条更短的路径,让它能更快地掌握原本需要自行摸索的命令。

什么是技能(Skill)?

所谓“技能”(skill),是指一个由Markdown指令组成的文件夹。当用户的请求与预设的触发短语匹配时,Claude Code就会加载这些指令。对于一个CLI工具而言,一个设计良好的技能通常包含三个层次:

  • Frontmatter(前言区):定义技能的名称、带有触发短语的描述以及允许使用的工具列表。
  • Body(主体区):一个聚焦于核心命令的指南,当技能被触发后,智能体将首先阅读这部分内容。
  • References(参考资料):当主体内容不足时,智能体可以查阅的额外文档。

这三个部分各司其职。Frontmatter决定了技能何时加载;Body指导智能体初步操作;References则在不使主文件冗长的情况下,提供更详细的信息。

认识 pokecli

为了提供一个真实且可检验的示例,作者专门构建了一个名为pokecli的Python CLI工具。它并非旨在成为功能最强大的CLI,而是作为一个足够具体的案例,端到端地展示SKILL.md模式的运作。

pokecli可以查询宝可梦、树果、道具和招式信息,下载精灵图,并管理本地缓存。它包含六个顶层命令组,输出结果可预测,结构清晰,非常适合映射到技能的主体内容中。

你可以通过以下命令安装pokecli

首先,使用uv工具安装pokecliuv tool install git+https://github.com/jebucaro/pokecli

然后,将随pokecli一同打包的技能安装到~/.claude/skills/pokecli目录:pokecli install --skills

install --skills 的作用

install --skills命令的功能在于,它将技能文件作为包数据(package data)从已安装的pokecli包中提取出来。这个命令并不会向GitHub发起请求或生成任何新内容,它只是读取打包在Python wheel文件中的文件,并将它们写入你机器上的正确位置。

在Python中,这个流程大致如下实现:它会定义目标路径,例如用户主目录下的.claude/skills/pokecli。然后,它使用importlib.resources模块来访问包内的资源文件(即pokecli.skills目录下的SKILL.md和其他参考文件),并利用shutilPath对象的write_text方法将这些内容复制到之前创建的目标目录中,确保目录存在并处理好编码。

↗ 阅读原文