别再堆提示词了:用 Skill 给 Agent 装上“工位卡

187 阅读7分钟
  • 主题:把“高频且需要一致性”的工作沉淀为可触发、可执行、可迭代的 Skill(标准作业程序)。

目录


一、你要写的不是“提示词”,而是一份可执行的 SOP

作为一名开发者,用了 AI 之后,工作速度确实变快了:改页面、联调接口、写排障记录,都能很快推进。直到有一次做国际化改造——把中文文案收口到语言包里,并替换掉代码里的硬编码。我以为这就是 AI 的舒适区:扫描、提取、替换,一气呵成。

事实上,AI 确实很快,但很快也暴露了问题:同一句话被拆成不同 key、命名风格不统一、少数文案在替换时“看起来对但其实不对”。这些问题往往不立刻报错,却会在测试和后续迭代里不断返工。

那一刻我明白了:AI 最大的风险不是慢,而是 “自信地偏离规范”

于是我开始用 Skill,把国际化这类“高频且需要一致性”的工作写成一张工位卡:

  • 什么时候触发
  • 按什么步骤做
  • 产出什么格式
  • 做到什么程度算完成
  • 不确定就先澄清,不靠猜

二、什么是 Skills?

Anthropic 的 Skill(简称 Skills)概念,本质上是在给 Agent 配一套 可移植、可版本化、按需加载 的“标准作业程序”。它不是让模型变聪明(模型已经很聪明了),而是让模型在某类任务上更稳、更一致、更可审计:

  • 该问什么
  • 该怎么做
  • 用什么工具
  • 做到什么程度算完成

官方文档核心入口

示例仓库

  • https://github.com/anthropics/skills/tree/main/skills/skill-creator

下面将针对 skill-creator 深度分析 Skill。


三、Skill 深度分析

核心思想 1:Skill 是“上岗培训手册”,不是“更长的提示词”

skill-creator 对 Skill 的定位非常工程化:它把 Skill 比作特定领域/任务的“上岗培训”。

“Think of them as "onboarding guides" for specific domains or tasks—they transform Claude from a general-purpose agent into a specialized agent equipped with procedural knowledge…”

解释

  • 写 Skill 的目的不是“让模型更聪明”,而是把模型不可能内置的流程知识(procedural knowledge)、团队规范、工具用法打包进去。
  • Skill 的产物应当像 SOP:可复用、可审计、可迭代,而不是一次性的对话技巧。

核心思想 2:渐进式披露(Progressive Disclosure)

skill-creator 直接给出 Skill 的三层加载模型:

“Skills use a three-level loading system to manage context efficiently:

  1. Metadata (name + description) - Always in context (~100 words)
  2. SKILL.md body - When skill triggers (<5k words)
  3. Bundled resources - As needed by Claude (Unlimited*)”

解释

  • 常驻上下文:只留“能否触发”的信息(元数据)。
  • 触发后加载SKILL.md 只放“指挥流程”的内容(建议 < 5k words)。
  • 细节与确定性:交给 scripts/references/assets/,按需加载/执行。

这条原则会自然推导出后面所有写作准则:哪些该写进 SKILL.md,哪些必须拆出去。

这种方式配合 Agent 工作流,就构成了完整的 Skill 运行方式:

image.png

  • 发现阶段:启动时只加载每个 skill 的 name + description(大约几十到一百来 tokens),让 agent 知道“我有这些能力”。
  • 激活阶段:当任务命中描述,agent 才把完整 SKILL.md 读进上下文。
  • 执行阶段:需要脚本/模板/参考资料时,再去加载文件或执行代码。

小结:**skill 写得好不好,首先看它是否“省上下文但不省关键”。**你要把信息按层切开:常驻的只有“何时用我”;真正的细节等被调用再展开。


四、SKILL.md 的基本骨架

skill-creator 规定每个 Skill 至少包含 SKILL.md,并鼓励用资源目录分层:

“Every skill consists of a required SKILL.md file and optional bundled resources…”

