skills/evm-explorers/SKILL.md
This skill should be used when the user asks to "open on explorer", "block explorer URL", "Etherscan link", "Arbiscan link", "view tx on explorer", "explorer for chain X", or needs to construct a link to an address, transaction, or contract on a Sablier-supported EVM chain. Provides the canonical default block explorer (URL and human-readable name) for every chain shipped by the `sablier` npm package.
npx skillsauth add sablier-labs/agent-skills evm-explorersInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Resolve the canonical default block explorer for any chain supported by the sablier npm package.
For every chain in [email protected] the skill records:
sablier.evm.chains)Use this when constructing links to addresses, transactions, blocks, or contracts on chains used by Sablier products.
The canonical data is the resolved blockExplorers.default field on each chain in sablier.evm.chains (a re-export of viem/chains, with Sablier overrides applied).
Reference table: references/explorers.md.
If the user explicitly asks the skill to refresh the data, reproduce it with:
mkdir -p /tmp/sablier-explorers && cd /tmp/sablier-explorers
[ -f package.json ] || npm init -y >/dev/null
npm install sablier@latest >/dev/null
node --input-type=module -e "
import { evm } from 'sablier';
const rows = Object.entries(evm.chains).map(([key, c]) => ({
key, id: c.id, name: c.name,
explorerName: c.blockExplorers?.default?.name,
explorerUrl: c.blockExplorers?.default?.url,
testnet: c.testnet === true,
}));
console.log(JSON.stringify(rows, null, 2));
"
Do not install sablier as part of normal skill execution — the table in references/explorers.md is authoritative. Only refresh when the user requests it.
arbitrum, zksync, optimismSepolia). The keys are the sablier.evm.chains export names.42161 → arbitrum). Always prefer chain ID when the user provides one — it's unambiguous.arbitrum-sepolia is https://sepolia.arbiscan.io, not https://arbiscan.io.sablier and ask them to confirm or fetch upstream viem/chains data instead.The default explorer URL is the base. Append the standard path segments:
| Resource | Path | Example |
| ----------- | ------------------------------- | ------------------------------------------------------------- |
| Address | /address/<addr> | https://arbiscan.io/address/0xabc... |
| Transaction | /tx/<hash> | https://etherscan.io/tx/0x123... |
| Block | /block/<number> | https://basescan.org/block/12345678 |
| Token | /token/<addr> | https://polygonscan.com/token/0xdef... |
Etherscan and explorers operated on the Etherscan stack — Arbiscan, Basescan, BscScan, Polygonscan, Optimism Etherscan, Lineascan, Snowscan, Blastscan, Scrollscan, Berascan, Uniscan, Gnosisscan, abscan.org — all follow this scheme. Most other explorers in the table (Blockscout-based, ZKsync's native explorer, phoenix.lightlink.io, seiscan.io, monadscan.com, sophscan.xyz, chiliscan.com) accept the same /address, /tx, /block segments, but they're operated independently and conventions can drift.
Ronin (app.roninchain.com) does not follow the Etherscan path scheme. Verify against the explorer UI before constructing a Ronin link.
getContractExplorerURL(explorerURL, contractAddress) is also exported by sablier if the caller already has a sablier dependency.
Default to a compact table when listing:
| Chain | Chain ID | Explorer | URL |
| ------------ | -------- | --------- | ---------------------------- |
| Arbitrum | 42161 | Arbiscan | https://arbiscan.io |
For a single chain, return one line: Arbitrum (42161) → Arbiscan: https://arbiscan.io.
Honor any explicit format the user requests (JSON, plain URL, etc.).
references/explorers.md — full mapping of every chain in sablier.evm.chains to its default explorer.development
This skill should be used when the user asks to "create a state machine", "add xState", "use xState with React", "implement actor-based state", "manage complex state with state machines", "use xState with Effect", "integrate Effect-ts with xState", mentions xState hooks (useMachine, useActor, useSelector), or discusses finite state machines in React applications.
tools
This skill should be used when the user asks about "viem", "viem client", "viem actions", "TypeScript Ethereum", "createPublicClient", "createWalletClient", "parseEther", "formatEther", "readContract", "writeContract", or mentions using viem for blockchain interactions.
development
This skill should be used when the user asks about "Tailwind CSS", "tailwind-variants", "tv() function", "CSS-first configuration", "Tailwind breaking changes", mentions styling with Tailwind utilities, gradient syntax, or component variants with TypeScript.
development
This skill should be used when the user asks to "analyze a screenshot", "generate implementation spec", "create SPEC.md from screenshot", "extract design specs", "spec from image", or provides website screenshots and wants detailed implementation guidance.