Mindket

怎样创建 Agent Skill:写出你的第一个 SKILL.md

暖阳色英文横幅,标签依次是 Agent Skills、Claude Code 和指南,标题意为“怎样创建 Agent Skill:写出你的第一个 SKILL.md”,下面一行意为“一步一步创建 Agent Skill:文件夹、文件、描述、工具,以及怎样测试”。旁边是 .claude/skills 下名为 my-agent-skill 的文件夹树、打开的 SKILL.md 和一张标题意为“构建你的 Agent Skill”的清单(建文件夹结构、写 SKILL.md、加清楚的说明、定义工具、测试技能),桌上放着笔记本、钢笔和一杯咖啡。

创建 Agent Skill,就是建一个以技能命名的文件夹,里面放一个 SKILL.md:开头是写着名称和描述的 YAML 头信息,后面用 Markdown 写操作说明。用在 Claude Code 里,文件夹放进 ~/.claude/skills/ 或项目的 .claude/skills/。智能体会不会自己加载这个技能,要看你的请求和描述对不对得上。

要点

  • 技能将来可能放到 Claude.ai 上,描述就从一开始按 Claude.ai 的上限来写。
  • 挑一件你总得跟智能体反复交代的事,把它写成技能。
  • 每条测试提示都多跑几遍,还要放进近似提示。
本页目录
  1. 六步创建一个技能
  2. 各产品不一样的头信息限制
  3. 正文写什么,脚本放哪里
  4. Claude Code 从哪里找到你的技能
  5. 测试它会触发,也测试它不乱触发
  6. 通过仓库、插件、Claude.ai 或 Mindket 分享
  7. 常见问题
  8. 资料来源

六步创建一个技能

下面的示例技能在 Claude Code 里审查 SQL 迁移文件,专找会删数据、或者没法回滚的步骤。这类每次都得跟智能体重新交代一遍的活,就该做成技能。每个任务都适用的规则就不一样了,该写进 CLAUDE.md,Claude Code 每次会话开始都会加载它。

先写描述,再写正文。请求对上之前,智能体只看得到技能的名称和描述。描述要写清技能做什么、什么时候用。Anthropic 的编写指南还要求用第三人称来写,因为描述会被注入系统提示。

---
name: reviewing-sql-migrations
description: Reviews SQL migration files for steps that drop data or cannot be rolled back. Use when the user adds or edits a migration or asks whether a schema change is safe.
---

# Reviewing SQL migrations

1. Run scripts/changed_migrations.sh to list the migration files changed on this branch.
2. Read each file in full. Note every DROP, every RENAME, every column type change and every NOT NULL added to an existing column.
3. For each one, say what happens to rows that already exist and whether the step can be undone.
4. For how our database locks tables during a migration, read references/locks.md.
5. Finish with a table: file, risky step, why it matters, suggested fix.

## Gotchas

- Migrations live in db/migrations/. Never edit one that has already shipped. Write a new migration instead.
- Some old migrations have no down step. Mention it once, then move on.
  1. 建文件夹,名字用动名词形式。Anthropic 的指南举的例子是 processing-pdfs,helper、utils 这类含糊的名字不推荐。想在所有项目里用,运行 mkdir -p ~/.claude/skills/reviewing-sql-migrations。只给一个仓库用,就在仓库里建 .claude/skills/reviewing-sql-migrations。
  2. 把上面的内容存成这个文件夹里的 SKILL.md。name 必须和文件夹同名。
  3. 正文写成编号步骤,说清你要什么样的输出,最后加一个 Gotchas 清单,列出不提醒就会弄错的事实。
  4. 技能用得到的话,加上正文提到的两个文件:scripts/changed_migrations.sh 和 references/locks.md。
  5. 检查头信息。在 Claude Code v2.1.233 及以上版本里,claude plugin validate ~/.claude/skills 能找出 YAML 解析失败的 SKILL.md。参考工具 skills-ref validate ./reviewing-sql-migrations 则按规范检查一个文件夹。
  6. 在 Claude Code 里用自己的话提出任务,比如“这个迁移能合并吗?”,再运行 /reviewing-sql-migrations,按名字直接调用技能。
