Skip to content

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"               // 不使用缩写
}

命名规则

  1. kebab-case:小写字母,短横线连接
  2. 简洁明了:一看就知道功能
  3. 动词开头:表示动作,如 explain-, review-, generate-
  4. 避免缩写:除非是行业标准缩写

命名示例

Skill 功能好的命名不好的命名
解释代码explain-codecode-explanation
审查 PRreview-prpr-review
写单元测试write-testsunit-test-writer
生成文档generate-docsdoc-generator

2. Description(描述)

作用

  • 说明 Skill 的功能
  • 帮助用户理解何时使用
  • 在 Skill 列表中展示

描述规范

✅ 好的描述

json
{
  "description": "解释代码的工作原理,包括逻辑流程、关键变量和潜在问题"
}

❌ 不好的描述

json
{
  "description": "解释代码"  // 太简单,没有价值
}
json
{
  "description": "这个 Skill 可以帮助你解释代码的工作原理"  // 冗余,不说"这个 Skill"
}

描述规则

  1. 一句话:不超过 100 个字符
  2. 具体明确:说明具体做什么,不是泛泛而谈
  3. 包含价值:用户能获得什么
  4. 不说"这个 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": "生成代码文档"
}

问题:名称和描述不一致,用户困惑

解决:确保名称和描述功能一致

总结

组件关键要点
Namekebab-case,动词开头,避免缩写
Description一句话,具体明确,不说"这个 Skill"
Prompt使用变量,明确格式,提供维度,设置约束
Examples2-3 个,覆盖不同场景,展示期望质量

下一步

学习如何组合这些组件创建复杂的 Skill:

高级模式

基于 MIT 许可发布