Help us improve
Share bugs, ideas, or general feedback.
From straitjacket
Stand-alone coverage-guided fuzzing of a target: write libFuzzer/SharpFuzz harnesses for fuzzable functions, run them for a time budget, and mine every crash into a deterministic regression test pinned to the crashing input. Use when the user wants to fuzz a parser/deserializer/decoder, fuzz an untrusted-input handler, find crashing inputs, or harden a function against malformed input — WITHOUT running the whole tdd cycle. Supports Rust (cargo-fuzz, nightly) and C# (SharpFuzz); degrades to a clear skip when the fuzz toolchain is absent.
npx claudepluginhub kemononeco/straitjacket --plugin straitjacketHow this skill is triggered — by the user, by Claude, or both
Slash command
/straitjacket:fuzzThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A thin launcher over the plugin's existing fuzz machinery — the `fuzz-harness-author` and
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
A thin launcher over the plugin's existing fuzz machinery — the fuzz-harness-author and
fuzz-runner agents and the reproducer-to-test CLI. The shared engine (agent roster, the
fanout stage, dispatch convention, run-state) lives in docs/STAGES.md;
this skill does not restate it.
work-units.json; reproducer-to-test appends the mined regression units and you merge.fuzz-harness-author owns this; don't relax it.straitjacket:report-bug, then you resume or stop. Never pivot to fixing it or to consulting on a fix.<target> — a file, crate::module symbol, or fuzzable function to fuzz. Absent → the existing fuzz targets reported by fuzz-setup.--fuzz-time <seconds> — per-target budget (default 60).--max-targets N — cap the number of harnesses run this session.repo_root; tree should be green (fuzz is in the green-baseline preflight matcher). Generate run_id.straitjacket detect-stack --repo-root <repo_root> → stack.straitjacket fuzz-setup --repo-root <repo_root> --stack <stack> — probe the fuzz toolchain (Rust: cargo-fuzz + nightly; C#: SharpFuzz) and list existing fuzz targets. Record presence in <run_id>/tooling.json.
cargo-fuzz resolves on PATH / ~/.cargo/bin, nightly is present) → this is a straitjacket false-negative probe bug, not a missing tool. Capture it via the surfaced-bug reflex (STAGES.md rule 7) — straitjacket:report-bug against src/commands/fuzz_setup.rs — then STOP and tell the user the run is blocked on a captured plugin bug (do not fix the probe inline; that is a tdd/triage job).fuzz-harness-author (direct Agent — single agent, not a fan-out) with the fuzzable targets + the fuzz-setup scaffolding info + the per-target budget. It writes the harnesses, builds them to confirm they compile, and returns runner_tasks (one per harness).fuzz-runner team — capped at 2 — over the runner tasks. Workflow path: the fanout stage (tasks = one per runner, cap: 2); read the runners' shape off the stage's raw (each returns {crashes:[...]}, not results). Agent path: spawn the runners in one message. Each returns crash artifacts (path, SHA-256, trace).straitjacket reproducer-to-test --repro-path <path> --target-file <file> \
--target-function <symbol> --stack <stack> --repo-root <repo_root> \
--work-units-file <run_id>/work-units.json
This writes a deterministic regression test (named by the input hash) into a regressions/ test module and appends a WorkUnit.straitjacket run-new-tests --work-units-file <run_id>/work-units.json --stack <stack> --log-dir <run_id> (branch on nothing_to_run). A mined test that does not now fail-then-pin the crash is a surfaced_bug — escalate via the surfaced-bug reflex (straitjacket:report-bug; STAGES.md rule 7), do not silence.fuzz-harness-author + a capped Haiku fuzz-runner team. Artifacts under <repo>/.straitjacket/<run_id>/; the straitjacket CLI is on PATH via the plugin's bin/.tdd fix-mode / triage.