第三十九课:Skills 技能系统
Skills使用Skills开发与AGENTS.md的关系
学习目标
- 了解 Skills 的概念和作用
- 掌握 Skills 的使用方法
- 学会开发自定义 Skills
- 理解 Skills 与 AGENTS.md 的关系
一、什么是 Skills
Skills 是可复用的任务指令包,包含特定任务的指导、资源和脚本。它就像是给代理的"技能书",告诉代理如何完成特定类型的任务。
1.1 Skills 的组成
一个完整的 Skill 包含以下部分:
- SKILL.md:Skill 定义文件,包含触发条件、操作步骤、验证方法
- references/:参考文档,提供详细的技术信息
- templates/:模板文件,用于生成代码或文档
- scripts/:脚本文件,用于自动化操作
- assets/:资源文件,如图片、配置等
1.2 Skills 的价值
Skills 的核心价值在于知识复用和质量保证:
- 复用最佳实践:将成功的经验固化为 Skill,避免重复造轮子
- 提高效率:代理可以快速执行已知任务,无需每次重新探索
- 保证质量:Skill 经过验证,输出质量有保障
- 知识传承:团队成员可以共享 Skills,降低学习成本
1.3 Skills 的特点
- 按需加载:Skills 不会预先注入上下文,只有在需要时才加载
- 独立封装:每个 Skill 是独立的,互不干扰
- 可组合:多个 Skills 可以组合使用
- 可版本化:Skills 可以版本管理,支持回滚
二、使用 Skills
2.1 浏览 Skills
在交互会话中输入 /skills 浏览可用 Skills。显示内容包括:
- Skill 名称
- 描述信息
- 触发条件
- 使用示例
2.2 自动加载
当代理识别到匹配的任务时,会自动加载对应的 Skill。匹配方式:
- 关键词匹配:用户输入包含特定关键词
- 任务类型匹配:任务符合特定模式
- 上下文匹配:当前上下文触发特定 Skill
2.3 手动使用
也可以手动指定使用某个 Skill:
> 使用 skill: code-review 审查这段代码
2.4 Skill 加载机制
Skills 按需加载,不会预先注入到上下文中。加载过程:
- 分析用户输入
- 匹配触发条件
- 加载 SKILL.md 内容
- 注入到工具结果中
- 代理按照 Skill 指导执行
三、开发 Skills
3.1 Skill 文件结构
my-skill/
├── SKILL.md # Skill 定义(必需)
├── references/ # 参考文档(可选)
│ └── api-docs.md
├── templates/ # 模板文件(可选)
│ └── component.tsx
├── scripts/ # 脚本文件(可选)
│ └── validate.sh
└── assets/ # 资源文件(可选)
└── config.json
3.2 SKILL.md 格式
---
name: code-review
description: 代码审查技能,提供全面的代码质量检查
triggers:
- "审查代码"
- "code review"
- "检查代码质量"
version: 1.0.0
author: team
---
# 代码审查技能
## 功能描述
对代码进行全面的质量检查,包括:
- 代码风格检查
- 安全漏洞扫描
- 性能优化建议
- 最佳实践检查
## 操作步骤
1. 读取目标代码文件
2. 运行静态分析工具
3. 检查代码风格
4. 扫描安全漏洞
5. 生成审查报告
## 验证方法
- 检查报告是否包含所有检查项
- 验证建议是否可操作
- 确认没有遗漏重要问题
## 参考资料
- [代码审查最佳实践](references/best-practices.md)
- [安全检查清单](references/security-checklist.md)
3.3 触发条件
定义什么时候使用这个 Skill:
- 关键词匹配:用户输入包含特定关键词
- 正则表达式:用户输入匹配特定模式
- 任务类型:任务属于特定类型
3.4 操作步骤
详细描述如何执行任务:
- 具体的命令和参数
- 需要检查的文件和目录
- 验证方法和标准
- 错误处理方式
3.5 验证方法
定义如何验证任务完成:
- 输出格式检查
- 结果正确性验证
- 质量标准检查
四、Skills 与 AGENTS.md 的关系
4.1 互补关系
- AGENTS.md:项目级指令,定义项目规范和通用规则
- Skills:任务级指令,定义特定任务的执行方法
4.2 协同工作
- AGENTS.md 提供项目上下文,告诉代理项目的技术栈、规范、约定
- Skills 提供任务执行细节,告诉代理如何完成特定任务
- 两者结合,代理可以高效完成任务
4.3 优先级
当 Skills 与 AGENTS.md 冲突时:
- Skills 的优先级更高,因为 Skills 更具体
- 但 AGENTS.md 的项目规范仍然有效
- Skills 应该遵循 AGENTS.md 的通用规范
4.4 使用建议
- 在 AGENTS.md 中定义通用规范
- 在 Skills 中定义具体任务的执行方法
- 避免在 Skills 中重复 AGENTS.md 的内容
五、Skills 管理
5.1 安装 Skills
从 Skills Hub 安装:
harness skill install <skill-name>
安装过程:
- 从 Hub 下载 Skill 包
- 验证完整性
- 安装到本地 Skills 目录
- 注册到 Skills 索引
5.2 创建 Skills
使用 harness 命令创建:
harness skill create <skill-name>
创建过程:
- 生成 SKILL.md 模板
- 创建目录结构
- 添加到 Skills 索引
5.3 更新 Skills
harness skill update <skill-name>
更新过程:
- 检查是否有新版本
- 下载新版本
- 备份旧版本
- 安装新版本
5.4 分享 Skills
将 Skill 发布到 Skills Hub:
harness skill publish <skill-name>
发布过程:
- 验证 Skill 质量
- 上传到 Hub
- 更新版本号
六、最佳实践
6.1 设计原则
- 单一职责:每个 Skill 只做一件事,避免过于复杂
- 可复用:Skill 应该可以在多个项目中使用
- 可测试:Skill 的输出应该可以验证
- 文档完善:提供清晰的使用说明和示例
6.2 编写技巧
- 使用清晰的语言描述操作步骤
- 提供具体的示例和代码片段
- 包含错误处理和边界情况
- 定义明确的验证标准
6.3 维护建议
- 定期更新 Skill,保持与最新技术同步
- 收集用户反馈,持续改进
- 版本管理,支持回滚
- 监控使用情况,优化性能
七、本课小结
| 要点 | 说明 |
|---|---|
| Skills | 可复用的任务指令包 |
| 使用 | /skills 浏览,按需加载 |
| 开发 | SKILL.md + 资源文件 |
| 与 AGENTS.md | 互补关系,Skills 优先级更高 |
| 管理 | install/create/update/publish |
下一步
下一课我们将了解 Codex Cloud。