技能系统
技能是按需加载的知识文档。它们遵循**渐进式披露(Progressive Disclosure)**模式以最小化 token 消耗,并兼容 agentskills.io 开放标准。
所有技能位于 ~/.hermes/skills/——这是主目录和事实来源。全新安装时,捆绑技能从仓库复制而来。从中心安装和代理创建的技能也放在这里。代理可以修改或删除任何技能。
您还可以将 Hermes 指向外部技能目录——与本地目录一起扫描的额外文件夹。请参阅下方的外部技能目录。
另请参阅:
使用技能
每个已安装的技能自动作为斜杠命令可用:
# 在 CLI 或任何消息平台中:
/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
/plan design a rollout for migrating our auth provider
# 仅使用技能名称加载它,让代理询问您需要什么:
/excalidraw捆绑的 plan 技能是一个很好的例子。运行 /plan [request] 会加载该技能的指令,告诉 Hermes 在需要时检查上下文,编写一个 Markdown 格式的实施计划而非执行任务,并将结果保存到相对于活跃工作区/后端工作目录的 .hermes/plans/ 下。
您也可以通过自然对话与技能交互:
hermes chat --toolsets skills -q "What skills do you have?"
hermes chat --toolsets skills -q "Show me the axolotl skill"渐进式披露
技能使用 token 高效的加载模式:
Level 0: skills_list() → [{name, description, category}, ...] (~3k tokens)
Level 1: skill_view(name) → 完整内容 + 元数据 (不定)
Level 2: skill_view(name, path) → 特定参考文件 (不定)
代理仅在真正需要时才加载完整的技能内容。
SKILL.md 格式
---
name: my-skill
description: 此技能功能的简要描述
version: 1.0.0
platforms: [macos, linux] # 可选——限制到特定操作系统平台
metadata:
hermes:
tags: [python, automation]
category: devops
fallback_for_toolsets: [web] # 可选——条件激活(见下文)
requires_toolsets: [terminal] # 可选——条件激活(见下文)
config: # 可选——config.yaml 设置
- key: my.setting
description: "此项控制的内容"
default: "value"
prompt: "设置提示"
---
# 技能标题
## 何时使用
此技能的触发条件。
## 步骤
1. 第一步
2. 第二步
## 注意事项
- 已知失败模式及修复方法
## 验证
如何确认它有效。平台特定技能
技能可以使用 platforms 字段限制到特定操作系统:
| 值 | 匹配 |
|---|---|
macos | macOS (Darwin) |
linux | Linux |
windows | Windows |
platforms: [macos] # 仅 macOS(例如 iMessage、Apple Reminders、FindMy)
platforms: [macos, linux] # macOS 和 Linux设置后,在不兼容的平台上,技能会自动从系统提示、skills_list() 和斜杠命令中隐藏。如果省略,技能在所有平台上加载。
技能输出与媒体投递
当技能响应(或任何代理响应)包含媒体文件的裸绝对路径时——例如 /home/user/screenshots/diagram.png——网关会自动检测它,将其从可见文本中剥离,并以原生方式将文件投递到用户的聊天中(Telegram 图片、Discord 附件等),而不是在消息中留下原始路径。
对于音频,[[audio_as_voice]] 指令将音频文件提升为支持平台上的原生语音消息气泡(Telegram、WhatsApp)。
强制文档式投递:[[as_document]]
有时您想要与内联预览相反的效果:希望文件作为可下载附件投递,而不是重新压缩的图片气泡。典型的例子是高分辨率截图或图表——Telegram 的 sendPhoto 将其重新压缩到约 200 KB 的 1280 px,破坏可读性。通过 sendDocument 发送的 1-2 MB PNG 保持原始字节不变。
如果响应(或其内的任何文本——通常是最后一行)包含文字指令 [[as_document]],则从该响应中提取的每个媒体路径都会被作为文档/文件附件投递,而非图片气泡:
这是您的渲染图表:
/home/user/.hermes/cache/chart-q4-2025.png
[[as_document]]
该指令在投递前被剥离,因此用户永远不会看到它。粒度有意为每个响应的全或无:发出一次 [[as_document]],同一响应中的每个图片路径都作为文档投递。这镜像了 [[audio_as_voice]] 的范围。
在以下情况下从技能中使用它:
- 您生成了用户需要作为文件保存的截图或图表(用于在其他工具中编辑、存档、完整共享)。
- 默认的有损预览会掩盖细节(小文本、像素级精确的图表、色彩敏感的渲染)。
没有单独文档路径的平台(例如 SMS)会回退到它们拥有的任何附件机制。
条件激活(后备技能)
技能可以根据当前会话中可用的工具自动显示或隐藏自身。这对后备技能最为有用——仅当高级工具不可用时才应出现的免费或本地替代方案。
metadata:
hermes:
fallback_for_toolsets: [web] # 仅当这些工具集不可用时显示
requires_toolsets: [terminal] # 仅当这些工具集可用时显示
fallback_for_tools: [web_search] # 仅当这些特定工具不可用时显示
requires_tools: [terminal] # 仅当这些特定工具可用时显示| 字段 | 行为 |
|---|---|
fallback_for_toolsets | 当列出的工具集可用时隐藏技能。缺少时显示。 |
fallback_for_tools | 相同,但检查单个工具而非工具集。 |
requires_toolsets | 当列出的工具集不可用时隐藏技能。存在时显示。 |
requires_tools | 相同,但检查单个工具。 |
示例: 内置的 duckduckgo-search 技能使用 fallback_for_toolsets: [web]。当您设置了 FIRECRAWL_API_KEY 时,web 工具集可用,代理使用 web_search——DuckDuckGo 技能保持隐藏。如果 API 密钥缺失,web 工具集不可用,DuckDuckGo 技能自动显示为后备。
没有条件字段的技能行为与之前完全相同——它们始终显示。
加载时的安全设置
技能可以声明所需的环境变量,而不会从发现中消失:
required_environment_variables:
- name: TENOR_API_KEY
prompt: Tenor API 密钥
help: 从 https://developers.google.com/tenor 获取密钥
required_for: 完整功能当遇到缺失的值时,Hermes 仅在本地 CLI 中实际加载技能时安全地询问。您可以跳过设置并继续使用技能。消息界面永远不会在聊天中询问密钥——它们会告诉您在本地使用 hermes setup 或 ~/.hermes/.env。
设置后,声明的环境变量会自动传递到 execute_code 和 terminal 沙箱——技能的脚本可以直接使用 $TENOR_API_KEY。对于非技能环境变量,使用 terminal.env_passthrough 配置选项。详情请参见环境变量传递。
技能配置设置
技能还可以声明存储在 config.yaml 中的非秘密配置设置(路径、偏好):
metadata:
hermes:
config:
- key: myplugin.path
description: 插件数据目录路径
default: "~/myplugin-data"
prompt: 插件数据目录路径设置存储在您的 config.yaml 的 skills.config 下。hermes config migrate 提示未配置的设置,hermes config show 显示它们。当技能加载时,其解析的配置值被注入到上下文中,以便代理自动知道配置的值。
详情请参见技能设置和创建技能——配置设置。
技能目录结构
~/.hermes/skills/ # 唯一事实来源
├── mlops/ # 类别目录
│ ├── axolotl/
│ │ ├── SKILL.md # 主要指令(必需)
│ │ ├── references/ # 附加文档
│ │ ├── templates/ # 输出格式
│ │ ├── scripts/ # 可从技能调用的辅助脚本
│ │ └── assets/ # 补充文件
│ └── vllm/
│ └── SKILL.md
├── devops/
│ └── deploy-k8s/ # 代理创建的技能
│ ├── SKILL.md
│ └── references/
├── .hub/ # 技能中心状态
│ ├── lock.json
│ ├── quarantine/
│ └── audit.log
└── .bundled_manifest # 跟踪已播种的捆绑技能外部技能目录
如果您在 Hermes 之外维护技能——例如多个 AI 工具共享的 ~/.agents/skills/ 目录——您可以告诉 Hermes 也扫描这些目录。
在 ~/.hermes/config.yaml 的 skills 部分下添加 external_dirs:
skills:
external_dirs:
- ~/.agents/skills
- /home/shared/team-skills
- ${SKILLS_REPO}/skills路径支持 ~ 扩展和 ${VAR} 环境变量替换。
工作原理
- 就地创建和更新:代理创建的新技能写入
~/.hermes/skills/。当代理使用skill_manage操作(如patch、edit、write_file、remove_file或delete)时,现有技能在其被发现的位置被修改,包括external_dirs下的技能。 - 外部目录不是写保护边界:如果外部技能目录对 Hermes 进程可写,代理管理的技能更新可以更改该目录中的文件。如果共享的外部技能必须保持只读,请使用文件系统权限或单独的配置文件/工具集设置。
- 本地优先:如果相同技能名称同时存在于本地目录和外部目录中,本地版本胜出。
- 完全集成:外部技能出现在系统提示索引、
skills_list、skill_view和作为/skill-name斜杠命令——与本地技能无异。 - 不存在的路径静默跳过:如果配置的目录不存在,Hermes 忽略它且不报错。对于可能不在每台机器上都存在的可选共享目录很有用。
示例
~/.hermes/skills/ # 本地(主目录,读写)
├── devops/deploy-k8s/
│ └── SKILL.md
└── mlops/axolotl/
└── SKILL.md
~/.agents/skills/ # 外部(共享,如可写则可修改)
├── my-custom-workflow/
│ └── SKILL.md
└── team-conventions/
└── SKILL.md所有四个技能都出现在您的技能索引中。如果您在本地创建一个名为 my-custom-workflow 的新技能,它会遮蔽外部版本。
技能包
技能包(Skill Bundle)是微小的 YAML 文件,将多个技能组合在单个斜杠命令下。当您运行 /<bundle-name> 时,包中列出的每个技能都一次性加载——当特定任务总是受益于同一组技能时非常有用。
快速示例
# 创建后端功能工作的包
hermes bundles create backend-dev \
--skill github-code-review \
--skill test-driven-development \
--skill github-pr-workflow \
-d "后端功能工作——审查、测试、PR 工作流"然后在 CLI 或任何网关平台中:
/backend-dev 重构认证中间件
代理会收到三个技能加载到一条用户消息中,斜杠命令后的任何文本作为用户指令附加。
YAML 模式
包位于 ~/.hermes/skill-bundles/<slug>.yaml,如下所示:
name: backend-dev
description: 后端功能工作——审查、测试、PR 工作流。
skills:
- github-code-review
- test-driven-development
- github-pr-workflow
instruction: |
始终从编写失败的测试开始,然后实现。
通过标准工作流打开 PR,并添加合作作者标签。字段:
name(可选——默认为文件名词干)——包的显示名称。规范化为连字符形式作为斜杠命令(Backend Dev→/backend-dev)。description(可选)——在/bundles和hermes bundles list中显示的短文本。skills(必需,非空列表)——技能名称或相对于技能目录的路径。使用传递给/<skill-name>的相同标识符。instruction(可选)——预先挂载到加载的技能内容之前的额外指导。用于规范”我们如何一起使用这些”。
管理包
# 列出所有已安装的包
hermes bundles list
# 检查一个包
hermes bundles show backend-dev
# 交互式创建包(省略 --skill 标志可逐行输入)
hermes bundles create research
# 覆盖现有包
hermes bundles create backend-dev --skill ... --force
# 删除包
hermes bundles delete backend-dev
# 重新扫描 ~/.hermes/skill-bundles/ 并报告更改
hermes bundles reload在聊天会话内,/bundles 列出每个已安装的包及其技能。
行为
- 当 slug 冲突时,包优先于单个技能。 如果您将一个包命名为
research并且也有一个名为research的技能,则/research调用包。这是有意为之——您通过命名选择了这个包。 - 缺失的技能被跳过,而非致命错误。 如果包列出了
skill-foo而您没有安装它,包仍然加载可解析的技能,并且代理会收到一条说明跳过了哪些技能的提示。 - 包在每个界面中都能工作——交互式 CLI、TUI、仪表盘聊天和每个网关平台(Telegram、Discord、Slack 等)——因为分发与单个技能命令集中在同一位置。
- 包不会使提示缓存失效。 它们在调用时生成一条新的用户消息,与
/<skill-name>的方式相同——不改变系统提示。
何时包优于手动安装每个技能
在以下情况下使用包:
- 您总是为重复性任务配对相同的技能(
/backend-dev、/release-prep、/incident-response)。 - 您想要比连续输入几个
/skill调用更短的心理模型。 - 您希望通过将包 YAML 签入共享的 dotfiles 仓库并将其符号链接到
~/.hermes/skill-bundles/来发布团队范围的”任务配置文件”。
包只是一个 YAML 别名——它不会为您安装技能。技能本身必须已经存在(在 ~/.hermes/skills/ 或外部技能目录中)。否则包调用只会跳过缺失的技能。
代理管理技能(skill_manage 工具)
代理可以通过 skill_manage 工具创建、更新和删除其自己的技能。这是代理的程序性记忆——当它发现非平凡的工作流时,将方法保存为技能以备将来重用。
代理何时创建技能
- 成功完成复杂任务(5 次以上工具调用)后
- 当它遇到错误或死胡同并找到了可行路径时
- 当用户纠正了它的方法时
- 当它发现非平凡的工作流时
操作
| 操作 | 用途 | 关键参数 |
|---|---|---|
create | 从头创建新技能 | name, content(完整 SKILL.md),可选的 category |
patch | 定向修复(首选) | name, old_string, new_string |
edit | 主要结构性重写 | name, content(完整 SKILL.md 替换) |
delete | 完全删除技能 | name |
write_file | 添加/更新支持文件 | name, file_path, file_content |
remove_file | 删除支持文件 | name, file_path |
:::tip
patch 操作是更新的首选——它比 edit 更省 token,因为只有更改的文本出现在工具调用中。
:::
技能中心
浏览、搜索、安装和管理来自在线注册表、skills.sh、直接知名技能端点以及官方可选技能的技能。
常用命令
hermes skills browse # 浏览所有中心技能(官方优先)
hermes skills browse --source official # 仅浏览官方可选技能
hermes skills search kubernetes # 搜索所有来源
hermes skills search react --source skills-sh # 搜索 skills.sh 目录
hermes skills search https://mintlify.com/docs --source well-known
hermes skills inspect openai/skills/k8s # 安装前预览
hermes skills install openai/skills/k8s # 安装并安全扫描
hermes skills install official/security/1password
hermes skills install skills-sh/vercel-labs/json-render/json-render-react --force
hermes skills install well-known:https://mintlify.com/docs/.well-known/skills/mintlify
hermes skills install https://sharethis.chat/SKILL.md # 直接 URL(单文件 SKILL.md)
hermes skills install https://example.com/SKILL.md --name my-skill # 当前置数据中没有名称时覆盖
hermes skills list --source hub # 列出中心安装的技能
hermes skills check # 检查已安装的中心技能是否有上游更新
hermes skills update # 需要时重新安装有上游更改的中心技能
hermes skills audit # 重新扫描所有中心技能的安全性
hermes skills uninstall k8s # 移除中心技能
hermes skills reset google-workspace # 将捆绑技能从"用户修改"状态解除(见下文)
hermes skills reset google-workspace --restore # 同时恢复捆绑版本,删除您的本地编辑
hermes skills publish skills/my-skill --to github --repo owner/repo
hermes skills snapshot export setup.json # 导出技能配置
hermes skills tap add myorg/skills-repo # 添加自定义 GitHub 来源支持的中心来源
| 来源 | 示例 | 说明 |
|---|---|---|
official | official/security/1password | Hermes 附带的可选技能。 |
skills-sh | skills-sh/vercel-labs/agent-skills/vercel-react-best-practices | 可通过 hermes skills search <query> --source skills-sh 搜索。当 skills.sh 的 slug 与仓库文件夹不同时,Hermes 解析别名样式的技能。 |
well-known | well-known:https://mintlify.com/docs/.well-known/skills/mintlify | 直接通过网站上的 /.well-known/skills/index.json 提供的技能。使用网站或文档 URL 搜索。 |
url | https://sharethis.chat/SKILL.md | 指向单文件 SKILL.md 的直接 HTTP(S) URL。名称解析顺序:前置数据 → URL slug → 交互式提示 → --name 标志。 |
github | openai/skills/k8s | 直接 GitHub 仓库/路径安装和自定义 tap。 |
clawhub, lobehub, browse-sh, claude-marketplace | 来源特定标识符 | 社区或市场集成。 |
集成的中心与注册表
Hermes 目前与以下技能生态系统和发现来源集成:
1. 官方可选技能(official)
这些在 Hermes 仓库本身中维护,并以内置信任安装。
- 目录:官方可选技能目录
- 仓库中的来源:
optional-skills/ - 示例:
hermes skills browse --source official
hermes skills install official/security/1password2. skills.sh(skills-sh)
这是 Vercel 的公开技能目录。Hermes 可以直接搜索它,检查技能详情页面,解析别名风格的 slug,并从底层来源仓库安装。
- 目录:skills.sh
- CLI/工具仓库:vercel-labs/skills
- 官方 Vercel 技能仓库:vercel-labs/agent-skills
- 示例:
hermes skills search react --source skills-sh
hermes skills inspect skills-sh/vercel-labs/json-render/json-render-react
hermes skills install skills-sh/vercel-labs/json-render/json-render-react --force3. 知名技能端点(well-known)
这是基于 URL 的发现,来自发布 /.well-known/skills/index.json 的网站。它不是一个单一的中心注册表——它是一个网络发现约定。
- 示例活跃端点:Mintlify docs skills index
- 参考服务器实现:vercel-labs/skills-handler
- 示例:
hermes skills search https://mintlify.com/docs --source well-known
hermes skills inspect well-known:https://mintlify.com/docs/.well-known/skills/mintlify
hermes skills install well-known:https://mintlify.com/docs/.well-known/skills/mintlify4. 直接 GitHub 技能(github)
Hermes 可以直接从 GitHub 仓库和基于 GitHub 的 tap 安装技能。当您已经知道仓库/路径或想要添加自己的自定义来源仓库时,这很有用。
默认 taps(无需任何设置即可浏览):
-
示例:
hermes skills install openai/skills/k8s
hermes skills tap add myorg/skills-repo5. ClawHub(clawhub)
一个第三方技能市场,作为社区来源集成。
- 网站:clawhub.ai
- Hermes 来源 ID:
clawhub
6. Claude 市场风格仓库(claude-marketplace)
Hermes 支持发布 Claude 兼容插件/市场清单的市场仓库。
已知的集成来源包括:
Hermes 来源 ID:claude-marketplace
7. LobeHub(lobehub)
Hermes 可以搜索并将 LobeHub 公共目录中的代理条目转换为可安装的 Hermes 技能。
- 网站:LobeHub
- 公共代理索引:chat-agents.lobehub.com
- 支持仓库:lobehub/lobe-chat-agents
- Hermes 来源 ID:
lobehub
8. browse.sh(browse-sh)
Hermes 与 browse.sh 集成,这是 Browserbase 的 200+ 个网站特定浏览器自动化 SKILL.md 文件目录(Airbnb、Amazon、arXiv、12306.cn、Etsy、Xero 等)。每个技能描述了如何端到端驱动一个网站,适用于 Hermes 的浏览器工具和您已安装的任何浏览器自动化技能。
- 网站:browse.sh
- 目录 API:
https://browse.sh/api/skills - Hermes 来源 ID:
browse-sh - 信任级别:
community
hermes skills search airbnb --source browse-sh
hermes skills inspect browse-sh/airbnb.com/search-listings-ddgioa
hermes skills install browse-sh/airbnb.com/search-listings-ddgioa标识符使用 browse-sh/<hostname>/<task-id> 形式,匹配 browse.sh 目录暴露的 slug。内容通过每个技能详情端点(/api/skills/<slug> → skillMdUrl)解析,而非通过目录的 GitHub sourceUrl。
9. 直接 URL(url)
直接从任何 HTTP(S) URL 安装单文件 SKILL.md——当作者在自己的网站上托管技能时很有用(没有中心列表,没有要输入的 GitHub 路径)。Hermes 获取 URL,解析 YAML 前置数据,安全扫描并安装。
- Hermes 来源 ID:
url - 标识符:URL 本身(无需前缀)
- 范围:仅单文件
SKILL.md。带有references/或scripts/的多文件技能需要一个清单,应通过上述其他来源之一发布。
hermes skills install https://sharethis.chat/SKILL.md
hermes skills install https://example.com/my-skill/SKILL.md --category productivity名称解析顺序:
- SKILL.md YAML 前置数据中的
name:字段(推荐——每个格式良好的技能都有)。 - URL 路径中的父目录名称(例如
.../my-skill/SKILL.md→my-skill,或.../my-skill.md→my-skill),如果它是有效的标识符(^[a-z][a-z0-9_-]*$)。 - 在具有 TTY 的终端上的交互式提示。
- 在非交互式界面上(TUI 内的
/skills install斜杠命令、网关平台、脚本),一条清晰的错误信息指向--name覆盖。
# 前置数据没有名称且 URL slug 无帮助——提供一个:
hermes skills install https://example.com/SKILL.md --name sharethis-chat
# 或在聊天会话中:
/skills install https://example.com/SKILL.md --name sharethis-chat信任级别始终为 community——运行与所有其他来源相同的安全扫描。URL 存储为安装标识符,因此当您想刷新时,hermes skills update 会自动从相同的 URL 重新获取。
安全扫描与 --force
所有中心安装的技能都会经过安全扫描,检查数据泄露、提示注入、破坏性命令、供应链信号和其他威胁。
hermes skills inspect ... 现在在可用时也会显示上游元数据:
- 仓库 URL
- skills.sh 详情页面 URL
- 安装命令
- 每周安装量
- 上游安全审计状态
- 知名索引/端点 URL
当您已审查第三方技能并想覆盖非危险策略阻止时,使用 --force:
hermes skills install skills-sh/anthropics/skills/pdf --force重要行为:
--force可以覆盖 caution/warn 类型发现的策略阻止。--force不会覆盖dangerous扫描裁决。- 官方可选技能(
official/...)被视为内置信任,不会显示第三方警告面板。
信任级别
| 级别 | 来源 | 策略 |
|---|---|---|
builtin | 随 Hermes 提供 | 始终信任 |
official | 仓库中的 optional-skills/ | 内置信任,无第三方警告 |
trusted | 可信注册表/仓库,如 openai/skills、anthropics/skills、huggingface/skills | 比社区来源更宽松的策略 |
community | 其他所有来源(skills.sh、知名端点、自定义 GitHub 仓库、大多数市场) | 非危险发现可以用 --force 覆盖;dangerous 裁决保持阻止 |
更新生命周期
中心现在跟踪足够的来源信息,以重新检查已安装技能的上游副本:
hermes skills check # 报告哪些已安装的中心技能在上游发生了变化
hermes skills update # 仅重新安装有可用更新的技能
hermes skills update react # 更新一个特定的已安装中心技能这使用存储的来源标识符加上当前上游包内容哈希来检测差异。
:::tip GitHub 速率限制
技能中心操作使用 GitHub API,未认证用户限制为 60 次请求/小时。如果您在安装或搜索期间看到速率限制错误,请在 .env 文件中设置 GITHUB_TOKEN 以将限制提高到 5,000 次请求/小时。错误消息在发生时会包含可操作提示。
:::
发布自定义技能 tap
如果您想分享一组策划的技能——为您的团队、组织或公开——您可以将其作为 tap 发布:一个其他 Hermes 用户使用 hermes skills tap add <owner/repo> 添加的 GitHub 仓库。无需服务器、无需注册表注册、无需发布流水线。只需一个 SKILL.md 文件的目录。
仓库布局
tap 是任何 GitHub 仓库(公共或私有——私有需要 GITHUB_TOKEN),布局如下:
owner/repo
├── skills/ # 默认路径;每个 tap 可配置
│ ├── my-workflow/
│ │ ├── SKILL.md # 必需
│ │ ├── references/ # 可选的支持文件
│ │ ├── templates/
│ │ └── scripts/
│ ├── another-skill/
│ │ └── SKILL.md
│ └── third-skill/
│ └── SKILL.md
└── README.md # 可选但有用
规则:
- 每个技能位于 tap 根路径(默认
skills/)下的自己目录中。 - 目录名称成为技能的安装 slug。
- 每个技能目录必须包含一个带有标准 SKILL.md 前置数据(
name、description,以及可选的metadata.hermes.tags、version、author、platforms、metadata.hermes.config)的SKILL.md。 - 子目录如
references/、templates/、scripts/、assets/在安装时与SKILL.md一起下载。 - 目录名称以
.或_开头的技能被忽略。
Hermes 通过列出 tap 路径的每个子目录并探测每个目录是否有 SKILL.md 来发现技能。
最小 tap 示例
my-org/hermes-skills
└── skills/
└── deploy-runbook/
└── SKILL.md
skills/deploy-runbook/SKILL.md:
---
name: deploy-runbook
description: 我们的部署手册——服务、回滚、Slack 频道
version: 1.0.0
author: 我的组织平台团队
metadata:
hermes:
tags: [deployment, runbook, internal]
---
# 部署手册
步骤 1: ...推送到 GitHub 后,任何 Hermes 用户都可以订阅和安装:
hermes skills tap add my-org/hermes-skills
hermes skills search deploy
hermes skills install my-org/hermes-skills/deploy-runbook非默认路径
如果您的技能不在 skills/ 下(当您将 skills/ 子树添加到现有项目时常见),编辑 ~/.hermes/.hub/taps.json 中的 tap 条目:
{
"taps": [
{"repo": "my-org/platform-docs", "path": "internal/skills/"}
]
}hermes skills tap add CLI 默认新 tap 的 path: "skills/";如果需要不同路径,直接编辑文件。hermes skills tap list 显示每个 tap 的有效路径。
直接安装单个技能(无需添加 tap)
用户也可以从任何公共 GitHub 仓库安装单个技能,而无需将整个仓库添加为 tap:
hermes skills install owner/repo/skills/my-workflow当您想分享一个技能而不要求用户订阅整个注册表时,这很有用。
tap 的信任级别
新 tap 默认分配 community 信任。从它们安装的技能会通过标准安全扫描,并在首次安装时显示第三方警告面板。如果您的组织或广泛信任的来源应获得更高信任,请将其仓库添加到 TRUSTED_REPOS 在 tools/skills_hub.py 中(需要 Hermes 核心 PR)。
Tap 管理
hermes skills tap list # 显示所有配置的 tap
hermes skills tap add myorg/skills-repo # 添加(默认路径: skills/)
hermes skills tap remove myorg/skills-repo # 移除在运行中的会话中:
/skills tap list
/skills tap add myorg/skills-repo
/skills tap remove myorg/skills-repo
Tap 存储在 ~/.hermes/.hub/taps.json 中(按需创建)。
捆绑技能更新(hermes skills reset)
Hermes 附带一组位于仓库 skills/ 中的捆绑技能。安装时和每次 hermes update 时,同步过程会将这些技能复制到 ~/.hermes/skills/,并在 ~/.hermes/skills/.bundled_manifest 中记录一个清单,将每个技能名称映射到同步时的内容哈希(原始哈希)。
每次同步时,Hermes 重新计算本地副本的哈希并与原始哈希比较:
- 未更改 → 安全地拉取上游更改,复制新的捆绑版本,记录新的原始哈希。
- 已更改 → 被视为用户修改并永久跳过,因此您的编辑永远不会被覆盖。
这个保护是好的,但有一个尖锐的边缘情况。如果您编辑了一个捆绑技能,后来想放弃更改并通过简单地从 ~/.hermes/hermes-agent/skills/ 复制粘贴回到捆绑版本,清单仍然持有上次成功同步时的旧原始哈希。您新复制粘贴的内容(当前捆绑哈希)不会匹配那个过时的原始哈希,因此同步继续将其标记为用户修改。
hermes skills reset 是逃生舱:
# 安全:清除此技能的清单条目。您当前的副本被保留,
# 但下次同步会以它为基础重新基准化,使未来的更新正常工作。
hermes skills reset google-workspace
# 完全恢复:同时删除您的本地副本并重新复制当前捆绑
# 版本。当您想要原始的干净上游技能时使用此选项。
hermes skills reset google-workspace --restore
# 非交互式(例如在脚本或 TUI 模式下)——跳过 --restore 确认。
hermes skills reset google-workspace --restore --yes同样的命令在聊天中作为斜杠命令工作:
/skills reset google-workspace
/skills reset google-workspace --restore:::note 配置文件
每个配置文件在其自己的 HERMES_HOME 下有各自的 .bundled_manifest,因此 hermes -p coder skills reset <name> 仅影响该配置文件。
:::
聊天中的斜杠命令
所有相同的命令都可以使用 /skills:
/skills browse
/skills search react --source skills-sh
/skills search https://mintlify.com/docs --source well-known
/skills inspect skills-sh/vercel-labs/json-render/json-render-react
/skills install openai/skills/skill-creator --force
/skills check
/skills update
/skills reset google-workspace
/skills list官方可选技能仍使用 official/security/1password 和 official/migration/openclaw-migration 等标识符。