What problem does it solve?
Adding a new property-based invariant to the jolt-eval framework requires repetitive boilerplate across multiple files: the invariant struct, input type, trait implementation, enum registration, and fuzz target setup. This Skill automates that entire workflow so developers can focus on the property being tested rather than plumbing.
Core Features & Use Cases
- Invariant Scaffolding: Creates the invariant struct, input type with
Arbitrary implementation, and Invariant trait implementation following existing patterns like split_eq_bind and soundness.
- Framework Registration: Registers the new invariant in the
JoltInvariants enum, the all() method, and the dispatch! macro in jolt-eval/src/invariant/mod.rs.
- Fuzz Target Generation: Creates a libFuzzer target and runs
sync_targets.sh to update the fuzz workspace configuration.
- Use Case: A Jolt contributor wants to verify that a new sumcheck optimization preserves polynomial binding. They invoke this Skill with the invariant name, describe the property, and receive a fully registered, tested invariant ready for seed testing, fuzzing, and red-teaming.
Quick Start
Ask the assistant to implement a new jolt-eval invariant named after your property, for example by saying: create a new invariant called sumcheck_binding that verifies the sumcheck prover binds correctly to the claimed evaluation.