Co-Pilot
Updated a month ago

testing-handbook-skills

Ttrailofbits
1.8k
trailofbits/skills/plugins/testing-handbook-skills
82
Agent Score

πŸ’‘ Summary

A meta-skill that automatically generates Claude Code skills for security testing tools and techniques based on the Trail of Bits Application Security Testing Handbook.

🎯 Target Audience

Security EngineersDevSecOps PractitionersAI Agent DevelopersApplication Security ResearchersQuality Assurance Engineers

πŸ€– AI Roast: β€œIt's a skill factory that builds skills about building skills, potentially creating an infinite loop of meta-work before any actual security testing gets done.”

Security AnalysisLow Risk

The skill may clone the testing handbook from GitHub, introducing a supply chain risk if the repository is compromised. The validation script executes Python code. Mitigation: Use a pinned commit hash for the handbook repository and audit the validation script's dependencies and execution.

Testing Handbook Skills

Meta-skill that generates Claude Code skills from the Trail of Bits Application Security Testing Handbook.

Overview

This plugin provides a skill generator that:

  1. Analyzes the Testing Handbook structure
  2. Identifies skill candidates (tools, techniques, domains)
  3. Generates skills using appropriate templates
  4. Validates generated skills

Installation

Add to your Claude Code skills configuration:

# From the skills marketplace claude skills install testing-handbook-skills # Or manually add to .claude/settings.json { "plugins": [ "./plugins/testing-handbook-skills" ] }

Usage

Generate All Skills

Generate skills from the testing handbook

This will:

  1. Locate the handbook (check common locations, ask user, or clone)
  2. Scan the handbook structure
  3. Present a plan of skills to generate
  4. On approval, generate skills as siblings to testing-handbook-generator/

Generate Specific Skill

Create a skill for the libFuzzer section of the testing handbook

Structure

plugins/testing-handbook-skills/
β”œβ”€β”€ .claude-plugin/
β”‚   └── plugin.json
β”œβ”€β”€ scripts/
β”‚   └── validate-skills.py        # Skill validation tool
β”œβ”€β”€ skills/
β”‚   β”œβ”€β”€ testing-handbook-generator/
β”‚   β”‚   β”œβ”€β”€ SKILL.md              # Main skill entry point
β”‚   β”‚   β”œβ”€β”€ discovery.md          # Handbook analysis methodology
β”‚   β”‚   β”œβ”€β”€ testing.md            # Validation strategy
β”‚   β”‚   β”œβ”€β”€ agent-prompt.md       # Agent prompt template for generation
β”‚   β”‚   └── templates/            # Skill generation templates
β”‚   β”‚       β”œβ”€β”€ tool-skill.md     # Semgrep, CodeQL
β”‚   β”‚       β”œβ”€β”€ fuzzer-skill.md   # libFuzzer, AFL++, cargo-fuzz
β”‚   β”‚       β”œβ”€β”€ technique-skill.md # Harness writing, coverage
β”‚   β”‚       └── domain-skill.md   # Crypto testing, web security
β”‚   β”œβ”€β”€ [generated-skill]/        # Generated skills (siblings to generator)
β”‚   β”‚   └── SKILL.md
β”‚   └── ...
└── README.md

Scripts

| Script | Purpose | |--------|---------| | validate-skills.py | Validates generated skills (YAML, sections, line count, shortcodes, cross-refs) |

# Validate all skills uv run scripts/validate-skills.py # Validate specific skill uv run scripts/validate-skills.py --skill libfuzzer # JSON output for CI uv run scripts/validate-skills.py --json

Skill Types

| Type | Template | Example Sources | |------|----------|-----------------| | Tool | tool-skill.md | Semgrep, CodeQL | | Fuzzer | fuzzer-skill.md | libFuzzer, AFL++, cargo-fuzz | | Technique | technique-skill.md | Harness writing, coverage analysis | | Domain | domain-skill.md | Wycheproof, constant-time testing |

Generated Skills

Generated skills are written as siblings to the generator:

skills/[skill-name]/SKILL.md

Each generated skill:

  • Follows the appropriate template structure
  • Contains content extracted from the handbook
  • Includes resource links (WebFetch summaries for non-videos)
  • Is validated with scripts/validate-skills.py before delivery

Skills Cross-Reference

This graph shows the 16 generated skills and their cross-references (from the Related Skills section of each skill). Only links between actually generated skills are shown.

