CtrlK
BlogDocsLog inGet started
Tessl Logo

evilissimo/property-based-testing

Generates **property-based tests** that use randomized input generation to validate invariants and contracts (rather than hand-picked examples). Triggers when the conversation involves: PBT frameworks (Hypothesis library for Python, fast-check for TypeScript, proptest for Rust, rapid for Go, RapidCheck for C++); concepts like invariants, contracts, round-trip symmetry, encode/decode, serialize/deserialize, generative testing, or shrinking; or requests to find edge cases that example-based tests miss — e.g., "find edge cases automatically", "test all possible inputs", "verify this property holds". Does NOT trigger for: writing regular example-based unit tests, debugging, CI/CD setup, UI/component testing, or integration/E2E testing. Identifies up to 7 property patterns (round-trip, idempotence, invariance, metamorphic, inverse, ordering, no-crash), designs input generators, writes property tests, and extracts regression tests from failures.

91

1.11x
Quality

90%

Does it follow best practices?

Impact

94%

1.11x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-5/

{
  "context": "Tests whether the agent applies C++ RapidCheck with GoogleTest integration, generator APIs, RC assertions/preconditions, and codec-oriented properties.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Install options",
      "description": "Mentions an appropriate RapidCheck installation path such as vcpkg or CMake FetchContent.",
      "max_score": 7
    },
    {
      "name": "Headers included",
      "description": "Includes rapidcheck.h and/or rapidcheck/gtest.h in the C++ test file.",
      "max_score": 8
    },
    {
      "name": "GTest property",
      "description": "Uses RC_GTEST_PROP or rc::check integrated with a GoogleTest test.",
      "max_score": 10
    },
    {
      "name": "RC assertions",
      "description": "Uses RC_ASSERT or related RapidCheck assertion macros rather than only ordinary assert/EXPECT inside property bodies.",
      "max_score": 10
    },
    {
      "name": "Packet generation",
      "description": "Defines generated Packet values using rc::gen APIs, parameters, apply/exec, or arbitrary generators for fields.",
      "max_score": 12
    },
    {
      "name": "Edge values",
      "description": "Generators can cover empty tags, arbitrary strings, empty payloads, varied payload bytes, and boundary sequence values.",
      "max_score": 10
    },
    {
      "name": "Round trip",
      "description": "Includes a decode(encode(packet)) equals packet property.",
      "max_score": 12
    },
    {
      "name": "Additional properties",
      "description": "Includes at least two other meaningful properties such as deterministic encoding, no-crash decode for encoded packets, or size/field conservation.",
      "max_score": 10
    },
    {
      "name": "Preconditions",
      "description": "Uses RC_PRE for any constrained property or avoids constraints when full generated input is valid.",
      "max_score": 6
    },
    {
      "name": "Run config",
      "description": "Mentions RC_PARAMS or command-line configuration for increasing generated test counts.",
      "max_score": 7
    },
    {
      "name": "Regression workflow",
      "description": "Explains that a minimal counterexample from RapidCheck should be converted into a deterministic GoogleTest regression case.",
      "max_score": 8
    }
  ]
}

evals

SKILL.md

tessl.json

tile.json