From openzeppelin-skills
Sets up Solidity smart contract projects with OpenZeppelin Contracts using Hardhat or Foundry. Covers project init, dependency installs, remappings, and import conventions.
npx claudepluginhub openzeppelin/openzeppelin-skills --plugin openzeppelin-skillsThis skill uses the workspace's default tool permissions.
For existing projects, detect the framework by looking for `hardhat.config.*` (Hardhat) or `foundry.toml` (Foundry). For new projects, ask the user which framework they prefer.
Upgrades Solidity contracts with OpenZeppelin UUPS, Transparent, or Beacon proxies. Covers Hardhat/Foundry workflows, initializers, storage safety (ERC-7201), validation, and v4-v5 restrictions.
Build and test Solidity smart contracts using Foundry toolkit (forge, cast, anvil) for Ethereum/EVM development, Forge tests (*.t.sol), deployment scripts (*.s.sol), and debugging.
Prevents silent decimal mismatch bugs in EVM ERC-20 tokens via runtime decimals lookup, chain-aware caching, bridged-token handling, and normalization. For DeFi bots, dashboards using Python/Web3, TypeScript/ethers, Solidity.
Share bugs, ideas, or general feedback.
For existing projects, detect the framework by looking for hardhat.config.* (Hardhat) or foundry.toml (Foundry). For new projects, ask the user which framework they prefer.
npx hardhat init # Hardhat v2
npx hardhat --init # Hardhat v3
npm install @openzeppelin/contracts
npm install @openzeppelin/contracts-upgradeable
curl -L https://foundry.paradigm.xyz | bash
foundryup
forge init my-project
cd my-project
forge install OpenZeppelin/openzeppelin-contracts@v<VERSION>
forge install OpenZeppelin/openzeppelin-contracts-upgradeable@v<VERSION>
Look up the current version from https://github.com/OpenZeppelin/openzeppelin-contracts/releases. Pin to a release tag — without one,
forge installpulls the default branch, which may be unstable.
remappings.txt (if not using upgradeable contracts)@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
remappings.txt (if using upgradeable contracts)@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
Note The above remappings mean that both
@openzeppelin/contracts/(including proxy contracts) and@openzeppelin/contracts-upgradeable/come from theopenzeppelin-contracts-upgradeablesubmodule and its subdirectories, which includes its own transitive copy ofopenzeppelin-contractsof the same release version number. This format is needed for Etherscan verification to work. Particularly, any copies ofopenzeppelin-contractsthat are installed separately are NOT used.
@openzeppelin/contracts/token/ERC20/ERC20.sol@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol