What problem does it solve? Smart contract bugs often hide behind specific multi-transaction state sequences that unit tests and static analysis miss. This Skill guides you through designing meaningful invariants, configuring Echidna's coverage-guided fuzzer, managing corpora, and integrating stateful fuzzing into Foundry projects and CI pipelines. ## Core Features & Use Cases - Property, Assertion, Optimization, and Dapptest Modes: Write echidna_* boolean properties, catch assert() failures and Solidity panics, maximize values with echidna_optimize_*, or reuse forge-std style tests. - Invariant Design Patterns: Apply reusable property templates for ERC-20 tokens, ERC-4626 vaults, lending protocols, AMMs, governance, and staking, including ghost variables and bounded input helpers. - Configuration & Corpus Management: Tune testLimit, seqLen, shrinkLimit, workers, senders, and dictionaries; persist corpora across runs for faster convergence. - Use Case: Before an audit of a lending protocol, run a deep overnight campaign with 5M transactions and 300-length sequences to verify collateralization and solvency invariants, then shrink any failing sequence to a minimal reproducer. ## Quick Start Write an Echidna property test harness for my Solidity contract and generate an echidna.yaml config tuned for a Foundry project.