本节目标
在 opencode3 中其实就提到过会用到 skill 技能。回忆一下当时是怎么说的?【时空门】
- 了解 skill 是什么东东
- 推荐 skill 下载的网站
- 自己手动创建一个 skill
skill介绍
skill的前世今生
2025 年 Anthropic 最先提出了 Agents Skills。最早只是为了提高 claude 在某些特定任务上的表现。后来发现这套设计非常好用。2025 年 12 月 18 日正式把 Agents Skill 发布为开放标准。
这意味着 Agent Skills 已经成为 AI 智能体领域的一个通用设计模式了。我这里简称为 skill 。
什么是 skill?
Skill 本质上是一个以 SKILL.md 命名的 Markdown 文件。你可以把它理解为“说明书+工具箱”。我们来一个更具象化的描述。想象你有一个很聪明的机器人助手(这就是“Agent”)。它本来只会一些基础动作,比如“移动”“抓取”“说话”。但你想让它帮你做更复杂的事,比如“泡一杯茶”。“泡茶”这个任务需要好几个步骤:拿水壶 → 烧水 → 取茶叶 → 放茶叶 → 倒水 → 等待。如果你把这一整套步骤提前教给机器人,并给它起个名字叫“泡茶技能”,那么以后你只要说“泡茶”,它就会自动按顺序做完所有事。Agent Skills 就是这些预装好的、可重复使用的“完整能力包”。
Agent Skills = 让智能体(Agent)学会做一件具体事情的“说明书+工具箱”,用的时候直接调用,不用每次重新教。
skill 长什么样子
my-skill/ # 技能文件夹(名称必须与 frontmatter 中的 name 一致)
├── SKILL.md # 核心文件(必需):包含元数据和核心指令
├── scripts/ # 可选:存放可执行脚本(如 Python、Bash、JS)
├── references/ # 可选:存放详细参考文档(按需加载,节省上下文)
└── assets/ # 可选:存放模板、图片等资源文件
-
核心文件:SKILL.md
它由 YAML 前置元数据 (Frontmatter) 和 Markdown 正文 两部分组成。官网截图:
- YAML 前置元数据 (Frontmatter):给 AI 看的“身份证” 这是文件顶部的配置信息,用 --- 包裹,主要告诉 AI “你是谁”以及“你能做什么”。
name (必填): 技能的唯一标识符。必须是小写字母、数字和连字符的组合(例如 code-review)。
description (必填): 一个清晰、简洁的描述,说明技能的功能和适用场景。AI 根据这段描述来决定何时激活该技能。例如:"当用户要求审查代码、创建 Pull Request 或需要遵循团队代码规范时使用。"
其他可选字段: 你可以添加 license (许可证)、compatibility (兼容性要求) 或 metadata (额外元数据) 等信息。
-
Markdown 正文:给 AI 读的“操作指南” 这部分是标准的 Markdown 格式文本,是 AI 加载 Skill 后获得的具体行动指令。为了清晰易读,官方规范建议可以包含以下章节:
- 技能标题 (#): 清晰地说明技能的主要目标。
- 何时使用 (## When to Use): 列出应激活此技能的具体场景。
- 操作步骤 (## Instructions / Steps): 详细、分步地描述执行流程,是文档的核心。
- 示例 (## Examples): 提供代码片段或对话示例,帮助 AI 理解预期行为。
- 参考资源 (## Resources): 列出相关的文档链接或工具。
-
可选组件:扩展 Skill 能力的“工具箱”
当 SKILL.md 文件本身不足以完成任务时,可以借助文件夹下的其他组件:
- scripts/: 存放可执行脚本。SKILL.md 中的指令可以指导 AI 去调用这些脚本来完成特定操作,比如数据格式转换、调用外部 API 等。
- references/: 存放详细文档。AI 可以在需要时按需加载这些文件,避免一次性加载过多内容导致“记不住”或“理解偏差”。
- assets/: 存放模板文件(如项目脚手架)、图片等静态资源。
官网截图 - references
官网截图 - scripts
获得 skill 的渠道
-
Anthropic 官方技能
你可以理解这些技能是必装的。有了这些技能,我们的opencode就能读取诸如excel、word、pdf文件的内容了。
-
skill社区网站
现在已经收集了80W+的技能了。我只能用恐怖来形容。
-
skill技能市场
其实还有好多渠道,但是基本差不多了。有现成的就用现成的,如果没有就自己动手“丰衣足食”。
安装 skill
这里就拿 Anthropic 这几个必装的 skill 为例。把它们全部安装到 opencode 中。
手动安装
-
从 GitHub 上下载所有技能
-
下载zip
-
解压放入 opencode 目录
还记得在 《opencode2-初步体验》中说的 opencode.json 所在的目录吗?
C:\Users\abc.config\opencode这里的abc用户根据实际情况有所不同。解压下载的这个 zip 文件,把其中的 skills 目录拷贝到 opencode 中即可。
-
验证安装的 skills
记得,如果你是开着 opencode 的话,需要重新启动一下 opencode。然后你问它有哪些技能就能看到技能了。
自动安装
-
直接让 opencode 自动安装
你帮我安装https://github.com/anthropics/skills/tree/main/skills这个链接下的技能 -
删除多余的临时文件夹
你似乎忘记把tmp-anthropic-skills给删除了 -
记得要重启一下 opencode
用一下安装的 skill
安装了 Anthropic 的技能后,ppt、pdf、docx、xlsx 这些基本办公文件,就都能读取了。
假设有个pdf 文件,我们可以把它当成知识库似的进行查询。尤其是接口类的文档,就可以直接问它某个接口的请求和返回信息相关内容。甚至有报错,直接问这个错误一般是什么参数传错导致的。总之,有了读取 pdf 的 skill 就能操作 pdf 文件。有了 docx 技能就能操作 word。那么你甚至可以把 pdf 转换为 word。
# 提示词
把桌面上的公众号支付.pdf转换为公众号支付.docx文件
我看了下转换的文件,格式有点乱。好在这里大模型能进行排版。不过这里仅仅演示功能即可。其实能读取文件本身就能做很多事情。比如:统计、分析、咨询、转换。发挥想象就可以了。
创建一个自己的skill
通过前面的内容介绍,我们已经知道 skill 核心就是 MD 文档,通过提示词告诉大模型在什么情况下做什么事情。那么我们来一个自定义的技能。我这里采用纯手动的方式创建。使用场景是:这个技能可以帮助你快速把口语化、零散的草稿改写成正式、得体、适合不同场景的商务邮件。
创建技能目录和文件
在我们安装skill的那个skills目录中创建一个email-polisher目录。在这个新创建的email-polisher目录下创建一个SKILL.md文件。
SKILL.md内容
---
name: email-polisher
description: 将用户提供的草稿或要点改写成专业、得体的商务邮件。支持多种语气(正式、友好、催促、致歉等)。当用户说“润色邮件”、“帮我写封邮件”、“改一下这封邮件”时触发。
---
# 邮件润色与优化器
你是一位经验丰富的商务沟通专家,擅长将粗糙的草稿或零散要点,转化为清晰、得体、目的明确的邮件。
## 核心工作流程
1. **接收原始内容**:获取用户提供的草稿、关键词、甚至只是口头描述的场景。
2. **识别关键要素**:
- 收件人身份(上级、同事、客户、供应商)
- 邮件目的(请求、通知、确认、催促、道歉、感谢)
- 期望的语气(正式、半正式、友好、紧急)
3. **优化结构**:标准商务邮件结构:
- **主题**:简洁明了,包含核心信息。
- **称呼**:根据收件人调整。
- **开头**:简要背景或致谢。
- **正文**:清晰陈述事项,分点列出(如有多个请求或信息)。
- **结尾**:总结或行动呼吁(如“期待您的回复”)。
- **签名**:礼貌结束语 + 发件人姓名。
4. **改进表达**:
- 修正语法、拼写错误。
- 将口语改为书面语(如“你帮我弄一下那个” → “麻烦您协助处理一下……”)。
- 调整语气(避免过于生硬或过于随意)。
5. **输出**:提供润色后的完整邮件,并可附加简要说明(修改了哪些关键点)。
## 语气选择指南
| 用户关键词 | 推荐语气 | 典型调整 |
|----------------|------------------|----------------------------------|
| “催”、“尽快” | 礼貌但坚定 | 用“烦请”、“希望…前”而非“必须” |
| “道歉”、“出错” | 诚恳、负责 | 承认错误 + 补救措施 + 避免推卸责任 |
| “感谢”、“谢谢” | 温暖、真诚 | 具体指出感谢对方做了什么 |
| “内部”、“同事” | 半正式/友好 | 可用“我们”、“咱们”,稍轻松 |
| “客户”、“外部” | 正式、恭敬 | 用“您”、“贵方”,更严谨 |
## 输出格式
```markdown
## 润色后的邮件
**主题**:[主题行]
[称呼],
[正文内容]
[结尾语],
[你的姓名/签名]
---
### 修改说明
- [简要说明做了哪些主要调整,如语气、结构、语法]
这里特别注意:
email-polisher这个目录名称和name定义的要一致- opencode是需要重启
使用示例
# 提示词
帮我写封邮件给客户张老师,催一下他们上周答应给的接口反馈。语气不要太硬。我们下周就要用这个接口进行开发了。草稿:张老师,接口文档啥时候给?急。
opencode创建一个技能
我这里让它给我创建一个格式化json的技能。
-
提示词
为我创建一个名为 json-formatter 的新技能。 请先生成 SKILL.md 文件,它的核心功能是帮助用户格式化 JSON 数据。 具体要求如下: 1. 技能的触发场景:当用户提供一段未经格式化的 JSON 字符串,或要求“格式化JSON”、“美化JSON”、“压缩JSON”时自动调用。 2. 工作流程: a. 接收用户提供的原始 JSON 字符串。 b. 尝试解析 JSON 以验证其有效性。 c. 如果 JSON 无效,需明确指出错误位置并给出修正建议。 d. 如果 JSON 有效,则输出两种格式:美观的(缩进2空格)和压缩的(去除所有空格)。 3. 输出格式:请将结果以清晰的 Markdown 代码块包裹,并分别标注“格式化结果”和“压缩结果”。这里的提示词你甚至可以让 opencode 告诉你应该怎么写
-
skill创建结果
-
试用skill
# 直接在 opencode 中输入如下示例 json {"name":"Alice","age":30,"isStudent":false,"courses":["Math","Physics"],"address":{"city":"New York","zip":10001,"coordinates":{"lat":40.7128,"lng":-74.0060}},"metadata":{"created":"2025-03-15T08:00:00Z","version":2}}
扩展说明
这个skill不单单对编程方面很有帮助,还能极大的简化日常办公。比如:
- 可以把写日报的功能做成技能
- 可以把画手绘流程图做成技能
- 定期把工作汇报发给领导
总之,这里发挥你的想象。几乎没有不能完成的,这里我说下底层逻辑。因为我们有 Node.js,而 opencode 能调用任何本地的资源包括 Node.js 能力。而这个 Node.js 就牛了,它本身就是类似 Java 的 JVM 的东东。底层都是 C 语言写的,可以说能实现任何能力。而 skill 能调用 scripts 脚本下的东西,而这个 scripts 下可以是 Python 或者 Typescript 写的基于 Node.js 的东西。这就无敌了。比如我让 opencode 创建的日报的技能就是大量的 ts 脚本。
总结
- Agent Skills 本质上是给 AI 准备的“说明书+工具箱”,让大模型获得开箱即用且可直接复用的能力包。
- 强烈建议把 Anthropic 官方提供的那几个处理办公文档(PDF、Word、Excel 等)的基础技能作为必装项。
- 技能的获取和安装非常简单,既可以去广大的社区挖掘现成的宝藏,也可以直接给 opencode 喂一个 Github 地址让它全自动安装。
- 创造自己的专属技能门槛很低,核心往往只需要编写一份条理清晰的
SKILL.md,定义好触发词和工作流即可。 - 由于能自由结合本地底层的各种脚本(如 Node.js、Python等),Skill 机制赋予了大模型无限的边界扩展能力。这使得 opencode 不仅仅是一个写代码的辅助工具,更真正蜕变成了一个能帮你排忧解难、处理各种复杂繁琐日常任务的“专属打工人”。