<!-- title: 官方安全三件套：同门逐行横评 -->

# 官方安全三件套：security-threat-model / best-practices / ownership-map 同门横评

## 概述

安全类 Skill 在 SkillsMP 上有 79,366 个（占总库 287 万的约 2.8%，2026-08-31 抓取），是典型的「需求刚性但供给零散」赛道——绝大多数是泛泛的 "review my code for vulnerabilities" 提示词。这轮我们不看散兵游勇，把 Anthropic 官方 curated 库里的**三个同门安全 Skill** 拉出来逐行对比：`security-threat-model`（设计期威胁建模）、`security-best-practices`（编码期安全默认）、`security-ownership-map`（维护期所有权挖掘）。三者形态迥异——纯提示词、参考文档库、Python 脚本包——恰好构成安全工作的三条时间线。本次拆解基于本地安装的一手文件（SKILL.md 全文 + 目录树），并有一个意外发现：这三个「Claude 官方 Skill」里藏着 OpenAI Codex 的痕迹。

## 评测对比表

| Skill | 形态 | 功能完整度 | 设计质量 | 实战效果 | 上手难度 | 社区活跃 | **加权总分** |
|---|---|---|---|---|---|---|---|
| security-best-practices | SKILL.md + 10 份参考文档 | ★★★★½ | ★★★★½ | ★★★★ | ★★★★½ | ★★★★ | **4.30** |
| security-threat-model | 纯 SKILL.md + 2 份参考 | ★★★★ | ★★★★★ | ★★★★ | ★★★½ | ★★★½ | **3.95** |
| security-ownership-map | SKILL.md + 4 个 Python 脚本 | ★★★★½ | ★★★★ | ★★★½ | ★★★ | ★★★½ | **3.80** |

> 权重：功能 25% / 设计 25% / 实战 20% / 上手 15% / 社区 15%。社区分保守给出：三者同属 anthropics/skills 官方库（SkillsMP「Popular picks」收录该仓库），无独立 Star 数据，按官方库整体活跃度估分。

## 一、security-threat-model：把「暂停键」写进 SKILL.md 的设计期沙盘

**定位**：输入一张架构图或一个仓库，输出一份 AppSec 级威胁模型，落盘为 `<repo名>-threat-model.md`。它的 SKILL.md 开篇第一句就是反模板宣言："Deliver an actionable AppSec-grade threat model that is specific to the repository... not a generic checklist"（交付针对本仓库的可执行威胁模型……而不是通用清单）。

**工作流拆解**。SKILL.md 定义了 8 步：圈定范围提取系统模型 → 推导信任边界/资产/入口点 → 校准攻击者能力 → 以「滥用路径」枚举威胁 → 用可能性×影响排优先级 → **与用户确认假设** → 给出缓解建议 → 质量自检。三处设计值得抄：

1. **第 6 步是硬性暂停**："Pause and wait for user feedback before producing the final report"（暂停，等用户反馈后再出最终报告）。模型必须先列出影响排序的关键假设、问 1–3 个针对性问题（部署模型、认证方式、多租户与否），等用户确认。这是把「防幻觉」从被动叮嘱变成流程强制——用户不回答，报告也要标注哪些结论是悬在假设上的。
2. **证据锚定**："Anchor every architectural claim to evidence in the repo"（每个架构断言都要锚定仓库内证据）+ "Do not claim components, flows, or controls without evidence"（无证据不得声称组件/流/控制存在）。
3. **反贪多条款**："Keep the number of threats small but high quality"（威胁数量要少但质量要高）。见过太多安全报告用 40 条低价值发现稀释 3 条真问题，这句话直接把报告质量的上限写进了提示词。

它的严重度阶梯也很克制：High 只留给「pre-auth RCE、认证绕过、跨租户访问、敏感数据外泄、密钥窃取、模型/配置完整性破坏、沙箱逃逸」；Low 档明确写着「需要罕见前置条件的问题」——教模型主动降级，而不是渲染恐慌。

**短板**：零脚本、零自动化，全靠模型读仓库 + 用户配合；SKILL.md 把输出契约委托给 `references/prompt-template.md`，控件清单委托给 `references/security-controls-and-assets.md`，实际效果取决于模型是否真的去读这两份文件。纯提示词形态的上限就在这里。

## 二、security-best-practices：用「文件名协议」组织安全知识的三模式 Skill

