🧩 技能开发指南
从零开始创建自定义技能包,为 RemindAI 的 AI 注入新的能力。
📋 什么是技能
技能(Skill)是 RemindAI 的扩展机制,让 AI 在对话中获得额外的系统提示词和工具定义。技能以 ZIP 包形式分发,导入后自动加载。
一个技能由两部分组成:
SKILL.md— 系统提示词:定义 AI 的行为规范、知识领域和使用策略。这是技能的核心。tools.json— 工具定义(可选):OpenAI 格式的 Function Calling 工具定义,让 AI 能调用自定义函数。
ℹ️
SKILL.md 是必须的,tools.json 是可选的。有些技能只需要提供行为指导(纯提示词技能),不需要定义新工具。
🗂️ 技能包结构
一个标准的技能包解压后如下:
my-awesome-skill/
├── SKILL.md # 必须 — 系统提示词 (Markdown 格式)
├── tools.json # 可选 — OpenAI 格式工具定义
└── .skill_meta.json # 自动生成 — 不要手动创建
打包时,将 SKILL.md 和 tools.json(如果有)放入一个文件夹,然后将该文件夹压缩为 .zip 文件即可。
💡
ZIP 文件的名称将成为导入后的技能名称。建议使用简洁有意义的英文名称,如
code-reviewer.zip。
.skill_meta.json(自动管理)
导入后,RemindAI 会自动在技能目录中生成 .skill_meta.json,记录技能 ID、安装时间、激活状态和排序索引。不要手动创建或修改此文件。
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"installed_at": "2026-06-21T10:30:00.000",
"is_active": true,
"sort_index": 3
}
📝 SKILL.md — 系统提示词
SKILL.md 是技能的灵魂。它会在对话开始时注入到 AI 的系统提示词中,定义 AI 的行为准则。写好 SKILL.md 是开发技能的关键。
格式要求
- 使用 Markdown 格式编写
- 推荐使用
#标题划分章节(如概述、触发条件、使用策略、边界等) - 使用
>引用块写简短描述,作为技能的"一句话说明" - 使用
```代码块展示示例 - 使用列表组织操作步骤和规则
推荐模板
# 技能名称
> 一句话描述这个技能做什么、适用场景。
## 触发条件
以下情况应主动使用此技能:
- 条件 1
- 条件 2
## 使用策略
1. **步骤一**:说明
2. **步骤二**:说明
3. **降级方案**:当条件不满足时的处理
## 工具行为
### tool_name_1
描述此工具的功能、参数和返回值。
### tool_name_2
描述此工具的功能、参数和返回值。
## 边界
- 不可操作的路径或资源
- 安全限制
- 性能约束
写作原则
| 原则 | 说明 |
|---|---|
| 明确触发条件 | 告诉 AI 何时应该调用此技能,避免不必要的触发 |
| 写清边界 | 明确告诉 AI 什么不能做,比告诉它做什么更重要 |
| 给出示例 | 用代码块或具体场景展示期望的行为 |
| 考虑降级 | 当条件不满足时,AI 应该如何优雅地处理 |
| 保持精炼 | 系统提示词会占用 context 窗口,避免冗余描述 |
🔧 tools.json — 工具定义
tools.json 使用 OpenAI Function Calling 格式定义工具。AI 在对话中可以调用这些工具,RemindAI 会将调用请求路由到对应的执行器。
文件格式
文件是一个 JSON 数组,每个元素是一个工具定义:
[
{
"type": "function",
"function": {
"name": "my_tool_name",
"description": "工具功能的详细描述,AI 会根据这段文字决定何时调用此工具",
"parameters": {
"type": "object",
"properties": {
"param1": {
"type": "string",
"description": "参数说明"
},
"param2": {
"type": "number",
"description": "另一个参数说明",
"default": 42
}
},
"required": ["param1"]
}
}
}
]
支持的参数类型
| 类型 | 说明 | 示例 |
|---|---|---|
string | 字符串 | 文件路径、命令名称 |
number | 数字 | 端口号、超时时间 |
boolean | 布尔值 | 是否递归、是否覆盖 |
array | 数组 | 文件列表、标签集 |
object | 对象 | 嵌套配置 |
enum | 枚举(在 string 上使用) | 排序方式、输出格式 |
使用 enum 限定值
"format": {
"type": "string",
"enum": ["json", "csv", "markdown"],
"description": "输出格式",
"default": "json"
}
⚠️
工具的
description 字段非常重要 — AI 根据它来决定何时调用此工具。务必用清晰的语言描述工具的功能和适用场景。
🚀 实战教程:创建 "代码审查" 技能
通过一个完整的示例,演示如何从零创建一个实用的技能包。
步骤一:创建目录结构
code-reviewer/
├── SKILL.md
└── tools.json
步骤二:编写 SKILL.md
# 代码审查专家
> 专注于代码质量审查,检查潜在 Bug、安全漏洞、性能问题和代码风格。适用于 PR Review、代码自查等场景。
## 触发条件
以下情况应主动激活此技能:
- 用户要求审查代码或 PR
- 用户说"帮我看看这段代码"
- 用户提交了新代码要求反馈
## 审查维度
按以下优先级审查代码:
1. **🔴 安全漏洞** (P0)
- SQL 注入、XSS、路径遍历
- 硬编码密钥/密码
- 不安全的依赖版本
2. **🟡 Bug 风险** (P1)
- 空指针/空引用
- 边界条件未处理
- 并发/竞态条件
- 资源泄漏(文件句柄、数据库连接)
3. **🟢 性能问题** (P2)
- N+1 查询
- 不必要的循环嵌套
- 大对象在循环中重复创建
4. **📋 代码风格** (P3)
- 命名规范
- 函数长度(建议 < 50 行)
- 重复代码
## 输出格式
每个发现的问题用以下格式输出:
```
[严重程度] 文件:行号 — 问题描述
> 建议的修复方案
```
## 边界
- 只审查工作目录内的文件
- 不自动修改代码,只给出建议
- 不审查 node_modules/、.git/ 等目录
步骤三:编写 tools.json
为代码审查技能添加一个专用的扫描工具:
[
{
"type": "function",
"function": {
"name": "review_scan",
"description": "扫描指定目录的代码文件,返回文件列表和行数统计。用于审查前了解代码规模。",
"parameters": {
"type": "object",
"properties": {
"directory": {
"type": "string",
"description": "要扫描的目录路径(相对于工作目录)"
},
"extensions": {
"type": "array",
"items": { "type": "string" },
"description": "要扫描的文件扩展名,如 ['.dart', '.py', '.js']。留空扫描所有文件。"
},
"max_files": {
"type": "number",
"description": "最多扫描的文件数量,默认 100",
"default": 100
}
},
"required": ["directory"]
}
}
}
]
步骤四:打包并导入
- 将
code-reviewer/文件夹压缩为code-reviewer.zip - 在 RemindAI 的「技能」页面,点击 + 导入 ZIP
- 确认导入成功,卡片上显示 1 个工具
- 在对话中试试:"帮我审查一下 src/ 目录下的代码"
⭐ 最佳实践
这些经验来自内置技能的开发过程,能帮你写出更好的技能。
SKILL.md 写作技巧
- 用引用块写一句话摘要 —
> 描述,让 AI 快速理解技能用途 - 明确列出触发条件 — 用"以下情况应主动调用 xxx"的句式
- 给出使用策略编号列表 — 1-2-3 步骤让 AI 按序执行
- 写清边界和限制 — "不可操作的路径"、"超时保护"等
- 为每个工具单独写一节 — 描述功能、参数含义和行为规则
tools.json 注意事项
- description 要精确 — 这是 AI 决策的唯一依据,模糊的描述会导致错误调用
- 合理使用 required — 必填参数越少越好,可选参数设合理默认值
- 参数名用 snake_case — 如
file_path而非filePath - 善用 enum — 对有限选项使用枚举,避免 AI 猜测值
- 工具数量控制在 1-5 个 — 太多工具会增加 AI 选择的困惑
测试技能
导入技能后,通过以下方式测试:
- 在新对话中(确保技能已启用),用不同的表述触发技能
- 检查 AI 是否正确识别了触发条件
- 验证工具调用是否正确传参
- 查看 SKILL.md 内容(点击卡片上的 📄 按钮)确认注入正确
- 迭代优化 SKILL.md 中的措辞
📚 内置技能参考
RemindAI 内置了三个元技能,它们是最好的学习参考。你可以在技能页面点击 📄 按钮查看完整的 SKILL.md。
| 技能 | 工具数 | 核心要点 |
|---|---|---|
| ToolShell | 10+ | 文件操作 + Shell/Python 执行 + 记忆管理。展示了沙盒边界、操作确认、路径保护等安全模式的写法。 |
| Schedule | 7 | SCHEDULE.md 计划管理。展示了如何通过文件驱动的 CRUD 操作、优先级系统和归档策略来组织工作流。 |
| System | 2 | 环境探测。展示了如何用最少的工具做最多的事:探测 + 脱敏,简洁高效。 |
📦 打包与分发
开发完成后,将技能打包为 ZIP 文件并分发给其他用户。
打包步骤
- 确保目录中包含
SKILL.md(必须)和tools.json(可选) - 删除
.skill_meta.json(这是导入后自动生成的,不应包含在分发包中) - 将文件夹压缩为
.zip文件 - ZIP 可以是单层目录包裹(如
my-skill.zip内含my-skill/SKILL.md),也可以直接包含文件。RemindAI 会自动处理两种情况。
💡
推荐使用命令行打包以确保结构正确:
# macOS / Linux
cd code-reviewer/
zip -r ../code-reviewer.zip SKILL.md tools.json
# Windows (PowerShell)
Compress-Archive -Path SKILL.md, tools.json -DestinationPath ..\code-reviewer.zip
分享渠道
- Skills MP — 技能市场平台
- Claud Skills — 社区技能库
- Skills.sh — 开放技能平台
- GitHub — 创建仓库发布 Release