harness-writing

Write fuzzing harnesses with structured input parsing for libFuzzer and AFL++.

Updated Jan 30, 2026
One-click install
npx skills add https://github.com/andrescardonas7/salchipapa-web --skill harness-writing-andrescardonas7
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: harness-writing
Source: https://github.com/andrescardonas7/salchipapa-web/tree/main/.cursor/skills/testing-handbook-skills/harness-writing
Command: npx skills add https://github.com/andrescardonas7/salchipapa-web --skill harness-writing-andrescardonas7

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill provides techniques and best practices for writing effective fuzzing harnesses, ensuring that fuzzing campaigns reach critical code paths and uncover bugs efficiently.

Core Features & Use Cases

  • Harness Design: Learn how to create entry points for fuzzers that correctly feed data to your System Under Test (SUT).
  • Input Structuring: Techniques for parsing raw byte input into structured data types required by your application.
  • Use Case: When developing a new fuzz target for a complex file parser, use this Skill to understand how to structure the harness to correctly feed malformed file data and maximize code coverage.

Quick Start

Use the harness-writing skill to create a minimal C++ fuzzing harness for a target function.

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 file parser?

An effective fuzzing harness for a file parser requires creating entry points that feed malformed file data to the System Under Test. This maximizes code coverage and ensures efficient bug detection by correctly parsing raw byte input into structured data types.

What is the best way to structure raw byte input for fuzzing?

The best way to structure raw byte input for fuzzing is applying techniques to parse raw bytes into the structured data types required by your application. This ensures the fuzzer correctly interacts with the target function and reaches critical code paths.

Does this fuzzing harness approach work with libFuzzer and AFL++?

Yes, this fuzzing harness approach works with libFuzzer and AFL++. It requires an understanding of these specific fuzzer interfaces to correctly design entry points and maximize code coverage across multiple programming languages.

How do I maximize code coverage when writing a fuzz target?

To maximize code coverage when writing a fuzz target, you must design harnesses that correctly feed data to your System Under Test. Implementing structured input parsing ensures fuzzing campaigns reach critical code paths and uncover bugs efficiently.

Can I create fuzzing harnesses across multiple programming languages?

Yes, you can create fuzzing harnesses across multiple programming languages. This provides techniques for creating entry points for fuzzers and best practices for input structuring, ensuring broad applicability for your bug hunting campaigns.