Alex Albert(@alexalbert__)2025 年 10 月 16 日在 X 上的帖子:今天我们在 claude.ai、Claude Code 和 API 里推出 Skills,它让你把专业知识打包成可复用的能力,由 Claude 按需加载。下面是一张题为 Agent + Skills + Virtual Machine 的示意图,智能体的文件系统里有 bigquery、docx、pdf 等技能文件夹,每个文件夹里都有一个 SKILL.md 文件
Alex Albert 在 X 上,2025 年 10 月 16 日

X 官方嵌入卡片的截图,拍摄于 2026 年 11 月 3 日,时间为美国太平洋时间。点击截图可到 X 上打开原帖。

各产品不一样的头信息限制

Anthropic 的帮助文章规定,上传到 Claude.ai 的技能,描述最多 200 个字符,开放规范则放宽到 1,024 个。

Claude Code 自己还认几个字段,都列在它的技能文档里。设了 disable-model-invocation: true,技能就只在你输入命令时运行。有了 allowed-tools,技能在被调用的那一轮里可以直接用列出的工具,不用一个个问你。

头信息的限制,按技能运行的地方
规则适用于出处
name:最多 64 个小写字母、数字和连字符,与文件夹同名所有遵循开放规范的智能体Agent Skills 规范
name 里不能有 anthropic 或 claude,两个字段都不能有 XML 标签ClaudeAnthropic 技能编写指南
description:最多 1,024 个字符开放规范Agent Skills 规范
description 和 when_to_use 合计:在技能清单里超过 1,536 个字符的部分会被截掉Claude CodeClaude Code 技能文档
description:最多 200 个字符上传到 Claude.aiClaude 帮助中心
描述能有多少个字符,取决于技能在哪里运行金色那条是最小的上限。Claude Code 的数字,是 description 和 when_to_use 加起来被截断的位置。
  • 上传到 Claude.ai200 个字符
  • 开放规范1,024 个字符
  • Claude Code 的技能列表1,536 个字符

来源:Claude 帮助中心:如何创建自定义技能 (2026年11月3日 查阅);Agent Skills 规范 (2026年11月3日 查阅);Claude Code 文档:技能 (2026年11月3日 查阅)

正文写什么,脚本放哪里

技能被调用时,Claude Code 把正文放进对话,就放这一次,后面几轮不会再读这个文件。所以要写“每次改完都跑测试”,别只写“跑测试”。

长会话压缩以后,Claude Code 可能只留下已调用技能的开头部分。必须一直生效的步骤写在 SKILL.md 最前面,背景说明放到后面。

Claude 是运行一个脚本还是阅读它,取决于 SKILL.md 里那一行怎么写。在 Anthropic 的指南里,“运行 analyze_form.py 提取字段”是让它执行,“参见 analyze_form.py 了解提取算法”是让它读。路径一律用正斜杠,Windows 上也一样,反斜杠在 Unix 系统上会出错。

示例里的路径都从技能文件夹算起。在 Claude Code 里,${CLAUDE_SKILL_DIR}/scripts/changed_migrations.sh 这样的路径,不管技能装在哪里都能找对,插件里也一样。

reviewing-sql-migrations/
├── SKILL.md
├── scripts/
│   └── changed_migrations.sh
└── references/
    └── locks.md

Claude Code 从哪里找到你的技能

~/.claude/skills/ 和项目的 .claude/skills/ 里都有 deploy 的话,输入 /deploy 运行的是你个人的那个,同名的企业级技能则会压过这两个。插件里的技能不会撞名,因为名字前面带着插件名。

