Skip to content

5.3c Skill 高级模式 ​

本课深入 Skill 的高级应用:与 MCP 协作、五种工作流模式、分发共享策略,帮你打造企业级专业知识包。

📝 课程笔记 ​

本课核心知识点整理:

Skill 高级模式学霸笔记


学完你能做什么 ​

  • 理解 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 分享给团队或社区

🎒 开始前的准备 ​


核心思路 ​

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:顺序工作流编排 ​

适用场景:需要按固定顺序执行的多步骤流程

结构示例:

markdown
---
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 协调 ​

适用场景:工作流跨多个服务

结构示例:设计到开发交接

markdown
---
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:迭代优化 ​

适用场景:输出质量需要多次改进

结构示例:报告生成

markdown
---
name: report-generator
description: 生成高质量报告,自动迭代优化直到达标。
---

# 迭代报告生成

## 初始草稿

1. 通过 MCP 获取数据
2. 生成初版报告
3. 保存到临时文件

## 质量检查

运行验证脚本:`scripts/check_report.py`
检查项:
- 缺失章节
- 格式不一致
- 数据验证错误

## 优化循环

WHILE 质量未达标: 1. 修复已识别的问题 2. 重新生成受影响的章节 3. 再次验证


## 最终定稿

1. 应用最终格式
2. 生成摘要
3. 保存最终版本

关键技巧:

  • 明确的质量标准
  • 迭代改进循环
  • 知道何时停止迭代

模式 4:上下文感知工具选择 ​

适用场景:同一目标,根据上下文选择不同工具

结构示例:智能文件存储

markdown
---
name: smart-storage
description: 根据文件类型和用途自动选择最佳存储位置。
---

# 智能文件存储

## 决策树

1. 检查文件类型和大小
2. 确定最佳存储位置:
   - 大文件 (>10MB) → 云存储 MCP
   - 协作文档 → Notion/Docs MCP
   - 代码文件 → GitHub MCP
   - 临时文件 → 本地存储

## 执行存储

根据决策:
- 调用对应的 MCP 工具
- 应用服务特定的元数据
- 生成访问链接

## 用户反馈

解释为什么选择了那个存储位置

关键技巧:

  • 清晰的决策标准
  • 提供备选方案
  • 对用户透明(解释选择原因)

模式 5:领域智能 ​

适用场景:Skill 提供超越工具访问的专业知识

结构示例:金融合规

markdown
---
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 目录:

jsonc
{
  "skills": {
    "paths": [
      "~/my-skills",                    // 绝对路径(~ 展开为用户目录)
      "../shared-skills",               // 相对于项目目录
      "/opt/company-skills"             // 绝对路径
    ]
  }
}

适用场景:

  • 团队共享 Skill 库(放在 NAS 或共享目录)
  • 多项目复用同一套 Skill

方式 3:远程 URL 发现(推荐用于团队/社区) ​

OpenCode 支持从远程服务器自动下载 Skill:

配置方式:

jsonc
{
  "skills": {
    "urls": [
      "https://your-company.com/.well-known/skills/",
      "https://skills.example.com/index.json"
    ]
  }
}

服务器端需要提供的 index.json 格式:

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.md

OpenCode 会:

  1. 获取 index.json
  2. 下载每个 Skill 的文件
  3. 缓存到 ~/.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:团队成员克隆并配置

bash
# 克隆到固定位置
git clone https://github.com/yourcompany/opencode-skills.git ~/opencode-skills

# 在项目 opencode.json 中引用
jsonc
{
  "skills": {
    "paths": ["~/opencode-skills/skills"]
  }
}

步骤 3:更新 Skill

bash
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 次」或质量阈值

本课小结 ​

你学会了:

  1. Skill + MCP 协作:MCP 是厨房(提供工具),Skill 是菜谱(指导使用)
  2. 三种用例分类:文档创建、工作流自动化、MCP 增强
  3. 五种工作流模式:
    • 顺序编排:固定步骤,依赖传递
    • 多 MCP 协调:跨服务编排,阶段划分
    • 迭代优化:质量循环,终止条件
    • 上下文选择:决策树,透明选择
    • 领域智能:合规优先,审计追踪
  4. OpenCode 分发方式:本地目录、额外路径、远程 URL、Git 仓库

延伸阅读 ​


下一课预告 ​

下一课我们将学习快捷命令,一键触发常用任务。

继续学习:5.4 快捷命令


附录:源码参考 ​

点击展开查看源码位置

更新时间:2026-02-14

功能文件路径行号
Skill 加载与发现src/skill/skill.ts52-175
Skill Info Schemasrc/skill/skill.ts18-24
外部 Skill 目录扫描src/skill/skill.ts90-122
远程 Skill 下载src/skill/discovery.ts38-96
Skill URL 配置src/config/config.ts664-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):获取指定 Skill
  • Skill.all():获取所有 Skill 列表
  • Skill.dirs():获取所有 Skill 目录
  • Discovery.pull(url):从远程 URL 下载 Skill

配置 Schema:

typescript
skills: {
  paths: string[]    // 额外的 Skill 目录路径
  urls: string[]     // 远程 Skill 索引 URL
}