testing-handbook-skills:把 Testing Handbook 变成可执行的 AppSec 测试工作流

前言

做应用安全测试时,fuzzing、静态分析、Sanitizer 和覆盖率工具往往「文档在、环境难搭、CI 更难对齐」。Trail of Bits 维护的 Testing Handbook 面向开发者和安全工程师,讲清如何配置、优化并自动化这些静态与动态分析手段;但把手册里的步骤稳定地交给 Agent 按章执行,仍需要结构化的 Skill 与校验。

下面介绍 Trail of Bits 在 trailofbits/skills 市场里的 testing-handbook-skills 插件:它把手册内容整理成 Claude Code 可用的 Skill,并附带从手册生成的专题 Skill 与校验脚本。

这是什么

testing-handbook-skills 是 Trail of Bits Skills Marketplace 中「Code Auditing」类插件,官方描述为来自 Application Security Testing Handbook 的 Skill,覆盖 fuzzer、静态分析、Sanitizer、覆盖率等主题(与手册目录一致)。

插件在仓库中的定位不仅是单篇 SKILL.md,而是一个 元 Skill 生成器(testing-handbook-generator):分析手册结构、识别工具/技术/领域候选、按模板生成 Skill,并用脚本校验生成结果。作者为 Paweł Płatek;插件元数据见仓库内 .claude-plugin/plugin.json。

与「只把手册链接丢给模型」相比,这里把章节映射到 tool-skill、fuzzer-skill、technique-skill、domain-skill 等模板,生成物落在 skills/[skill-name]/SKILL.md,并约定 Related Skills 交叉引用,便于 Agent 按依赖串联(例如 fuzzer → AddressSanitizer → coverage)。

核心功能

以下能力均来自插件 README 与手册公开说明,可按仓库路径对照。

手册来源与定位

Testing Handbook 由 Trail of Bits 编写,目标是在软件生命周期各阶段尽可能直白地搭建安全工具,并降低 fuzzing、污点分析等技术的门槛。手册当前公开覆盖包括:

  • 静态分析:Semgrep、CodeQL
  • 动态分析:Fuzzing、Burp Suite Professional
  • 语言与专题:C/C++ 安全清单、Rust 等

插件的生成模板明确支持从 Semgrep、CodeQL(tool)、libFuzzer / AFL++ / cargo-fuzz(fuzzer)、Harness 编写与覆盖率(technique)、加密测试与 Wycheproof(domain)等章节抽取内容。

已生成的专题 Skill(示例)

README 中列出的 14 个已生成 Skill 及类型如下(完整交叉引用见仓库内 Mermaid 图):

类型 Skill 名称
Fuzzers(6) libfuzzer、aflpp、libafl、cargo-fuzz、atheris、ruzzy
Techniques(6) harness-writing、address-sanitizer、coverage-analysis、fuzzing-dictionary、fuzzing-obstacles、ossfuzz
Domain(2) wycheproof、constant-time-testing

每个生成 Skill 遵循对应模板、包含从手册提取的正文,并对非视频资源附带 WebFetch 摘要类链接;交付前需通过 validate-skills.py 校验。

生成与校验工作流

  1. 发现:扫描手册目录结构,识别可固化为 Skill 的工具、技术与领域。
  2. 规划:向用户展示拟生成的 Skill 列表,经确认后再写入。
  3. 生成:输出为与 testing-handbook-generator/ 同级的 skills/[skill-name]/SKILL.md。
  4. 校验:scripts/validate-skills.py 检查 YAML、章节结构、行数、短代码与交叉引用等。

手册路径解析顺序(无需硬编码路径):常见目录(如 ./testing-handbook、../testing-handbook、~/testing-handbook)→ 询问用户 → 最后可从 https://github.com/trailofbits/testing-handbook 克隆。

安装与启用

插件通过 trailofbits/skills 市场分发;与 Codex、Claude Code 的入口在父仓库安装说明中分开列出。Cursor 侧未在已核实资料中单独描述本插件的安装差异,此处不展开。

Claude Code Marketplace

在 Claude Code 中添加市场并安装插件:

/plugin marketplace add trailofbits/skills

浏览并安装:

/plugin menu

在市场中选择 testing-handbook-skills(Code Auditing 分类下的「Skills from the Testing Handbook」条目)。

插件 README 另给出一种 Skill 安装写法(与市场上插件路径并存,按你当前 Claude Code 版本文档选用):

