upgrade-solidity-contracts — скилл для Claude Code: обзор
Помогает обновлять смарт-контракты на Solidity через прокси-паттерны OpenZeppelin. Защищает раскладку памяти и учит настраивать пространства имён ERC-7201.
npx skills add OpenZeppelin/openzeppelin-skills --skill upgrade-solidity-contracts -a claude-codeЧто делает upgrade-solidity-contracts
Скилл учит агента безопасно модифицировать контракты на Solidity через UUPS или Transparent прокси. Он следит за тем, чтобы вместо конструкторов вызывались функции с модификатором initializer. Реализацию блокируют вызовом _disableInitializers(). Это защищает контракт от случайного или намеренного захвата управления.
Инструкции запрещают менять типы переменных, переставлять их местами или удалять старые поля. Для надёжной изоляции состояния скилл рекомендует использовать стандарт ERC-7201. В пятой версии библиотек OpenZeppelin контракты группируют свои переменные внутри детерминированных структур, избавляя проект от ручного расчёта пробелов памяти.
Прямой переход с четвёртой версии OpenZeppelin Contracts на пятую не поддерживается. Разработчикам придётся разворачивать новые прокси. Старая версия использовала последовательные слоты, поэтому код v5 физически не сможет прочитать записанные ранее данные.
Какие задачи решает
- перевести контракты на архитектуру UUPS или Beacon
- заменить конструкторы на функции инициализации
- настроить хранилище по стандарту ERC-7201
- проверить совместимость раскладки памяти перед обновлением
Примеры запросов агенту
- Перепиши токен под архитектуру UUPS и добавь функцию initialize
- Проверь раскладку хранилища в новой версии контракта на совместимость
- Помоги перенести переменные состояния в структуру ERC-7201
Как установить upgrade-solidity-contracts
1Через Skills CLI (Vercel)
npx skills add OpenZeppelin/openzeppelin-skills --skill upgrade-solidity-contracts -a claude-code2Вручную: положить файлы
~/.claude/skills/upgrade-solidity-contracts/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/upgrade-solidity-contracts/
1Через Skills CLI (Vercel)
npx skills add OpenZeppelin/openzeppelin-skills --skill upgrade-solidity-contracts -a codex2Вручную: положить файлы
.agents/skills/upgrade-solidity-contracts/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add OpenZeppelin/openzeppelin-skills --skill upgrade-solidity-contracts -a cursor2Вручную: положить файлы
.cursor/skills/upgrade-solidity-contracts/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install OpenZeppelin/openzeppelin-skills upgrade-solidity-contracts2Вручную: положить файлы
.github/skills/upgrade-solidity-contracts/SKILL.md1Через Skills CLI (Vercel)
npx skills add OpenZeppelin/openzeppelin-skills --skill upgrade-solidity-contracts -a gemini-cli2Командой платформы
gemini skills install https://github.com/OpenZeppelin/openzeppelin-skills --path skills/upgrade-solidity-contractsВручную: положить файлы
.devin/skills/upgrade-solidity-contracts/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add OpenZeppelin/openzeppelin-skills --skill upgrade-solidity-contracts -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора2
Похожие
Рядом в теме «Безопасность»
Всё по теме «Безопасность» →Вопросы о upgrade-solidity-contracts
Как установить upgrade-solidity-contracts в Claude Code?
Выполните команду npx skills add OpenZeppelin/openzeppelin-skills --skill upgrade-solidity-contracts -a claude-code. Инструмент добавит скилл в настройки агента.
Что делает этот скилл?
Он предоставляет модели правила работы с обновляемыми контрактами OpenZeppelin. Скилл помогает писать корректные инициализаторы и исключает наложение слотов памяти.
Можно ли обновить реализацию с OpenZeppelin Contracts v4 на v5?
Нет, такое обновление заблокировано из-за смены модели хранилища. Версия v4 опиралась на последовательные слоты, а v5 использует ERC-7201, поэтому читать старое состояние невозможно.