If you're working with OpenZeppelin proxy patterns, this walks you through UUPS, Transparent, and Beacon upgrades with the context you actually need. It covers the v4 to v5 migration gotcha (namespaced storage means you can't upgrade across major versions), shows you how to write initializers instead of constructors, and explains ERC-7201 namespaced storage with the actual formula for computing storage locations. The Hardhat and Foundry workflows are both documented, and there's a solid breakdown of when each proxy pattern makes sense. Honest take: the upgrade restrictions section alone will save you from a painful mistake if you're maintaining older contracts.
npx skills add https://github.com/openzeppelin/openzeppelin-skills --skill upgrade-solidity-contracts