PingSec 安全日报

root@pingsec:~$
🔵 安全研究安全资讯

零基础学会写 Hermes Skills

📅 2026年5月16日 📁 Hermes Agent ⏱ 4 分钟

完全没接触过 Skills 的人,读完这篇就能自己写一个。


第一章:先说清楚 Skills 是什么

1.1 Skills = 给 Agent 看的操作手册

你和一个智能 Agent 对话,它帮你做事。但每次遇到同样的问题,它都要你再解释一遍——就像每次教新同事「周报怎么发」。

Skills 就是解决这个问题的:你把步骤写成文档,下次 Agent 遇到同样场景,自动就知道怎么做。

对比没有 Skill有 Skill
第一次你一步步教 Agent 怎么做你一步步教 Agent 怎么做
第二次还要再教一遍Agent 自己读 Skill,直接做
效果每次重复劳动一次编写,永久复用

1.2 一个生活例子

假设你教同事「发周报」:

第一次(没有文档):

你:打开邮箱 → 点新建 → 收件人写 leader@xxx.com → 主题写「周报」→ 写内容 → 发送

第二次(有了文档):

你:发周报

同事:好(翻出文档,按步骤操作)

Skills 就是这份文档。 只是它存在服务器上,Agent 能自动找到并执行。

1.3 谁来写?你还是 Agent?

你说需求,Agent 写文件。

  • 你只需要用中文描述:做什么、怎么做
  • Agent 负责:创建文件夹、写 SKILL.md、设置正确的格式
  • 你不需要写代码,不需要碰命令行

第二章:Skill 文件长什么样

2.1 物理位置


~/.hermes/skills/           ← 所有 Skill 在此
├── red-teaming/            ← 按分类排列
│   ├── vuln-hunter/        ← 一个 Skill 一个文件夹
│   │   ├── SKILL.md        ← 主文件
│   │   ├── references/     ← 详细参考(可选)
│   │   └── scripts/        ← 自动化脚本(可选)
│   └── quick-scan/
│       └── SKILL.md
├── software-development/
├── devops/
└── ...

每个 Skill = 一个文件夹 + 一个 SKILL.md 文件。

2.2 SKILL.md 的内部结构

分成两段:

第一段:前置信息(叫 Frontmatter)


---
name: quick-scan                          ← 名字(英文小写+连字符)
description: "快速扫描目标资产。"          ← 描述
version: 1.0.0                           ← 版本号
author: Hermes Agent                     ← 作者
license: MIT                             ← 许可证
metadata:
  hermes:
    tags: [recon, scanning]               ← 标签
    related_skills: [nmap-scan]           ← 关联技能
---

第二段:正文(用 Markdown 写)


# Quick Scan — 标题

## Overview
1-2 段说明

## When to Use
什么场景该用,什么场景不该用

## Steps
具体操作步骤

## Common Pitfalls
新手容易踩的坑

## Verification Checklist
做完后怎么验证

2.3 需要学 Markdown 吗?

不需要。你只需要用中文描述步骤,Agent 会自动转换成 Markdown 格式。但如果你知道这些,能写得更精确:

  • # 一级标题 / ## 二级标题 / ### 三级标题
  • - 无序列表 / 1. 有序列表
  • 加粗 / 斜体
  • ` 代码 ` 行内代码 / 代码块用三个反引号
  • | 表格 | 格式 | 表格

第三章:手把手创建第一个 Skill

下面是一个完整实战。你只需要在对话框里说出需求。

3.1 场景

你经常用 nmap 扫描目标:先全端口扫,再扫服务版本,最后跑默认脚本。每次都要敲一遍命令,很烦。

3.2 说出你的需求

在聊天框里输入:


帮我创建一个 skill:
名字叫 nmap-quick-scan
分类放 red-teaming
描述:快速 nmap 扫描目标,三步搞定
内容:
- 第一步:nmap -sV -sC -p- 全端口扫描,结果保存到文件
- 第二步:nmap -O 系统识别
- 第三步:汇总结果

3.3 Agent 做了什么(你不需要看到)

Agent 在后台执行了类似这样的操作:


创建文件:~/.hermes/skills/red-teaming/nmap-quick-scan/SKILL.md
内容:带正确格式的完整 SKILL.md

3.4 创建成功后

下次你说「扫一下 xxxx.com」或「快速扫描」,Agent 会自动加载这个 Skill,按照里面的步骤执行。

注意:当前会话看不到新 Skill——要新开一个会话才生效。

3.5 查看已有 Skill


列出我的所有 skill

Agent 会返回分类列表:


可用技能 (按分类):
red-teaming/
├── nmap-quick-scan — 快速 nmap 扫描
├── vuln-hunter — 漏洞挖掘全流程
└── ...

第四章:创建后怎么维护

4.1 漏了步骤(Patch)

说:


nmap-quick-scan 漏了把结果保存到文件的步骤,帮我加上

Agent 会自动在合适位置补上内容。

4.2 内容太多想拆分

SKILL.md 超过 15KB 时,说:


nmap-quick-scan 太大了,把详细命令参数说明移到 references/ 目录

Agent 会创建 references/ 子文件夹,移走详细内容,SKILL.md 只保留概要。

4.3 加自动化脚本

说:


帮 nmap-quick-scan 加个脚本,自动运行三件套并汇总

Agent 会创建 scripts/auto-scan.sh,并在 SKILL.md 中引用。

4.4 完全重写

说:


nmap-quick-scan 太旧了,帮我重写,改用 masscan + nmap 组合

Agent 会用新内容替换整篇 SKILL.md。

4.5 删掉

说:


nmap-quick-scan 没用了,删掉

Agent 删除整个文件夹。


第五章:一个可以直接用的完整示例

把这段话发给 Agent:


帮我创建一个 skill:
name: dirbust-scan
category: red-teaming
description: "Use when needing to brute-force web directories with dirsearch or gobuster."

内容:

# 目录爆破 — Dirbust Scan

## Overview
对 Web 目标进行目录和文件爆破,发现隐藏路径。

## When to Use
- ✅ 拿到 Web 目标,想找隐藏后台、配置文件
- ❌ 目标有严格的 WAF 或频率限制

## Steps

### Step 1: dirsearch 快速扫描
    dirsearch -u <target> -e php,asp,jsp,txt,zip -t 50

### Step 2: 大字典扫描
    gobuster dir -u <target> -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30

### Step 3: 检查常见敏感文件
    curl -s -o /dev/null -w "%{http_code}" <target>/robots.txt
    curl -s -o /dev/null -w "%{http_code}" <target>/.git/HEAD
    curl -s -o /dev/null -w "%{http_code}" <target>/admin

Common Pitfalls

  1. 频率太快会被封 IP,加 --delay 或 -rate
  2. 大型字典跑得慢,先用小型字典试试
  3. 结果用 -o 保存,别只靠屏幕输出

Verification Checklist

  • [ ] 发现了至少一个隐藏路径
  • [ ] 200/403/301 状态码已记录
  • [ ] 敏感文件已检查
  • 
    
    ---
    
    ### 第六章:常见问题
    
    **Q:我说话就能创建,为什么还要学这些?**
    
    因为你知道得越清楚,写的 Skill 质量越高。就像你会说话就能叫外卖,但知道菜系分类能点得更好吃。
    
    **Q:新会话 Skill 才生效,那之前写的怎么办?**
    
    新会话自动加载所有 Skill。旧会话看不到——但旧会话的内容可以通过 `session_search` 回忆。
    
    **Q:一个 Skill 可以写多长?**
    
    | 大小 | 建议 |
    |------|------|
    | < 15 KB | 👍 很好 |
    | 15-30 KB | ⚠ 考虑拆分 |
    | > 60 KB | ❌ 必须拆分 |
    | > 100 KB | 💀 系统自动截断 |
    
    **Q:有数量限制吗?**
    
    没有。但太多不好找——所以需要分类管理。
    
    **Q:描述用中文还是英文?**
    
    都可以。Agent 匹配时看的是语义关键词,不是精确短语。
    
    ---
    
    ### 总结:核心流程
    
    

你说需求 → Agent 执行 skill_manage → 文件写入 ~/.hermes/skills/

下次新会话自动加载

匹配到场景自动执行

发现遗漏 → patch 修补



**不需要记命令,只需要说中文需求。这就是零基础的核心。**
← 返回首页