从8千条结构化技能到可运行Agent Skill,只差这条Prompt

昨天GitHub上有个项目火了:mukul975 把754个网络安全技能按照MITRE ATT&CK、NIST CSF等5个框架做了结构化整理,一天收获1.2万星标。但很多人只看到“好全”却没想明白怎么用——仓库里是JSON格式的元数据,不是AI agent直接能读的SKILL.md。今天我就手把手教你用一条Prompt,把这个库变成Claude Code、Cursor、Gemini CLI都能直接加载的Agent Skill。

这个Skill解决什么具体问题

平时给AI agent写网络安全技能,你是不是这样:

  • 想写一个检测持久化的技能,但不知道覆盖多少种技术
  • 手动翻MITRE ATT&CK页面,复制粘贴,格式还不统一
  • 写完发现少了某个子技术,或者触发条件写得太宽泛

这个仓库把754个技能按agentskills.io标准字段(id、name、description、trigger、domain、framework mapping、tools)整理好了。你要做的不是从零造,而是从仓库里按条件筛选并适配到你的Agent平台

触发条件和适用场景

  • 你在为Claude Code / Cursor / Codex CLI编写安全自动化Agent
  • 需要覆盖某个特定框架(如仅需MITRE ATT&CK的持久化技术)
  • 想要一个同时支持ATT&CK和D3FEND的防御响应技能
  • 团队需要快速搭建安全Agent技能库,避免重复劳动

完整Skill结构(从仓库生成SKILL.md)

仓库里的原始数据长这样(简化):

json
1 2 3 4 5 6 7 8 9 10 11
{
  "id": "persistence-001",
  "name": "Registry Run Keys / Startup Folder",
  "domain": "persistence",
  "framework": "mitre-attack",
  "technique_id": "T1547.001",
  "description": "Adversaries may achieve persistence by adding a program to a startup folder or referencing it with a Registry run key.",
  "trigger": "File created in startup folder or registry modification on HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run",
  "tools": ["Sysinternals Autoruns", "RegShot", "Windows Event Log"],
  "response": "Verify the added entry, disable if unapproved, and alert."
}

要变成Agent可用的SKILL.md,需要重新组装成Agent平台要求的结构。以Claude Code为例,它的Skill文件是YAML格式,包含name、description、trigger、steps、tools、example

差Prompt vs 好Prompt

看两个真实对比:

差Prompt(我经常在群里看到这种):

“帮我写一个检测Windows持久化的AI Agent技能。”

输出结果:笼统地说“监控启动项和注册表”,没有具体路径、没有工具列表、没有框架映射。用不了。

好Prompt(你可以直接复制):

text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
基于仓库https://github.com/mukul975/Anthropic-Cybersecurity-Skills 
中的persistence领域数据,生成一个Claude Code可用的SKILL.md YAML文件。
要求:
1. 只使用MITRE ATT&CK框架下的persistence技术(T1547系列)
2. 每个技术包含:trigger(具体文件路径或注册表键)、tools、response步骤
3. 输出格式如下:
```yaml
name: "Windows Persistence Detection"
description: "检测并响应Windows持久化技术(启动文件夹、注册表Run键、服务注册等)"
trigger: "文件创建于指定启动目录,或注册表HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run修改"
steps:
  - name: "检查新增条目"
    tool: "Sysinternals Autoruns"
    command: "autorunsc64.exe -a * -c -h -s svc,logon,startup"
  - name: "验证合法性"
    query: "对比已知白名单或企业CMDB"
response: "如果未授权,禁用启动项并从注册表删除,记录告警。"
tools: ["Sysinternals Autoruns", "RegShot", "Windows Event Log"]
frameworks: ["mitre-attack"]
example: "检测到HKCU\...\Run下新增百度网盘启动项,经查为员工自装,标记并通知卸载。"
text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

输出结果:直接生成一个可复制粘贴的YAML文件,路径、工具、步骤全有。

**为什么好Prompt有效?**
- **限定了数据源范围**(只取persistence领域)和**技术系列**(T1547),避免输出无用内容
- **指定了平台格式**(Claude Code YAML),让Agent平台直接解析
- **给仓库URL**,让LLM能检索最新数据而非靠训练记忆
- **提供了输出模板**,确保字段齐全(trigger、tools、response是技能可执行的关键)

## 实际案例演示

我用上述好Prompt跑了一次(使用Claude 4 Sonnet),输出了一个可直接测试的技能:

```yaml
name: "Windows Persistence Detection via MITRE ATT&CK"
description: "实时监控Windows启动文件夹和注册表Run键,检测持久化行为"
trigger: |
  文件创建于路径:
    - C:\Users\*\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
    - C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
  注册表修改于:
    - HKCU\Software\Microsoft\Windows\CurrentVersion\Run
    - HKLM\Software\Microsoft\Windows\CurrentVersion\Run
steps:
  - name: "检测文件新增"
    tool: "Windows Event Log"
    command: "Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4663} | Where-Object {$_.Message -like '*Startup*'}"
  - name: "检测注册表修改"
    tool: "RegShot"
    command: "regshot.exe /compare /out:report.txt /log"
  - name: "分析威胁"
    query: "检查条目是否在白名单中(企业软件目录或已知合法签名)。若不在,标记为可疑。"
response: |
  1. 隔离受影响的系统
  2. 删除注册表项或文件
  3. 记录告警至SIEM
  4. 通知安全分析师

这个YAML可以直接放入Claude Code的skills/目录,Agent框架会在触发条件满足时自动调用。

复用和组合技巧

技巧1:跨领域组合
仓库中技能是按domain分组的。你可以用一条Prompt同时拉取persistence + privilege_escalation + defense_evasion三个领域的技能,生成一个复合Skill:

“从仓库中提取MITRE ATT&CK下persistence(T1547)、privilege_escalation(T1055)、defense_evasion(T1564)共10个技术的Skill YAML,按攻击链顺序排列。”

技巧2:适配不同Agent平台

  • Cursor:使用.cursorrulesagent.yaml,你只需把steps改成异步函数调用。
  • Gemini CLI:使用skill.tool格式,把trigger映射为Tool调用。

技巧3:自动生成测试用例
利用仓库中每个技能自带的example字段,在你生成的Skill末尾追加一段测试脚本:

“请根据每个技术的example生成Python测试脚本,模拟触发条件并验证response是否执行。”


这个仓库的价值不在754这个数字,而在于它是按Agent Skill标准预清洗好的数据。你不再需要自己搜ATT&CK、写trigger、查tools,一条Prompt就能把结构化数据转成可执行文件。核心收获:学会用“数据源+输出模板+平台约束”的三段式Prompt,把任何结构化Skill库变成Agent技能。