从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)
仓库里的原始数据长这样(简化):
{
"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(你可以直接复制):
基于仓库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下新增百度网盘启动项,经查为员工自装,标记并通知卸载。"
输出结果:直接生成一个可复制粘贴的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:使用
.cursorrules或agent.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技能。