MCP 提供了标准化的工具接口,Skill(技能)则是在这之上构建的更高层次的 AI 能力包——它组合了指令、工具、上下文,让 AI 能够完成一个特定领域的复杂任务。
一、什么是 Skill
Skill 是一组预定义的指令和工具的集合,告诉 AI “如何完成某类任务”。
| 类比 |
说明 |
| 传统编程 |
一个库/包,封装了特定功能,可复用 |
| AI Skill |
预定义的指令+工具,让 AI 掌握特定领域技能 |
| 与之对比的 MCP |
标准化的工具接口(底层通信协议) |
| Skill |
在工具之上构建的任务模式(上层能力封装) |
一个 Skill 通常包含:系统指令、可用工具列表、输入输出格式、工作流程、边界约束。Skill 可以被理解为”AI 时代的函数”——封装特定能力,可供复用和组合。
二、OpenCode Agent 开发
2.1 创建自定义 Agent
在 .opencode/agents/ 目录下创建配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| { "agents": { "unity-dev": { "name": "Unity 开发助手", "description": "专门辅助 Unity C# 开发的 Agent", "instructions": [ "你是一名资深的 Unity C# 开发者", "遵循 Unity 官方编码规范", "私有字段使用 _camelCase 命名", "所有公开方法需添加 XML 文档注释", "优先使用对象池管理频繁创建的对象", "避免使用 GameObject.Find" ], "tools": ["read", "edit", "search", "bash"], "model": "deepseek-chat", "temperature": 0.3 }, "blog-writer": { "name": "博客写作助手", "description": "辅助编写 Hexo 博客文章的 Agent", "instructions": [ "你是一名技术博客作者,风格为 ByteFisher 博客风格", "文章结构:引言 → 编号章节 → 对比表格 → 本章小结", "代码块需要标注语言类型", "front matter 中包含 tags、categories、description、keywords" ], "tools": ["read", "edit", "search"] } } }
|
2.2 使用自定义 Agent
1 2 3 4 5 6
| opencode --agent unity-dev
/agent unity-dev /agent blog-writer
|
2.3 Agent 的指令编写原则
| 指令类型 |
编写要点 |
示例 |
| 角色定义 |
明确身份和经验级别 |
“你是一名资深 Unity C# 开发者” |
| 行为约束 |
具体可检查的规则 |
“避免使用 GameObject.Find” |
| 质量要求 |
期望的输出标准 |
“所有公开方法需添加 XML 文档注释” |
| 禁止清单 |
明确不能做什么 |
“不要使用反射(性能敏感)” |
| 流程指引 |
复杂任务的分步说明 |
“先分析需求,再设计方案,最后实现” |
三、Claude Code Skill
3.1 Skill 文件格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| --- name: blog-writer description: 撰写技术博客文章,ByteFisher 风格 version: 1.0.0 ---
# Blog Writer Skill
## 角色 你是一名技术博客作者,为 ByteFisher 博客撰写文章。
## 风格指南 1. 标题使用中文,简洁明了 2. 使用编号章节(一、二、三) 3. 使用对比表格 4. 代码块标注语言类型 5. 每章末尾有"本章小结"
## 质量要求 - 技术细节必须准确 - 代码示例必须可运行 - 不添加未经验证的观点
## 输出格式 - 使用 Markdown 格式 - 代码块使用三个反引号 + 语言名称 - 表格使用 Markdown 表格语法
|
3.2 使用 Skill
1 2 3 4 5
| claude --skill blog-writer
/skill blog-writer
|
3.3 Skill 与 MCP 的协同
Skill 和 MCP 不是替代关系,而是分层协作:
1 2 3
| Skill(上层):告诉 AI 怎么完成特定任务 ↓ 使用 MCP(底层):提供标准化的工具接口
|
例如一个”Unity 性能优化 Skill”可能组合使用:
- MCP File System:读取项目脚本
- MCP SQLite:读取性能数据
- 自定义指令:Unity 性能分析的方法论
四、Skill 设计原则
| 原则 |
说明 |
反例 |
| 单一职责 |
一个 Skill 只做一类事 |
“通用编程助手”(太宽泛) |
| 明确边界 |
清楚说明能做什么和不能做什么 |
“帮你写代码”(边界模糊) |
| 可组合 |
Skill 之间可叠加使用 |
所有功能塞到一个 Skill 中 |
| 可测试 |
有明确的输入输出预期 |
“优化代码”(太模糊) |
五、Skill 与 Agent 的关系
Skill 和 Agent 是不同抽象层次的概念:
1
| Agent(执行者)→ 使用 Skill(能力包)→ 调用 Tool(原子操作)
|
| 概念 |
类比 |
职责 |
| Agent |
一个员工 |
决策者:理解任务、制定计划、协调执行 |
| Skill |
该员工的专业技能 |
告诉员工”这类任务怎么做” |
| Tool |
员工使用的工具 |
具体的执行能力(读文件、写代码) |
一个 Agent 可以使用多个 Skill。例如 “Unity 开发 Agent” 可以同时加载 “代码规范 Skill” 和 “性能优化 Skill”。
5.1 何时需要新建 Skill
1 2 3 4 5 6
| 这段代码是否需要在多个项目中复用? ├── 是 → 提取为工具(MCP Server) 这段操作流程是否依赖特定领域知识? ├── 是 → 封装为 Skill 这个工作流涉及多个步骤和决策? ├── 是 → 在 Agent 中组合多个 Skill
|
六、构建你的 Skill 生态
5.1 从问题到 Skill
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 1. 发现问题:你在某个场景中重复做同样的操作 → "我每周都要给新项目搭建同样的项目结构"
2. 提取模式:总结最佳实践 → "项目结构:src/、tests/、docs/、scripts/" → "配置文件:tsconfig、eslint、prettier、jest"
3. 编写 Skill:将模式转化为指令 → 创建 project-scaffolder Skill
4. 测试调优:在真实项目中试用 → 验证生成的结构是否符合预期
5. 复用分享:分享给团队或社区 → 提交到公司内部仓库或公开市场
|
5.2 Skill 库推荐
| Skill 名称 |
用途 |
适用工具 |
| unity-optimization |
Unity 项目性能分析与优化 |
OpenCode / Claude Code |
| react-component |
React 组件生成(含测试) |
OpenCode |
| blog-writer |
ByteFisher 风格博客写作 |
OpenCode / Claude Code |
| api-scaffold |
REST API 脚手架生成 |
Claude Code |
| python-data |
Python 数据处理与可视化 |
OpenCode |
七、Skill 实战:构建一个”代码审查 Skill”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| --- name: code-reviewer description: AI 代码审查专家 version: 1.0.0 ---
你是一名资深的代码审查专家。
审查流程: 1. 安全审查:SQL 注入、XSS、硬编码密钥、认证绕过 2. 性能审查:循环分配、不必要的装箱、重复查询 3. 可维护性审查:过长函数、过多参数、重复代码 4. 规范审查:命名规范、文件组织、注释完整性
输出格式: - 按严重程度(Critical/Major/Minor)排序 - 每条问题附代码行号和建议修复 - 顶部输出问题统计摘要
|
八、Skill 的局限性
Skill 虽然强大,但也有一些注意事项:
| 局限性 |
表现 |
应对 |
| 不擅长”创造” |
只能按指令办事,不能发明新模式 |
需要人类设计新的 Skill |
| 上下文消耗 |
指令越长,可用 Token 越少 |
保持指令简洁,控制在 500 字以内 |
| 冲突风险 |
多个 Skill 的指令相互矛盾 |
测试 Skill 组合兼容性 |
| 维护成本 |
Skill 需要随工具版本更新 |
定期检查和更新 |
九、Skill 调试方法
开发 Skill 后如何验证它是否正常工作:
| 方法 |
操作 |
预期结果 |
| 直接测试 |
加载 Skill 后问一个典型问题 |
回答遵循 Skill 定义的规则 |
| 边界测试 |
问 Skill 范围之外的问题 |
拒绝回答或明确说明边界 |
| 对比测试 |
加载/不加载 Skill 对比同一问题的回答 |
加载 Skill 后的回答更专业 |
| 压力测试 |
连续问 5 个不同问题 |
风格和格式一致 |
| 组合测试 |
同时加载两个 Skill |
两个 Skill 的规则同时生效 |
本章小结
- Skill 是预定义的指令+工具集合,让 AI 掌握特定领域能力——可理解为”AI 时代的函数”
- OpenCode Agent 通过 JSON 配置定义角色、工具、行为约束
- Claude Code Skill 用 Markdown + Front Matter 定义,更强调自然语言描述
- Skill 与 MCP 是分层关系:Skill 定义任务模式,MCP 提供工具接口
- 好的 Skill 包含:身份定义、行为约束、质量要求、工作流程
- 构建 Skill 的流程:发现问题 → 提取模式 → 编写 → 测试 → 复用
- Skill 正在成为 AI 时代的”复用单元”,本质是领域知识的可编程封装
下一篇是本系列的最后一篇——多 Agent 协作与综合实战。