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
}