What problem does it solve? LLM training data largely reflects OpenZeppelin v4, so generated Solidity code often fails to compile against v5 due to breaking changes like mandatory Ownable constructor arguments, removed SafeMath and Counters libraries, renamed _update hooks, and moved import paths. This Skill provides correct, current v5 patterns for tokens, access control, security utilities, and upgradeable contracts. ## Core Features & Use Cases - Token Implementations: Production-ready ERC-20 (Permit, Votes, Capped, Pausable), ERC-721 (Enumerable, URIStorage, ERC2981 royalties), and ERC-1155 contracts with correct v5 override resolution. - Access Control: Ownable, Ownable2Step, AccessControl role hierarchies, AccessControlDefaultAdminRules, and the v5 AccessManager centralized permission hub. - Upgradeable Contracts: Full UUPS lifecycle with Initializable, reinitializer, storage gap management, ERC1967Proxy deployment, and Foundry upgrade test scripts. - Security Utilities: ReentrancyGuard, Pausable, SafeERC20 with forceApprove for non-standard tokens like USDT, plus a v4-to-v5 migration guide and troubleshooting reference. - Use Case: Ask for a governance token with gasless approvals and vote delegation, and receive a complete ERC20Permit + ERC20Votes contract with the required nonces diamond-resolution override, plus a Governor and TimelockController deployment script. ## Quick Start Write an upgradeable ERC-20 token contract with permit, votes, and owner-controlled minting using OpenZeppelin v5, including the Foundry deployment script.