🧩 技能开发指南

从零开始创建自定义技能包,为 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.mdtools.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"] } } } ]

步骤四:打包并导入

  1. code-reviewer/ 文件夹压缩为 code-reviewer.zip
  2. 在 RemindAI 的「技能」页面,点击 + 导入 ZIP
  3. 确认导入成功,卡片上显示 1 个工具
  4. 在对话中试试:"帮我审查一下 src/ 目录下的代码"

最佳实践

这些经验来自内置技能的开发过程,能帮你写出更好的技能。

SKILL.md 写作技巧

  • 用引用块写一句话摘要> 描述,让 AI 快速理解技能用途
  • 明确列出触发条件 — 用"以下情况应主动调用 xxx"的句式
  • 给出使用策略编号列表 — 1-2-3 步骤让 AI 按序执行
  • 写清边界和限制 — "不可操作的路径"、"超时保护"等
  • 为每个工具单独写一节 — 描述功能、参数含义和行为规则

tools.json 注意事项

  • description 要精确 — 这是 AI 决策的唯一依据,模糊的描述会导致错误调用
  • 合理使用 required — 必填参数越少越好,可选参数设合理默认值
  • 参数名用 snake_case — 如 file_path 而非 filePath
  • 善用 enum — 对有限选项使用枚举,避免 AI 猜测值
  • 工具数量控制在 1-5 个 — 太多工具会增加 AI 选择的困惑

测试技能

导入技能后,通过以下方式测试:

  1. 在新对话中(确保技能已启用),用不同的表述触发技能
  2. 检查 AI 是否正确识别了触发条件
  3. 验证工具调用是否正确传参
  4. 查看 SKILL.md 内容(点击卡片上的 📄 按钮)确认注入正确
  5. 迭代优化 SKILL.md 中的措辞

📚 内置技能参考

RemindAI 内置了三个元技能,它们是最好的学习参考。你可以在技能页面点击 📄 按钮查看完整的 SKILL.md。

技能工具数核心要点
ToolShell 10+ 文件操作 + Shell/Python 执行 + 记忆管理。展示了沙盒边界、操作确认、路径保护等安全模式的写法。
Schedule 7 SCHEDULE.md 计划管理。展示了如何通过文件驱动的 CRUD 操作、优先级系统和归档策略来组织工作流。
System 2 环境探测。展示了如何用最少的工具做最多的事:探测 + 脱敏,简洁高效。

📦 打包与分发

开发完成后,将技能打包为 ZIP 文件并分发给其他用户。

打包步骤

  1. 确保目录中包含 SKILL.md(必须)和 tools.json(可选)
  2. 删除 .skill_meta.json(这是导入后自动生成的,不应包含在分发包中)
  3. 将文件夹压缩为 .zip 文件
  4. 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

分享渠道