Surf
BlockRunAI/ClawRouter
Use this skill — NOT browser or webfetch — for ALL Surf crypto-data calls.
Use Nethereum's built-in typed services for ERC-20, ERC-721, ERC-1155, ENS, ERC-165, ERC-1271, ERC-6492, EIP-3009, and ERC-2535 Diamond.
$ npx skills add Nethereum/Nethereum --skill built-in-standards -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Nethereum/Nethereum built-in-standards --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/nethereum-skills/skills/built-in-standards .claude/skills/built-in-standards && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "built-in-standards" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/built-in-standards into .claude/skills/built-in-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "built-in-standards", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/built-in-standardsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Nethereum/Nethereum --skill built-in-standards -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Nethereum/Nethereum built-in-standards --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/nethereum-skills/skills/built-in-standards .agents/skills/built-in-standards && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "built-in-standards" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/built-in-standards into .agents/skills/built-in-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "built-in-standards", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Nethereum/Nethereum --skill built-in-standards -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Nethereum/Nethereum built-in-standards --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/nethereum-skills/skills/built-in-standards .cursor/skills/built-in-standards && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "built-in-standards" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/built-in-standards into .cursor/skills/built-in-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "built-in-standards", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Nethereum/Nethereum.git --path plugins/nethereum-skills/skills/built-in-standards--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Nethereum/Nethereum --skill built-in-standards -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Nethereum/Nethereum built-in-standards --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/nethereum-skills/skills/built-in-standards .gemini/skills/built-in-standards && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "built-in-standards" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/built-in-standards into .gemini/skills/built-in-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "built-in-standards", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Nethereum/Nethereum built-in-standardsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Nethereum/Nethereum --skill built-in-standards -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/nethereum-skills/skills/built-in-standards .github/skills/built-in-standards && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "built-in-standards" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/built-in-standards into .github/skills/built-in-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "built-in-standards", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Nethereum/Nethereum --skill built-in-standards -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Nethereum/Nethereum built-in-standards --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/nethereum-skills/skills/built-in-standards .opencode/skills/built-in-standards && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "built-in-standards" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/built-in-standards into .opencode/skills/built-in-standards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "built-in-standards", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
built-in-standardsUse Nethereum's built-in typed services for ERC-20, ERC-721, ERC-1155, ENS, ERC-165, ERC-1271, ERC-6492, EIP-3009, and ERC-2535 Diamond.
Built In Standards is an agent skill from Nethereum/Nethereum. Use Nethereum's built-in typed services for ERC-20, ERC-721, ERC-1155, ENS, ERC-165, ERC-1271, ERC-6492, EIP-3009, and ERC-2535 Diamond. Use this skill whenever the user asks about token standards, NFTs, multi-tokens, interface detection, signature validation, gasless transfers, diamond proxy, ENS resolution, or any standard contract interaction in C/.NET.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Business, Finance & HR, covering Crypto and DeFi analysis. It works with Ethereum, C#, .NET and x402. The repository describes itself as: Ethereum .Net cross platform integration library. The licence is MIT.
Read from SKILL.md and the folder at commit 229f278. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dotnetFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Built In Standards loads about 2.3k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 259 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Nethereum/Nethereum at commit 229f278, republished under its MIT licence (© Nethereum). 259 words, ~2,343 tokens.
.claude/skills/built-in-standards/SKILL.md (or your agent's skills folder).NuGet: Nethereum.Web3
dotnet add package Nethereum.Web3All standard services are accessible via web3.Eth:
| Service | Access | Standard |
|---|---|---|
ERC20Service | web3.Eth.ERC20 | Fungible tokens |
ERC721Service | web3.Eth.ERC721 | NFTs |
ERC1155Service | web3.Eth.ERC1155 | Multi-tokens |
ERC165SupportsInterfaceService | web3.Eth.ERC165 | Interface detection |
ERC1271Service | web3.Eth.ERC1271 | Contract signature validation |
ERC6492Service | web3.Eth.ERC6492 | Pre-deploy signature validation |
EIP3009Service | web3.Eth.EIP3009 | Gasless transfers (USDC) |
Permit2Service | web3.Eth.GetPermit2Service() | Uniswap Permit2 (canonical) |
ERC2535DiamondService | web3.Eth.ERC2535Diamond | Diamond proxy |
ENSService | web3.Eth.GetEnsService() | Name resolution (ENSIP-23 Universal Resolver by default) |
ENSUniversalResolverService | web3.Eth.GetEnsUniversalResolverService() | Batched records + CCIP-Read |
var erc20 = web3.Eth.ERC20.GetContractService(tokenAddress);
var name = await erc20.NameQueryAsync();
var symbol = await erc20.SymbolQueryAsync();
var decimals = await erc20.DecimalsQueryAsync();
var totalSupply = await erc20.TotalSupplyQueryAsync();
var balance = await erc20.BalanceOfQueryAsync(ownerAddress);
var allowance = await erc20.AllowanceQueryAsync(owner, spender);
// Transfer
var receipt = await erc20.TransferRequestAndWaitForReceiptAsync(to, amount);var erc721 = web3.Eth.ERC721.GetContractService(nftAddress);
var name = await erc721.NameQueryAsync();
var symbol = await erc721.SymbolQueryAsync();
var balance = await erc721.BalanceOfQueryAsync(ownerAddress);
var owner = await erc721.OwnerOfQueryAsync(tokenId);
var tokenUri = await erc721.TokenURIQueryAsync(tokenId);var erc1155 = web3.Eth.ERC1155.GetContractService(contractAddress);
var balance = await erc1155.BalanceOfQueryAsync(owner, tokenId);
var balances = await erc1155.BalanceOfBatchQueryAsync(owners, tokenIds);
var uri = await erc1155.UriQueryAsync(tokenId);var erc165 = web3.Eth.ERC165.GetContractService(contractAddress);
var supportsErc721 = await erc165
.SupportsInterfaceQueryAsync("0x80ac58cd"); // ERC-721 interface ID
var supportsErc1155 = await erc165
.SupportsInterfaceQueryAsync("0xd9b67a26"); // ERC-1155 interface ID
// Common interface IDs: ERC-165=0x01ffc9a7, ERC-721=0x80ac58cd, ERC-1155=0xd9b67a26var erc1271 = web3.Eth.ERC1271.GetContractService(contractAddress);
var isValid = await erc1271
.IsValidSignatureAndValidateReturnQueryAsync(messageHash, signature);var isValid = await web3.Eth.ERC6492
.IsValidSignatureQueryAsync(contractAddress, messageHash, signature);Low-level:
var eip3009 = web3.Eth.EIP3009.GetContractService(usdcAddress);
var receipt = await eip3009.TransferWithAuthorizationRequestAndWaitForReceiptAsync(
from, to, value, validAfter, validBefore, nonce, v, r, s);X402 higher-level (Nethereum.X402):
using Nethereum.X402.Blockchain;
using Nethereum.X402.Models;
using Nethereum.X402.Signers;
// Build authorization + sign with EIP-712
var builder = new TransferWithAuthorisationBuilder();
var authorization = builder.BuildFromPaymentRequirements(requirements, payerAddress);
var signer = new TransferWithAuthorisationSigner();
var signature = await signer.SignWithPrivateKeyAsync(
authorization, "USDC", "2", chainId, usdcAddress, privateKey);
// Verify + settle (x402 v2: only an RPC endpoint per chain id is configured)
var clients = new Dictionary<int, IClient> { [84532] = new RpcClient(new Uri(rpcUrl)) };
var service = new X402TransferWithAuthorisation3009Service(facilitatorKey, clients);
var result = await service.VerifyPaymentAsync(paymentPayload, requirements);
var settlement = await service.SettlePaymentAsync(paymentPayload, requirements);
// ReceiveWithAuthorization (receiver pays gas)
var receiveService = new X402ReceiveWithAuthorisation3009Service(receiverKey, clients);The canonical Permit2 contract (same address on every EVM chain) is a first-class service via web3.Eth.GetPermit2Service() (defaults to CommonAddresses.PERMIT2_ADDRESS). It covers AllowanceTransfer (approve/permit/transferFrom) and SignatureTransfer (permitTransferFrom/permitWitnessTransferFrom) plus nonce management.
using Nethereum.Contracts.Standards.Permit2;
var permit2 = web3.Eth.GetPermit2Service();
// Reads
var domainSeparator = await permit2.DomainSeparatorQueryAsync();
var allowance = await permit2.AllowanceQueryAsync(owner, token, spender); // (amount, expiration, nonce)
// SignatureTransfer: the owner's signature is produced with Nethereum.Signer.EIP712's PermitSigner.
// The on-chain `permit` tuple omits spender (Permit2 uses msg.sender); the signed message includes it.
var receipt = await permit2.PermitTransferFromRequestAndWaitForReceiptAsync(
permit, // PermitTransferFrom { permitted, nonce, deadline }
new SignatureTransferDetails { To = recipient, RequestedAmount = amount },
owner,
signature);Sign SignatureTransfer messages with PermitSigner (from Nethereum.Signer.EIP712), which includes the spender the on-chain tuple omits:
using Nethereum.ABI.EIP712.Permit2;
using Nethereum.Signer.EIP712.Permit2;
var signature = PermitSigner.SignPermitTransferFrom(
chainId, CommonAddresses.PERMIT2_ADDRESS,
new PermitTransferFromWithSpender
{
Permitted = new TokenPermissions { Token = token, Amount = amount },
Spender = spender, // the caller; hashed as msg.sender on-chain
Nonce = nonce,
Deadline = deadline
},
key);Layering: signing types in Nethereum.ABI.EIP712.Permit2, contract tuples in Nethereum.Contracts.Standards.Permit2, signer in Nethereum.Signer.EIP712. For x402 payments over Permit2 (witness variant), see the x402-payments skill.
Resolution defaults to the ENSIP-23 Universal Resolver, with automatic EIP-3668 CCIP-Read for offchain and wildcard (ENSIP-10) names.
var ensService = web3.Eth.GetEnsService();
var address = await ensService.ResolveAddressAsync("vitalik.eth");
var name = await ensService.ReverseResolveAsync(address);
var url = await ensService.ResolveTextAsync("vitalik.eth", TextDataKey.url);Batch a name's records (address + content hash + text records) in one round-trip, or resolve many names at once, via the Universal Resolver directly:
var universalResolver = web3.Eth.GetEnsUniversalResolverService();
var record = await universalResolver.ResolveRecordAsync("nick.eth", TextDataKey.url, TextDataKey.avatar);
var records = await universalResolver.ResolveRecordsAsync(new[] { "nick.eth", "nethereum.eth" }, TextDataKey.url);All query methods accept BlockParameter:
var blockParam = new Nethereum.RPC.Eth.DTOs.BlockParameter(15000000);
var historicalBalance = await erc20.BalanceOfQueryAsync(address, blockParam);// Introspect all registered types in a code-generated service
var functionTypes = myContractService.GetAllFunctionTypes();
var eventTypes = myContractService.GetAllEventTypes();
var errorTypes = myContractService.GetAllErrorTypes();
// Get ABI metadata and Keccak signatures
var functionABIs = myContractService.GetAllFunctionABIs();
var eventABIs = myContractService.GetAllEventABIs();
var errorABIs = myContractService.GetAllErrorABIs();
var functionSigs = myContractService.GetAllFunctionSignatures();
var eventSigs = myContractService.GetAllEventsSignatures();
var errorSigs = myContractService.GetAllErrorsSignatures();using Nethereum.Contracts.ContractStorage;
// Calculate the storage key for mapping(address => ...) at slot 0
var storageKey = StorageUtil.CalculateMappingAddressStorageKey(ownerAddress, 0);
// Read the raw storage value
var storageValue = await web3.Eth.GetStorageAt
.SendRequestAsync(contractAddress, storageKey);Nethereum.Contracts.Standards/ before any contract interactionBlockParameter for historical queriesMultiQueryBatchRpcHandler with CreateMulticallInputOutputRpcBatchItems© Nethereum, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/nethereum-skills/skills/built-in-standards of Nethereum/Nethereum.
Open the folder on GitHubat commit 229f278
Built In Standards next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Built In Standards this skillNethereum/Nethereum | 2.3k | — | ~2.3k | Automated safety check: Pass | MIT | |
| SurfBlockRunAI/ClawRouter | 6.6k | — | ~4k | Automated safety check: Pass | MIT | |
| Standardsaustintgriffith/ethskills | 295 | — | ~3.8k | Automated safety check: Pass | None | |
| Opensea Tool SDKBankrBot/skills | 1.2k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Minara Crypto Trading and WalletMinara-AI/minara-skills | 362 | — | ~5.7k | Automated safety check: Pass | None | |
| Surf Crypto Data APIBlockRunAI/blockrun-mcp | 391 | — | ~1.7k | Automated safety check: Pass | MIT |
BlockRunAI/ClawRouter
Use this skill — NOT browser or webfetch — for ALL Surf crypto-data calls.
austintgriffith/ethskills
Ethereum token and protocol standards — ERC-20, ERC-721, ERC-1155, ERC-4337, ERC-8004, and newer standards.
BankrBot/skills
Build, register, and gate AI-callable tool endpoints using the OpenSea Tool Registry (ERC-8257) on Base.
Minara-AI/minara-skills
Drives the Minara CLI for crypto swaps, perps, limit orders, wallet transfers, deposits and withdrawals, plus AI market analysis.
BlockRunAI/blockrun-mcp
Routes crypto market, on-chain, wallet and prediction-market lookups to the Surf data API through a local ClawRouter, paid per call.
swapperfinance/swapper-toolkit
Deposit and bridge funds into a wallet or protocol using Swapper Finance.
Nethereum/Nethereum
Help users batch multiple calls into a single UserOperation and sponsor gas with paymasters using Nethereum Account Abstraction.
Nethereum/Nethereum
Help users run an ERC-4337 bundler using Nethereum — set up in-process or standalone bundlers with mempool, validation, reputation, and JSON-RPC server.
Nethereum/Nethereum
Encode and decode Ethereum ABI data with Nethereum. An agent skill from Nethereum/Nethereum.
Nethereum/Nethereum
Fetch contract ABIs from Sourcify, Etherscan, and 4Byte Directory using the composite ABIInfoStorage pattern (.NET/C).
Nethereum/Nethereum
Help users implement ERC-4337 Account Abstraction with Nethereum — send UserOperations, use smart accounts, route contract calls through a bundler, enable gasless transactions, or work with AA in…
Nethereum/Nethereum
Validate and format Ethereum addresses with Nethereum. An agent skill from Nethereum/Nethereum.
Categories
Use Nethereum's built-in typed services for ERC-20, ERC-721, ERC-1155, ENS, ERC-165, ERC-1271, ERC-6492, EIP-3009, and ERC-2535 Diamond. Built In Standards is an agent skill from Nethereum/Nethereum. Use Nethereum's built-in typed services for ERC-20, ERC-721, ERC-1155, ENS, ERC-165, ERC-1271, ERC-6492, EIP-3009, and ERC-2535 Diamond.
Built In Standards fits situations like: the user asks about token standards; interface detection; signature validation; gasless transfers.
Run `npx skills add Nethereum/Nethereum --skill built-in-standards -a claude-code`. Or copy the skill folder (plugins/nethereum-skills/skills/built-in-standards in Nethereum/Nethereum) into .claude/skills/built-in-standards in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Nethereum/Nethereum --skill built-in-standards -a codex`. Or copy the skill folder (plugins/nethereum-skills/skills/built-in-standards in Nethereum/Nethereum) into .agents/skills/built-in-standards in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Nethereum/Nethereum --skill built-in-standards -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/built-in-standards, .gemini/skills/built-in-standards, .github/skills/built-in-standards and .opencode/skills/built-in-standards in your project.
Going by SKILL.md and its folder, Built In Standards needs the command-line tools its instructions call (dotnet).
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Built In Standards is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Built In Standards: Surf (BlockRunAI/ClawRouter, 6.6k stars), Standards (austintgriffith/ethskills, 295 stars), Opensea Tool SDK (BankrBot/skills, 1.2k stars) and Minara Crypto Trading and Wallet (Minara-AI/minara-skills, 362 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Nethereum (a GitHub organization) maintains it in Nethereum/Nethereum, which has 2,260 GitHub stars. The repository holds 71 skills in this directory. The repository was last updated on October 5, 2026.
Source: Nethereum/Nethereum on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.