# Fizz

Generate Echidna/Medusa-compatible Solidity fuzz suites from Foundry or Hardhat projects.

- Repository: https://github.com/pashov/skills (1295 stars)
- Category: Testing
- License: MIT
- Last updated: 2026-10-21
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add pashov/skills --skill fizz -g -a claude-code -y`
Codex: `npx skills add pashov/skills --skill fizz -g -a codex -y`
Cursor: `npx skills add pashov/skills --skill fizz -g -a cursor -y`
Gemini CLI: `npx skills add pashov/skills --skill fizz -g -a gemini-cli -y`

## Description

Generate Echidna/Medusa-compatible Solidity fuzz suites from Foundry or Hardhat projects. Trigger on "fizz", "generate fuzz suite", "build fuzz harness", "stateful fuzzing", "fuzzing harness", "property testing", and "invariant suite".

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Fizz

Generate a stateful Solidity fuzz suite under `{SUITE_DIR}` (default: `test/fizz/`), with metadata and fuzzer runtime files under `{META_DIR}` (default: `fizz_data/`).

Use `Echidna` and `Medusa` for invariant campaigns. Use `Foundry` for compilation, smoke testing, and quick debugging.

## Workflow Rules

- Follow the steps in order. Do not skip forward if a required artifact for the current step does not exist yet.
- If a step fails, stop there and report the blocker.
- If tooling is missing, say exactly what was attempted and what is missing.
- Keep the generated Solidity suite isolated under `test/fizz/` and the metadata/runtime files under `fizz_data/` unless the user explicitly asks for different paths.
- Reuse existing project setup and test logic whenever possible; do not invent a deployment flow if the repo already has one.

## Parameters

- `PROJECT_ROOT`: user-provided path, otherwise the current working directory.
- `SKILL_PATH`: the directory containing this `SKILL.md`.
- `SUITE_DIR`: `test/fizz` relative to `PROJECT_ROOT`. Pass `--suite-dir` to suite-generation steps.
- `META_DIR`: `fizz_data` relative to `PROJECT_ROOT`. Pass `--meta-dir` to metadata steps.
- Optional contract arguments narrow handler generation to specific contracts.
- `--no-invariants` skips Step 9 only.
- `--max` (or `--opus`, or "max quality") upgrades every subagent in this run from Sonnet to Opus. See "Subagent Model" below.
- `--guided` / `--automatic` selects the run mode. See "Run Mode" below.

## Run Mode

The skill runs in one of two modes, resolved once at the start of the run and reused for every checkpoint below:

The rest: https://github.com/pashov/skills/blob/HEAD/fizz/SKILL.md