**定位**：写代码时让模型「默认安全」。它是三个里工程化程度最高的——核心机制是一个**命名协议**：`references/` 目录下所有文件按 `<语言>-<框架>-<栈>-security.md` 命名。本地安装版有整整 10 份：JS/TS 六份（express、jquery、nextjs、react、vue、general-web-frontend）、Python 三份（django、fastapi、flask）、Go 一份（general-backend）。SKILL.md 的工作流只有两步核心动作：先识别项目用了**所有**语言和框架（前后端都要查），再按协议去 references 里精确加载对应文件。这本质上是把「按需加载」做成了文件系统级的路由表——比在一份大文档里让模型自己找，命中率高得多。

**三种工作模式**写得层次分明：

- **主模式**：从此刻起新写的代码默认安全（适合新项目）；
- **被动模式**：日常干活时顺带盯漏洞，且"should focus on the largest impact vulnerabilities"（只盯影响最大的）——主动限制噪音；
- **报告模式**：用户点名时才出完整报告，编号 ID + 代码行号 + 按严重度分节，写完先让用户读报告、再逐条修（"focus on fixing a single finding at a time"），还要求每条修复注释里写明依据的是哪条安全实践。

**两个「反直觉」条款是全文精华**。其一是 **Overrides**：用户要绕过某条安全实践时，"you MAY report it to the user, but do not fight with them"（可以报告，但别跟用户吵架），并建议把绕过原因写进项目文档。这句话治的是 AI 助手最常见的毛病——抱着安全教条跟用户对线。其二是 **TLS 务实条款**：明确告诉模型不要把「开发环境没配 TLS」当漏洞报，警告 secure cookie 在非 TLS 环境会直接弄坏应用，甚至写了 "avoid recommending HSTS"（别乱推荐 HSTS，它能造成真实停摆）。这是在教模型**什么不该报**——安全工具最大的死法就是误报刷屏，失去用户信任。

**一个生态级发现**：这份 SKILL.md 的结尾写着 "...not generally recommended for the scope of projects being reviewed by **codex**"（就不展开上下文了），而两个同门 Skill 的目录里都躺着 `agents/openai.yaml`。三条证据拼起来：这套 curated 安全 Skill 是**跨 Agent 维护**的——同一份 SKILL.md 同时服务 Claude Code 和 OpenAI Codex。「官方 Skill」的边界，比我们以为的更模糊。

## 三、security-ownership-map：唯一一个「真的会跑代码」的安全 Skill

**定位**：前两个管「代码」，这个管「人」。它挖掘 git 历史，构建「人 ↔ 文件」二部图和文件共变图（对共享 commit 算 Jaccard 相似度），再用 networkx 做社区发现，回答一类传统扫描器完全不碰的问题：**你仓库里的敏感代码，现在还有人在守吗？**

**能力清单**（本地目录下 4 个脚本：`run_ownership_map.py`、`build_ownership_map.py`、`query_ownership.py`、`community_maintainers.py`）：

- **孤儿敏感代码**（orphaned_sensitive_code）：默认用 CSV 规则标记 `**/auth/**`、`**/crypto/**`、`**/*.pem` 等敏感路径，交叉「最后接触时间久远」+「bus factor ≤ 1」——一个只有一个人懂、而且那人两年没碰的认证模块，就是组织级风险；
- **隐藏主人**（hidden_owners）：某个不在 CODEOWNERS 里的人实际控制了 63% 的 auth 代码——SKILL.md 明确建议把 `summary.json` 和 CODEOWNERS 对比，暴露所有权漂移；
- **共变聚类**：默认排除 lockfile、`.github/*`、编辑器配置、Dependabot 提交、merge commit，还可以用 `--cochange-max-files` 忽略「超级节点 commit」，让聚类反映真实代码流动而非基础设施改动——降噪选项细到这个程度，是正经数据工程的做派；
- 连**时区推断**都有：从作者 commit 的时区偏移算出 `primary_tz_offset`，安全团队拿它判断「半夜改认证代码的账号」是否异常。

**最值得学的设计**是 LLM 上下文经济学：SKILL.md 专门写了一节「LLM query helper」，要求模型用 `query_ownership.py` 取"small, JSON-bounded slices without loading the full graph into context"（小块、有 JSON 边界的切片，别把整张图灌进上下文）。一个百万 commit 的仓库，图数据轻松上 GB——这个 Skill 明确知道自己是给模型用的，把「喂多少数据」当成一等公民来设计。输出还能导出 GraphML，配套 `references/neo4j-import.md` 灌进 Neo4j/Gephi 做可视化——一个 Skill 自带图数据库导入文档，野心可见一斑。

**短板**：依赖 Python 3 + networkx，对纯业务开发者有门槛；且它的价值随团队规模递增——单人项目跑 bus factor 是自我感动，50 人以上的仓库才见真章。

