What problem does it solve? Hardhat 3 introduces a dual test-layer model (Solidity tests and TypeScript tests), a new network connection API, and ESM-only constraints that differ significantly from earlier versions. This Skill provides the correct patterns for writing tests, using cheatcodes, manipulating EVM state, and typechecking against compiled contract ABIs so you avoid common migration and usage mistakes. ## Core Features & Use Cases - Test-layer selection guidance: Decide between Solidity tests (.t.sol files with forge-std assertions and cheatcodes) and TypeScript tests (via network.create()) based on whether off-chain orchestration is needed. - EVM state manipulation: Use forge-std cheatcodes (vm.prank, vm.deal, vm.warp, vm.expectRevert) in Solidity tests and networkHelpers (time control, mining, impersonation, fixtures, snapshots) in TypeScript tests. - Compile-then-typecheck workflow: Run npx hardhat build && npx tsc --noEmit to catch wrong argument types and invalid options before running the test suite. - Use Case: You are adding tests to a Hardhat 3 project using the viem toolbox. This Skill tells you to write unit tests as Solidity test contracts, use network.create() with networkHelpers.loadFixture for integration tests, and load the matching hardhat-toolbox-viem skill for client-specific assertions. ## Quick Start Ask the AI to write a Hardhat 3 test for your smart contract, specifying whether you want a Solidity test with forge-std cheatcodes or a TypeScript test using network.create and networkHelpers.