典型结构(示例):

  • skill-name/
    • SKILL.md
      • YAML Formatter: name,description 等元数据
      • Markdown instructions: 执行指令
    • scripts/(可选:可执行脚本,强调确定性与可复用)
    • references/(可选:按需加载的资料库、schema、长例子)
    • assets/(可选:用于产出物的模板/素材,不用于理解)

元数据准则:namedescription 决定 Skill 的“被发现能力”

skill-creator 明确指出:决定 Claude 何时用 skill 的,是 YAML 里的两行字。

“Metadata Quality: The name and description in YAML frontmatter determine when Claude will use the skill. Be specific about what the skill does and when to use it.”

它还要求 description 使用第三人称:

“Use the third-person (e.g. "This skill should be used when..." instead of "Use this skill when...").”

具体规则:

  • name:建议用 hyphen-case(小写 + 短横线),并与目录名一致。
  • description:必须包含“何时用”的具体触发场景(任务类型/文件类型/用户话术)。
  • 避免结构性符号污染quick_validate.py 会检查 description 不应包含 <>

内容写作准则:把 SKILL.md 写成“给另一个 Claude 的操作规程”

skill-creator 强调 SKILL.md 的语体并非审美问题,而是为了“可执行”。

“Writing Style: Write the entire skill using imperative/infinitive form (verb-first instructions), not second person. Use objective, instructional language…”

解释

  • 读者不是人类用户,而是“另一个要执行流程的 Claude”。
  • 用动词开头的指令体(例如“验证…/读取…/提取…/生成…/检查…”),能显著减少模型在语气层面的自由发挥。

skill-creator 还给了写作时必须回答的 3 个问题(这就是最小可行 SKILL.md):

  • purpose:这个 skill 让 Claude 能做什么(1–2 句)
  • when to use:什么时候应该触发
  • how to use:实际执行时怎么做(并明确引用 scripts/references/assets/

资源分层准则:把“确定性”交给脚本,把“查阅型信息”放到引用

scripts/:重复劳动 + 可靠性

skill-creator 对脚本的定位非常清楚:

“Executable code … for tasks that require deterministic reliability or are repeatedly rewritten.”

适合放进 scripts/ 的内容:批处理、格式转换、自动化操作、可复用的工具脚本。

references/:让 SKILL.md 保持瘦身

它对 references/ 的定位是“按需加载到上下文的资料库”,并且给出强约束:

“Avoid duplication: Information should live in either SKILL.md or references files, not both… Keep only essential procedural instructions and workflow guidance in SKILL.md; move detailed reference material, schemas, and examples to references files.”

另外还有一个非常实用的提醒:

“Best practice: If files are large (>10k words), include grep search patterns in SKILL.md”

简单来说就是:references/ 可以很长,但要给“可搜索的入口”,否则资料越多越难用。

assets/:用于产出,而不是用于理解

skill-creator 明确指出 assets/ 的原则:

“Files not intended to be loaded into context, but rather used within the output Claude produces.”

例如模板、logo、字体、样板工程等。

skill-creator 的创建流程准则:先例子,再抽象,再打包分发

它把写 Skill 变成 6 步流水线:

  • Step 1:用具体例子理解需求(并提醒:不要一次问太多问题,先问最关键的)
  • Step 2:从例子反推可复用内容:哪些该脚本化、哪些该进 references/、哪些该做成 assets/
  • Step 3:初始化:新建 skill 时优先运行 scripts/init_skill.py 生成标准骨架
  • Step 4:编辑:先落资源,再补 SKILL.md;删掉用不到的示例目录与文件
  • Step 5:打包:用 scripts/package_skill.py,先校验再产出 zip
  • Step 6:迭代:真实使用后更新 SKILL.md 或资源,循环优化

五、总结

Skill 写作的关键不在“写得长”,而在“写得可触发、可执行、可迭代”。用高质量的 name/description 让它被正确发现;用渐进式披露把 SKILL.md 控制在“流程指挥”层,把细节放进 references/、确定性放进 scripts/;最后用校验与打包流程把 Skill 当作一个可分发的工程产物维护。