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.
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.
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-cont...
Set up a Solidity smart contract project with OpenZeppelin Contracts. Use when users need to: (1) create a new Hardhat or Foundry project, (2) install OpenZeppelin Contracts dependencies for Solidity, (3) configure remappings for Foundry, or (4) understand Solidity import conventions for OpenZeppelin. Source: openzeppelin/openzeppelin-skills.