Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/nirholas/three.ws/smart-contract-reading-guidenpx skills add nirholas/three.ws --skill smart-contract-reading-guidegit clone --depth 1 https://github.com/nirholas/three.wsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/nirholas/three.ws/smart-contract-reading-guide)<a href="https://agentmods.dev/skills/nirholas/three.ws/smart-contract-reading-guide"><img src="https://agentmods.dev/badge/skills/nirholas/three.ws/smart-contract-reading-guide.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00053 | $0.02068 |
| Opus 5 | $0.00026 | $0.01034 |
| Sonnet 5 | $0.00011 | $0.00414 |
| Haiku 4.5 | $0.00005 | $0.00207 |
Grade A, and why
smart-contract-reading-guide scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 266 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Smart Contract Reading Guide
You don't need to be a Solidity developer to read smart contracts. This guide teaches you to understand what contracts do by reading their code on block explorers.
Finding Contract Code
Block Explorers
| Chain | Explorer | URL |
|---|---|---|
| Ethereum | Etherscan | etherscan.io |
| Arbitrum | Arbiscan | arbiscan.io |
| Base | BaseScan | basescan.org |
| Optimism | Optimistic Etherscan | optimistic.etherscan.io |
| Polygon | PolygonScan | polygonscan.com |
Steps to Read a Contract
- Go to the explorer → Enter contract address
- Click "Contract" tab
- Look for the green checkmark ("Contract Source Code Verified")
- If not verified → RED FLAG — don't interact with unverified contracts
Understanding Contract Structure
Solidity 101 for Readers
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// Interface — defines what functions exist
interface IERC20 {
function transfer(address to, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
// Contract — the actual code
contract MyToken is IERC20 {
// State variables (stored on blockchain)
string public name = "My Token";
mapping(address => uint256) private _balances;
address public owner;
// Events (logs, used for tracking)
event Transfer(address indexed from, address indexed to, uint256 value);
// Modifier (access control)
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
_;
}
// View function (read-only, free to call)
function balanceOf(address account) external view returns (uint256) {
return _balances[account];
}
// State-changing function (costs gas)
function transfer(address to, uint256 amount) external returns (bool) {
_balances[msg.sender] -= amount;
_balances[to] += amount;
emit Transfer(msg.sender, to, amount);
return true;
}
// Owner-only function (⚠️ check these carefully)
function mint(address to, uint256 amount) external onlyOwner {
_balances[to] += amount;
}
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 266 lines · 53 tokens per session scan A 8dc02d1b4267
smart-contract-reading-guide is a skill published in the GitHub repository nirholas/three.ws (110 stars, last pushed yesterday), licensed Apache-2.0. It adds 53 tokens to every session and 2,068 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
midnight-concepts
Foundational knowledge about Midnight Network zero-knowledge blockchain technology, privacy mechanisms, and architecture. Use when users need to understand zero-knowledge proofs, privacy mechanisms like Zswap and selective disclosure, partner chain architecture, real-world use cases for private DeFi and voting, when…
blockchain-cross-chain
Cross-chain protocols, IBC, LayerZero, Wormhole, Axelar, CCIP, bridges, atomic composability, shared sequencer, cross-chain message passing. Covers trust models (light clients, external validators, ZK proofs), bridge security, token representation (canonical, wrapped, native), relayer economics, and cross-chain…
blockchain-testing
Use this skill when asked about testing smart contracts, Foundry tests, Hardhat tests, fuzz testing, invariant testing, property-based testing, formal verification, audit preparation, integration testing for dApps, and blockchain testing patterns. Covers Foundry cheatcodes, Echidna fuzzing, Certora verification…
xpr-network-dev
XPR Network (formerly Proton) blockchain development - proton-tsc smart contracts, @proton CLI and web SDK, RPC and Hyperion queries, DeFi (MetalX, Alcor, LOAN), NFTs, the XPR Agents job board, node and Hyperion operations. Use for anything mentioning XPR, Proton, or @proton packages.
blockchain-management
Use this skill when asked about blockchain project management, DAO governance, multi-sig operations, treasury management, tokenomics design, and web3 project methodology. Languages: Solidity, TypeScript, Python. Covers DAO governance frameworks (Compound Governor, Aave, Snapshot, Tally), multi-sig wallet operations…
modernize-move
Detects and modernizes outdated Move V1 syntax, patterns, and APIs to Move V2+. Use when upgrading legacy contracts, migrating to modern syntax, or converting old patterns to current best practices. NOT for writing new contracts (use write-contracts) or fixing bugs.