| 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 |
[INVOCA AUTOMATICA] DEVE essere invocato PRIMA di scrivere o modificare qualsiasi contratto Solidity (file .sol). Copre la versione pragma, le convenzioni di denominazione, il layout del progetto, gli standard di selezione della libreria OpenZeppelin, l'integrazione di Chainlink e gli anti-pattern. Trigger: qualsiasi attività che implica la creazione, la modifica o la revisione dei file sorgente .sol. Fonte: 0xlayerghost/solidity-agent-kit.