| Contract / Library | PascalCase | MyToken, StakingPool | | Interface | I + PascalCase | IMyToken, IStakingPool | | State variable / Function | lowerCamelCase | totalSupply, claimDividend | | Constant / Immutable | UPPERSNAKECASE | MAXSUPPLY, ROUTERADDRESS | | Event | PascalCase (past tense) | TokenTransferred, PoolCreated |
| Custom Error | PascalCase | InsufficientBalance, Unauthorized | | Function parameter | prefix for setter | function setFee(uint256 fee) |
| Cross-contract constants | Place in src/common/Const.sol | | Interface definitions | Place in src/interfaces/I .sol, separate from implementation | | Simple on-chain queries | Use cast call or cast send | | Complex multi-step operations | Use forge script |
[AUTO-INVOKE] ДОЛЖЕН быть вызван ПЕРЕД написанием или изменением любого контракта Solidity (файлы .sol). Охватывает версию прагмы, соглашения об именах, макет проекта, стандарты выбора библиотеки OpenZeppelin, интеграцию Chainlink и антишаблоны. Триггер: любая задача, связанная с созданием, редактированием или просмотром исходных файлов .sol. Источник: 0xlayerghost/solidity-agent-kit.