5.3c Skill 高级模式
本课深入 Skill 的高级应用:与 MCP 协作、五种工作流模式、分发共享策略,帮你打造企业级专业知识包。
📝 课程笔记
本课核心知识点整理:

学完你能做什么
- 理解 Skill 与 MCP 的协作关系(厨房 vs 菜谱)
- 设计五种工作流模式:顺序编排、多 MCP 协调、迭代优化、上下文选择、领域智能
- 根据用例分类选择合适的 Skill 设计策略
- 通过 GitHub 和 API 分发共享 Skill
你现在的困境
你已经学会了创建 Skill,但在实际使用中遇到这些问题:
场景 1:公司有 5 个 MCP 服务(Notion、Linear、Slack、Drive、GitHub)
用户:帮我创建一个新项目
AI:[调用了 Notion MCP,但没有创建 Linear 任务,也没有通知 Slack]场景 2:Skill 只能做单步操作
用户:帮我生成报告并自动优化直到质量达标
AI:我只能生成报告,"优化"是什么意思?场景 3:团队想共享 Skill
开发者 A:我把 Skill 放到 GitHub 了
开发者 B:我怎么用?每次都要手动下载吗?问题根源:Skill 不仅是「知识包」,更是「工作流编排器」。你需要理解它如何与 MCP 协作,以及如何设计复杂的工作流模式。
什么时候用这一招
- 你有多个 MCP 服务,需要协调它们完成复杂任务
- 你需要设计多步骤、可迭代的工作流
- 你想把 Skill 分享给团队或社区
🎒 开始前的准备
- [ ] 完成了 5.3b Skill 进阶
- [ ] 了解了 5.7a MCP 基础
- [ ] 有一个可用的 MCP 服务(用于实践)
核心思路
Skill + MCP:厨房与菜谱
把 MCP 和 Skill 的关系想象成一个专业厨房:
┌─────────────────────────────────────────────────────────────────────┐
│ 专业厨房 (MCP) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 炉灶 │ │ 冰箱 │ │ 刀具 │ │ 调料架 │ │
│ │ (工具) │ │ (数据) │ │ (操作) │ │ (资源) │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 菜谱 (Skill) │
│ │
│ 「宫保鸡丁」 │
│ 1. 从冰箱取出鸡肉 200g │
│ 2. 用刀具切丁 │
│ 3. 炉灶开大火,倒油... │
│ 4. 加入调料:花椒、干辣椒... │
└─────────────────────────────────────────────────────────────────────┘MCP 提供:
- 连接到各种服务(Notion、Linear、GitHub...)
- 实时数据访问
- 工具调用能力
Skill 提供:
- 如何使用这些工具的最佳实践
- 多步骤工作流编排
- 领域专业知识
没有 Skill 的 MCP 就像「有厨房没菜谱」——用户知道有什么工具,但不知道怎么组合使用。
三种用例分类
根据实践经验,Skill 主要有三种用例:
| 分类 | 特点 | Skill 重点 |
|---|---|---|
| 1. 文档/资产创建 | 输出质量优先 | 嵌入风格指南、模板、质量检查清单 |
| 2. 工作流自动化 | 多步骤一致性 | 步骤定义、验证关卡、错误处理 |
| 3. MCP 增强 | 工具使用优化 | 协调 MCP 调用、嵌入领域知识 |
五种工作流模式
模式 1:顺序工作流编排
适用场景:需要按固定顺序执行的多步骤流程
结构示例:
---
name: customer-onboarding
description: 端到端客户入职工作流。处理账户创建、支付设置、订阅管理。
当用户说"入职新客户"、"设置订阅"、"创建账户"时使用。
---
# 客户入职工作流
## 步骤 1:创建账户
调用 MCP 工具:`create_customer`
参数:name, email, company
## 步骤 2:设置支付
调用 MCP 工具:`setup_payment_method`
等待:支付方式验证
## 步骤 3:创建订阅
调用 MCP 工具:`create_subscription`
参数:plan_id, customer_id(来自步骤 1)
## 步骤 4:发送欢迎邮件
调用 MCP 工具:`send_email`
模板:welcome_email_template
## 失败回滚
如果任何步骤失败:
1. 记录失败原因
2. 回滚已创建的资源
3. 通知管理员关键技巧:
- 明确步骤顺序
- 定义步骤间的依赖(步骤 3 需要步骤 1 的输出)
- 提供失败回滚指令
模式 2:多 MCP 协调
适用场景:工作流跨多个服务
结构示例:设计到开发交接
---
name: design-to-dev
description: 从设计文件生成开发任务。当用户提到"设计交接"、"Figma 转任务"时使用。
---
# 设计到开发交接
## 阶段 1:设计导出 (Figma MCP)
1. 从 Figma 导出设计资源
2. 生成设计规格文档
3. 创建资源清单
## 阶段 2:资源存储 (Drive MCP)
1. 在 Drive 创建项目文件夹
2. 上传所有资源
3. 生成分享链接
## 阶段 3:任务创建 (Linear MCP)
1. 创建开发任务
2. 附加资源链接到任务
3. 分配给工程团队
## 阶段 4:通知 (Slack MCP)
1. 在 #engineering 发布交接摘要
2. 包含资源链接和任务引用关键技巧:
- 清晰的阶段划分
- 定义阶段间的数据传递
- 进入下一阶段前验证
模式 3:迭代优化
适用场景:输出质量需要多次改进
结构示例:报告生成
---
name: report-generator
description: 生成高质量报告,自动迭代优化直到达标。
---
# 迭代报告生成
## 初始草稿
1. 通过 MCP 获取数据
2. 生成初版报告
3. 保存到临时文件
## 质量检查
运行验证脚本:`scripts/check_report.py`
检查项:
- 缺失章节
- 格式不一致
- 数据验证错误
## 优化循环
WHILE 质量未达标: 1. 修复已识别的问题 2. 重新生成受影响的章节 3. 再次验证
## 最终定稿
1. 应用最终格式
2. 生成摘要
3. 保存最终版本关键技巧:
- 明确的质量标准
- 迭代改进循环
- 知道何时停止迭代
模式 4:上下文感知工具选择
适用场景:同一目标,根据上下文选择不同工具
结构示例:智能文件存储
---
name: smart-storage
description: 根据文件类型和用途自动选择最佳存储位置。
---
# 智能文件存储
## 决策树
1. 检查文件类型和大小
2. 确定最佳存储位置:
- 大文件 (>10MB) → 云存储 MCP
- 协作文档 → Notion/Docs MCP
- 代码文件 → GitHub MCP
- 临时文件 → 本地存储
## 执行存储
根据决策:
- 调用对应的 MCP 工具
- 应用服务特定的元数据
- 生成访问链接
## 用户反馈
解释为什么选择了那个存储位置关键技巧:
- 清晰的决策标准
- 提供备选方案
- 对用户透明(解释选择原因)
模式 5:领域智能
适用场景:Skill 提供超越工具访问的专业知识
结构示例:金融合规
---
name: payment-compliance
description: 带合规检查的支付处理。当处理跨境支付、大额交易时使用。
---
# 合规支付处理
## 处理前(合规检查)
1. 通过 MCP 获取交易详情
2. 应用合规规则:
- 检查制裁名单
- 验证管辖区允许
- 评估风险等级
3. 记录合规决策
## 处理
IF 合规通过:
- 调用支付处理 MCP 工具
- 应用适当的欺诈检查
- 处理交易
ELSE:
- 标记为人工审核
- 创建合规案例
## 审计追踪
- 记录所有合规检查
- 记录处理决策
- 生成审计报告关键技巧:
- 在行动前嵌入领域知识
- 合规优先于操作
- 完整的文档记录
分发与共享
OpenCode 提供多种 Skill 分发方式,从本地到远程都有支持。
OpenCode Skill 搜索路径
OpenCode 会按以下顺序搜索 Skill:
┌─────────────────────────────────────────────────────────────────────┐
│ 搜索优先级(后加载的覆盖先加载的) │
├─────────────────────────────────────────────────────────────────────┤
│ 1. 全局外部目录 │
│ ~/.claude/skills/**/SKILL.md │
│ ~/.agents/skills/**/SKILL.md │
├─────────────────────────────────────────────────────────────────────┤
│ 2. 项目外部目录(从当前目录向上遍历到 git 根目录) │
│ .claude/skills/**/SKILL.md │
│ .agents/skills/**/SKILL.md │
├─────────────────────────────────────────────────────────────────────┤
│ 3. OpenCode 配置目录 │
│ ~/.config/opencode/skill/**/SKILL.md │
│ .opencode/skill/**/SKILL.md │
├─────────────────────────────────────────────────────────────────────┤
│ 4. 配置文件指定的额外路径 (skills.paths) │
├─────────────────────────────────────────────────────────────────────┤
│ 5. 远程 URL 下载 (skills.urls) │
│ 缓存到 ~/.cache/opencode/skills/ │
└─────────────────────────────────────────────────────────────────────┘方式 1:本地目录放置
最简单的方式是直接放入标准目录:
| 目录 | 作用范围 | 说明 |
|---|---|---|
.opencode/skill/<name>/SKILL.md | 当前项目 | 项目专属 |
~/.config/opencode/skill/<name>/SKILL.md | 全局 | 所有项目可用 |
方式 2:配置额外路径
在 opencode.json 中指定额外的 Skill 目录:
{
"skills": {
"paths": [
"~/my-skills", // 绝对路径(~ 展开为用户目录)
"../shared-skills", // 相对于项目目录
"/opt/company-skills" // 绝对路径
]
}
}适用场景:
- 团队共享 Skill 库(放在 NAS 或共享目录)
- 多项目复用同一套 Skill
方式 3:远程 URL 发现(推荐用于团队/社区)
OpenCode 支持从远程服务器自动下载 Skill:
配置方式:
{
"skills": {
"urls": [
"https://your-company.com/.well-known/skills/",
"https://skills.example.com/index.json"
]
}
}服务器端需要提供的 index.json 格式:
{
"skills": [
{
"name": "project-setup",
"description": "项目初始化工作流",
"files": [
"SKILL.md",
"references/templates.md",
"references/checklist.md"
]
},
{
"name": "code-review",
"description": "代码审查助手",
"files": [
"SKILL.md"
]
}
]
}服务器目录结构:
https://your-company.com/.well-known/skills/
├── index.json # Skill 索引
├── project-setup/
│ ├── SKILL.md
│ └── references/
│ ├── templates.md
│ └── checklist.md
└── code-review/
└── SKILL.mdOpenCode 会:
- 获取
index.json - 下载每个 Skill 的文件
- 缓存到
~/.cache/opencode/skills/
适用场景:
- 企业内部 Skill 库
- 开源社区 Skill 分发
- 定期更新的 Skill 集合
方式 4:Git 仓库共享
结合 Git 仓库和额外路径配置:
步骤 1:创建 Skill 仓库
my-skills/
├── README.md # 给人类看的说明
├── skills/
│ ├── project-setup/
│ │ └── SKILL.md
│ └── code-review/
│ └── SKILL.md
└── examples/
└── screenshots/步骤 2:团队成员克隆并配置
# 克隆到固定位置
git clone https://github.com/yourcompany/opencode-skills.git ~/opencode-skills
# 在项目 opencode.json 中引用{
"skills": {
"paths": ["~/opencode-skills/skills"]
}
}步骤 3:更新 Skill
cd ~/opencode-skills
git pull分发方式对比
| 方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 本地目录 | 个人使用 | 简单直接 | 不便于共享 |
| 额外路径 | 团队共享(NAS) | 一次配置多处使用 | 需要文件系统共享 |
| 远程 URL | 企业/社区 | 自动更新、版本管理 | 需要搭建服务器 |
| Git 仓库 | 开源/团队 | 版本控制、协作方便 | 需要手动 pull 更新 |
踩坑提醒
| 现象 | 原因 | 解决 |
|---|---|---|
| 远程 Skill 下载失败 | index.json 格式错误 | 检查 JSON 格式和 files 数组 |
| Skill 不显示 | 路径配置错误 | 检查 skills.paths 是否正确展开 |
| 同名 Skill 冲突 | 多处定义同名 | 后加载的覆盖,检查日志警告 |
| MCP 调用失败但 Skill 加载了 | MCP 服务未连接 | 检查 opencode.json 中的 MCP 配置 |
| 多个 MCP 调用顺序混乱 | 没有明确步骤编号 | 用「步骤 1/2/3」明确定义顺序 |
| 迭代优化无限循环 | 缺少终止条件 | 添加「最多迭代 N 次」或质量阈值 |
本课小结
你学会了:
- Skill + MCP 协作:MCP 是厨房(提供工具),Skill 是菜谱(指导使用)
- 三种用例分类:文档创建、工作流自动化、MCP 增强
- 五种工作流模式:
- 顺序编排:固定步骤,依赖传递
- 多 MCP 协调:跨服务编排,阶段划分
- 迭代优化:质量循环,终止条件
- 上下文选择:决策树,透明选择
- 领域智能:合规优先,审计追踪
- OpenCode 分发方式:本地目录、额外路径、远程 URL、Git 仓库
延伸阅读
下一课预告
下一课我们将学习快捷命令,一键触发常用任务。
附录:源码参考
点击展开查看源码位置
更新时间:2026-02-14
| 功能 | 文件路径 | 行号 |
|---|---|---|
| Skill 加载与发现 | src/skill/skill.ts | 52-175 |
| Skill Info Schema | src/skill/skill.ts | 18-24 |
| 外部 Skill 目录扫描 | src/skill/skill.ts | 90-122 |
| 远程 Skill 下载 | src/skill/discovery.ts | 38-96 |
| Skill URL 配置 | src/config/config.ts | 664-668 |
| MCP 连接管理 | src/mcp/index.ts | 全文件 |
关键常量:
EXTERNAL_DIRS = [".claude", ".agents"]:外部 Skill 搜索目录OPENCODE_SKILL_GLOB = "{skill,skills}/**/SKILL.md":Skill 文件匹配模式
关键函数:
Skill.state():扫描并加载所有 Skill(包含外部目录扫描逻辑)Skill.get(name):获取指定 SkillSkill.all():获取所有 Skill 列表Skill.dirs():获取所有 Skill 目录Discovery.pull(url):从远程 URL 下载 Skill
配置 Schema:
skills: {
paths: string[] // 额外的 Skill 目录路径
urls: string[] // 远程 Skill 索引 URL
}