Claude Code 会监视 ~/.claude/skills/ 和项目的 .claude/skills/,在这两处新增、修改或删除技能都不用重启。只有一种情况例外:顶层的 skills 文件夹在会话开始时还不存在,这时要运行 /reload-skills 才能读到。

Claude Code 的技能位置,依据其技能文档
范围SKILL.md 放在哪里
企业级托管设置目录里的 .claude/skills/my-skill/SKILL.md
个人级~/.claude/skills/my-skill/SKILL.md
项目级.claude/skills/my-skill/SKILL.md
嵌套项目内的 some-folder/.claude/skills/my-skill/SKILL.md
附加目录用 --add-dir 传入的文件夹里的 .claude/skills/my-skill/SKILL.md
插件my-plugin/skills/my-skill/SKILL.md

测试它会触发,也测试它不乱触发

输入 What skills are available?,可以确认 Claude Code 看得到这个技能。要是你用自己的话提请求没反应,直接输入 /reviewing-sql-migrations 却能跑,技能本身就没问题,是匹配没成功。

同一个请求,这次触发了技能,下次可能就不触发。所以 Agent Skills 的描述优化指南建议准备 20 条左右的测试提示,应该触发和不该触发的各 8 到 10 条,每条都多跑几次。应该触发的提示,要在一半以上的运行里触发才算通过。模型也要逐个测:在 Opus 上好用的写法,换到 Haiku 可能还得写细,这是 Anthropic 编写指南里的提醒。

不该触发的那一组,最好挑近似提示。拿示例来说,“写一个加索引的迁移”和技能用词有重合,要的却是写迁移,不是审查。

Agent Skills 指南建议的测试方案

20

条查询组成一套测试,其中约 8 到 10 条应该触发技能,8 到 10 条不该触发

来源:Agent Skills:优化技能描述 (2026年11月3日 查阅)

3

次:每条查询跑 3 遍是个合理的起点,因为同一条查询这次能触发技能,下次也可能不触发

来源:Agent Skills:优化技能描述 (2026年11月3日 查阅)

60

次调用:20 条查询各跑 3 遍,指南说这最好写成脚本来跑

来源:Agent Skills:优化技能描述 (2026年11月3日 查阅)

40%

的查询留出来当验证集,只用来检查你的修改是不是对没见过的查询也有效

来源:Agent Skills:优化技能描述 (2026年11月3日 查阅)

  • 按名字能跑,自己却从不触发:YAML 解析失败时,Claude Code 依然会加载正文,只是元数据全空,Claude 没有描述可以匹配。用 --debug 启动 Claude Code,就能看到解析错误。
  • 该触发时没触发:Claude Code 的排错清单第一条就是查描述里有没有用户会说的词。把描述放宽到这一类请求,别照搬失败提示里的词。
  • 触发太频繁:把描述收窄,或加上 disable-model-invocation: true。
  • 碰上不相干的请求也触发:在描述里写明技能不管什么,比如写新迁移,再写清哪些请求该交给相邻的技能。

通过仓库、插件、Claude.ai 或 Mindket 分享

只在团队内部用,把文件夹提交进仓库就够了。

要分享到仓库以外,可以做成插件:技能放进 my-plugin/skills/reviewing-sql-migrations/,和它并列的是 .claude-plugin/plugin.json,必填字段只有 name。claude --plugin-dir ./my-plugin 能在一次会话里加载这个插件,这时技能的命令是 /my-plugin:reviewing-sql-migrations。

按 Anthropic 帮助文章的要求,Claude.ai 收的是 zip 包:技能文件夹放在压缩包根目录,以技能名命名,不能把文件散着放。上传后到 Customize > Skills 里启用,代码执行也得开着。

Mindket 的技能页放的是粘贴进 AI 对话用的提示词技能,格式不一样。所以 SKILL.md 文件夹在 Mindket 上以套件的形式上架:在出售页填好介绍,用积分定价或设为免费。套件是一组文本文件,买家以 zip 包下载,里面的东西不会自己运行。像 changed_migrations.sh 这样的脚本会让条目先交给管理员审核,任何文件里出现服务商密钥或私钥,上传都会被拦下。

