vector-forge

Generates cryptographic test vectors by finding escaped mutants through mutation testing.

Updated May 17, 2026
One-click install
npx skills add https://github.com/irrit-us/agent_misc --skill vector-forge-irrit-us
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: vector-forge
Source: https://github.com/irrit-us/agent_misc/tree/main/skills/trailmark-vector-forge
Command: npx skills add https://github.com/irrit-us/agent_misc --skill vector-forge-irrit-us

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires trailmark, and includes references (resource) components.

What problem does it solve? Existing cryptographic test vector suites often leave implementation code paths unexercised, and there is no systematic way to know which paths are uncovered. This Skill uses mutation testing to find escaped mutants, then generates new test vectors that deliberately target those gaps, proving effectiveness with before/after kill-rate comparisons. ## Core Features & Use Cases - Mutation-Driven Gap Analysis: Runs mutation testing (gremlins, cargo-mutants, mutmut, Mull, Stryker) against implementations to establish a baseline and identify survived or uncovered mutants. - Graph-Informed Triage: Uses Trailmark call graphs to classify escaped mutants by reachability, blast radius, and security priority, filtering out false positives like equivalent mutations and cross-package coverage artifacts. - Targeted Vector Generation: Produces Wycheproof-format JSON vectors including single-fault negative vectors, roundtrip assertions, and fault-simulation vectors from limb-width reimplementations, cross-verified against at least two independent implementations. - Use Case: When auditing BLS12-381 implementations, run the workflow to discover that flag-validation mutations survive existing vectors, then generate single-defect negative vectors that kill those mutants and document the kill-rate delta in a structured report. ## Quick Start Use the vector-forge skill to run mutation testing on my BLS12-381 implementation and generate new Wycheproof test vectors for any escaped mutants.

Frequently Asked Questions about vector-forge

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I generate cryptographic test vectors with mutation testing?▼

Run a mutation testing framework against the implementation with existing vectors to get a baseline, triage escaped mutants by code path, then design vectors targeting those paths. Re-run mutation testing with the new vectors and compare kill rates to prove effectiveness.

What mutation testing frameworks work for Go, Rust, and C?▼

Use gremlins or go-mutesting for Go, cargo-mutants for Rust, mutmut or pytest-gremlins for Python, and Mull for C/C++. Mull requires matching its LLVM version to the installed Clang and compiling with the Mull compiler plugin.

Why do FFI wrapper crates show zero mutation kill rates?▼

Mutating FFI bindings only changes thin wrapper glue, not the underlying implementation logic in C or assembly. You must mutate the actual implementation language, using Mull for the C layer beneath Rust or Go bindings.

Why do survived mutants appear in code covered by cross-package tests?▼

Frameworks like gremlins and cargo-mutants only run same-package tests for each mutated file, so functions exercised by parent-package tests appear as NOT COVERED. Use a call graph to identify these false positives before generating vectors.

When should I not use mutation-driven test vector generation?▼

Skip it when no implementation exists to mutate, when testing application logic rather than algorithm implementations, or when the target is a trivial implementation with no edge cases. Mutation testing requires runnable code and a test harness.

How do negative test vectors catch validation bugs?▼

Negative vectors with exactly one defect isolate a single validation check, so permissive mutations like & changed to | in flag parsing are caught when the harness asserts rejection. Harnesses that only check valid vectors miss all permissive mutations.