前言¶
做應用安全測試時,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 校驗。
生成與校驗工作流¶
- 發現:掃描手冊目錄結構,識別可固化爲 Skill 的工具、技術與領域。
- 規劃:向用戶展示擬生成的 Skill 列表,經確認後再寫入。
- 生成:輸出爲與
testing-handbook-generator/同級的skills/[skill-name]/SKILL.md。 - 校驗:
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 用戶。
限制與注意
- 生成依賴手冊副本:未找到本地手冊時會詢問路徑或嘗試從
trailofbits/testing-handbook克隆;離線或無權訪問時需自行準備路徑。 - 交叉引用與規劃中的 Skill:README 註明部分 Skill 仍引用尚未生成的條目(如
honggfuzz、fuzzing-corpus、sarif-parsing);以validate-skills.py輸出爲準。 - 校驗是交付門禁:生成 Skill 應在合併或發佈前跑校驗腳本,避免 YAML、章節或引用不符合倉庫約定。
- 工具環境仍須自備:Skill 指導工作流,不替代安裝 libFuzzer、CodeQL CLI、Semgrep 等本體;手冊強調本地與 CI/CD 配置往往比「能跑起來」更難,Skill 是對文檔的結構化延伸,不是一鍵沙箱。
- 市場元數據:ChatGPT Workspace 導入需遵循父倉庫
marketplace.json與部分 Skill 的agents/openai.yaml字段要求;若導入失敗,需按父倉庫說明同步市場後重試。
結尾¶
testing-handbook-skills 把 Trail of Bits Testing Handbook 中的 fuzzing、Sanitizer、覆蓋率及相關專題,收斂爲可生成、可校驗的 Agent Skill 體系;適合把權威手冊從「閱讀材料」推進爲「可執行檢查清單」的安全測試實踐。
- 插件目錄:github.com/trailofbits/skills/tree/main/plugins/testing-handbook-skills
- 技能入口路徑(倉庫內):
plugins/testing-handbook-skills/skills/(含testing-handbook-generator與生成產物) - 手冊:appsec.guide
- 市場安裝:
/plugin marketplace add trailofbits/skills或codex plugin marketplace add trailofbits/skills