## 同赛道对比：三条时间线，不是三个竞品

这三个 Skill 最有意思的地方在于**它们互为补集**，覆盖安全工作的三段时序：

```mermaid
flowchart LR
    subgraph D["设计期"]
        A["security-threat-model<br/>纯提示词 · 威胁建模"]
    end
    subgraph C["编码期"]
        B["security-best-practices<br/>参考库协议 · 安全默认"]
    end
    subgraph M["维护期"]
        E["security-ownership-map<br/>脚本包 · git 挖掘"]
    end
    P["架构图 / 仓库"] --> A
    A --> Q["threat-model.md<br/>漏洞死在白纸上"]
    W["新写 / 改代码"] --> B
    B --> X["secure by default<br/>漏洞不进库"]
    G["git 历史"] --> E
    E --> Y["bus factor / 孤儿代码<br/>看清谁在守家"]
    Q --> Z["CI 闸门<br/>claude-code-security-review"]
    X --> Z
    Y --> Z
```

| 对比轴 | threat-model | best-practices | ownership-map |
|---|---|---|---|
| 形态 | 纯提示词 | SKILL.md + 10 参考文档 | SKILL.md + 4 Python 脚本 |
| 介入时序 | 写代码之前 | 写代码之时 | 代码腐化之后 |
| 核心输入 | 架构/仓库 + 用户确认 | 语言/框架识别 | git log |
| 核心输出 | 威胁模型 md | 安全代码 / 分级报告 | CSV/JSON/GraphML |
| 防幻觉机制 | 强制暂停 + 证据锚定 | 文件名协议精确加载 | 查询切片防爆上下文 |
| 目标用户 | 技术负责人 | 一线开发者 | 安全/平台工程师 |

## 安装与使用

三者同出 anthropics/skills 官方库（本地安装目录 `~/.claude/skills/` 已验证）：

```bash
# 方式一：skills.sh CLI（owner/repo 模式）
npx skills add anthropics/skills

# 方式二：手动安装（以仓库实际路径为准）
git clone https://github.com/anthropics/skills
cp -r skills/.curated/security-threat-model ~/.claude/skills/
cp -r skills/.curated/security-best-practices ~/.claude/skills/
cp -r skills/.curated/security-ownership-map ~/.claude/skills/

# ownership-map 额外依赖
pip install networkx
```

触发方式：对着仓库说「给这个项目做威胁建模」自动命中 threat-model；日常写代码时 best-practices 被动生效（或点名「出一份安全报告」）；ownership-map 则说「分析这个仓库的代码所有权」。

## 推荐排行榜

- **设计教科书**：security-threat-model——「强制暂停 + 证据锚定 + 少而精」三板斧，任何想写审计类 Skill 的人都该抄；
- **日常陪伴首选**：security-best-practices——被动模式零打扰，误报条款体现了难得的工程克制，综合分第一；
- **独门兵器**：security-ownership-map——全场唯一能回答「谁在维护这段代码」的 Skill，无可替代但门槛最高；
- **写自己的安全 Skill 能学到的四个模式**：①参考文档用命名协议做路由；②把「停下问用户」写成流程步骤而非叮嘱；③专门写「什么不该报」的反误报条款；④大数据输出一律走有界查询切片。

```mermaid
mindmap
  root(("官方安全Skill族"))
    security-threat-model
      纯提示词
      设计期威胁建模
      强制暂停确认假设
    security-best-practices
      10份语言参考库
      三种工作模式
      反误报TLS条款
    security-ownership-map
      Python脚本包
      bus factor与孤儿代码
      Neo4j图导出
    外部参照
      claude-code-security-review
      CI闸门收口
```

## 参考来源

1. [SkillsMP — Agent Skills Library](https://skillsmp.com/skills) — 全库 2,872,898 个 Skill、Security 类目 79,366 个等统计数据，2026-08-31 抓取
2. [skills.sh — The Agent Skills Directory](https://skills.sh) — 安装 CLI（`npx skills add <owner/repo>`）与总榜安装量数据，2026-08-31 抓取
3. [anthropics/skills](https://github.com/anthropics/skills) — 三个 Skill 的官方来源仓库（SkillsMP「Popular picks」收录佐证）；本文逐行拆解基于本地安装副本（`~/.claude/skills/security-*`，含 references 与 scripts 目录树）
4. 本刊 2026-08-28《官方捆绑 Skill 横评》— `claude-code-security-review`（6.1k Star，仓库 README 抓取于 2026-08-28）作为 CI 闸门的外部参照
5. 本刊 2026-08-27《八技横评》— security-threat-model 首次周报收录记录，用于查重与连续观察

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
