Skill 核心组件
一个完整的 Skill 由四个核心组件组成,每个组件都有其特定的作用和最佳实践。
组件概览
json
{
"name": "skill-name",
"description": "一句话描述 Skill 的功能",
"prompt": "详细的执行指令...",
"examples": [
{
"input": "示例输入",
"output": "期望输出"
}
]
}1. Name(名称)
作用
- Skill 的唯一标识符
- 用户通过名称调用 Skill
- 在日志和分析中追踪使用
命名规范
✅ 好的命名
json
{
"name": "explain-code"
}❌ 不好的命名
json
{
"name": "explainCode" // 不使用驼峰
}json
{
"name": "explain_code" // 不使用下划线
}json
{
"name": "ec" // 不使用缩写
}命名规则
- kebab-case:小写字母,短横线连接
- 简洁明了:一看就知道功能
- 动词开头:表示动作,如
explain-,review-,generate- - 避免缩写:除非是行业标准缩写
命名示例
| Skill 功能 | 好的命名 | 不好的命名 |
|---|---|---|
| 解释代码 | explain-code | code-explanation |
| 审查 PR | review-pr | pr-review |
| 写单元测试 | write-tests | unit-test-writer |
| 生成文档 | generate-docs | doc-generator |
2. Description(描述)
作用
- 说明 Skill 的功能
- 帮助用户理解何时使用
- 在 Skill 列表中展示
描述规范
✅ 好的描述
json
{
"description": "解释代码的工作原理,包括逻辑流程、关键变量和潜在问题"
}❌ 不好的描述
json
{
"description": "解释代码" // 太简单,没有价值
}json
{
"description": "这个 Skill 可以帮助你解释代码的工作原理" // 冗余,不说"这个 Skill"
}描述规则
- 一句话:不超过 100 个字符
- 具体明确:说明具体做什么,不是泛泛而谈
- 包含价值:用户能获得什么
- 不说"这个 Skill":直接描述功能
描述模板
[动作] + [对象] + [价值]
例如:
- 解释代码的工作原理,发现潜在问题
- 审查 PR,检查安全漏洞和性能问题
- 生成函数文档,包含参数和返回值说明3. Prompt(指令)
作用
- 最核心的组件
- 告诉 AI 具体要做什么
- 决定输出质量的关键
Prompt 结构
[上下文] + [任务说明] + [格式要求] + [评估维度]示例 Prompt
请详细解释以下代码的工作原理:
请从以下几个角度分析(使用中文回答):
## 1. 整体功能
简要说明这段代码的主要作用。
## 2. 执行流程
逐步解释代码的执行过程。
## 3. 关键变量和函数
列出重要的变量和函数,说明其作用。
## 4. 潜在问题
指出可能存在的 bug、性能问题或边界情况。
## 5. 改进建议
提供具体的优化建议(如果有)。Prompt 最佳实践
1. 使用变量占位符
// ✅ 好:使用变量
{{code}}
{{language}}
{{complexity}}
// ❌ 不好:硬编码
下面的 Python 代码2. 明确输出格式
// ✅ 好:明确格式
请使用 Markdown 格式,包含以下部分:
## 1. 功能说明
## 2. 执行流程
## 3. 关键变量
// ❌ 不好:模糊要求
请分析代码3. 提供评估维度
// ✅ 好:多个维度
请从以下维度分析:
1. 功能正确性
2. 代码可读性
3. 性能优化
4. 安全考虑
// ❌ 不好:单一维度
请分析代码4. 设置约束条件
// ✅ 好:明确约束
- 使用中文回答
- 代码示例必须可运行
- 指出问题时要给出解决方案
// ❌ 不好:无约束
请分析代码Prompt 模板
分析类 Skill 模板
请分析以下内容:
请从以下维度进行分析:
1. [维度 1]:[说明]
2. [维度 2]:[说明]
3. [维度 3]:[说明]
格式要求:
- 使用 [语言] 回答
- 使用 Markdown 格式
- 每个维度必须有内容(可以是"无明显问题")生成类 Skill 模板
请根据以下要求生成 [内容类型]:
要求:
{{requirements}}
约束条件:
- [约束 1]
- [约束 2]
- [约束 3]
输出格式:[格式示例]
4. Examples(示例)
作用
- 展示输入和期望输出
- 帮助 AI 理解期望的质量和格式
- 提供边界情况的参考
示例结构
json
{
"examples": [
{
"input": "示例输入",
"output": "期望输出"
}
]
}示例规则
1. 数量
- 最少 1 个,推荐 2-3 个
- 覆盖不同场景
2. 质量
- 输出应该是你期望的完美结果
- 格式规范,内容完整
3. 多样性
- 包含简单案例
- 包含复杂案例
- 包含边界情况
示例示例
json
{
"examples": [
{
"input": "def add(a, b):\n return a + b",
"output": "## 1. 整体功能\n这是一个简单的加法函数...\n\n## 2. 执行流程\n..."
},
{
"input": "async function fetchData(url) {\n const response = await fetch(url);\n return response.json();\n}",
"output": "## 1. 整体功能\n这是一个异步数据获取函数...\n\n## 2. 执行流程\n..."
}
]
}完整示例
代码审查 Skill
json
{
"name": "review-code",
"description": "审查代码,检查安全漏洞、性能问题和最佳实践",
"prompt": "请审查以下代码:\n\n```\n{{code}}\n```\n\n请从以下维度进行评估:\n\n## 1. 安全问题 🔒\n- 是否有 SQL 注入、XSS 等安全漏洞\n- 是否有敏感信息泄露\n- 是否有权限控制问题\n\n## 2. 性能问题 ⚡\n- 是否有明显的性能瓶颈\n- 是否有不必要的计算\n- 是否有内存泄漏风险\n\n## 3. 代码质量 📐\n- 命名是否清晰\n- 函数是否过长\n- 是否有重复代码\n\n## 4. 最佳实践 ✅\n- 是否符合语言规范\n- 是否有适当的错误处理\n- 是否有必要的注释\n\n对于每个发现的问题,请提供:\n- 问题描述\n- 风险等级(高/中/低)\n- 修复建议(包含代码示例)",
"examples": [
{
"input": "function getUser(id) {\n const query = \"SELECT * FROM users WHERE id = \" + id;\n return db.query(query);\n}",
"output": "## 1. 安全问题 🔒\n\n### 🔴 高危:SQL 注入\n- **问题**:直接拼接 SQL 语句,存在 SQL 注入风险\n- **风险**:攻击者可以执行任意 SQL 命令\n- **修复**:\n```javascript\nfunction getUser(id) {\n const query = \"SELECT * FROM users WHERE id = ?\";\n return db.query(query, [id]);\n}\n```\n\n## 2. 性能问题 ⚡\n- 无明显性能问题\n\n## 3. 代码质量 📐\n- 无明显质量问题\n\n## 4. 最佳实践 ✅\n- 缺少错误处理\n- 建议使用参数化查询"
}
]
}常见错误
错误 1:Prompt 太简短
json
{
"prompt": "解释这段代码"
}问题:AI 不知道具体要解释什么
解决:明确维度、格式、约束
错误 2:示例太少
json
{
"examples": []
}问题:AI 不知道期望的输出质量
解决:至少提供 1-2 个高质量示例
错误 3:Name 和 Description 不匹配
json
{
"name": "explain-code",
"description": "生成代码文档"
}问题:名称和描述不一致,用户困惑
解决:确保名称和描述功能一致
总结
| 组件 | 关键要点 |
|---|---|
| Name | kebab-case,动词开头,避免缩写 |
| Description | 一句话,具体明确,不说"这个 Skill" |
| Prompt | 使用变量,明确格式,提供维度,设置约束 |
| Examples | 2-3 个,覆盖不同场景,展示期望质量 |
下一步
学习如何组合这些组件创建复杂的 Skill:
→ 高级模式