agentleFS
NoorQureshiNoorQureshi/ronin/skills/code-review/code-review-solidity/SKILL.md

code-review-solidity

Skill26 starsChanged 32 days agoMITView on GitHub

Security review of Solidity / EVM smart contracts — reentrancy, access control, arithmetic, and DeFi economic bugs. Load when reviewing a smart contract / web3 codebase or PR, on .sol source in scope, or "audit this contract". Signals: *.sol, foundry/hardhat, ERC-20/721, external calls, delegatecall, proxy patterns, price oracles.

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run slither (fast, high-signal) and mythril.

    line 46
  2. Distinctive:

    Read every external call and check state-update ordering (reentrancy) and return-value handling.

    line 47

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Solidity / smart-contract review

When it applies

Reviewing on-chain code (a protocol, a token, a bridge). Smart-contract bugs are usually irreversible and directly financial, so the review bar is high and the classic patterns are well known — start there, then look for economic/logic flaws unique to the protocol.

Why it works

The EVM executes exactly as written with real money at stake: an external call can re-enter before state updates, arithmetic wraps, and a missing modifier means anyone can call a privileged function. Most losses trace to a small set of patterns a careful read (plus Slither/Mythril) will surface.

Sinks & patterns (read, then reason about ordering and trust)

  • Reentrancy: state changed after an external call/.call{value:}/token callback (ERC-777/721 hooks). Enforce checks-effects-interactions or a nonReentrant guard.
  • Access control: privileged functions missing onlyOwner/role modifiers; tx.origin used for auth (phishable); unprotected initialize() on upgradeable proxies.
  • Arithmetic: unchecked math (pre-0.8, or inside unchecked{}) → over/underflow; precision loss from divide-before-multiply; rounding that favors the attacker.
  • Unchecked calls: ignoring call/send return values; assuming an external call succeeded.
  • delegatecall: to attacker-influenced targets → storage/logic hijack; storage-layout mismatch in proxies.
  • Oracle / economics: spot-price from a manipulable AMM (flash-loan price manipulation), missing slippage/deadline, MEV/front-running of state-changing txs, first-depositor share inflation.
  • Other: selfdestruct/force-fed ether assumptions, weak randomness (block.timestamp/ blockhash), signature replay (missing nonce/chainId in EIP-712), DoS via unbounded loops.

Method

  1. Run slither (fast, high-signal) and mythril; triage findings.
  2. Read every external call and check state-update ordering (reentrancy) and return-value handling.
  3. Map roles/modifiers to every state-changing and fund-moving function.
  4. Model the economics: how does price/valuation get set, and can a flash loan move it within one tx?
  5. Property-test invariants with echidna/Foundry fuzzing where feasible.

Gotchas

  • Solidity ≥0.8 checks arithmetic by default — the risk moves into unchecked{} blocks and casts.
  • A "reentrancy guard" doesn't help cross-function or cross-contract reentrancy — check the whole path.
  • Upgradeable proxies add initializer, storage-collision, and delegatecall risks absent in plain contracts.

References

SWC Registry; Slither/Mythril docs; Trail of Bits & OpenZeppelin audit guidance; rekt.news post-mortems.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.