What problem does it solve? Writing tests for OpenZeppelin contracts requires choosing between Hardhat unit tests, Foundry fuzzing, Halmos symbolic execution, and Certora formal verification, and misusing any of them wastes effort or leaves coverage gaps. This Skill encodes the repository's exact conventions so tests, mocks, and verification specs are written correctly the first time. ## Core Features & Use Cases - Approach selection: Decision table mapping contract complexity to the right testing approach, from Hardhat edge-case unit tests up to Certora rule-based verification. - hardhat-exposed wrappers: Guidance on using auto-generated $-prefixed contracts to call internal functions, plus rules for when manual mocks in contracts/mocks/ are warranted. - Framework patterns: Concrete conventions for loadFixture caching, shouldBehaveLike shared behaviors, multi-target loops, Foundry fuzz functions, Halmos testSymbolic naming, and Certora .conf/.spec pairs. - Use Case: When fixing a bug in an ERC-20 extension, use this Skill to write a minimal regression test with the correct Chai assertion style, decide whether a Halmos symbolic test covers the invariant, and add the required changeset. ## Quick Start Write a Hardhat test for the ERC20 contract following this repository's testing conventions, including a fixture and custom-error assertions.