harness-writing

Design fuzzing harnesses that convert raw fuzzer bytes into deterministic inputs.

Updated May 2, 2026
One-click install
npx skills add https://github.com/ayehiaa/my-travel-assistant --skill harness-writing-ayehiaa
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: harness-writing
Source: https://github.com/ayehiaa/my-travel-assistant/tree/main/.agents/skills/harness-writing
Command: npx skills add https://github.com/ayehiaa/my-travel-assistant --skill harness-writing-ayehiaa

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

It solves the problem of missing crashes and low coverage caused by poorly written fuzzing harnesses that fail to correctly parse inputs or stay reproducible across iterations.

Core Features & Use Cases

  • Input parsing and routing to the SUT: Converts raw fuzzer bytes into meaningful typed inputs and calls the correct target entry points.
  • Determinism and edge-case safety: Adds size validation, avoids non-deterministic behavior, and ensures harness logic won’t crash independently.
  • Coverage-focused harness patterns: Supports minimal harnesses, structured extraction (e.g., FuzzedDataProvider), and interleaved fuzzing to exercise multiple operations.

Use case example: You have a complex file parser or protocol handler that rarely reaches deep code paths during fuzzing; use this guidance to design a harness that validates input sizes, extracts structured fields, and calls the right parsing functions so the fuzzer can explore more of the system.

Quick Start

Ask the harness-writing skill to help you design a deterministic fuzzing harness for a new target function by identifying suitable entry points, adding input validation, and structuring the raw fuzzer bytes into the exact parameters your SUT expects.

Frequently Asked Questions about harness-writing

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

FAQPage Schema
How do I build a fuzzing harness that reaches deep code paths in a complex parser?

To build an effective fuzzing harness for complex parsers, use structured extraction like FuzzedDataProvider to convert raw fuzzer bytes into valid typed inputs and call the correct target entry points, ensuring the fuzzer can explore more of the system.

Why does my fuzzer find low coverage and miss crashes across complex APIs?

Low fuzzing coverage and missed crashes often happen when poorly written harnesses fail to correctly parse inputs or stay reproducible; adding robust input size handling and deterministic logic resolves these issues.

What is the best way to structure raw fuzzer bytes for a target function?

The best way to structure raw fuzzer bytes is using structured extraction mechanisms like FuzzedDataProvider, which converts arbitrary bytes into meaningful typed inputs and exact parameters your system under test expects.

How do I ensure determinism and fix non-reproducible crashes in libfuzzer or afl++?

Ensure determinism in libfuzzer or afl++ by adding input size validation, avoiding non-deterministic behavior, resetting global state between iterations, and freeing resources so harness logic won’t crash independently.

Can I use interleaved fuzzing to exercise multiple operations in a single harness?

Yes, you can use interleaved fuzzing patterns within a single harness to exercise multiple operations, leveraging structured extraction to route arbitrary fuzzer bytes to different target entry points for broader coverage.