Skip to content

Skills 是 OpenCode 中一种可复用的“技能包”,它将完成特定任务的指令、资源和工作流打包,让 AI 能按预设流程执行任务,而非每次都从零开始理解需求。

学习资源

Skills 是什么?

  • 本质:一个包含 SKILL.md 文件的文件夹,其中定义了技能名称、使用场景、执行规则,并可附带脚本、文档或模板。
  • 作用:将常用任务(如代码审查、项目初始化、错误分析等)固化为可复用的工作流,提升 AI 执行任务的稳定性和效率。

如何使用 Skills?

  1. 创建 Skills 目录~/.config/opencode/skill 目录下创建你的技能文件夹(如 code-review),并编写 SKILL.md 文件。
  2. 编写技能描述SKILL.md 中定义技能名称、场景、规则和示例,例如:
    markdown
    # 代码审查
    - 场景:审查代码质量、发现潜在问题
    - 规则:检查代码风格、性能、安全等
    - 示例:`@code-review 帮我审查这个文件`
  3. 调用技能 在 OpenCode 中,通过 @技能名 或斜杠命令调用,AI 会自动加载技能并执行任务。

当然可以。以下是一些实用的 OpenCode Skills 示例模板和最佳实践,帮助你将常用工作流固化为可复用的技能。

实用 Skills 示例模板

1. 代码审查 (code-review)

目录结构

.opencode/skill/code-review/
├── SKILL.md
└── scripts/review.sh

SKILL.md 内容

markdown
---
name: code-review
description: 审查代码质量、发现潜在问题,包括代码风格、性能、安全等。
---

# 代码审查

## 使用场景
- 提交前代码审查
- 代码重构前评估
- 新功能代码质量检查

## 审查规则
- 检查代码风格一致性
- 识别潜在性能问题
- 发现安全漏洞
- 评估可维护性

## 调用方式
- `@code-review 帮我审查这个文件`
- `@code-review 审查当前目录下的所有 Python 文件`

2. Docker 容器化 (docker-composer)

SKILL.md 内容

markdown
---
name: docker-composer
description: 创建 Docker Compose 配置、Dockerfile 和容器编排的专家指南。
---

# Docker 理念

## 容器原则
- **每个容器一个进程**:保持容器专注
- **不可变基础设施**:不要修改正在运行的容器
- **无状态容器**:将状态存储在卷或外部服务中
- **最小化镜像**:更小 = 更快 + 更安全

## 最佳实践
- **应该**:在生产环境中使用多阶段构建
- **应该**:锁定依赖项的特定版本
- **应该**:使用 `.dockerignore` 排除不必要的文件
- **应该**:以非 root 用户身份运行
- **不应该**:将密钥存储在镜像或 Dockerfile 中
- **不应该**:在生产环境中使用 `latest` 标签
- **不应该**:安装不必要的软件包

## 检查清单
### Dockerfile
- [ ] 生产环境多阶段构建
- [ ] 非 root 用户
- [ ] 最小基础镜像(尽可能使用 Alpine)
- [ ] 优化层缓存(依赖项优先于代码)
- [ ] 定义健康检查
- [ ] 配置 `.dockerignore` 文件

### Docker Compose
- [ ] 服务已启用健康检查
- [ ] 用于持久化数据的卷
- [ ] 用于服务隔离的网络
- [ ] 定义资源限制
- [ ] 配置重启策略
- [ ] 环境变量已外部化

### 安全性
- [ ] Dockerfile 和 docker-compose 中不包含任何密钥
- [ ] 已扫描镜像漏洞
- [ ] 权限最小化(不使用 root)
- [ ] 服务之间已进行网络隔离

## 何时使用
- 容器化新应用程序
- 使用 Docker 设置开发环境
- 创建多服务架构
- 优化 Docker 构建
- 调试容器问题
- 使用 Docker 设置 CI/CD 流水线
- 从 docker-compose 迁移到 Kubernetes

3. SQL 审查 (sql-reviewer)

SKILL.md 内容

markdown
---
name: sql-reviewer
description: SQL 审查和优化,识别性能、安全和可维护性问题。
---

# SQL 审查

## 审查重点
- **性能**:索引缺失、全表扫描、N+1 查询
- **安全**:SQL 注入风险、权限过大
- **可维护性**:复杂嵌套查询、缺少注释

## 最佳实践
- 使用参数化查询防止 SQL 注入
- 避免 `SELECT *`,明确指定字段
- 为频繁查询的字段添加索引
- 使用 `EXPLAIN` 分析查询计划
- 避免在循环中执行 SQL 查询

## 调用示例
- `@sql-reviewer 审查这个 SQL 文件`
- `@sql-reviewer 分析这个查询的性能`

4. 测试生成 (test-generator)

SKILL.md 内容

markdown
---
name: test-generator
description: 为代码生成单元测试、集成测试和端到端测试。
---

# 测试生成

## 测试类型
- **单元测试**:测试单个函数或类
- **集成测试**:测试模块间交互
- **端到端测试**:测试完整业务流程

## 测试框架支持
- Python: pytest, unittest
- JavaScript: Jest, Mocha
- Java: JUnit, TestNG

## 测试原则
- 测试覆盖率 > 80%
- 测试名称描述行为而非实现
- 使用模拟对象隔离依赖
- 测试边界条件和异常情况

## 调用示例
- `@test-generator 为这个函数生成单元测试`
- `@test-generator 为这个模块生成集成测试`

5. 文档生成 (doc-generator)

SKILL.md 内容

markdown
---
name: doc-generator
description: 为代码生成 API 文档、README 和项目文档。
---

# 文档生成

## 文档类型
- **API 文档**:函数、类、接口说明
- **项目文档**:README、安装指南、贡献指南
- **架构文档**:系统设计、数据流图

## 文档标准
- 使用 Markdown 格式
- 包含代码示例
- 提供快速开始指南
- 维护更新日志

## 调用示例
- `@doc-generator 为这个模块生成 API 文档`
- `@doc-generator 生成项目 README`

Skills 最佳实践

1. 原子化设计

  • 单一职责:每个 Skill 只做一件事,不要创建"全能 Skill"
  • 聚焦场景:明确 Skill 的使用场景和边界
  • 可组合性:多个 Skills 可以组合使用,如 @code-review + @test-generator

2. 渐进式披露

  • SKILL.md 精简:主文件保持在 500 行以内,超过则拆分到子文件
  • 按需加载:细节内容放在 references/ 目录,Agent 只在需要时读取
  • 避免深层嵌套:引用层级不超过 1 层 (SKILL.md → ref.md)

3. 命名规范

  • 动名词形式:如 code-reviewdocker-composersql-reviewer
  • 小写字母+连字符:仅使用小写字母、数字、连字符
  • 避免无意义名称:不要使用 helperutils 等模糊名称

4. 权限控制

opencode.json 中配置权限,确保只有可信的技能可以执行写操作:

json
{
  "agent": {
    "build": {
      "permission": {
        "bash": {
          "git push": "ask",
          "grep *": "allow"
        }
      }
    }
  }
}

5. 迭代优化

  • 用 AI 训练 AI:利用 Claude 的 skill-creator 生成和优化 Skills
  • 持续改进:根据实际使用反馈不断优化 Skill 内容
  • 社区分享:将通用 Skills 开源分享,促进社区发展

通过遵循这些最佳实践,你可以将日常开发中的重复任务固化为可复用的 Skills,大幅提升开发效率。建议从最常用的场景开始,逐步积累自己的 Skills 库。