这里的每个事实都来自文中链接的页面和下方的来源列表,阅读日期为 2026 年 11 月 2 日和 3 日,Mindket 的做法取自它自己的页面。本文不是实测,示例技能是为本文写的。

常见问题

Claude Code 里的技能一定要有 name 字段吗?

Claude Code 不强制要求。头信息里的字段它都当作可选,名称默认取文件夹名,唯一推荐写的是描述。没写描述,它就拿正文第一行非空的文字顶上。开放规范则更严,两个字段都必须有。

怎样确认技能真的让结果变好,而不只是触发了?

同样的任务,用技能和不用技能各跑一遍,再比结果。技能装在插件里的话,claude plugin eval 会按你的测试用例两种情况各跑一遍,给差别打分。Anthropic 的 skill-creator 也有基准模式,把用和不用技能时的通过率、耗时和 token 数并排对比。

怎样让技能里的某条规则每次都生效?

交给 hook 来管。对应的事件每发生一次,比如每次编辑文件之前,Claude Code 就运行一次 hook,不管 Claude 这时还照不照着技能办事。技能自己也能在头信息的 hooks 字段里声明 hook,从被调用那一刻起,一直生效到会话结束。

可以让 Claude 帮我写技能吗?

Anthropic 说 Claude 本身就熟悉技能格式,所以可以让它把刚做完的任务整理成技能。它的指南建议开两个实例。第一个负责写技能、改技能。第二个是新开的,加载技能后拿真实任务去试。第二个哪里做漏了,就把情况带回给第一个去改。

为什么技能描述在 Claude Code 里被截断了?

因为技能清单的空间用完了。Claude Code 把所有描述塞进上下文窗口 1% 的预算里,超出时先去掉最少用的技能的描述。可以用 skillListingBudgetFraction 设置调大预算,或者在 skillOverrides 里把不常用的技能设成 "name-only"。

同一个技能能在 VS Code 或 Codex 里用吗?

多数情况下可以。Agent Skills 快速入门说,同一个技能能用在任何兼容的智能体里,Claude Code 和 OpenAI Codex 都算,它的 VS Code 示例则从 .agents/skills/ 读取技能。只是 allowed-tools 要小心:规范把它标为实验性字段,各家智能体支持程度不同。

资料来源

  1. Agent Skills 规范 (2026年11月3日 查阅)https://agentskills.io/specification
  2. Agent Skills:快速入门 (2026年11月2日 查阅)https://agentskills.io/skill-creation/quickstart
  3. Agent Skills:优化技能描述 (2026年11月3日 查阅)https://agentskills.io/skill-creation/optimizing-descriptions
  4. Claude Platform 文档:技能编写最佳实践 (2026年11月2日 查阅)https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices
  5. Claude Code 文档:技能 (2026年11月3日 查阅)https://code.claude.com/docs/en/skills
  6. Claude Code 文档:创建 Claude Code 插件 (2026年11月2日 查阅)https://code.claude.com/docs/en/plugins/create
  7. Claude Code 文档:有效管理成本 (2026年11月2日 查阅)https://code.claude.com/docs/en/costs
  8. Claude 帮助中心:如何创建自定义技能 (2026年11月3日 查阅)https://support.claude.com/en/articles/12512198-how-to-create-custom-skills
  9. Alex Albert 在 X 上:在 claude.ai、Claude Code 和 API 中推出技能 (2026年11月3日 查阅)https://x.com/alexalbert__/status/1978877498411880550

分享本文

把你的技能做成套件,在 Mindket 上架

打包文件夹,写清它做什么,免费上架或用积分定价。新建或修改过的条目都会先自动检查,需要时再由管理员复核。买家购买前只能看到预览。

开始出售

本文的 Markdown 版本 · 博客 RSS 订阅 · 全部文章