extract-fuzzer-repro
Converts CI fuzzer failure data into a local Noir project for debugging.
Install
mkdir -p .claude/skills/extract-fuzzer-repro && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3057" && unzip -o skill.zip -d .claude/skills/extract-fuzzer-repro && rm skill.zipInstalls to .claude/skills/extract-fuzzer-repro
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Extract a Noir reproduction project from fuzzer failure logs in GitHub Actions. Use when a CI fuzzer test fails and you need to create a local reproduction.Key capabilities
- →Extracts specific Noir compiler flags from logs
- →Parses AST sections into main.nr files
- →Maps ABI input sequences to Prover.toml
- →Validates reproduction environment parity
How it works
Uses shell commands to fetch raw CI logs, applies grep patterns to isolate the AST and ABI sections, and auto-generates a Nargo project structure.
Inputs & outputs
When to use extract-fuzzer-repro
- →Debugging fuzzer failures
- →Reproducing CI errors locally
- →Noir language development
About this skill
Reproduce an AST-fuzzer failure locally
The AST fuzzers (pass_vs_prev, acir_vs_brillig, min_vs_full, orig_vs_morph, comptime_vs_brillig_direct, comptime_vs_brillig_nargo, valid_after_pass) are seeded. The fastest and most reliable reproduction is to regenerate the failing program from its seed with just fuzz-repro, which sets the env vars, runs the target, prints the failing AST, and — given an output directory — writes a runnable nargo project for you. This avoids copying a possibly-truncated AST out of the CI log by hand.
1. Get the seed and target from CI
From the GitHub Actions URL (.../runs/RUN_ID/job/JOB_ID), fetch the log and pull out the seed and the failing test name:
gh api repos/noir-lang/noir/actions/jobs/JOB_ID/logs 2>&1 | tee fuzzer_logs.txt
# Seed: printed on failure as `Seed: 0x...` and `NOIR_AST_FUZZER_SEED=0x...`
grep -oE '(NOIR_AST_FUZZER_SEED=|Seed:[[:space:]]*)0x[0-9a-fA-F]+' fuzzer_logs.txt \
| grep -oE '0x[0-9a-fA-F]+' | sort -u
# Target: the nextest FAIL line, `targets::<target>::tests::fuzz_with_arbtest`
grep -oE 'targets::[a-z_]+::tests::fuzz_with_arbtest' fuzzer_logs.txt | sort -u
CI's .github/scripts/extract-fuzz-seeds.sh produces the same seeds.txt and a seeds-by-test.tsv (test↔seed pairs) from a captured run log, if you have that.
2. Check out the commit CI ran on
The seed→program mapping is deterministic for a given compiler revision but can drift as the AST generator changes. Reproduce on the same commit the fuzzer ran on:
git fetch origin <ci-sha> && git checkout <ci-sha>
If the fuzzer ran on an up-to-date master, your current master is usually fine.
3. Reproduce with just fuzz-repro
# <target> is optional — omit it to try every target until one reproduces.
# <out-dir> makes the harness also emit a runnable nargo project.
just fuzz-repro 0xc63ed07b00100000 pass_vs_prev ./repro
This prints the failing AST (and, for a comparison failure, the ABI inputs) and writes ./repro/{Nargo.toml, src/main.nr, Prover.toml}. When a target compares more than one program (orig_vs_morph) each is written under ast_1/, ast_2/, sharing the same Prover.toml. The env vars it sets — NOIR_AST_FUZZER_SEED, NOIR_AST_FUZZER_EMIT_PROJECT, NOIR_AST_FUZZER_SHOW_SSA, RUST_LOG=debug — are documented in tooling/ast_fuzzer/README.md.
4. Verify the reproduction
cd repro
nargo execute # add feature flags (e.g. -Zenums for match) if the program/log needs them
This should reproduce the failure. For pass_vs_prev (a semantic-preservation failure) continue with the bisect-ssa-pass skill using this project.
Fallback: copy the AST from the log
If the seed no longer reproduces (e.g. the generator drifted and you cannot check out the original commit), the failing AST and inputs are still printed verbatim in the log. Look for the --- AST: (or --- Failing AST:) and --- Inputs: / ABI Inputs: sections, copy the AST into src/main.nr and the inputs into Prover.toml, then verify as above.
Note in both cases: for the compiled targets the rendered main.nr is best-effort Noir (the exact string the fuzzer uses to build integration tests) and may need small tweaks to parse; the comptime targets emit exact Noir source, and the Prover.toml inputs are always exact.
When not to use it
- →Debugging logic errors unrelated to fuzzer failures
- →General Noir project scaffolding
Prerequisites
Limitations
- →Logs must contain explicit AST/ABI output
- →Requires local compiler availability
How it compares
It automates the manual extraction of failing seeds and inputs from massive logs into a working local repro environment.
Compared to similar skills
extract-fuzzer-repro side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| extract-fuzzer-repro (this skill) | 1 | 3mo | Review | Intermediate |
| python-testing-patterns | 77 | 2mo | Review | Intermediate |
| python-playground | 2 | 4mo | Review | Beginner |
| mflux-manual-testing | 2 | 2mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by noir-lang
View all by noir-lang →You might also like
python-testing-patterns
wshobson
Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development. Use when writing Python tests, setting up test suites, or implementing testing best practices.
python-playground
pydantic
Run and test Python code in a dedicated playground directory. Use when you need to execute Python scripts, test code snippets, investigate CPython behavior, or experiment with Python without affecting the main codebase.
mflux-manual-testing
filipstrand
Manually validate mflux CLIs by exercising the changed paths and reviewing output images/artifacts.
examples-auto-run
openai
Run python examples in auto mode with logging, rerun helpers, and background control.
klingai-known-pitfalls
jeremylongshore
Manage avoid common mistakes when using Kling AI. Use when troubleshooting issues or learning best practices to prevent problems. Trigger with phrases like 'klingai pitfalls', 'kling ai mistakes', 'klingai gotchas', 'klingai best practices'.
netalertx-testing-workflow
netalertx
Run and debug tests in the NetAlertX devcontainer. Use this when asked to run tests, check test failures, debug failing tests, or execute pytest.