Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help


title: “创建技能” description: “如何编写 Hermes Skill:目录结构、SKILL.md 规范、安全扫描与发布方式。”

创建技能

Skill 是 Hermes 中表达“可复用能力包”的主要方式。它通常由说明文档、脚本、可选资源文件和激活条件组成,适合封装工作流,而不是底层 API 集成。

应该做成 Skill 还是 Tool?

优先做成 Skill 的场景:

  • 能力主要由提示词说明驱动;
  • 可以通过 shell 命令和现有工具完成;
  • 不需要复杂的二进制处理或长连接;
  • 更像“工作流程模板”而不是独立系统能力。

适合做成 Tool 的场景则包括:需要新 API 集成、独立 schema、复杂 I/O 或流式处理。

Skill 目录结构

一个典型 Skill 目录通常包含:

  • SKILL.md:必需,主说明文件;
  • scripts/:可选,辅助脚本;
  • assets/ 或模板文件:可选;
  • 配置或说明性资源文件:按需添加。

SKILL.md 格式

SKILL.md 是 Skill 的核心入口,通常需要描述:

  • 这个技能在什么场景下使用;
  • 快速参考;
  • 推荐流程;
  • 常见坑;
  • 验证方式;
  • 依赖的环境变量或文件。
# Skill Title
## When to Use
## Quick Reference
## Procedure
## Pitfalls
## Verification

平台特定 Skill

如果技能只适用于某些平台,应在文档中明确标注,并在运行时配置中配合启用/禁用。

条件激活

有些技能只在特定目录、特定文件存在或特定环境变量可用时才应启用。这类条件要写清楚,避免模型在无效上下文中使用技能。

环境变量要求

如果技能依赖密钥、认证文件或外部服务地址,应在 SKILL.md 中明确要求,并说明缺失时的退化行为。

加载时的安全设置

Skill 是可安装内容,因此安全边界很重要。

配置项(config.yaml

技能系统通常允许对加载、启用状态和安全检查做配置。新增技能时要确保它不会绕过现有的启用/禁用机制。

凭证文件要求

如果技能依赖 OAuth token 或其他认证文件,应该说明:

  • 文件放置位置;
  • 最小权限要求;
  • 缺失时的行为;
  • 不要把这些文件硬编码进技能仓库。

Skill 编写准则

不引入外部依赖

能复用现有工具和内置命令时,不要为了一个 Skill 再增加额外安装步骤。Skill 越轻量,越容易分发与维护。

渐进披露

SKILL.md 应先给模型最关键的入口信息,再在需要时提供细节,而不是把一大段冗长背景一次性塞进去。

包含辅助脚本

如果某个流程很长、命令很复杂或输出需要标准化,建议把它放进 scripts/,而不是让模型每次临时现拼。

测试它

一个 Skill 至少应验证:

  • 模型能正确识别何时使用;
  • 脚本或命令可执行;
  • 输出格式稳定;
  • 缺失依赖时有可理解的报错。

Skill 应该放在哪里?

常见放置位置:

  • 仓库内置 skills/:随项目分发;
  • optional-skills/:官方可选内容;
  • 自定义技能仓库:团队或个人维护。

发布 Skill

发布到 Skills Hub

适合希望被更多用户直接安装和发现的通用技能。

发布到自定义仓库

适合团队私有技能、行业专用技能或实验性能力。

安全扫描

安装和加载技能时,系统会做一定的安全检查。技能作者应避免:

  • 隐藏式执行高风险命令;
  • 在文档中夹带越权指令;
  • 引导模型读取不必要的敏感文件;
  • 将秘密信息写死在仓库中。