property-based-testing

Writes, reviews, and debugs property-based tests — Hypothesis, fast-check, proptest, jqwik, rapid, and Echidna or Medusa for Solidity invariants. Use whenever tests should cover a whole input domain instead of a hand-picked list of examples: encode/decode and serialize/deserialize pairs, parsers, canonicalizers and normalizers, validators, numeric and Decimal types, comparators and sort order, data structures, and smart-contract state invariants. Also use when adding cases to an existing @given, fast-check, or proptest suite, when judging whether existing property tests assert anything real, and when a generator has shrunk a counterexample and you need to tell a wrong property from a genuine bug. Not for coverage-guided binary fuzzing (libFuzzer, AFL), mutation-testing campaigns, static analysis, benchmarking, or end-to-end UI tests.

by trailofbits 6.6k GitHub stars CC-BY-SA-4.0 Updated Aug 18, 2026
Official Testing Claude Code
property-based-testing skill by trailofbits
property-based-testing — Testing skill by trailofbits

Overview

property-based-testing is an open-source testing skill for Claude Code and compatible agents, published by trailofbits. Its author describes it as: “Writes, reviews, and debugs property-based tests — Hypothesis, fast-check, proptest, jqwik, rapid, and Echidna or Medusa for Solidity invariants. Use whenever tests should cover a whole input domain instead of a hand-…”. The project has 6.6k stars on GitHub and is available under the CC-BY-SA-4.0 license. Add it to your setup with `/plugin marketplace add trailofbits/skills`.

What property-based-testing does

An example test asserts one point. A property asserts a rule over the whole input domain and lets the generator hunt for the counterexample. That trade is worth making when the code has an algebraic shape — an inverse, an invariant, an oracle — and not otherwise. Code with no such shape gets example tests; saying so is a valid outcome.

Best for

What’s inside

The SKILL.md for property-based-testing is organised into these sections:

  • Property catalog
  • The two ways a property test asserts nothing
  • Where to look next
  • Introducing PBT to a project that lacks it

Installation

Add property-based-testing to your agent with:

/plugin marketplace add trailofbits/skills

Review a skill’s source before installing it — skills can instruct your agent to run commands. This command comes from the skill’s public repository, which is the source of truth for setup steps. New to skills? Read how to install Claude Code skills.

Supported agents

  • Claude Code — ships a claude code plugin marketplace

License

property-based-testing is published under the CC-BY-SA-4.0 license.

Strengths

  • Clear CC-BY-SA-4.0 license — safe to read and adapt within its terms
  • Ships in trailofbits/skills, an established project with 6,646 GitHub stars
  • Works with Claude Code
  • Actively maintained — repository updated in the last 90 days

Author

trailofbits 41 skills in the catalog · GitHub profile ↗
View skills

Topics

Need a skill like this, tailored to your team?Build a custom skill →

Frequently asked questions

What does property-based-testing do?
Writes, reviews, and debugs property-based tests — Hypothesis, fast-check, proptest, jqwik, rapid, and Echidna or Medusa for Solidity invariants. Use whenever tests should cover a whole input domain instead of a hand-picked list of examples: encode/decode and serialize/deserialize pairs, parsers, canonicalizers and normalizers, validators, numeric and Decimal types, comparators and sort order, data structures, and smart-contract state invariants. Also use when adding cases to an existing @given, fast-check, or proptest suite, when judging whether existing property tests assert anything real, and when a generator has shrunk a counterexample and you need to tell a wrong property from a genuine bug. Not for coverage-guided binary fuzzing (libFuzzer, AFL), mutation-testing campaigns, static analysis, benchmarking, or end-to-end UI tests.
How do I install property-based-testing?
Run /plugin marketplace add trailofbits/skills in your agent, then reload your skills. Review the source at https://github.com/trailofbits/skills before installing.
Is property-based-testing free to use?
Yes. property-based-testing is free and open source under the CC-BY-SA-4.0 license, so you can read, run, and adapt it within that license's terms.
Which agents does property-based-testing work with?
property-based-testing lists Claude Code — named in its SKILL.md, its plugin marketplace or its repository topics. Skills use the portable SKILL.md format, so other agents that read that format may load it too.
Where does property-based-testing come from?
property-based-testing ships inside trailofbits/skills, a repository that contains 41 catalogued skills in total. The repository's 6,646 GitHub stars apply to that whole collection, not to this skill on its own.

Systematic code maturity assessment using Trail of Bits' 9-category framework. Analyzes codebase for arithmetic safety, auditing practices, access controls, complexity, decentralization, documentation, MEV risks, low-level code, and testing. Produces professional scorecard with evidence-based ratings and actionable recommendations.

Official Claude Code
6.6k GitHub stars CC-BY-SA-4.0 Updated Aug 18, 2026 Free

Performs security-focused differential review of code changes (PRs, commits, diffs). Adapts analysis depth to codebase size, uses git history for context, calculates blast radius, checks test coverage, and generates comprehensive markdown reports. Automatically detects and prevents security regressions.

Official Claude Code
6.6k GitHub stars CC-BY-SA-4.0 Updated Aug 18, 2026 Free

Configures mewt or muton mutation testing campaigns — scopes targets, tunes timeouts, and optimizes long-running runs. Use when the user mentions mewt, muton, mutation testing, or wants to configure or optimize a mutation testing campaign.

Official Claude Code
6.6k GitHub stars CC-BY-SA-4.0 Updated Aug 18, 2026 Free

Creates language variants of existing Semgrep rules. Use when porting a Semgrep rule to specified target languages. Takes an existing rule and target languages as input, produces independent rule+test directories for each language.

Official Claude Code
6.6k GitHub stars CC-BY-SA-4.0 Updated Aug 18, 2026 Free

Vitest fast unit testing framework powered by Vite with Jest-compatible API. Use when writing tests, mocking, configuring coverage, or working with test filtering and fixtures.

5.8k GitHub stars MIT Updated Jun 23, 2026 Free