Skills: 创建第一个 Skill
最后更新:2026-08-31
纸上得来终觉浅,绝知此事要躬行。这一课带你从零创建一个真正可用的 Skill。
1. 需求分析
我们要创建一个 代码审查 Skill,需求如下:
| 需求项 | 说明 |
|---|---|
| 目标 | 自动审查代码,输出结构化审查报告 |
| 审查维度 | 安全性、性能、可读性、最佳实践 |
| 输出格式 | 按严重程度分级的审查清单 |
| 触发方式 | 关键词 "review" 或手动调用 |
| 工具需求 | 读取文件、搜索代码 |
2. 创建 Skill 文件
(1) 创建文件
BASH
# Claude Code
touch .claude/skills/code-review.md
# OpenCode
touch skills/code-review.md
(2) 编写 Frontmatter
YAML
---
name: code-review
description: "自动代码审查技能,检查安全性、性能、可读性和最佳实践"
triggers:
- keyword: "review|审查代码|代码审查"
tools:
- Read
- Grep
- Glob
---
(3) 编写提示词主体
MARKDOWN
# 代码审查技能
## 角色
你是高级代码审查专家,拥有 10 年以上全栈开发经验。
## 审查流程
1. 使用 Read 工具读取目标文件
2. 使用 Grep 搜索相关上下文(如类型定义、接口)
3. 按以下四个维度审查
## 审查维度
### 安全性
- SQL 注入、XSS、CSRF 等常见漏洞
- 敏感信息硬编码
- 不安全的依赖使用
### 性能
- N+1 查询、不必要的循环
- 内存泄漏风险
- 缺少缓存/索引
### 可读性
- 命名是否清晰
- 函数是否过长(>50 行警告)
- 注释是否充分
### 最佳实践
- 是否遵循项目约定
- 错误处理是否完善
- 是否有冗余代码
## 输出格式
对每个问题输出:
- 📍 位置:文件名:行号
- 🔴/🟡/🟢 严重程度
- 📝 问题描述
- ✅ 修改建议(含代码示例)
3. 测试 Skill
(1) 手动触发
在对话中输入触发关键词:
TEXT
📖 仅展示
你: review src/auth/login.py
AI: (自动加载 code-review skill,执行审查流程)
(2) 观察行为
验证 Skill 是否正确加载:
TEXT
📖 仅展示
✅ 是否自动读取了目标文件?
✅ 是否按四个维度审查?
✅ 是否输出了分级的审查报告?
✅ 是否给出了具体的修改建议?
(3) 调整优化
如果输出不理想,调整提示词:
MARKDOWN
# 优化:增加示例输出
## 示例输出
📍 位置:src/auth/login.py:42
🔴 严重:SQL 注入风险
📝 使用字符串拼接构建 SQL 查询
✅ 建议:
```python
# Before
query = f"SELECT * FROM users WHERE name = '{username}'"
# After
query = "SELECT * FROM users WHERE name = ?"
cursor.execute(query, (username,))
---
## 4. 迭代完善
### (1) 增加上下文感知
```markdown
## 上下文规则
- 如果项目有 .eslintrc,遵循其规则审查
- 如果项目有 pyproject.toml,检查是否遵循配置
- 审查前先用 Glob 查看项目技术栈
(2) 增加条件分支
MARKDOWN
## 条件审查
- Python 项目:额外检查 type hints、docstring
- TypeScript 项目:额外检查 any 类型、类型安全
- Go 项目:额外检查 error handling、goroutine 泄漏
(3) 增加团队规范
MARKDOWN
## 团队规范
- 函数不超过 30 行(团队约定比 50 行更严格)
- 必须有单元测试覆盖
- API 端点必须有 Swagger 文档
Alice 完成迭代后,团队的代码审查效率提升了 3 倍。Bob 说:"关键是提示词要具体——'审查代码'太模糊,'按四维度分级输出'才是可执行的指令。"
❓ 常见问题
Q Skill 没被自动加载怎么办?
A 检查文件名和目录是否正确,frontmatter 的 triggers 是否匹配你输入的关键词,以及平台是否支持自动加载。
Q 提示词多长合适?
A 有效即可,不限长度。实用 Skill 通常 50-200 行。关键是具体和可操作,而非冗长和模糊。
Q 能在一个 Skill 里处理多种语言吗?
A 可以,用条件分支。但建议按语言拆分为独立 Skill,更易维护。
📖 小节
- 创建 Skill 三步走:分析需求 → 编写文件 → 测试迭代
- Frontmatter 定义元信息,Markdown 正文定义行为
- 提示词要具体可操作,包含角色、流程、维度、输出格式
- 通过示例输出和上下文规则持续迭代优化
📝 作业
- 基础题(难度⭐):按照本课步骤,创建一个 code-review Skill 并测试运行。
- 进阶题(难度⭐⭐):为 code-review Skill 增加条件分支,支持至少 2 种编程语言的特定审查规则。
- 挑战题(难度⭐⭐⭐):创建一个完整的"API 文档生成"Skill,包含需求分析、提示词设计、测试验证全流程。