<!-- title: 装机目录空白段：安全三件套首拆 -->

# 装机目录空白段：安全三件套首拆

## 概述：本期口径先说清楚

这是本栏目第 6 轮。按照轮次规划，本期该做「新星首发」——挖最近上架、还没被注意的新 Skills。但本期有一个先要坦白的限制：外部检索通道（榜单站、注册表查询）本轮不可用，拿不到任何 star 数、下载量、上架日期。所以本期把「新星」的定义换成一个更诚实、也更接近「早期挖掘」本意的口径：**不追增速榜，翻装机目录里的空白段**——那些已经在 430+ 件的装机目录里安顿下来、却从未被本栏目 40 多个选题碰过一指头的成簇工位。

翻遍前五轮的选题表：PPT、视频工厂、代码审查、重构、测试、部署、浏览器操控、工作记忆、下载器、SEO……几乎每个生产力方向都被拆过一遍，唯独**安全工程**这个方向整段缺席。而装机目录里，它不但存在，而且是一个结构完整的三件套，外加一簇抓包分析和 5G 实验室工具。本期材料全部来自第一手拆读：4 份 SKILL.md 原文逐段读毕，外部传闻一概不引。

## 空白段在哪：装机目录的站牌观察

先看全景。装机目录里与安全/网络工程相关的存留至少有四个簇：

```mermaid
mindmap
  root((装机目录空白段))
    安全工程簇
      security-threat-model
      security-best-practices
      security-ownership-map
    抓包分析簇
      pcap-analyzer
      pcap-generator
      pcap-modifier
    网络实验室簇
      3gpp-5g-specs
      free5gc
      UERANSIM
    编码小工具簇
      encoding-check
```

四个簇里，本期主拆第一个——它三件之间的分工最完整，从「写码时的被动防御」到「设计时的攻防推演」再到「事后的人与代码度量」，正好覆盖一个安全工位的三个时段。抓包三件与 5G 实验室簇本期只报站牌不做车厢级拆解（未读原文，不猜内容）；编码小工具簇选了 encoding-check 作实证样本，原因是它体量最小、且能和三件套形成「重工具层 vs 轻工具层」的对照。

## 评测对比表

一点方法说明：五维权重里的「社区活跃度」本期缺测（无外部数据），权重在其余四维上重新归一（功能 25%→29%，设计 25%→29%，实战 20%→24%，上手 15%→18%）。打分依据全部是 SKILL.md 原文可验证的设计事实，不含传闻。

| 技能 | 功能完整度 | 设计质量 | 实战效果 | 上手难度 | 社区活跃度 | 加权总分 |
|------|-----------|---------|---------|---------|-----------|---------|
| security-ownership-map | ★★★★★ | ★★★★★ | ★★★★☆ | ★★★☆☆ | 缺测 | **4.4** |
| security-threat-model | ★★★★☆ | ★★★★★ | ★★★★☆ | ★★★★☆ | 缺测 | **4.3** |
| security-best-practices | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★★★ | 缺测 | **4.2** |
| encoding-check（对照样本） | ★★★☆☆ | ★★★☆☆ | ★★★★☆ | ★★★★★ | 缺测 | **3.6** |

## 主拆一：security-threat-model —— 会中途停下来问你的威胁建模

**定位**：给一个仓库或子目录产出「AppSec 级」威胁建模报告。它的开篇第一句就立了反目标——交付的是「actionable AppSec-grade threat model」，明确「not a generic checklist」。这句话决定了整份 SKILL.md 的写法：后面 8 步工作流的每一步都在防模型滑回「泛泛的清单体」。

**逐段看它的设计**：

1. **证据锚定条款**。第 1 步里有一条硬规矩：「Do not claim components, flows, or controls without evidence」——没有仓库证据，不许声称任何组件、数据流或控制措施。威胁建模最容易产出幻觉报告（模型会顺着你的项目名编一个架构出来），这一条是把幻觉从源头掐掉。
2. **反虚高条款**。第 3 步要求「Explicitly note non-capabilities to avoid inflated severity」——必须写明攻击者*不具备*的能力。多数安全报告的通病是把所有问题都写成高危，这条强制模型把「够不着的攻击面」也写出来，等级才立得住。
3. **质量优先于数量**。第 4 步直接写「Keep the number of threats small but high quality」——威胁条目要少而精，每个都锚定到资产和信任边界。这是对抗 LLM「清单膨胀」倾向的又一道闸。
4. **第 6 步：整个技能的灵魂**。在给出最终报告*之前*，强制暂停——把影响排序的关键假设汇总给用户，问 1–3 个定向问题（部署形态、暴露面、多租户与否、数据敏感度），「Pause and wait for user feedback before producing the final report」。用户拒答也不放过：要写明哪些假设悬而未决、它们如何影响优先级。这一步把「一次性生成」变成了「两段式对话」，是同类技能里少见的人机闸门设计。
5. **产出契约**。报告格式不散落在正文里，而是收敛到 `references/prompt-template.md`（渐进披露的第二层），最终物是一个具名文件 `<仓库名>-threat-model.md`。第 8 步还有一份自检清单：入口点全覆盖没有、每条信任边界都有威胁对应、运行时和 CI/开发环境分开了没有。
6. **定级标尺内置**。文末给出示例分级：pre-auth RCE、auth bypass、跨租户访问、密钥窃取属高危；针对关键组件的定向 DoS、部分数据暴露属中危；低敏信息泄露、易缓解的噪音 DoS 属低危。模型不用每次自己发明标尺。

**短板**：纯提示词技能，没有一个脚本。大仓库场景下「从代码里取证」全靠模型现场读码，上下文吃紧时第 1 步的系统模型提取会最先受损。上手时也要求使用者能回答第 6 步那几个部署问题——答不上来的用户拿到的就是一份「条件性建议」堆成的报告。

## 主拆二：security-best-practices —— 一台语言路由器，外加老手的车轱辘话

**定位**：写码过程中的被动安全层。它的工作方式不是「审查」，而是「路由」：先识别项目用了什么语言、什么框架（前后端都要认），再按一套文件名协议去 references 目录加载对应的知识文件——`<语言>-<框架>-<技术栈>-security.md`，框架不匹配时回退到 `<语言>-general-<技术栈>-security.md`。前端后端要分别加载，正文里甚至专门叮嘱：用户没说前端框架时，也要去看 `javascript-general-web-frontend-security.md`。

**三种工作模式**写得非常清楚：一是「secure by default」——从加载知识起，后续写的新代码默认安全；二是被动检测——干活途中顺手标记高危问题，只报影响最大的；三是用户主动索要报告时，产出一份按严重度分节、带编号 ID、必须带行号引用的 `security_best_practices_report.md`。报告写完还要告诉用户文件落在哪，并主动提出可以逐条修复。

**几处值得单独抄下来的细节**：

- **Overrides 条款**：客户项目可能因特殊原因要绕过某条安全惯例。技能的措辞是「you MAY report it to the user, but do not fight with them」——可以报告，但不许跟用户吵架，还建议把绕过理由写进项目文档留档。这是把「安全原教旨主义」从技能里剔除掉的成熟态度。
- **修复纪律**：一次只修一条；每处修改要评估是否破坏既有功能；「insecure code is relied on for other reasons (and this is why insecure code lives on for so long)」——不安全代码能活这么久，往往因为它被别处依赖着；不相关的发现不许塞进同一个 commit。这一段是全文最有工程经验浓度的地方。
- **两条反警示条款**：开发环境没配 TLS 不算漏洞，别报；「secure」cookie 在非 TLS 应用上会直接把应用弄坏，要留开关；HSTS 不轻率推荐（配置失误会造成长期故障和用户锁定）。这三条能筛掉大量新手报告里的噪音——典型的「吃过亏才写得出来」的条款。
- **一处跨生态化石**：正文结尾出现了「projects being reviewed by **codex**」字样。这条措辞痕迹暗示该技能的内容可能源自别的编码助手生态、后经移植进入 Claude 技能目录——属于从文本直接可见的痕迹，移植路径未经证实，仅作记录。技能生态的跨家移植比想象中普遍，这是本期抓到的一个活样本。

**短板**：知识面的上限等于 references 目录的上架范围。语言不在库内时，技能允许模型退回自己的常识甚至联网查文档——此时产出质量随语言冷门程度衰减，报告模式还会明确告诉你「该语言没有具体指引」。这是诚实的降级，但也是硬上限。

## 主拆三：security-ownership-map —— 三件里最深的一件，量的是「人」

**定位**：前两件看代码，这件看**人**。它从 git 历史里构建「人-文件」二部图，再算一张「文件共变图」（两个文件频繁出现在同一个 commit 里就连边，权重用 Jaccard 相似度），在共变图上跑社区发现算法聚类，最终回答一类别家工具不回答的问题：**这份敏感代码，现在到底还有几个人真正守着？**

**核心概念**全是安全工程的老话新用：

- **bus factor 热点**：auth/目录、crypto/目录、*.pem 证书这类敏感路径（默认规则内置，可用 CSV 自定义）里，bus factor ≤ 1 的文件就是单点风险。
- **orphaned_sensitive_code**：既长期没人碰、又只剩一个人懂的敏感代码——「孤儿敏感码」，比单纯的热点更危险。
- **hidden_owners**：从 commit 记录里挖出的隐形实际控制人，示例输出直接给出「alice@corp controls 63% of auth code」这种形态的结论。
- **ownership drift**：把 summary.json 和仓库的 CODEOWNERS 对比，暴露「名义负责人」和「实际维护者」的漂移。
- 细节到什么程度？它连贡献者的**时区**都从 commit 偏移量里推出来，还默认剔除 Dependabot 等机器人和合并提交，共变图默认忽略 lockfile、`.github/` 这类「胶水文件」以免聚类被基建提交污染。

**最值得学的一处设计**：它给 LLM 专门配了一个查询层。`scripts/query_ownership.py` 的自我描述是「return small, JSON-bounded slices without loading the full graph into context」——大仓库的图数据可能几十万节点，直接塞进上下文等于自杀，于是所有消费都走「有界 JSON 切片」：按人查、按文件查、按社区查、按 summary 分节查，每次只回一小块。这是把「上下文经济性」当作一等公民来设计的技能，比多数只会让模型「读整个输出文件」的同类高出一个段位。产出一端同样完整：CSV、JSON、可选 graphml，`references/neo4j-import.md` 里连导入 Neo4j 的 Cypher 语句都备好了，Gephi 可视化即插即用。

**短板**：三件里唯一有硬依赖的——Python 3 加 networkx；参数体系也最庞大（identity 口径、时间窗口、touch 计数模式、社区开关……），文档里反复出现「如果 git log 太大，用 --since 收窄」的自我提醒。对非工程用户，上手台阶明显高一截。另有一处路径化石：示例命令全部写作 `skills/skills/security-ownership-map/scripts/...` 双层前缀，说明它是在某种「技能仓库里再套 skills 目录」的布局下编写的——照抄会找不到路径，使用时需要自己剥掉一层。

## 三件拼起来：一个工位的三个时段

单看每件都是好技能，合起来看才见结构。它们不重叠、不抢戏，正好卡在安全工作的三个时段上：

```mermaid
flowchart TB
  subgraph W1["写码中 - 被动层"]
    A["security-best-practices"] --> B["识别语言与框架"]
    B --> C["按命名协议加载知识文件"]
    C --> D["默认安全写码与被动报漏"]
  end
  subgraph W2["设计时 - 推演层"]
    E["security-threat-model"] --> F["系统模型与信任边界"]
    F --> G["滥用路径枚举与定级"]
    G --> H["暂停校准用户假设"]
    H --> I["产出威胁建模文件"]
  end
  subgraph W3["度量时 - 人与代码层"]
    J["security-ownership-map"] --> K["git 历史构建二部图"]
    K --> L["bus factor 与孤儿敏感码"]
    L --> M["graphml 导出图数据库"]
  end
  D -. 高危线索输送 .-> F
  I -. 风险点回写 .-> C
  M -. 人员风险佐证 .-> G
```

写码时 best-practices 在背景里垫底噪；到了架构级问题，threat-model 接手做推演，且强制中途找你对齐假设；等你想知道「这堆历史遗留的敏感代码该派谁管」，ownership-map 拿 git 历史给你出人员风险地图。对照组也有：Claude Code 内置的 `/security-review` 命令面向的是 diff 级审查，与这三件不在同一层——内置命令管「这次提交进了什么」，三件套管「这个系统整体怎么被攻、由谁在守」。

## 加映：轻工具层的活样本 encoding-check

