如何使用 Skill:从理解概念到亲手做一个自己的 Skill

如何使用 Skill:从理解概念到亲手做一个自己的 Skill

这两年,越来越多的 AI 工具开始支持“Skill”机制。很多人第一次看到这个词,会下意识把它理解成“插件”或者“扩展功能”。这么理解不算错,但还不够准确。

如果要用一句话概括:Skill 本质上是一套交给 AI 的“领域操作手册”。它不是重新训练模型,也不是单纯加一个按钮,而是把某类任务的工作方式、工具调用方式、上下文约束和实践经验,整理成 AI 可以直接使用的结构化说明。

这篇文章就想把三件事讲清楚:

  1. Skill 是什么
  2. Skill 有什么作用
  3. 怎么通过自己做一个 Skill,真正理解它的价值

一、Skill 是什么?

在 OpenClaw 这类兼容 AgentSkills 的系统里,一个 Skill 通常就是一个目录,里面至少有一个 SKILL.md 文件。

最简形式大概长这样:

1
2
my-skill/
└── SKILL.md

其中:

  • Skill:整个技能目录
  • SKILL.md:这个 Skill 的入口文件
  • 可选内容:还可以带 scripts/references/assets/ 等资源

一个典型的 Skill 结构可能是这样:

1
2
3
4
5
6
blog-helper/
├── SKILL.md
├── scripts/
│ └── find_latest_post.py
└── references/
└── blog-rules.md

Skill 的本质

Skill 做的事情,不是“让模型变聪明”,而是:

  • 告诉 AI 什么时候应该用这个 Skill
  • 告诉 AI 遇到这类任务时应该怎么做
  • 告诉 AI 该调用哪些工具、按什么顺序做
  • 在需要时提供脚本、参考文档、模板等资源

所以更准确地说,Skill 是“能力编排”,不是“能力凭空生成”。

Skill 不是什么?

这几点很容易混淆:

  • Skill 不是模型微调
  • Skill 不是系统提示词的简单复制
  • Skill 也不一定等于插件
  • Skill 更像一层面向任务的工作流封装

也就是说,模型本身还是那个模型,但有了 Skill 之后,它在特定场景下会更像一个“受过专门训练的助手”。


二、Skill 的作用:为什么它有价值?

Skill 最大的价值,不是“增加功能”,而是让 AI 更稳定地把功能用对

1. 把通用 AI 变成领域助手

默认情况下,AI 是通用的。它能回答很多问题,但不一定知道你的项目结构、工具链、目录约定、交付格式。

有了 Skill 之后,你可以把这些上下文固化下来。

比如:

  • 你的博客文章都放在 source/_posts
  • 你的输出默认要用中文
  • 生成文章时必须带 frontmatter
  • 需要先读最新文章,再做总结

这些东西如果每次都靠临时描述,AI 经常会漏;但写进 Skill 之后,就变成了稳定流程。

2. 让高频任务变成标准动作

很多任务其实不是“不会做”,而是“每次都要重新解释一遍”。

例如:

  • 查天气
  • 看 GitHub PR 状态
  • 搜网页资料
  • 检查博客最新文章
  • 生成固定格式的周报或日报

这些任务最适合做成 Skill。因为它们的目标明确、流程稳定、重复率高。

3. 把经验沉淀下来,而不是每次从头来过

一个好的 Skill,实际上是在沉淀经验。

比如一个 GitHub 相关的 Skill,除了告诉 AI “用 gh 命令”,更重要的是它会约束 AI:

  • 先看 PR 状态,再看 CI
  • 不要凭空猜测失败原因
  • 要优先读取日志
  • 创建评论时给出具体建议

这就是经验的封装。

4. Skill 的作用举例

下面举几个直观例子:

例子一:天气 Skill

当用户问:

今天深圳龙岗区天气怎么样?

如果系统里有天气 Skill,AI 就知道要调用天气查询方式,而不是自己凭常识编造。

例子二:GitHub Skill

当用户问:

帮我看看这个 PR 为什么没过 CI

如果系统里有 GitHub Skill,AI 就会优先走 gh CLI 或对应流程,查看 PR、CI、日志,而不是只停留在泛泛分析。

例子三:搜索 Skill

当用户问:

帮我查一下这篇文章的资料来源

如果系统里有搜索 Skill,AI 就会知道什么时候该用搜索、什么时候该用网页提取、什么时候需要做深度研究。

你会发现,Skill 解决的不是“能不能做”,而是“能不能稳定、准确、低摩擦地做”


三、怎么使用 Skill?

如果你在用 OpenClaw,一般可以从三个层面理解“使用 Skill”。

1. 查看当前有哪些 Skill

最直接的方式是用 CLI 看:

1
openclaw skills list

如果你只想看当前环境下真正可用的 Skill,可以看:

1
openclaw skills list --eligible

如果你想知道为什么某个 Skill 不能用,可以检查:

1
openclaw skills check

如果你要看某个 Skill 的详细信息:

1
openclaw skills info <name>

比如:

1
openclaw skills info github

2. 让 AI 在对话里自然触发

很多 Skill 不需要你手动“点开使用”。只要你提出的任务符合触发条件,AI 就会自动选择合适的 Skill。

比如:

  • “今天深圳天气怎么样” → 可能触发天气 Skill
  • “帮我看这个 PR 状态” → 可能触发 GitHub Skill
  • “帮我查网页资料” → 可能触发搜索 Skill

这也是 Skill 很有意思的地方:它不是额外增加一个操作负担,而是在背后改善 AI 的决策质量。

3. 自定义 Skill 位置

OpenClaw 通常会从这些位置加载 Skill:

  • 内置 Skills
  • ~/.openclaw/skills
  • 当前工作区下的 skills/

