本节目标
在《opencode3》那篇文章中其实预设了一个伏笔——当时提到后续会用到 skill 技能。现在,正是揭开这个伏笔的最佳时机。一起来看看今天要探讨的几个重点:
- 透彻理解 skill 究竟是什么
- 掌握在哪里可以找到现成的 skill 进行下载
- 亲手实践,创建一款属于你自己的 skill
skill 介绍
skill 的前世今生
2025 年,Anthropic 率先提出了 Agents Skills 这一概念。最初它只是一个内部测试工具,目标非常明确——帮助 Claude 在特定任务上表现得更出色。经过实践发现这套设计极为便捷,于是 2025 年 12 月 18 日,Agent Skills 被正式发布为开放标准。
这意味着什么呢?意味着 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 社区网站
这里已经汇聚了超过 80 万个技能,这个数字确实相当惊人。
skill 技能市场
这也是一个值得淘金的好去处。
渠道当然不止这些,但现有资源基本足够应对日常需求。有现成的就用现成的,没有的话,就自己动手“丰衣足食”。
安装 skill
这里直接用 Anthropic 那几个必装的技能来演示,把它们全部安装到 opencode 中。
手动安装
- 从 GitHub 上下载所有技能
- 下载 zip 包
- 解压后放入 opencode 目录。还记得在《opencode2-初步体验》中提到的那个
opencode.json所在的目录吗?就是C:\Users\abc\.config\opencode(abc 是你的用户名)。把解压出来的skills文件夹整个拷贝进去就行。 - 验证已安装的技能:如果你开着 opencode,需要先重启一下。然后直接询问它有哪些技能,它就会列出。
### 自动安装
* 直接让 opencode 自动安装
你帮我安装https://github.com/anthropics/skills/tree/main/skills这个链接下的技能
* 删除多余的临时文件夹
你似乎忘记把tmp-anthropic-skills给删除了
* 记得重启一下 opencode
## 用一下安装的 skill
装上了 Anthropic 的技能后,ppt、pdf、docx、xlsx 这些办公文件就都能读取了。
举个例子,假设手头有个 pdf 文件,你可以像查知识库一样直接提问。尤其是接口文档类的文件,直接问某个接口的请求和返回信息;遇到报错,直接问这个错误通常是什么参数传错导致的。有了读取 pdf 的技能就能操作 pdf 文件,有了读取 docx 的技能就能操作 word。甚至你还可以让 pdf 直接转换成 word。
# 提示词
把桌面上的公众号支付.pdf转换为公众号支付.docx文件
创建一个自己的skill
通过前面的介绍,我们已经清楚:skill 的核心就是一份 MD 文档,通过提示词告诉大模型在什么情况下做什么事情。那我们就来创建一个自定义技能。这次我选择纯手动的方式创建。使用场景是:这个技能可以帮助你快速把口语化、零散的草稿,改写成正式、得体、适合不同场景的商务邮件。
创建技能目录和文件
在之前安装 skill 的那个 skills 目录里,创建一个名为 email-polisher 的目录。然后在这个新目录下创建一个 SKILL.md 文件。
SKILL.md内容
---
name: email-polisher
description: 将用户提供的草稿或要点改写成专业、得体的商务邮件。支持多种语气(正式、友好、催促、致歉等)。当用户说“润色邮件”、“帮我写封邮件”、“改一下这封邮件”时触发。
---
# 邮件润色与优化器
你是一位经验丰富的商务沟通专家,擅长将粗糙的草稿或零散要点,转化为清晰、得体、目的明确的邮件。
## 核心工作流程
1. **接收原始内容**:获取用户提供的草稿、关键词、甚至只是口头描述的场景。
2. **识别关键要素**:
- 收件人身份(上级、同事、客户、供应商)
- 邮件目的(请求、通知、确认、催促、道歉、感谢)
- 期望的语气(正式、半正式、友好、紧急)
3. **优化结构**:标准商务邮件结构:
- **主题**:简洁明了,包含核心信息。
- **称呼**:根据收件人调整。
- **开头**:简要背景或致谢。
- **正文**:清晰陈述事项,分点列出(如有多个请求或信息)。
- **结尾**:总结或行动呼吁(如“期待您的回复”)。
- **签名**:礼貌结束语 + 发件人姓名。
4. **改进表达**:
- 修正语法、拼写错误。
- 将口语改为书面语(如“你帮我弄一下那个”→“麻烦您协助处理一下……”)。
- 调整语气(避免过于生硬或过于随意)。
5. **输出**:提供润色后的完整邮件,并可附加简要说明(修改了哪些关键点)。
## 语气选择指南
| 用户关键词 | 推荐语气 | 典型调整 |
|----------------|------------------|----------------------------------|
| “催”、“尽快” | 礼貌但坚定 | 用“烦请”、“希望…前”而非“必须” |
| “道歉”、“出错” | 诚恳、负责 | 承认错误 + 补救措施 + 避免推卸责任 |
| “感谢”、“谢谢” | 温暖、真诚 | 具体指出感谢对方做了什么 |
| “内部”、“同事” | 半正式/友好 | 可用“我们”、“咱们”,稍轻松 |
| “客户”、“外部” | 正式、恭敬 | 用“您”、“贵方”,更严谨 |
## 输出格式
```markdown
## 润色后的邮件
**主题**:[主题行]
[称呼],
[正文内容]
[结尾语],
[你的姓名/签名]
---
### 修改说明
- [简要说明做了哪些主要调整,如语气、结构、语法]
使用示例
# 提示词
帮我写封邮件给客户张老师,催一下他们上周答应给的接口反馈。语气不要太硬。我们下周就要用这个接口进行开发了。草稿:张老师,接口文档啥时候给?急。
再让 opencode 创建一个技能
这次,我让它给我创建一个格式化 JSON 的技能。
提示词:
为我创建一个名为 json-formatter 的新技能。请先生成 SKILL.md 文件,它的核心功能是帮助用户格式化 JSON 数据。 具体要求如下: 1. 技能的触发场景:当用户提供一段未经格式化的 JSON 字符串,或要求“格式化JSON”、“美化JSON”、“压缩JSON”时自动调用。 2. 工作流程: a. 接收用户提供的原始 JSON 字符串。 b. 尝试解析 JSON 以验证其有效性。 c. 如果 JSON 无效,需明确指出错误位置并给出修正建议。 d. 如果 JSON 有效,则输出两种格式:美观的(缩进2空格)和压缩的(去除所有空格)。 3. 输出格式:请将结果以清晰的 Markdown 代码块包裹,并分别标注“格式化结果”和“压缩结果”。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}}
扩展一下思路
这个技能不仅仅对编程有帮助,日常工作里也能用上。比如:
- 把写日报的功能做成技能
- 把画手绘流程图做成技能
- 定期把工作汇报发给领导
思路可以打开一些。底层逻辑其实并不复杂:我们有 Node.js,而 opencode 能调用任何本地资源,包括 Node.js 的功能。而 Node.js 本身就像 Java 的 JVM,底层是 C 语言编写的,理论上能实现任何功能。Skill 又可以调用 scripts 文件夹下的脚本,这些脚本可以是 Python 或 TypeScript 编写的(基于 Node.js)。这就等于打开了无限可能的大门。比如之前让 opencode 创建的日报技能,就是由大量 TypeScript 脚本构成的。
总结
- Agent Skills 本质上就是为 AI 准备的“操作指南+工具包”,让大模型获得开箱即用且可直接复用的能力模块。
- 强烈推荐将 Anthropic 官方提供的那些处理办公文档(PDF、Word、Excel 等)的基础技能作为必装项。
- 获取和安装技能极为便捷,既可以去广大社区挖掘现成的资源,也可以直接给 opencode 一个 Github 地址,让其全自动安装。
- 创建自己的专属技能,门槛很低。核心往往只需编写一份条理清晰的
SKILL.md,定义好触发词和工作流即可。 - 由于能够自由结合本地底层的各类脚本(如 Node.js、Python 等),Skill 机制赋予了 opencode 无限的边界扩展能力。这也让 opencode 不再只是一个写代码的辅助工具,而是真正蜕变成为一位能帮你排忧解难、处理各种复杂繁琐日常任务的“专属打工人”。
