property-based-testing
Installation
SKILL.md
What this skill does
Guides property-based testing (PBT) across Python, Rust, JavaScript/TypeScript, Solidity, and Go to surface security-relevant edge cases that example-based unit tests systematically miss. Rather than asserting that specific inputs produce specific outputs, PBT defines invariants the system must always satisfy — then lets a framework generate hundreds or thousands of inputs to try to break them. This skill covers property identification, framework selection, test writing, counterexample minimization, and failure triage with a focus on overflow/underflow, deserialization roundtrips, access control invariants, and state machine violations.
When to use
- When auditing cryptographic primitives, parsers, or serialization libraries for correctness under adversarial input
- When reviewing smart contracts for arithmetic invariants before or alongside a formal audit
- When a function has a large or unbounded input domain that example tests cannot adequately cover
- When debugging a known crash and needing a minimal reproducible input automatically
- When adding regression coverage to a function that previously had a security-relevant bug
Prerequisites
Install the framework for the target language: