How to discover fuzz/invariant properties for a protocol: the three property classes (global, function-specific, delta-based), source-driven discovery (accumulative ops, counters, extreme values, exposed-state enumeration), protocol-type adaptation, property quality bars (no speculative ghosts, snapshot discipline, success-gating, diagnosability), and discovery perspectives (adversarial profit maximizer, conservation auditor, rounding analyst, state-transition mapper). Complements the mechani...
Pro scans all 3 files and shows the line behind each finding
Scanned 9/20/2026
npx -y skills add nuroctane/nur-cli --skill discovering-protocol-properties --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Discovering Protocol Properties?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/nuroctane-discovering-protocol-properties)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: discovering-protocol-properties
description: "How to discover fuzz/invariant properties for a protocol: the three property classes (global, function-specific, delta-based), source-driven discovery (accumulative ops, counters, extreme values, exposed-state enumeration), protocol-type adaptation, property quality bars (no speculative ghosts, snapshot discipline, success-gating, diagnosability), and discovery perspectives (adversarial profit maximizer, conservation auditor, rounding analyst, state-transition mapper). Complements the mechanics skills. Use when building a fuzzing/invariant campaign from scratch. Load one reference slice."
---
# Discovering protocol properties
The hardest part of fuzzing is not running the fuzzer - it is knowing what to assert. This skill is the discovery methodology: where properties come from, how they are shaped, and the quality bars that keep a suite fast and diagnosable. Mechanics live elsewhere: handlers in `writing-foundry-invariant-handlers`, fuzzer config in `fuzzing-with-echidna-and-medusa`. Distilled from fizz-class property-generation methodology (pashov/skills) and aviggiano's testing-goals docs; runs single-session.
## Choose your file
| You want | Load |
|----------|------|
| Property classes, discovery sources, quality bars, patterns | `references/property-discovery.md` |
| Discovery perspectives to rotate through when output dries up | `references/discovery-perspectives.md` |
## Single-session discipline
Discovery is reading + writing Solidity in this session - no per-perspective subagents, no parallel property generation. Rotate perspectives sequentially; when a perspective stops yielding, move to the next and come back only with new code knowledge.
## Pipeline
1. Skim the invariant catalog if `auditing-git-history-and-specs` ran (`G/I/X/E` entries are property seeds).
2. Run `references/property-discovery.md`: classify state changes, enumerate snapshot candidates, draft properties per pattern.
3. Stuck? Rotate `references/discovery-perspectives.md`, one at a time.
4. Hand properties to the mechanics skills; every property gets a name, an owner perspective, and a failure-diagnosis note.
## Quality bar in one line
If a property failure would not make you stop and investigate, it is not a property - it is a tautology burning fuzz budget.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!