mcpField
S
setup-solidity-contracts

setup-solidity-contracts

github.com/openzeppelinDevelopment219575 installsUpdated 2d ago
Repository

About setup-solidity-contracts

A setup skill for developers starting or maintaining Solidity projects with Hardhat or Foundry. It covers framework detection, OpenZeppelin installation, Foundry remappings, and import conventions for upgradeable contracts.

Key features

  1. 01Detect Hardhat or Foundry projects
  2. 02Initialize either framework
  3. 03Install standard or upgradeable OpenZeppelin contracts
  4. 04Configure Foundry remappings
  5. 05Choose imports for proxy or standard deployments

Use cases

  1. 01Initialize a framework for a new Solidity project
  2. 02Add OpenZeppelin to an existing Foundry project
  3. 03Set up upgradeable dependencies for proxy deployments

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/openzeppelin/openzeppelin-skills --skill setup-solidity-contracts

After installing, type/setup-solidity-contractsin Claude Code to confirm it loaded.

Details

From the project README

Solidity Setup

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.

Hardhat Setup

  • Initialize project (only if starting a new project)
npx hardhat init        # Hardhat v2
npx hardhat --init      # Hardhat v3
  • Install OpenZeppelin Contracts:
npm install @openzeppelin/contracts
  • If using upgradeable contracts, also install the upgradeable variant:
npm install @openzeppelin/contracts-upgradeable

Foundry Setup

  • Install Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup
  • Initialize project (only if starting a new project)
forge init my-project
cd my-project
  • Add OpenZeppelin Contracts:
forge install OpenZeppelin/openzeppelin-contracts@v<VERSION>
  • If using upgradeable contracts, also add the upgradeable variant:
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 install pulls 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 the openzeppelin-contracts-upgradeable submodule and its subdirectories, which includes its own transitive copy of openzeppelin-contracts of the same release version number. This format is needed for Etherscan verification to work. Particularly, any copies of openzeppelin-contracts that are installed separately are NOT used.

Import Conventions

  • Standard: @openzeppelin/contracts/token/ERC20/ERC20.sol
  • Upgradeable: @openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol
  • Use upgradeable variants only when deploying behind proxies; otherwise use standard contracts.

Comments

Markdown supported