🧩 Hermes 自定义技能入门:创建你的第一个 Skill

高阶第 1 篇 — 让 Hermes 学会你教的任何事

🎯 这篇讲什么

Hermes 最独特的能力:用 Skill 文件教会它新技能。写一个 Markdown 文件,Hermes 就能自动加载、按你规定的流程执行。


🧠 什么是 Skill?

Skill 就是一个 Markdown 说明书,告诉 Hermes:

  • 什么情况下触发(触发条件)
  • 具体怎么做(步骤和命令)
  • 有哪些坑要避开(Pitfalls)
  • 怎么验证做对了(Verification)
  • 
    你写一份 Skill → Hermes 加载 → 遇到匹配场景 → 自动按流程执行
    

    📝 第一个 Skill:5 分钟入门

    场景

    你经常需要 Hermes 帮你检查服务器状态。每次都描述一遍"ssh 上去、查 CPU、查内存、查磁盘"很烦。

    创建文件

    
    mkdir -p ~/.hermes/skills/my-skills
    
    
    # ~/.hermes/skills/my-skills/server-health-check/SKILL.md
    ---
    name: server-health-check
    description: 当用户要求检查服务器健康状态时使用。SSH 连接服务器,
      检查 CPU、内存、磁盘和关键服务状态。
    version: 1.0.0
    ---
    
    # 服务器健康检查
    
    ## 触发条件
    
    当用户说以下任一内容时使用此技能:
    - "检查服务器"
    - "服务器状态"
    - "health check"
    - "看看服务器还活着吗"
    
    ## 步骤
    
    1. SSH 连接到目标服务器
    2. 检查 CPU 使用率:`top -bn1 | head -5`
    3. 检查内存:`free -h`
    4. 检查磁盘:`df -h`
    5. 检查关键服务:`systemctl status nginx docker`
    6. 汇总结果,用中文告诉用户
    
    ## 注意事项
    
    - 如果 SSH 连接失败,告知用户并询问是否重试
    - CPU > 80% 或磁盘 > 90% 时用 ⚠️ 标记警告
    - 不要在输出中包含敏感路径信息
    
    ## 验证
    
    确认所有检查项都有结果输出,且有明确的正常/异常标识。
    

    安装技能

    
    # Hermes 会自动发现 ~/.hermes/skills/ 下的新技能
    # 对话中手动加载确认
    /skill server-health-check
    

    使用

    
    用户: 检查一下我的服务器
    Hermes: [加载 server-health-check 技能]
           → SSH 连接...
           → CPU: 23% ✅
           → 内存: 4.2G/8G ✅
           → 磁盘: 45% ✅
           → nginx: running ✅ docker: running ✅
           服务器一切正常!
    

    📐 Skill 文件结构

    
    ---
    name: skill-name           # 必填,唯一标识
    description: 做什么用       # 必填,越具体越好
    version: 1.0.0             # 语义化版本
    metadata:                  # 可选元数据
      tags: [标签1, 标签2]
      related_skills: [关联技能]
    ---
    
    # 技能标题
    
    ## 触发条件
    明确列出什么情况下加载此技能
    
    ## 步骤
    1. 第一步做什么
    2. 第二步做什么
    3. ...
    
    ## 注意事项 / Pitfalls
    常见错误和注意事项
    
    ## 验证
    怎么确认执行正确
    

    🏷️ Skill 命名规范

    规则示例
    全小写server-check
    用连字符不用下划线health-monitorhealth_monitor
    简短但有意义git-pr-reviewgpr
    描述功能而非场景docker-deploywhen-i-want-to-deploy

    📂 Skill 可以带文件

    除了 SKILL.md,Skill 目录下还可以放:

    
    my-skills/my-skill/
    ├── SKILL.md              # 主文件(必须)
    ├── references/           # 参考文档
    │   └── api-docs.md
    ├── templates/            # 模板文件
    │   └── config.yaml
    ├── scripts/              # 可执行脚本
    │   └── check.sh
    └── assets/               # 静态资源
        └── diagram.png
    

    🔄 技能生命周期

    
    创建 → 安装 → Hermes 自动发现 → 对话中触发 → 执行 → 积累改进
      │                                              │
      └────────── 发现问题 → patch 更新 ←──────────────┘
    

    📊 Skill vs Claude Code Skill

    Hermes SkillClaude Code Skill
    文件格式SKILL.md + frontmatter纯 .md
    自动发现✅ 目录 + 技能市场❌ 需手动指定目录
    脚本支持✅ scripts/ 目录
    模板支持✅ templates/ 目录
    版本管理✅ version 字段
    触发机制描述匹配 + 手动加载内容匹配

    ❓ 常见问题 (FAQ)

    Q1: 我写的 Skill 没被加载?

    检查:① 放在 ~/.hermes/skills/ 下;② 文件名是 SKILL.md;③ 有 frontmatter(--- 包裹的部分);④ name 和 description 必填。

    Q2: Skill 怎么触发?

    两种方式:① 用户说的话匹配了 description 中的场景;② 手动 /skill 名字

    Q3: Skill 能调用其他 Skill 吗?

    可以。在 related_skills 中列出关联技能名。

    Q4: 写错了怎么改?

    直接编辑 SKILL.md,下次加载时自动生效。或者用 skill_manage(action='patch') 让 Hermes 帮你改。

    Q5: 能分享给朋友吗?

    能。把 Skill 目录打包发过去,放到对应位置即可。或者发布到技能市场。

    Q6: Skill 一定要手写吗?

    不用。你可以在对话中纠正 Hermes,如果某个流程重复 2-3 次,Hermes 会自动建议创建 Skill。


    ⚠️ 实操避坑

    正确做法
    description 写太泛("处理文件")写具体场景:"当用户要求批量重命名图片文件时"
    忘了写 frontmatter--- 包裹的 name 和 description 是必填的
    步骤写成散文用有序列表,每步一句话,有明确命令的附上命令
    Skill 目录名和 name 不一致保持一致,避免混淆
    脚本路径写死用相对路径,脚本放 scripts/ 目录下

    标签:#AI #HermesAgent #高阶 #Skill #自定义