Skills: 技能组合与编排

最后更新:2026-08-31

单个 Skill 解决单个问题——组合起来的 Skill 解决复杂问题。


1. 组合模式

(1) 技能链(Pipeline)

顺序执行多个 Skill,前一个输出是后一个输入:

TEXT 📖 仅展示
技能链示例:代码提交全流程

代码审查 → 自动修复 → 运行测试 → 更新文档 → 提交代码
   ↓          ↓          ↓          ↓          ↓
 审查报告   修复补丁   测试报告   文档更新   commit ID

(2) 技能矩阵(Matrix)

多个 Skill 并行执行,结果汇总:

TEXT 📖 仅展示
技能矩阵示例:全面质量检查

           ┌→ 安全扫描 ─┐
代码变更 ──┤→ 性能分析 ─┤→ 质量报告
           └→ 风格检查 ─┘

(3) 条件编排

根据条件选择执行路径:

TEXT 📖 仅展示
条件编排示例:智能部署

变更类型判断:
├── 文档变更 → 只更新文档
├── 测试变更 → 只运行测试
├── 代码变更 → 全流程(审查→测试→部署)
└── 配置变更 → 审查 + 确认后部署

2. 组合实现方式

(1) 提示词编排

在 Skill 提示词中描述组合逻辑:

MARKDOWN
## 执行策略

1. 先执行 code-review Skill
2. 如果发现 🔴 问题:
   - 执行 auto-fix Skill
   - 重新执行 code-review 确认修复
3. 审查通过后执行 test-runner Skill
4. 测试通过后输出汇总报告

(2) 上下文传递

Skill 之间通过上下文传递数据:

TEXT 📖 仅展示
Skill A 输出 → 写入上下文变量 → Skill B 读取

示例:
code-review 发现 3 个问题 →
  context: { review_issues: [...], fix_targets: [...] }
→ auto-fix 读取 fix_targets 执行修复

(3) 结果汇总

MARKDOWN
## 汇总报告模板

### 技能链执行结果
| 步骤 | Skill | 状态 | 耗时 | 关键输出 |
|:-----|:------|:-----|:-----|:---------|
| 1 | code-review | ✅ | 30s | 5 个问题 |
| 2 | auto-fix | ✅ | 45s | 修复 4 个 |
| 3 | test-runner | ✅ | 2m | 全部通过 |

3. 组合设计原则

(1) 松耦合

每个 Skill 独立可用,不依赖其他 Skill 的内部实现:

TEXT 📖 仅展示
松耦合设计:
├── Skill A 不直接调用 Skill B 的内部函数
├── Skill 间通过标准格式传递数据(如 JSON、Markdown)
├── 单个 Skill 失败不影响其他 Skill 的基本功能
└── 可以单独测试每个 Skill

(2) 单一职责

每个 Skill 只做一件事,做好一件事:

✅ 正确 ❌ 错误
code-review 只审查 code-review 审查+修复+测试
auto-fix 只修复 auto-fix 修复+审查+部署
deploy 只部署 deploy 部署+监控+告警

(3) 幂等性

重复执行结果一致,支持安全重试:

MARKDOWN
## 幂等性要求
- 多次运行审查 Skill,结果相同
- 修复 Skill 检测问题是否已修复,已修复则跳过
- 部署 Skill 检查当前状态,已部署则确认而非重复部署

4. 组合编排实战

▶ 示例:PR 质量门禁

Alice 设计了一套 PR 自动审查组合:

YAML
---
name: pr-gate
description: "PR 质量门禁:审查+测试+安全三合一"
triggers:
  - keyword: "pr-gate|质量门禁"
---
MARKDOWN
## 执行流程

1. 调用 code-review(代码审查)
2. 调用 test-runner(运行测试)
3. 调用 security-scan(安全扫描)
4. 汇总三项结果
5. 输出合并建议:
   - 三项全通过 → ✅ 建议合并
   - 任一项 🔴 → ❌ 不建议合并
   - 只有 🟡 → ⚠️ 修复后合并

Bob 评价:"单个 Skill 是工具,组合 Skill 是流水线——流水线的威力远大于单个工具的简单相加。"


❓ 常见问题

Q Skill 之间能直接调用吗?
A 取决于平台。Claude Code 支持在提示词中描述调用逻辑;OpenCode 需要手动编排。核心是数据传递,而非函数调用。
Q 组合太复杂怎么维护?
A 限制嵌套层级 ≤2,组合 Skill ≤5。超过则考虑拆分为独立工作流或使用专门的编排工具。
Q 一个 Skill 失败了整个链怎么处理?
A 关键路径(审查、测试)失败则停止,非关键路径(文档、通知)失败则记录并继续。用错误分级决定。

📖 小节


📝 作业

  1. 基础题(难度⭐):创建一个简单的技能链,串联 code-review 和 test-runner 两个 Skill。
  2. 进阶题(难度⭐⭐):创建一个 PR 质量门禁 Skill,并行执行审查、测试、安全扫描,汇总结果。
  3. 挑战题(难度⭐⭐⭐):设计一个智能编排系统,能根据变更类型自动选择执行哪些 Skill,并处理中间步骤的失败和重试。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