بنقرة واحدة
extract-fuzzer-repro
// 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.
// 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.
Workflow for debugging SSA pass semantic preservation using the noir-ssa CLI. Use when a program's behavior changes incorrectly during the SSA pipeline - bisects passes to identify which one breaks semantics. The `pass_vs_prev` fuzzer finds such issues automatically.
End-to-end workflow for debugging SSA fuzzer failures from CI. Extracts a reproduction case from GitHub Actions logs, then bisects SSA passes to identify the bug. Use when a `pass_vs_prev` or similar fuzzer test fails in CI.
Workflow for measuring and optimizing the ACIR circuit size of a constrained Noir program. Use when asked to optimize a Noir program's gate count or circuit size.
Minimize an SSA file that triggers a bug in the noir-ssa pipeline, producing the smallest possible reproduction case. Use after bisecting to identify which SSA passes cause the issue.
Guide for writing noirc_frontend unit tests. Use when adding, writing, or reviewing frontend tests — regression tests, reproduction tests, error-checking tests, or should_panic tests in the compiler frontend.
Guidelines for writing idiomatic, efficient Noir programs. Use when writing or reviewing Noir code.
| name | extract-fuzzer-repro |
| description | 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. |
Use this skill to extract a reproduction project from fuzzer failures in CI. This creates a minimal Noir project you can use locally to reproduce and debug the issue.
From the GitHub Actions URL, extract the job ID. The URL format is:
https://github.com/noir-lang/noir/actions/runs/RUN_ID/job/JOB_ID
gh api repos/noir-lang/noir/actions/jobs/JOB_ID/logs 2>&1 | tee fuzzer_logs.txt
Search for the generated Noir source:
grep -nE "unconstrained fn main|fn main" fuzzer_logs.txt
The fuzzer output has this structure:
---
AST:
global G_A: i8 = -127_i8;
unconstrained fn main(a: pub i8) -> pub i8 {
...
}
---
ABI Inputs:
a = "-0x5c"
---
Seed: 0xc63ed07b00100000
Some failures only manifest with specific flags (e.g., -Zenums for match expressions, optimization flags, etc.). Note any flags mentioned in the logs as you'll need them to reproduce the issue.
nargo new repro_project
cd repro_project
Copy the AST section to src/main.nr and create Prover.toml with the ABI inputs.
# Include any required flags from the logs
nargo execute
This should reproduce the failure you saw in CI. If it doesn't, double-check you're using the same compiler flags from the logs.