claude skills install testing-handbook-skills

或在 .claude/settings.json 中手动挂载插件目录:

{
  "plugins": [
    "./plugins/testing-handbook-skills"
  ]
}

本地开发时,在 skills 仓库的父目录 执行:

/plugins marketplace add ./skills

Codex

Codex 兼容 Claude 插件市场,无需额外 sidecar 元数据:

codex plugin marketplace add trailofbits/skills
codex plugin list
codex plugin add testing-handbook-skills@trailofbits

典型用法

从整本手册批量生成 Skill

在已安装插件的 Agent 会话中,可用自然语言触发生成流程(README 示例):

Generate skills from the testing handbook

经过上面的步骤,Agent 会定位手册、扫描结构、给出生成计划;你确认后,在 plugins/testing-handbook-skills/skills/ 下生成与 generator 并列的各专题 Skill。

只生成某一章节对应的 Skill

例如针对 C/C++ libFuzzer 章节:

Create a skill for the libFuzzer section of the testing handbook

生成完成后,可在插件根目录用 uv 跑校验(README 要求):

# 校验全部生成 Skill
uv run scripts/validate-skills.py

# 只校验某一个
uv run scripts/validate-skills.py --skill libfuzzer

# CI 用 JSON 输出
uv run scripts/validate-skills.py --json

与手册工具链对齐的实操语境

生成后的 fuzzer / technique Skill 与手册章节一致,例如:

  • libFuzzer / AFL++ / cargo-fuzz:对应手册 Fuzzing 下各语言与引擎文档。
  • address-sanitizer、coverage-analysis:对应动态分析中的 Sanitizer 与覆盖率技术章节。
  • ossfuzz:对应 OSS-Fuzz 集成说明。

静态分析方面,手册提供 CodeQL、Semgrep 的安装、进阶与 CI 章节;插件模板 tool-skill.md 面向这类工具,但 README 的「已生成 Skill 摘要」当前以 fuzzing 与相关技术为主。若需要 Semgrep / CodeQL 的独立 Skill,可走「按章节生成」流程,并以 validate-skills.py 确认产物。

手册还公开 Trail of Bits 的 Semgrep 与 CodeQL 查询包用法,可与静态分析 Skill 或人工流程配合,例如:

semgrep --config "p/trailofbits"
codeql pack download trailofbits/cpp-queries trailofbits/go-queries
codeql database analyze codeql.db --format=sarif-latest --output=results.sarif -- trailofbits/cpp-queries

上述命令出自 appsec.guide 手册正文,不是插件强制步骤,但常与手册导向的测试流程一起使用。

适用场景与注意

适合谁

  • 需要在审计或开发流程中系统化落地 fuzzing、Sanitizer、覆盖率与部分加密测试专题的安全工程师。
  • 已使用或计划使用 Testing Handbook,希望把章节变成 Agent 可重复执行、可校验的 Skill 的团队。
  • 通过 Trail of Bits 插件市场统一挂载多款安全 Skill 的 Claude Code / Codex 用户。

限制与注意

  1. 生成依赖手册副本:未找到本地手册时会询问路径或尝试从 trailofbits/testing-handbook 克隆;离线或无权访问时需自行准备路径。
  2. 交叉引用与规划中的 Skill:README 注明部分 Skill 仍引用尚未生成的条目(如 honggfuzz、fuzzing-corpus、sarif-parsing);以 validate-skills.py 输出为准。
  3. 校验是交付门禁:生成 Skill 应在合并或发布前跑校验脚本,避免 YAML、章节或引用不符合仓库约定。
  4. 工具环境仍须自备:Skill 指导工作流,不替代安装 libFuzzer、CodeQL CLI、Semgrep 等本体;手册强调本地与 CI/CD 配置往往比「能跑起来」更难,Skill 是对文档的结构化延伸,不是一键沙箱。
  5. 市场元数据:ChatGPT Workspace 导入需遵循父仓库 marketplace.json 与部分 Skill 的 agents/openai.yaml 字段要求;若导入失败,需按父仓库说明同步市场后重试。

结尾

testing-handbook-skills 把 Trail of Bits Testing Handbook 中的 fuzzing、Sanitizer、覆盖率及相关专题,收敛为可生成、可校验的 Agent Skill 体系;适合把权威手册从「阅读材料」推进为「可执行检查清单」的安全测试实践。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