对照重工具层，看一个体量最小的实证样本。encoding-check 是装机目录里少见的**中文正文** SKILL.md（语言层的分布此前已有专轮拆过，此处只记一笔不展开），功能单一：批量扫文件编码，检出 GBK、BOM、UTF-16、CRLF 这些经典坑，报告用一张固定格式的 ASCII 表格呈现，转换前自动留 `.bak` 备份，甚至附了 Windows PowerShell 的等价命令段。它有三处值得记：一是把「报告长什么样」直接画在提示词里，让模型输出格式零漂移；二是触发方式写成了显式命令 `/encoding-check <路径>`，与三件套的「描述触发」形成两种触发哲学的对照；三是「集成工作流」一节里交叉引用了另一个装机技能 `/pptx-test`——技能之间互相组网的证据，说明装机目录里存在成套建设、而非散件堆放。

## 安装机制：目录即安装

三件套和 encoding-check 在本机的落点都是 `~/.claude/skills/<技能名>/`，这也是 Claude Code 技能的通用安装机制——目录到位即安装，无需注册步骤：

```bash
# 用户级安装：放好后所有项目可用
mkdir -p ~/.claude/skills/security-threat-model
# 将 SKILL.md 与 references/ 目录放入上述路径即可

# 项目级安装：只对当前仓库生效
mkdir -p .claude/skills
cp -r ~/.claude/skills/security-ownership-map .claude/skills/

# ownership-map 的唯一外部依赖（SKILL.md 自述）
pip install networkx
```

触发方式上，threat-model 和 best-practices 靠描述触发：直接说「给这个仓库做一份威胁建模」「以安全默认的方式写这个功能」，模型会按 description 匹配进入技能；encoding-check 则用显式命令 `/encoding-check **/*.md`。公开注册表出处本期未能核实，故不提供来历链接；参考来源仅列第一手文件。

## 分维度排行榜

- **加权总分**：ownership-map（4.4）＞ threat-model（4.3）＞ best-practices（4.2）＞ encoding-check（3.6）
- **设计质量**：threat-model 与 ownership-map 并列第一——前者的「暂停提问闸门」和后者的「有界 JSON 查询层」是本期看到的两个可进教科书的写法
- **上手最快**：best-practices 与 encoding-check 并列——零依赖零脚本，放进目录即生效
- **最值得装进团队仓库**：threat-model——产出物是具名标准化文件，天然可进 code review 流程
- **最挑人**：ownership-map——回报最深，但要求你懂 git、能跑 Python、看得懂图

## 结语

本期没有增速曲线，没有空降千星的戏剧性，只有装机目录里一段没人看过的走廊。但正是这段走廊给出了一个提醒：当所有注意力都追着 PPT、视频和热度榜跑时，安全工程这种「不出片」的方向已经在目录里悄悄长出了完整的分层结构——被动层、推演层、度量层各就各位，连「模型不该跟用户吵架」「开发环境没 TLS 别报警」这种只有踩过坑才会写的条款都齐备了。评价一个技能生态的成熟度，热度榜是短线指标，空白段的填充速度才是长线指标。下期若外部通道恢复，值得回头补上这几个簇的公开出处与热度数据；抓包三件与 5G 实验室簇，也留在站牌上等一回专门的车厢级拆解。

## 参考来源

1. [security-threat-model SKILL.md](/home/gprshome/.claude/skills/security-threat-model/SKILL.md) — 本期主拆原文，8 步工作流与第 6 步暂停闸门出处
2. [security-best-practices SKILL.md](/home/gprshome/.claude/skills/security-best-practices/SKILL.md) — 语言路由器模式、Overrides 条款与 codex 字样痕迹出处
3. [security-ownership-map SKILL.md](/home/gprshome/.claude/skills/security-ownership-map/SKILL.md) — 二部图/共变图设计与有界 JSON 查询层出处
4. [encoding-check SKILL.md](/home/gprshome/.claude/skills/encoding-check/SKILL.md) — 轻工具层对照样本原文
5. 本机装机目录清单（~/.claude/skills/，430+ 件）— 四簇站牌观察依据，延续第 5 轮《装机全量 430 个》口径
6. Claude Code 内置 /security-review 命令 — 对照组参照（本环境直接可用）

*说明：本期外部检索通道不可用，未引用任何网页；上述来源均为装机目录第一手文件，社区活跃度数据缺测已在评测表注明。*

> [!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)