如果你自己写 Skill,最常见的做法就是放在当前工作区的 skills/ 目录里。

一个经验点是:新增或修改 Skill 后,最稳妥的方式是开启一个新会话,或者重启 Gateway,让新的 Skill 配置生效。


四、实践:自己做一个 Skill

纸上谈兵意义不大。真正理解 Skill,最好的办法就是自己做一个。

这里我用一个非常贴近日常使用的例子来说明:做一个“博客助手” Skill

目标是这样的:

当我问“我上一篇文章写了什么”时,AI 能自动去博客目录里找到最新文章,读取内容,然后给我一个准确总结。

这个例子很适合,因为它能清楚展示 Skill 的三个核心价值:

  1. 固化上下文
  2. 固化流程
  3. 复用工具

五、示例:做一个 blog-helper Skill

第一步:创建目录

先在工作区创建 Skill 目录:

1
mkdir -p skills/blog-helper/scripts

目录结构先搭起来:

1
2
3
4
5
skills/
└── blog-helper/
├── SKILL.md
└── scripts/
└── find_latest_post.py

第二步:写一个辅助脚本

这个脚本负责找到博客目录里最新的一篇文章。

skills/blog-helper/scripts/find_latest_post.py

1
2
3
4
5
6
7
8
9
10
from pathlib import Path

BLOG_DIR = Path("~/my-blog/source/_posts").expanduser()

posts = [p for p in BLOG_DIR.glob("*.md") if p.is_file()]
if not posts:
raise SystemExit("No markdown posts found.")

latest = sorted(posts, key=lambda p: p.stat().st_mtime, reverse=True)[0]
print(latest)

这里你只需要把 BLOG_DIR 改成你自己的博客文章目录即可。

这个脚本本身并不复杂,但它有一个好处:把“如何找最新文章”这件事固定了下来。以后不需要每次让 AI 重新想一遍怎么找。


第三步:编写 SKILL.md

这是最关键的一步。

skills/blog-helper/SKILL.md

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
---
name: blog-helper
description: Help inspect blog posts, find the latest article, summarize article content, and draft new blog posts. Use when the user asks about their latest blog post, wants a summary of an existing article, or wants help drafting a new markdown article.
---

# Blog Helper

Use this skill when the user asks about their blog posts, especially when they want to know what the latest post is about, need a summary, or want a new article draft.

## Workflow

1. Run `python {baseDir}/scripts/find_latest_post.py` to get the newest markdown post.
2. Use the read tool to open that file.
3. Summarize the article in Chinese.
4. Output in this structure:
- title
- one-sentence summary
- 3 to 5 key points

## Rules

- Prefer concise Chinese output unless the user asks for English.
- If the article has frontmatter, use the title from frontmatter first.
- Do not guess content without reading the file.
- If no file is found, clearly say so.

这份 SKILL.md 做了什么?

表面上看,它只是几段 Markdown;但实际上,它定义了一套清晰流程:

  • 什么时候用这个 Skill
  • 先做什么,再做什么
  • 输出结构是什么
  • 哪些行为不能做

这就是 Skill 的核心:把模糊任务变成稳定工作流


六、这个 Skill 怎么被使用?

当你后面在对话里说:

我上一篇文章写的是什么内容?

如果这个 Skill 已经被 OpenClaw 正确加载,AI 就更容易走你预设好的路径:

  1. 先运行脚本找最新文章
  2. 再读取文章
  3. 然后按固定格式总结

而不是像一个完全通用的助手那样,从零开始猜你的博客目录、猜你的文件位置、猜你想要什么格式。

这就是 Skill 的价值:减少歧义,减少重复提示,减少错误路径。


七、从这个例子里,你应该理解什么?

通过这个博客助手例子,可以看到 Skill 至少解决了三个问题。

1. 它保存了上下文

比如博客目录在哪、输出默认用什么语言、总结格式是什么。

2. 它约束了流程

不是“自由发挥”,而是:

  • 先找文件
  • 再读文件
  • 再总结

顺序是清楚的。

3. 它让能力可复用

以后你不只是能问一次“上一篇文章写了什么”,还可以继续扩展:

  • 帮我找上一篇 AI 相关文章
  • 帮我总结最近三篇文章的主题变化
  • 帮我按这个风格起一个新标题
  • 直接生成一篇新草稿

只要 Skill 设计得好,这些都可以逐步加进去。


八、写 Skill 时的几个实践建议

最后给几个很实用的建议。

1. 先写“什么时候用”,再写“怎么做”

Skill 的触发描述比正文更重要。因为 AI 只有先判断“该不该用这个 Skill”,才会去看后面的正文。

2. 不要把 Skill 写成大而全说明书

Skill 最怕冗长。真正有用的 Skill,应该是:

  • 触发条件明确
  • 步骤简洁
  • 规则清楚
  • 资源按需拆分

3. 能脚本化的就脚本化

如果某段逻辑每次都要重复,最好单独放进 scripts/

因为脚本比自然语言更稳定,也更省上下文。

4. 不要让 Skill 依赖猜测

像“应该在某个目录里”“可能是这个文件”这种模糊表达,都应该尽量消灭掉。Skill 越具体,AI 用起来越稳。


九、结语

Skill 最值得重视的地方,不在于它听起来多高级,而在于它提供了一种很实用的能力沉淀方式:

  • 把一次次临时提示,变成长期可复用的规则
  • 把模糊任务,变成可执行流程
  • 把通用 AI,变成更懂你工作方式的助手

所以如果你真的想把 AI 用深,不要只停留在“提问”。更进一步的做法,是开始建立属于自己的 Skill。

因为从那一刻开始,你用的就不再只是一个通用模型,而是一套逐渐贴合你自己的工作系统。