文件名 SKILL.md

SKILL

本文目录

正文

简介

SKILL在官方文档中强调了一个核心关键词:File-system based(基于文件系统),这项技术实际也就是基于文件系统的Agent。如何理解?要编写一个程序,并不一定所有代码都是我们自己写的。我们可能会通过 import xxx 来引入一些外部包,这些包存放在固定的位置(如 node_modules)。

当程序需要调用这些包的能力时,就会从指定文件夹取出对应的代码然后执行。

Agent Skills 也是类似的逻辑,每个 Skill 都是一个实实在在存在的文件夹,它存放在一个固定的位置(如 .claude/skills)这个文件夹里装着下面几样东西:

  1. 指令(SKILL.md): 告诉 AI 怎么干活的 SOP(必选)。
  2. 参考(reference): 更详细的参考文档(可选)。
  3. 脚本(scripts): 比如 Python 代码,让 Skill 也能调用外部能力(可选)。
  4. 资源(assets):图片、模版等可能使用到的资源(可选)。

其中,SKILL.md通过”—“划分文件的不同区域。且必须是”—“。头部必须包含yaml格式的name和description。

  • name 是它的唯一标识,起个简单好记的英文名字就行
  • description 描述这个 Skills 是做什么的,会被传入prompt中。

核心机制——渐进式披露

skill会以tool的形式,加载到Agent的问答中。下方description中会包含如何使用skill等默认提示词,以及当前可用的skill有哪些(只读取每个skill.md的name和description)

第一层:先看目录(元数据 Metadata)

  • 什么时候加载? 系统刚启动的时候。
  • 加载什么? 加载每个技能的名字和一段简短的描述。
  • 有什么用? 这一层占用的资源极少,可能就几百个 Token。它的作用就是告诉 Claude:“嘿,你的工具箱里有‘查周报’、‘处理 Excel’ 这几个工具哦。”
  • 结果: Claude 知道自己 “会什么”,但还不知道 “具体怎么做”。

第二层:翻开手册(指令 Instructions)

  • 什么时候加载? 当你说 “帮我把这个 Excel 处理一下” 的时候。
  • 加载什么? 加载 “Excel 处理” 这个技能对应的SKILL.md。
  • 怎么加载?通过后台命令(bash、read等内置tool)。
  • 有什么用? 只有在这个时候,那些详细的操作步骤、注意事项才会进入 AI 的脑子。

第三层:动手干活(运行时资源 Runtime Resources)

  • 什么时候加载? 真正执行具体步骤的时候。加载什么?
    • 参考(reference): 用户下达的任务可能是分析 Excel,也可能是创建 Excel,这两个操作可能有完全不同的处理步骤,详细的步骤不一定都在 SKILL.md 中,可以分开放在不同的参考文献(reference)下,当 Claude 识别到你要做的是分析 Excel 时,才会去查阅分析 Excel 的 reference。
    • 脚本(scripts):Skill 中可以内置一些可执行的 Excel 处理脚本,在 SKILL.md 或者具体的参考文献(reference)下会告诉你应该调用以及如何调用这些脚本。还有最重要的一点,Claude 只需要按照指引执行脚本,而脚本本身的代码是不会塞给 AI 去读的,你完全不用担心一个超大代码文件会消耗 Token。
      • 脚本文件本身不需要单独”读取内容”,LLM 从 SKILL.md 中得知入口脚本名(如 python calc.py –action factorial –n 10),然后通过 command 参数直接告诉 execute_skill_script 该执行什么。subprocess 自然就在 cwd=skill_dir 下找到并运行了那个脚本。

这意味着:一个 Skill 可以打包整套说明文档、大量的执行脚本,但只要任务不需要,这些内容就永远不会占用上下文。

官方SKILL

Anthropic 官方直接给我们提供了一个 生产 Skills 的 Skill:Skill Creator。你不需要写一行代码或配置文件,只需要用自然语言告诉它你想做什么,它就会自动为你生成一个符合标准的 Skill 包。

skills/skills/skill-creator at main · anthropics/skills