{"id":"4426b4f8-d8d6-48ea-93f1-bde8d40237fd","shortId":"AuGnJt","kind":"skill","title":"cli-cast","tagline":"This skill should be used when the user asks to \"send a transaction\", \"call a contract\", \"sign a message\", \"use cast\", \"cast send\", \"cast call\", \"cast wallet\", \"decode calldata\", \"encode ABI\", \"check balance\", or mentions Foundry cast CLI, RPC endpoints, or on-chain interactions.","description":"# Foundry Cast CLI\n\n## Overview\n\nExpert guidance for Foundry's `cast` CLI — the Swiss Army knife for interacting with EVM-compatible blockchains from the command line. Use this skill for signing transactions, sending them to chain RPCs, reading on-chain state, encoding/decoding ABI data, and managing wallets.\n\n**Key capabilities:**\n\n- Send transactions and call contracts via RPC\n- Sign messages and typed data\n- Encode and decode ABI calldata\n- Query balances, transaction receipts, and block data\n- Resolve ENS names and addresses\n- Manage keystores and wallet operations\n\n## RPC Configuration\n\nAll on-chain commands require an RPC endpoint. Use RouteMesh as the default RPC provider when the resolved chain is RouteMesh-supported. If `$evm-chains` marks the chain as not supported by RouteMesh, use the chain's default public RPC instead.\n\n**URL pattern:**\n\n```\nhttps://lb.routeme.sh/rpc/{CHAIN_ID}/{ROUTEMESH_API_KEY}\n```\n\n**Construct the RPC URL** by resolving the chain with `$evm-chains` first, then reading the `ROUTEMESH_API_KEY` environment variable if RouteMesh is supported. If `$evm-chains` is unavailable, tell the user they can install this skill collection with `npx skills add PaulRBerg/agent-skills`; until then, use `references/chains.md` only as a limited fallback for common networks.\n\n**Before running any on-chain command**, verify that `ROUTEMESH_API_KEY` is set:\n\n```bash\nif [[ -z \"$ROUTEMESH_API_KEY\" ]]; then\n  echo \"Error: ROUTEMESH_API_KEY is not set\"\n  exit 1\nfi\n```\n\n**Example usage with a chain ID:**\n\n```bash\n# Ethereum Mainnet (chain ID 1)\ncast call \"$CONTRACT\" \"balanceOf(address)\" \"$ADDR\" \\\n  --rpc-url \"https://lb.routeme.sh/rpc/1/$ROUTEMESH_API_KEY\"\n\n# Arbitrum (chain ID 42161)\ncast send \"$CONTRACT\" \"transfer(address,uint256)\" \"$TO\" \"$AMOUNT\" \\\n  --rpc-url \"https://lb.routeme.sh/rpc/42161/$ROUTEMESH_API_KEY\" \\\n  --private-key \"$ETH_PRIVATE_KEY\"\n```\n\n## Signing & Key Management\n\nCast supports multiple signing methods. Choose based on the security context, preferring methods that keep key material off the CLI.\n\n**Signing hierarchy:**\n\n1. **`--browser` (preferred)** — delegates signing to the user's browser wallet extension (MetaMask, Rabby, etc.). Private keys never touch the terminal or chat. See [Browser Wallet Signing](references/browser-signing.md) for the full flow, availability check, and fallback rules.\n2. **`--account` (keystore)** — for persistent encrypted keys on disk.\n3. **`--ledger` / `--trezor`** — for hardware wallets.\n4. **`--private-key` (fallback)** — read `ETH_PRIVATE_KEY` from the environment. Only use when `--browser` is unavailable (headless environments, extension error) or the user explicitly opts in. Never proactively ask the user to paste a private key into the chat.\n\nIf the task requires signing (e.g. `cast send`, `cast mktx`, `cast wallet sign`) and no signing method can be resolved, **stop and inform the user** before running anything.\n\n### Browser Wallet (preferred)\n\n```bash\n# Resolve the sender address from the connected browser wallet\nOWNER=$(cast wallet address --browser)\n\n# Sign and broadcast via the browser extension\ncast send \"$CONTRACT\" \"transfer(address,uint256)\" \"$TO\" \"$AMOUNT\" \\\n  --rpc-url \"$RPC_URL\" \\\n  --from \"$OWNER\" \\\n  --browser\n```\n\nA browser tab opens on port `9545` for the user to approve the transaction. See [Browser Wallet Signing](references/browser-signing.md) for the availability check, failure modes, and EIP-712 message signing.\n\n### Private Key (dev/testing only)\n\n```bash\ncast send \"$CONTRACT\" \"approve(address,uint256)\" \"$SPENDER\" \"$AMOUNT\" \\\n  --rpc-url \"$RPC_URL\" \\\n  --private-key \"$ETH_PRIVATE_KEY\"\n```\n\n### Keystore Account (recommended for persistent keys)\n\n```bash\n# Import a private key into a keystore\ncast wallet import my-account --interactive\n\n# Use the keystore account\ncast send \"$CONTRACT\" \"transfer(address,uint256)\" \"$TO\" \"$AMOUNT\" \\\n  --rpc-url \"$RPC_URL\" \\\n  --account my-account\n```\n\n### Hardware Wallet\n\n```bash\n# Ledger\ncast send \"$CONTRACT\" \"transfer(address,uint256)\" \"$TO\" \"$AMOUNT\" \\\n  --rpc-url \"$RPC_URL\" \\\n  --ledger\n```\n\n## Core Commands\n\n### Send Transactions\n\nUse `cast send` to submit state-changing transactions on-chain.\n\n```bash\n# Send ETH\ncast send \"$TO\" --value 1ether \\\n  --rpc-url \"$RPC_URL\" \\\n  --private-key \"$ETH_PRIVATE_KEY\"\n\n# Call a contract function\ncast send \"$CONTRACT\" \"approve(address,uint256)\" \"$SPENDER\" \"$AMOUNT\" \\\n  --rpc-url \"$RPC_URL\" \\\n  --private-key \"$ETH_PRIVATE_KEY\"\n\n# With gas parameters\ncast send \"$CONTRACT\" \"mint(uint256)\" 100 \\\n  --rpc-url \"$RPC_URL\" \\\n  --private-key \"$ETH_PRIVATE_KEY\" \\\n  --gas-limit 200000 \\\n  --gas-price 20gwei\n```\n\n### Read Contract State\n\nUse `cast call` for read-only calls that do not submit transactions.\n\n```bash\n# Read a single value\ncast call \"$CONTRACT\" \"totalSupply()(uint256)\" --rpc-url \"$RPC_URL\"\n\n# Read with arguments\ncast call \"$CONTRACT\" \"balanceOf(address)(uint256)\" \"$ADDR\" --rpc-url \"$RPC_URL\"\n\n# Read multiple return values\ncast call \"$CONTRACT\" \"getReserves()(uint112,uint112,uint32)\" --rpc-url \"$RPC_URL\"\n```\n\n### Batch Reads with Multicall3\n\nWhen reading multiple values across contracts, batch them into a single RPC call using [Multicall3](https://github.com/mds1/multicall3). This is deployed at a deterministic address on 250+ chains.\n\n**Address:** `0xcA11bde05977b3631167028862bE2a173976CA11`\n\nUse `aggregate3` to batch multiple `cast call` reads:\n\n```bash\nMULTICALL3=\"0xcA11bde05977b3631167028862bE2a173976CA11\"\n\n# Encode each sub-call\nCALL1=$(cast calldata \"balanceOf(address)\" \"$ADDR\")\nCALL2=$(cast calldata \"totalSupply()\")\nCALL3=$(cast calldata \"decimals()\")\n\n# Batch into a single RPC call via aggregate3\n# Each tuple is (target, allowFailure, callData)\ncast call \"$MULTICALL3\" \\\n  \"aggregate3((address,bool,bytes)[])(((bool,bytes)[]))\" \\\n  \"[($TOKEN1,false,$CALL1),($TOKEN2,false,$CALL2),($TOKEN2,false,$CALL3)]\" \\\n  --rpc-url \"$RPC_URL\"\n```\n\n**When to use:** Prefer Multicall3 whenever you need 2+ read calls on the same chain. It reduces RPC round-trips and guarantees all results come from the same block.\n\n**Caveat:** `msg.sender` in downstream calls becomes the Multicall3 contract address, not the caller. Only use for reads or calls where `msg.sender` doesn't matter.\n\n### Build Raw Transactions\n\nUse `cast mktx` to create a signed raw transaction without broadcasting it.\n\n```bash\ncast mktx \"$CONTRACT\" \"transfer(address,uint256)\" \"$TO\" \"$AMOUNT\" \\\n  --rpc-url \"$RPC_URL\" \\\n  --private-key \"$ETH_PRIVATE_KEY\"\n```\n\n### Inspect Transactions\n\n```bash\n# View transaction details\ncast tx \"$TX_HASH\" --rpc-url \"$RPC_URL\"\n\n# View transaction receipt\ncast receipt \"$TX_HASH\" --rpc-url \"$RPC_URL\"\n\n# Get specific receipt fields\ncast receipt \"$TX_HASH\" status --rpc-url \"$RPC_URL\"\ncast receipt \"$TX_HASH\" gasUsed --rpc-url \"$RPC_URL\"\n```\n\n## ABI Utilities\n\n### Encode Calldata\n\n```bash\n# Encode a function call\ncast calldata \"transfer(address,uint256)\" \"$TO\" \"$AMOUNT\"\n\n# ABI-encode arguments (without function selector)\ncast abi-encode \"transfer(address,uint256)\" \"$TO\" \"$AMOUNT\"\n```\n\n### Decode Calldata\n\n```bash\n# Decode calldata with a known signature\ncast decode-calldata \"transfer(address,uint256)\" \"$CALLDATA\"\n\n# Decode ABI-encoded data (without selector)\ncast abi-decode \"balanceOf(address)(uint256)\" \"$DATA\"\n```\n\n### Function Signatures\n\n```bash\n# Get the 4-byte selector for a function\ncast sig \"transfer(address,uint256)\"\n\n# Get the event topic hash\ncast sig-event \"Transfer(address,address,uint256)\"\n```\n\n## Wallet & ENS\n\n### Wallet Operations\n\n```bash\n# Generate a new wallet\ncast wallet new\n\n# Get address from private key\ncast wallet address --private-key \"$ETH_PRIVATE_KEY\"\n\n# List keystore accounts\ncast wallet list\n\n# Sign a message\ncast wallet sign \"Hello, world!\" --private-key \"$ETH_PRIVATE_KEY\"\n```\n\n### ENS Resolution\n\n```bash\n# Resolve ENS name to address\ncast resolve-name \"vitalik.eth\" --rpc-url \"$RPC_URL\"\n\n# Reverse lookup: address to ENS name\ncast lookup-address \"$ADDR\" --rpc-url \"$RPC_URL\"\n```\n\n### Balance Queries\n\n```bash\n# Get ETH balance\ncast balance \"$ADDR\" --rpc-url \"$RPC_URL\"\n\n# Get balance in ether (human-readable)\ncast balance \"$ADDR\" --ether --rpc-url \"$RPC_URL\"\n```\n\n## Chain Resolution\n\nWhen the user specifies a chain by name, resolve the chain ID using these steps:\n\n1. **Check `$evm-chains` first** — it is the authoritative Sablier-SDK-backed dataset for chain names, IDs, default public RPCs, native currency symbols, and RouteMesh support\n2. **If `$evm-chains` is unavailable**, tell the user to install this collection with `npx skills add PaulRBerg/agent-skills`, then use `references/chains.md` as a limited fallback for common networks\n3. **If the chain is still not listed**, web search for the correct chain ID on chainlist.org\n4. **Construct the RPC URL** using the resolved chain ID and RouteMesh pattern when supported; otherwise use the chain's default public RPC\n\n## Quick Reference\n\n| Operation    | Command                | Key Flags                               |\n| ------------ | ---------------------- | --------------------------------------- |\n| Send tx      | `cast send`            | `--rpc-url`, `--private-key`, `--value` |\n| Read state   | `cast call`            | `--rpc-url`, `--block`                  |\n| View tx      | `cast tx`              | `--rpc-url`, `--json`                   |\n| View receipt | `cast receipt`         | `--rpc-url`, `--json`                   |\n| Build tx     | `cast mktx`            | `--rpc-url`, `--private-key`            |\n| Encode call  | `cast calldata`        | (function sig + args)                   |\n| Decode call  | `cast decode-calldata` | (function sig + data)                   |\n| ABI encode   | `cast abi-encode`      | (function sig + args)                   |\n| ABI decode   | `cast abi-decode`      | (function sig + data)                   |\n| Function sig | `cast sig`             | (function signature string)             |\n| Batch reads  | `cast call` Multicall3 | `aggregate3`, `--rpc-url`               |\n| Balance      | `cast balance`         | `--rpc-url`, `--ether`                  |\n| ENS resolve  | `cast resolve-name`    | `--rpc-url`                             |\n| New wallet   | `cast wallet new`      | —                                       |\n| Sign message | `cast wallet sign`     | `--private-key`, `--account`, `--browser` |\n| Browser sign | `cast send --browser`  | `--rpc-url`, `--from`                   |\n\n## Additional Resources\n\n- **`$evm-chains`** — Preferred source for Sablier SDK EVM chain data and RouteMesh support\n- **[Browser Wallet Signing](references/browser-signing.md)** — Full guide for signing via `--browser` with MetaMask/Rabby/etc.\n- **[Chain Reference](references/chains.md)** — Limited fallback list of common chains for RouteMesh RPC URL construction\n- **Foundry Book**: https://book.getfoundry.sh/reference/cast/","tags":["cli","cast","agent","skills","paulrberg","agent-skills","ai-agents"],"capabilities":["skill","source-paulrberg","skill-cli-cast","topic-agent-skills","topic-ai-agents"],"categories":["agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/PaulRBerg/agent-skills/cli-cast","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add PaulRBerg/agent-skills","source_repo":"https://github.com/PaulRBerg/agent-skills","install_from":"skills.sh"}},"qualityScore":"0.475","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 50 github stars · SKILL.md body (10,844 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:56:17.306Z","embedding":null,"createdAt":"2026-04-18T22:17:35.210Z","updatedAt":"2026-04-22T00:56:17.306Z","lastSeenAt":"2026-04-22T00:56:17.306Z","tsv":"'-712':540 '/mds1/multicall3).':796 '/reference/cast/':1520 '/rpc/':183 '/rpc/1/$routemesh_api_key':301 '/rpc/42161/$routemesh_api_key':319 '0xca11bde05977b3631167028862be2a173976ca11':808,819 '1':276,289,351,1236 '100':693 '1ether':650 '2':388,884,1264 '200000':708 '20gwei':712 '250':805 '3':397,1293 '4':403,1085,1310 '42161':305 '9545':519 'abi':34,92,114,1016,1033,1041,1067,1074,1400,1404,1409,1413 'abi-decod':1073,1412 'abi-encod':1032,1040,1066,1403 'account':389,568,586,591,605,608,1137,1463 'across':783 'add':232,1281 'addit':1474 'addr':295,753,830,1183,1197,1212 'address':127,294,310,479,488,501,552,596,617,670,751,803,807,829,857,915,950,1028,1044,1062,1077,1094,1106,1107,1122,1128,1162,1175,1182 'aggregate3':810,846,856,1430 'allowfailur':851 'amount':313,504,555,599,620,673,953,1031,1047 'anyth':471 'api':187,206,256,264,270 'approv':524,551,669 'arbitrum':302 'arg':1390,1408 'argument':746,1035 'armi':62 'ask':12,433 'authorit':1245 'avail':383,534 'back':1249 'balanc':36,117,1189,1194,1196,1204,1211,1434,1436 'balanceof':293,750,828,1076 'base':335 'bash':260,284,475,547,573,611,643,729,817,945,967,1020,1050,1082,1113,1157,1191 'batch':775,785,812,839,1425 'becom':911 'block':121,905,1357 'blockchain':70 'book':1517 'book.getfoundry.sh':1519 'book.getfoundry.sh/reference/cast/':1518 'bool':858,860 'broadcast':492,943 'browser':352,360,375,418,472,483,489,495,512,514,528,1464,1465,1469,1490,1499 'build':930,1374 'byte':859,861,1086 'call':17,28,102,291,662,718,723,735,748,764,791,815,824,844,854,886,910,924,1024,1353,1385,1392,1428 'call1':825,864 'call2':831,867 'call3':835,870 'calldata':32,115,827,833,837,852,1019,1026,1049,1052,1060,1064,1387,1396 'caller':918 'capabl':98 'cast':3,24,25,27,29,40,50,58,290,306,329,450,452,454,486,497,548,581,592,613,632,646,666,688,717,734,747,763,814,826,832,836,853,934,946,971,983,996,1006,1025,1039,1057,1072,1091,1101,1118,1126,1138,1144,1163,1179,1195,1210,1341,1352,1360,1368,1376,1386,1393,1402,1411,1420,1427,1435,1443,1452,1457,1467 'caveat':906 'chain':47,84,89,138,154,162,165,173,184,196,200,217,251,282,287,303,642,806,890,1219,1226,1231,1240,1252,1268,1296,1306,1318,1328,1478,1485,1502,1510 'chainlist.org':1309 'chang':638 'chat':373,443 'check':35,384,535,1237 'choos':334 'cli':2,41,51,59,348 'cli-cast':1 'collect':228,1277 'come':901 'command':73,139,252,628,1336 'common':244,1291,1509 'compat':69 'configur':134 'connect':482 'construct':189,1311,1515 'context':339 'contract':19,103,292,308,499,550,594,615,664,668,690,714,736,749,765,784,914,948 'core':627 'correct':1305 'creat':937 'currenc':1259 'data':93,110,122,1069,1079,1399,1417,1486 'dataset':1250 'decim':838 'decod':31,113,1048,1051,1059,1065,1075,1391,1395,1410,1414 'decode-calldata':1058,1394 'default':148,175,1255,1330 'deleg':354 'deploy':799 'detail':970 'determinist':802 'dev/testing':545 'disk':396 'doesn':927 'downstream':909 'e.g':449 'echo':267 'eip':539 'en':124,1110,1155,1159,1177,1441 'encod':33,111,820,1018,1021,1034,1042,1068,1384,1401,1405 'encoding/decoding':91 'encrypt':393 'endpoint':43,143 'environ':208,414,422 'error':268,424 'etc':365 'eth':323,409,564,645,659,682,702,962,1132,1152,1193 'ether':1206,1213,1440 'ethereum':285 'event':1098,1104 'evm':68,161,199,216,1239,1267,1477,1484 'evm-chain':160,198,215,1238,1266,1476 'evm-compat':67 'exampl':278 'exit':275 'expert':53 'explicit':428 'extens':362,423,496 'failur':536 'fallback':242,386,407,1289,1506 'fals':863,866,869 'fi':277 'field':995 'first':201,1241 'flag':1338 'flow':382 'foundri':39,49,56,1516 'full':381,1494 'function':665,1023,1037,1080,1090,1388,1397,1406,1415,1418,1422 'gas':686,706,710 'gas-limit':705 'gas-pric':709 'gasus':1010 'generat':1114 'get':992,1083,1096,1121,1192,1203 'getreserv':766 'github.com':795 'github.com/mds1/multicall3).':794 'guarante':898 'guid':1495 'guidanc':54 'hardwar':401,609 'hash':974,986,999,1009,1100 'headless':421 'hello':1147 'hierarchi':350 'human':1208 'human-read':1207 'id':185,283,288,304,1232,1254,1307,1319 'import':574,583 'inform':466 'inspect':965 'instal':225,1275 'instead':178 'interact':48,65,587 'json':1365,1373 'keep':343 'key':97,188,207,257,265,271,322,325,327,344,367,394,406,411,440,544,563,566,572,577,658,661,681,684,701,704,961,964,1125,1131,1134,1151,1154,1337,1348,1383,1462 'keystor':129,390,567,580,590,1136 'knife':63 'known':1055 'lb.routeme.sh':182,300,318 'lb.routeme.sh/rpc/':181 'lb.routeme.sh/rpc/1/$routemesh_api_key':299 'lb.routeme.sh/rpc/42161/$routemesh_api_key':317 'ledger':398,612,626 'limit':241,707,1288,1505 'line':74 'list':1135,1140,1300,1507 'lookup':1174,1181 'lookup-address':1180 'mainnet':286 'manag':95,128,328 'mark':163 'materi':345 'matter':929 'mention':38 'messag':22,107,541,1143,1456 'metamask':363 'metamask/rabby/etc':1501 'method':333,341,460 'mint':691 'mktx':453,935,947,1377 'mode':537 'msg.sender':907,926 'multicall3':778,793,818,855,880,913,1429 'multipl':331,760,781,813 'my-account':584,606 'name':125,1160,1166,1178,1228,1253,1446 'nativ':1258 'need':883 'network':245,1292 'never':368,431 'new':1116,1120,1450,1454 'npx':230,1279 'on-chain':45,87,136,249,640 'open':516 'oper':132,1112,1335 'opt':429 'otherwis':1325 'overview':52 'owner':485,511 'paramet':687 'past':437 'pattern':180,1322 'paulrberg/agent-skills':233,1282 'persist':392,571 'port':518 'prefer':340,353,474,879,1479 'price':711 'privat':321,324,366,405,410,439,543,562,565,576,657,660,680,683,700,703,960,963,1124,1130,1133,1150,1153,1347,1382,1461 'private-key':320,404,561,656,679,699,959,1129,1149,1346,1381,1460 'proactiv':432 'provid':150 'public':176,1256,1331 'queri':116,1190 'quick':1333 'rabbi':364 'raw':931,940 'read':86,203,408,713,721,730,744,759,776,780,816,885,922,1350,1426 'read-on':720 'readabl':1209 'receipt':119,982,984,994,997,1007,1367,1369 'recommend':569 'reduc':892 'refer':1334,1503 'references/browser-signing.md':378,531,1493 'references/chains.md':237,1285,1504 'requir':140,447 'resolut':1156,1220 'resolv':123,153,194,463,476,1158,1165,1229,1317,1442,1445 'resolve-nam':1164,1444 'resourc':1475 'result':900 'return':761 'revers':1173 'round':895 'round-trip':894 'routemesh':145,157,170,186,205,211,255,263,269,1262,1321,1488,1512 'routemesh-support':156 'rpc':42,105,133,142,149,177,191,297,315,506,508,557,559,601,603,622,624,652,654,675,677,695,697,740,742,755,757,771,773,790,843,872,874,893,955,957,976,978,988,990,1002,1004,1012,1014,1169,1171,1185,1187,1199,1201,1215,1217,1313,1332,1344,1355,1363,1371,1379,1432,1438,1448,1471,1513 'rpc-url':296,314,505,556,600,621,651,674,694,739,754,770,871,954,975,987,1001,1011,1168,1184,1198,1214,1343,1354,1362,1370,1378,1431,1437,1447,1470 'rpcs':85,1257 'rule':387 'run':247,470 'sablier':1247,1482 'sablier-sdk-back':1246 'sdk':1248,1483 'search':1302 'secur':338 'see':374,527 'selector':1038,1071,1087 'send':14,26,81,99,307,451,498,549,593,614,629,633,644,647,667,689,1339,1342,1468 'sender':478 'set':259,274 'sig':1092,1103,1389,1398,1407,1416,1419,1421 'sig-ev':1102 'sign':20,79,106,326,332,349,355,377,448,456,459,490,530,542,939,1141,1146,1455,1459,1466,1492,1497 'signatur':1056,1081,1423 'singl':732,789,842 'skill':5,77,227,231,1280 'skill-cli-cast' 'sourc':1480 'source-paulrberg' 'specif':993 'specifi':1224 'spender':554,672 'state':90,637,715,1351 'state-chang':636 'status':1000 'step':1235 'still':1298 'stop':464 'string':1424 'sub':823 'sub-cal':822 'submit':635,727 'support':158,168,213,330,1263,1324,1489 'swiss':61 'symbol':1260 'tab':515 'target':850 'task':446 'tell':220,1271 'termin':371 'token1':862 'token2':865,868 'topic':1099 'topic-agent-skills' 'topic-ai-agents' 'totalsuppli':737,834 'touch':369 'transact':16,80,100,118,526,630,639,728,932,941,966,969,981 'transfer':309,500,595,616,949,1027,1043,1061,1093,1105 'trezor':399 'trip':896 'tupl':848 'tx':972,973,985,998,1008,1340,1359,1361,1375 'type':109 'uint112':767,768 'uint256':311,502,553,597,618,671,692,738,752,951,1029,1045,1063,1078,1095,1108 'uint32':769 'unavail':219,420,1270 'url':179,192,298,316,507,509,558,560,602,604,623,625,653,655,676,678,696,698,741,743,756,758,772,774,873,875,956,958,977,979,989,991,1003,1005,1013,1015,1170,1172,1186,1188,1200,1202,1216,1218,1314,1345,1356,1364,1372,1380,1433,1439,1449,1472,1514 'usag':279 'use':8,23,75,144,171,236,416,588,631,716,792,809,878,920,933,1233,1284,1315,1326 'user':11,222,358,427,435,468,522,1223,1273 'util':1017 'valu':649,733,762,782,1349 'variabl':209 'verifi':253 'via':104,493,845,1498 'view':968,980,1358,1366 'vitalik.eth':1167 'wallet':30,96,131,361,376,402,455,473,484,487,529,582,610,1109,1111,1117,1119,1127,1139,1145,1451,1453,1458,1491 'web':1301 'whenev':881 'without':942,1036,1070 'world':1148 'z':262","prices":[{"id":"726f3b6d-05af-4abe-a67e-75861e9064d7","listingId":"4426b4f8-d8d6-48ea-93f1-bde8d40237fd","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"PaulRBerg","category":"agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:17:35.210Z"}],"sources":[{"listingId":"4426b4f8-d8d6-48ea-93f1-bde8d40237fd","source":"github","sourceId":"PaulRBerg/agent-skills/cli-cast","sourceUrl":"https://github.com/PaulRBerg/agent-skills/tree/main/skills/cli-cast","isPrimary":false,"firstSeenAt":"2026-04-18T22:17:35.210Z","lastSeenAt":"2026-04-22T00:56:17.306Z"}],"details":{"listingId":"4426b4f8-d8d6-48ea-93f1-bde8d40237fd","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"PaulRBerg","slug":"cli-cast","github":{"repo":"PaulRBerg/agent-skills","stars":50,"topics":["agent-skills","ai-agents"],"license":"mit","html_url":"https://github.com/PaulRBerg/agent-skills","pushed_at":"2026-04-20T16:22:56Z","description":"PRB's collection of agent skills","skill_md_sha":"a1c50cd131dc8bbd9937a3360616bd0e33fb2f1c","skill_md_path":"skills/cli-cast/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/PaulRBerg/agent-skills/tree/main/skills/cli-cast"},"layout":"multi","source":"github","category":"agent-skills","frontmatter":{"name":"cli-cast","description":"This skill should be used when the user asks to \"send a transaction\", \"call a contract\", \"sign a message\", \"use cast\", \"cast send\", \"cast call\", \"cast wallet\", \"decode calldata\", \"encode ABI\", \"check balance\", or mentions Foundry cast CLI, RPC endpoints, or on-chain interactions."},"skills_sh_url":"https://skills.sh/PaulRBerg/agent-skills/cli-cast"},"updatedAt":"2026-04-22T00:56:17.306Z"}}