harness-writing

Guide writing fuzzing harnesses with FuzzedDataProvider for libFuzzer, AFL++, cargo-fuzz, and go-fuzz.

Updated Feb 26, 2026
One-click install
npx skills add https://github.com/keremtoker468-dotcom/restoran --skill harness-writing-keremtoker468-dotcom
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: harness-writing
Source: https://github.com/keremtoker468-dotcom/restoran/tree/main/.claude/skills/harness-writing
Command: npx skills add https://github.com/keremtoker468-dotcom/restoran --skill harness-writing-keremtoker468-dotcom

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill provides techniques and patterns for writing robust fuzzing harnesses, ensuring that fuzzers can effectively test your code and uncover bugs.

Core Features & Use Cases

  • Harness Design: Learn best practices for creating entry points for fuzzers.
  • Input Structuring: Techniques for parsing raw fuzzer data into meaningful inputs for your SUT.
  • Use Case: When developing a new fuzz target for a complex data parser, use this Skill to understand how to structure the fuzzer input to exercise various parsing logic paths and handle different data types correctly.

Quick Start

Use the harness-writing skill to learn how to write a minimal C++ fuzzing harness.

Frequently Asked Questions about harness-writing

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write an effective fuzzing harness for a data parser?

Writing an effective fuzzing harness requires structuring fuzzer input to exercise parsing logic paths and handle different data types correctly. Using FuzzedDataProvider ensures fuzzers effectively test your code and uncover bugs.

What is FuzzedDataProvider and how does it work in fuzzing?

FuzzedDataProvider is an input structuring technique for parsing raw fuzzer data into meaningful inputs for your System Under Test (SUT). It structures arbitrary byte sequences into typed data, allowing fuzzers to effectively exercise complex code paths.

Does this fuzzing harness guidance support libFuzzer and AFL++?

Yes, the fuzzing harness guidance supports libFuzzer and AFL++, along with cargo-fuzz and go-fuzz. It provides tool-specific guidance to ensure your harnesses interact correctly with each fuzzer's entry points.

How to ensure determinism when writing a fuzzing harness?

To ensure determinism in a fuzzing harness, avoid non-deterministic behaviors like global state modification or unseeded random generation. The guidance covers determinism and interleaved fuzzing to maintain reliable bug detection.

What are common pitfalls when creating fuzz targets?

Common pitfalls when creating fuzz targets include improper SUT interaction and incorrect raw input parsing. The guidance addresses these issues directly, providing patterns to ensure robust harness design and effective bug hunting across multiple languages.