
Hermes Agent Skill Authoring 是 Hermes 团队在仓库内置的一份”如何写好 SKILL.md”的元技能。它不教你怎么写一个业务 skill,而是告诉你写 skill 这件事本身的纪律:哪些字段是硬约束、哪些是隐含约定、哪些”听起来有道理但其实没用”的句子应当删掉。
💡 当你想给 Hermes 提交一个会被别人复用、跨会话加载、长期维护的 skill 时,这份文档就是它”能通过 review、读起来像官方出品”的最低门槛。
核心功能
| 功能 | 说明 |
|---|---|
| Frontmatter 校验 | 列出 SKILL.md 头部 YAML 的所有硬约束与隐含约定 |
| 写作质量原则 | 八条能直接改变模型行为的写作准则 |
| 同侪结构对照 | 给出一份”看起来像官方 skill”的标准骨架 |
| 常见坑位 | 把写 skill 时最容易踩的 9 个雷单独成节 |
| 校验脚本片段 | 直接可贴进本地 Python 跑的 frontmatter 校验代码 |
Frontmatter 硬约束
tools/skill_manager_tool.py::_validate_frontmatter 是真相之源:
- 文件第一字节必须是
---,禁止前导空行或 BOM - 闭包必须是
\n---\n - 解析后必须是合法 YAML mapping
- 必须含
name和description description长度 ≤ 1024 字符(MAX_DESCRIPTION_LENGTH)- 闭包之后必须还有正文(不能只写 frontmatter)
Frontmatter 软约定
以下字段不被 validator 强制,但仓库里每个 peer skill 都有:
---name: my-skill-name # 小写、连字符、≤64 字符description: Use when <trigger>. <one-line behavior>.version: 1.1.0author: Hermes Agentlicense: MITmetadata: hermes: tags: [short, descriptive, tags] related_skills: [other-skill, another-skill]---version / author / license / metadata 一旦缺失,skill 会显得”半成品”——这是隐性的同侪压力。
写作质量八原则
- 优化过程的可预测性:每句话问一句”加载这份 skill 后,模型行为应当改变什么?“答不上来就删。
- 选对上下文载荷:description 每次都会被模型读,贵。要的是触发场景,不是任务细节。
- 建立信息层级:必读的放 SKILL.md,分支细节扔
references//templates//scripts/,按需指针引用。 - 每一步写完成判据:好判据 = 可勾选 + 在意时穷举。
"每个被改的文件都对得上"比"总结改动"强得多。 - 规则紧贴概念:定义、例外、例子、验证就近放,不要散到全文。
- 用强引导词:让模型更熟悉、
tight loop/tracer bullet/root cause/regression test比长篇解释省 token 也更稳。 - 删重复 + 删 no-op:每个意思只留一处。句子级别问一句”这句不改模型默认行为吗?“——那就删。
- 警惕过早完成:如果模型老想跳步,先把当前这一步的判据写尖锐,别急着拆步骤。
标准骨架
# 标题
## Overview一两段:是什么、为什么。
## When to Use- 触发场景列表- "Don't use for:" 反向触发
## 主体- Quick-reference 表格- 精确命令的代码块- Hermes 特定配方(如 scripts/run_tests.sh、UI-TUI 路径)
## Common Pitfalls编号列表:错在哪 + 怎么修。
## Verification Checklist- [ ] 可勾选的验证项不是每个 section 都强制,但 Overview + When to Use + 主体 + Pitfalls 是下限。
目录放置
skills/<category>/<skill-name>/SKILL.md现有 category:autonomous-ai-agents / creative / data-science / devops / dogfood / email / gaming / github / leisure / mcp / media / mlops/* / note-taking / productivity / red-teaming / research / smart-home / social-media / software-development。不要随手发明新顶层分类。
本地校验脚本
写完后,跑一次这个最小校验,5 秒内发现格式问题:
import yaml, re, pathlibcontent = pathlib.Path("skills/<category>/<name>/SKILL.md").read_text()assert content.startswith("---")m = re.search(r'\n---\s*\n', content[3:])fm = yaml.safe_load(content[3:m.start()+3])assert "name" in fm and "description" in fmassert len(fm["description"]) <= 1024assert len(content) <= 100_000print("ok")常见坑位
- 用
skill_manage(action='create')创建仓库内 skill:它写到~/.hermes/skills/,不在仓库里。仓库内创建请用write_file。 - frontmatter 前面有空行 / BOM:validator 检
startswith("---"),一点前导空白就 fail。 - description 太通用:“Debug X” 不如 “Use when debugging X”——前者描述任务,后者描述触发类。
- 忘写 author/license/metadata:validator 不拦,但每个 peer 都有,少了就是显眼的不专业。
- 写了和 peer 重复的 skill:开写前
ls skills/<category>/看 2-3 个 peer,能扩展就别造新窄兄弟。 - 期望当前会话立刻看到新 skill:不会的。skill loader 在 session 开始时初始化。需要新会话或重启。
- 让 skill 累积”沉积层”:加规则就把旧的覆盖掉,别堆叠。skill 应当越维护越精炼。
- 写 no-op 散文:“be careful” / “be thorough” / “use best practices” 几乎不改模型行为。换成可勾选的判据或强引导词。
- 引用仓库里不存在的 skill:
related_skills: [some-user-local-skill]自己能用,但别人 clone 后会断链。只引用仓库内。
我为什么推荐它
它是一份少见的”反完美主义”指南:
- 不教你写得更好,教你删掉没用的。
- 不教你用什么花哨结构,教你匹配同侪。
- 不教你打造”最强 skill”,教你让它通过 validator + review。
对一个长期维护 Hermes 工作流的人来说,这套约束能直接把”我写的 skill 怎么总不像官方”的不爽解决掉——先遵守硬约束,再用八原则自检,最后按骨架对齐,三步就到位。
🐦 咕咕觉得:很多 skill 作者的问题不是写得太差,而是写得太多。八原则第 7 条 “删 no-op” 几乎能独立解决一半问题。
信息卡
| 字段 | 值 |
|---|---|
| 名称 | hermes-agent-skill-authoring |
| 版本 | 1.1.0 |
| 作者 | Hermes Agent |
| 许可证 | MIT |
| 来源 | 仓库内置(skills/software-development/hermes-agent-skill-authoring/) |
| 适用 | 给 hermes-agent 仓库提交新 skill / 长期维护 skill 时 |
| 推荐度 | ⭐⭐⭐⭐⭐(写 skill 的人必读) |