test-policy
Skill1.1k starsChanged 13 days agoApache-2.0View on GitHub
Cleanup pass on a diff, crate, or test tree that deletes tests with no independent failure signal, flags missing contract tests and measured slow tests, and reports test time saved. Report and delete only; never writes tests or application code. Use for "prune tests", "test pass", "remove agent-written tests".
We split this skill into the rules it gives an agent
18 rules. About 0 are common, 10 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Delete tests. Touch tests and their unused support only.
- Distinctive: line 12
Default is delete. A test survives only by matching one keep clause below.
- Distinctive: line 15
Keep a qualifying test whole.
- Very specific: line 16
Every flag names a real symbol or contract inside scope at a real file:line.
- Distinctive: line 20
Only these survive. Dedupe still applies, except to regressions.
- Very specific: line 30
Keep candidates without a confirmed bug link under (b), marked unconfirmed, with the missing evidence.
- Distinctive: line 33
Delete when no keep clause applies:
- Distinctive: line 55
Search existing tests and fixtures before claiming a gap.
- Distinctive: line 59
If a deleted test was the last user of a test hook compiled into non-test builds, flag it:
- Distinctive: line 65
Search all callers across the workspace, not just the deletion scope.
- Very specific: line 73
Read per-test wall durations from real run artifacts.
- Distinctive: line 88
Scope: Use the caller's files, diff, or crates.
- Very specific: line 91
Per-test pass: Read each test and the code under test.
- Very specific: line 96
Delete: Remove whole test functions with their attributes.
- Very specific: line 98
Check indirect fixture loading, discovery rules, and callers across the repository before removing support.
- Very specific: line 99
Never touch manifests, runner configuration (including .config/nextest.toml), CI workflows, or dependencies.
- Very specific: line 103
Run sequentially, per touched Rust crate: cargo clippy -p <crate> --features <features> -q --message-format=short --all-targets -- -D …
- Distinctive: line 108
Report: Never send raw diffs.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Test policy
Delete tests. Touch tests and their unused support only. Never write tests or change application code; flags are separate tasks.
Posture
- Default is delete. A test survives only by matching one keep clause below. If unsure whether a clause applies, delete.
- Exception: a (b) candidate below whose bug is unconfirmed → keep and say so. False keeps are cheap; lost regressions are not.
- A surviving test carries a failure signal a maintainer wants independent of how the code is currently written.
- Keep a qualifying test whole. Never rewrite a bad test into a better one in this pass.
- Every flag names a real symbol or contract inside scope at a real
file:line. Invent nothing.
Keep list
Only these survive. Dedupe still applies, except to regressions. Tally each kept test under one primary clause.
- (a) Public contract / API behaviour (SDK, prover, and verifier entry points; the
e2e_matrixguest × mode table). - (b) Regression test pinned to a fixed bug — keep, and link the issue or commit if findable.
- (c) Invariant or algebraic property the types cannot express (sumcheck round identities, polynomial binding, field laws), asserted against independent ground truth.
- (d) Protocol / wire / format compatibility: verifier fixtures, frozen wire or transcript digests, spec vectors, golden files.
- (e) Soundness / security checks: tampered proofs, malformed inputs, and mode mismatches the verifier must reject.
For (b), find the introducing commit with git log -S '<test name or failing expression>' -- <path> and git blame <path>; add --diff-filter=A only for a new file.
A test is a (b) candidate only if that commit fixes a bug or names an issue/failing input; feature-added tests are not candidates.
Keep candidates without a confirmed bug link under (b), marked unconfirmed, with the missing evidence. Put found links in the report, not new comments.
Proptest properties and Kani proof harnesses, when present, are (c)/(e); never delete them. Keep maintained fuzz targets and their seed corpora; one-off development scaffolding is judged below. Formal checks run in CI only.
Delete when no keep clause applies:
- Implementation restatements: tests whose oracle is a second implementation of the same rule, mock-everything tests, assertions that an internal call was made.
- Old-vs-new equivalence tests that keep superseded logic alive as the oracle, including
#[cfg(test)]copies of deleted production code. - Tests serving only an agent's self-validation of one small change.
- Duplicate coverage of the same path with different literals and no distinct failure signal.
- Incidental details: exact log or error strings, or ordering that is not a contract.
- Scaffolding:
#[ignore]tests with no stated run condition, development probes, parity harnesses, temporary benchmarks, diagnostic counters. - Tests whose only failure mode is "someone refactored".
Judge the failure signal, not mocks or snapshots alone. Protocol parity and golden fixtures can be (d); an externally required call or log format can be (a).
Clear/ZK/verifier-fixture coverage required by CLAUDE.md for changes to stage order, public-value derivation, or transcript absorption is (d)/(e).
MUST DESIGN
Flag an untested contract a maintainer needs checked:
MUST DESIGN <symbol/contract> — <one-line test sketch> — <file:line>Name the input and observable failure the test would catch. Sketch only; writing the test is a separate task. Search existing tests and fixtures before claiming a gap. Missing branch coverage alone is not a missing contract test.
MUST KILL
If a deleted test was the last user of a test hook compiled into non-test builds, flag it:
MUST KILL <exact symbol> — <one line: remove the unused test hook> — <file:line>Search all callers across the workspace, not just the deletion scope. Leave the hook untouched.
SLOW
SLOW <test> — <wall> — <signal it buys>Read per-test wall durations from real run artifacts; prefer CI JUnit when available. This repository's .config/nextest.toml does not configure JUnit; Rust timings can instead come from nextest output (PASS [ 12.345s] <crate> <test>). Never guess wall time or assign a Python suite's total duration to individual tests.
Compare measured cost with the failure signal and the repository's CI-time budget; there is no universal seconds cutoff. A qualifying test stays.
Language matrix
| Language | Test forms | Fixtures / support | Run only touched tests |
| Rust | #[test], tests/*.rs integration binaries | Test data, golden files, verifier fixtures, #[cfg(test)] modules; feature-gated application helpers are read-only | cargo nextest run -p <crate> --cargo-quiet -E 'test(<name>)' with the test's required features |
| Python | unittest.TestCase.test_* in scripts/tests/ | setUp/tearDown, unittest.mock, temporary directories and test data | uv run python -m unittest scripts.tests.<module> -v or scripts.tests.<module>.<Class>.<test>; fuzz-runner example: uv run python -m unittest scripts.tests.test_fuzz -v |
The fuzz-runner command matches .github/workflows/fuzz-crates.yml's python3 -m unittest scripts.tests.test_fuzz -v, with uv selecting the local interpreter. The standalone SDK check uses uv run python jolt-sdk/tests/guest_function_cache.py; it requires the installed jolt CLI and guest toolchain set up by .github/workflows/rust.yml's test-sdk job.
Select Rust features from the touched crate's manifest and CI job: e.g. prover-fixtures, field-inline, and separate zk or akita runs. Do not combine zk and akita. Use the same features for linting and testing so gated tests actually run.
Procedure
- Scope. Use the caller's files, diff, or crates; default to the whole repository test tree, including embedded test modules and Python tests. For a diff, judge tests touched by changed lines. Inspect dependencies outside scope; do not delete outside scope. Skip generated and vendored tests. Record the starting diff so unrelated edits remain untouched.
- Per-test pass. Read each test and the code under test. Identify the observable failure, then assign (a)–(e) or
delete. Record missing-contract sketches and measured slow tests while the relevant code is open. - Dedupe. Group tests by exercised path and failure signal, not similar names. Same path, different literals: keep the existing case with the widest or most hostile input; delete the redundant cases. Different boundaries, failure modes, fixed bugs, modes (clear/ZK/Akita), or contracts are not duplicates.
- Delete. Remove whole test functions with their attributes; never leave an empty assertion body.
Drop a now-empty
mod tests. Remove fixtures, imports, and test-only helpers only when these deletions removed their last caller. Check indirect fixture loading, discovery rules, and callers across the repository before removing support. Never touch manifests, runner configuration (including.config/nextest.toml), CI workflows, or dependencies. - Prove tests-only. Inspect
git diff --statandgit diff --no-ext-diff --no-coloragainst the starting diff. Changed paths must be test files/fixtures, or hunks inside items gated by plain#[cfg(test)]. Undo any hunk outside that boundary. Anything compiled into non-test builds (cfg(any(test, feature = "...")),pub/#[doc(hidden)]hooks, fixture features) is application code: flag itMUST KILL. Run sequentially, per touched Rust crate:cargo clippy -p <crate> --features <features> -q --message-format=short --all-targets -- -D warnings, thencargo nextest run -p <crate> --features <features> --cargo-quiet -E '<affected tests>'. Omit--featureswhen none are needed; repeat for each affected mode. Select surviving tests that exercise affected support, not only deleted test names. For Python, run the affected module or standalone check from the matrix; use configured lint checks when available and record missing checks as skips. Lint and touched tests must pass. Undo deletions that break them; report pre-existing failures or unavailable checks as skips, not a pass. The full suite runs in CI only. - Measure. Before deletion, save per-test timings from CI artifacts if available; otherwise run the affected selection locally and save its output. Re-run the surviving selection after deletion with the same features and settings. Saved test time = sum of deleted tests' recorded durations; report test-seconds with source pointers, labelling local measurements. No per-test data →
unmeasured; do not add a runner configuration just to obtain timings. CI wall saved requires comparable before/aftergh run view <run> --json jobstimings; otherwiseunmeasured. - Report. Never send raw diffs.
Report
- Touched files — paths and relevant
file:linelocations. - Deleted — test count; one line each:
<test name> — <reason>; list removed support separately. - Kept — tally by (a)–(e); regression links and
unconfirmedcandidates with the missing evidence. - MUST DESIGN — flag lines, one per untested contract.
- MUST KILL — flag lines, one per unused test hook in application code.
- SLOW — flag lines with timing source, or
none measured. - Test time — test-seconds saved; before/after CI wall times with run references, or
unmeasured. - Skips — out-of-scope/generated files, unavailable history/timings, and failed or unavailable checks with reasons.
Trending
More talk lately.about the whole repository
Who's talking about a16z/jolt
- coset-io/zkp-academy“[2024.4.23-2024.5.21] Lasso & Jolt 学习小组”GitHub · Apr 27, 2024 · 2 reactions
- LayerZero-Labs/akita“perf(verifier): batch verifier dot products through jolt-field row kernels”GitHub · Oct 6, 2026
- sudosubin/agents.nix“agent-skills.github.a16z.jolt: 1.1.1-unstable-2026-09-02 → 1.1.1-unstable-2026-09-25”GitHub · Oct 3, 2026
- LayerZero-Labs/jolt“chore(akita): bump dependency to e2c49ed”GitHub · Oct 2, 2026
- jruizaranguren/best-of-digital-identity“Add privacy-preserving identity category”GitHub · Sep 30, 2026
The biggest 5 of 33 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 33
Talked about on GitHub (33 times).
On GitHub · 33
- Apr 27, 2024[2024.4.23-2024.5.21] Lasso & Jolt 学习小组 — coset-io/zkp-academy2 reactions · 1 comment
- Oct 6, 2026perf(verifier): batch verifier dot products through jolt-field row kernels — LayerZero-Labs/akita0 reactions · 15 comments
- Oct 3, 2026agent-skills.github.a16z.jolt: 1.1.1-unstable-2026-09-02 → 1.1.1-unstable-2026-09-25 — sudosubin/agents.nix0 reactions
- Oct 2, 2026chore(akita): bump dependency to e2c49ed — LayerZero-Labs/jolt0 reactions · 3 comments
- Sep 30, 2026Add privacy-preserving identity category — jruizaranguren/best-of-digital-identity0 reactions
28 more on GitHub
- Sep 30, 2026build: jolt as public git deps at a16z/jolt feat/inline-extension-external — 0xAndoroid/jeth0 reactions
- Sep 24, 2026agent-skills.github.a16z.jolt: init at 1.1.1-unstable-2026-09-02 — sudosubin/agents.nix0 reactions
- Aug 10, 2026Feat/jolt prover akita — LayerZero-Labs/jolt0 reactions · 1 comment
- Jul 31, 2026feat: port the demo to the modular prover on Akita (non-zk) — 0xAndoroid/jolt-wasm-prover0 reactions · 1 comment
- Jul 23, 2026Feat/jolt legacy prover akita integration — LayerZero-Labs/jolt0 reactions
- Jul 22, 2026[arXiv] zkML ONNX inference-proof harness — Jolt Atlas: Verifiable Inference via Lookup Arguments in Zero Knowledge — mnemonik-dev/nightly-research0 reactions
- May 21, 2026docs: document precommitted polynomial reductions — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026feat: integrate bytecode and program image reductions — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026feat: add committed bytecode foundation — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026refactor: add precommitted polynomial reductions — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026refactor: split stage 6 sumchecks — LayerZero-Labs/jolt0 reactions · 2 comments
- Apr 15, 2026build(deps): bump jolt-sdk from `b10e80a` to `3d5e431` — gg-archive/ruma-zk0 reactions
- Feb 3, 2026Implement Jolt Keccak-256 benchmark — ethereum/csp-benchmarkssays it tested it0 reactions
- Feb 3, 2026Implement Jolt ECDSA benchmark — ethereum/csp-benchmarkssays it tested it0 reactions
- Nov 11, 2025fix: correct calculation of max_log_n in VerifierSetup — markosg04/dory0 reactions
- Aug 15, 2025Update Jolt to v0.3.0-alpha — eth-act/ere0 reactions
- Aug 4, 2025Wire up PCS to jolt-prover — ICME-Lab/jolt-atlas0 reactions · 1 comment
- Aug 2, 2025Implement output proof — ICME-Lab/zkml-jolt0 reactions
- Mar 22, 2025no rust-toolchain-aarch64-unknown-linux-gnu.tar.gz release version — a16z/rust0 reactions · 1 comment
- Mar 21, 2025Implement `CanonicalSerialize` and `CanonicalDeserialize` for signed integers — a16z/arkworks-algebra0 reactions
- Mar 5, 2025Trait solver taking >10s to finish in auto complete — rust-lang/rust-analyzer0 reactions · 2 comments
- Feb 28, 2025Add Jolt zkVM Support to ProofLab — ProofLabDev/prooflab-rs0 reactions
- Feb 25, 2025chore: fix typos — a16z/helios0 reactions
- Jan 15, 2025Benchmark ICICLE and `arkmsm` — piotr-roslaniec/wasm-multiexp-benchsays it tested it0 reactions
- Nov 22, 2024chore: Update toolchain to nightly-2024-09-30 — a16z/rust0 reactions
- Jun 26, 2024Optimize polynomial batching computation — microsoft/Nova0 reactions · 1 comment
- May 27, 2024Summary from our mail threads — mab-xyz/verifiable-client-diversity0 reactions
- May 15, 2024List of Existing ZkVMs — vacp2p/zk-explorations0 reactions
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- meaningfool/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- analyze-specSkill
- ci-code-reviewSkill
- comment-policySkill
- implement-specSkill
- new-invariantSkill
- new-objectiveSkill
- new-specSkill
- update-docsSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