graph TB subgraph Fuzzers libfuzzer[libfuzzer] aflpp[aflpp] libafl[libafl] cargo-fuzz[cargo-fuzz] atheris[atheris] ruzzy[ruzzy] end subgraph Techniques harness-writing[harness-writing] address-sanitizer[address-sanitizer] coverage-analysis[coverage-analysis] fuzzing-dictionary[fuzzing-dictionary] fuzzing-obstacles[fuzzing-obstacles] ossfuzz[ossfuzz] end subgraph Tools semgrep[semgrep] codeql[codeql] end subgraph Domain wycheproof[wycheproof] constant-time-testing[constant-time-testing] end %% Fuzzer β†’ Technique references libfuzzer --> address-sanitizer libfuzzer --> coverage-analysis aflpp --> address-sanitizer cargo-fuzz --> address-sanitizer cargo-fuzz --> coverage-analysis libafl --> address-sanitizer libafl --> coverage-analysis atheris --> address-sanitizer atheris --> coverage-analysis ruzzy --> address-sanitizer %% Fuzzer ↔ Fuzzer alternatives libfuzzer -.-> aflpp libfuzzer -.-> libafl aflpp -.-> libfuzzer aflpp -.-> libafl cargo-fuzz -.-> libfuzzer cargo-fuzz -.-> aflpp cargo-fuzz -.-> libafl libafl -.-> libfuzzer libafl -.-> aflpp libafl -.-> cargo-fuzz ruzzy -.-> libfuzzer ruzzy -.-> aflpp %% Tool ↔ Tool alternatives semgrep -.-> codeql codeql -.-> semgrep %% Technique β†’ Fuzzer references harness-writing --> libfuzzer harness-writing --> aflpp harness-writing --> cargo-fuzz harness-writing --> atheris harness-writing --> ossfuzz fuzzing-dictionary --> libfuzzer fuzzing-dictionary --> aflpp fuzzing-dictionary --> cargo-fuzz fuzzing-obstacles --> libfuzzer fuzzing-obstacles --> aflpp fuzzing-obstacles --> cargo-fuzz ossfuzz --> libfuzzer ossfuzz --> aflpp ossfuzz --> cargo-fuzz ossfuzz --> atheris %% Technique cross-references harness-writing --> address-sanitizer harness-writing --> coverage-analysis harness-writing --> fuzzing-dictionary harness-writing --> fuzzing-obstacles fuzzing-dictionary --> coverage-analysis fuzzing-dictionary --> harness-writing address-sanitizer --> coverage-analysis ossfuzz --> address-sanitizer ossfuzz --> coverage-analysis %% Domain β†’ Technique references wycheproof --> coverage-analysis constant-time-testing --> coverage-analysis

Legend:

  • Solid arrows (β†’): Primary dependencies (techniques, tools used together)
  • Dashed arrows (-.->): Alternative suggestions (similar tools/fuzzers)

Generated Skills Summary:

| Type | Skills | |------|--------| | Fuzzers (6) | libfuzzer, aflpp, libafl, cargo-fuzz, atheris, ruzzy | | Techniques (6) | harness-writing, address-sanitizer, coverage-analysis, fuzzing-dictionary, fuzzing-obstacles, ossfuzz | | Tools (2) | semgrep, codeql | | Domain (2) | wycheproof, constant-time-testing |

Note: Some skills reference planned/external skills not yet generated (e.g., honggfuzz, fuzzing-corpus, sarif-parsing). Run validate-skills.py to see the full list.

Configuration

The skill will automatically:

  1. Check common locations (./testing-handbook, ../testing-handbook, ~/testing-handbook)
  2. Ask the user for the path if not found
  3. Clone from GitHub as last resort: https://github.com/trailofbits/testing-handbook

No hardcoded paths are used - the skill adapts to your environment.

Author

PaweΕ‚ PΕ‚atek

License

See repository license.

5-Dim Analysis
Clarity8/10
Novelty9/10
Utility9/10
Completeness8/10
Maintainability7/10
Pros & Cons

Pros

  • Automates creation of numerous specialized skills from a trusted source.
  • Provides a structured, validated generation pipeline with cross-references.
  • Reduces manual effort for building a comprehensive security testing skill set.
  • Adapts to user environment for handbook location.

Cons

  • Generated skill quality depends entirely on the source handbook's content and structure.
  • Adds a layer of indirection; users must generate skills before using them.
  • Potential for outdated or incomplete skills if handbook is not updated.
  • Validation script adds a maintenance and execution step.

Related Skills

prowler

A
toolCode Lib
86/ 100

β€œIt's a Swiss Army knife for cloud security, but you'll need a PhD in YAML to configure all its moving parts.”

kubernetes-specialist

A
toolCo-Pilot
86/ 100

β€œPowerful, but the setup might scare off the impatient.”

differential-review

A
toolCo-Pilot
86/ 100

β€œPowerful, but the setup might scare off the impatient.”

Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.

Copyright belongs to the original author trailofbits.