[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-base-vibenet":3,"mdc--6a4zk-key":31,"related-repo-base-vibenet":1417,"related-org-base-vibenet":1460},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"vibenet","build applications with vibenet","Build on vibenet — Base's devnet for native account abstraction (EIP-8130) and payer gas sponsorship (ERC-8168) using viem's eip8130 module. Use whenever the user mentions vibenet, EIP-8130, ERC-8168, 8130 accounts, native account abstraction, session keys, actors, policies, payers, or gas sponsorship on Base — or is writing code that creates or operates 8130 smart accounts, authorizes session-key actors, sends batched calls, sponsors gas with a payer, or wires a frontend\u002Fscript against the vibenet devnet or Base Sepolia.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"base","Base","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fbase.png",[12,16,19],{"name":13,"slug":14,"type":15},"Web3","web3","tag",{"name":17,"slug":18,"type":15},"Ethereum","ethereum",{"name":9,"slug":8,"type":15},95,"https:\u002F\u002Fgithub.com\u002Fbase\u002Fskills","2026-08-16T04:01:03.794241",null,109,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"npx skills add base\u002Fskills","https:\u002F\u002Fgithub.com\u002Fbase\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fvibenet","---\nname: vibenet\ndescription: >-\n  Build on vibenet — Base's devnet for native account abstraction (EIP-8130)\n  and payer gas sponsorship (ERC-8168) using viem's eip8130 module. Use\n  whenever the user mentions vibenet, EIP-8130, ERC-8168, 8130 accounts, native\n  account abstraction, session keys, actors, policies, payers, or gas\n  sponsorship on Base — or is writing code that creates or operates 8130 smart\n  accounts, authorizes session-key actors, sends batched calls, sponsors gas\n  with a payer, or wires a frontend\u002Fscript against the vibenet devnet or Base\n  Sepolia.\n---\n\n# Vibenet\n\nVibenet is Base's devnet for **EIP-8130 native account abstraction**: account\nabstraction in the protocol itself. Accounts are portable across EVM chains,\nsupport multiple signer types (secp256k1, P-256, WebAuthn), key rotation\nwithout changing address, scoped session-key actors, on-chain policies, and\nnative **ERC-8168** gas sponsorship. The tooling lives in viem's `eip8130`\nmodule (fork branch — not yet in npm `viem`).\n\n## Network\n\n| Endpoint | Value |\n|----------|-------|\n| Chain ID | `84538453` |\n| Public execution RPC | `https:\u002F\u002Frpc.vibes.base.org` — 8130-capable (`AA_TX_TYPE` \u002F `0x79`), serves `access-control-allow-origin: *` |\n| Browser RPC proxy | `https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Faccount\u002Frpc` — passes through all `eth_*`, including `0x79` broadcasts and receipt polling |\n| Hosted payer (ERC-8168) | `https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Faccount\u002Fpayer` |\n| Faucet | `POST https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Ffaucet\u002Fdrip` with `{ \"address\": \"0x…\" }` |\n| Faucet status | `GET https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Ffaucet\u002Fstatus` — drip size, cooldowns, USDV\u002FNFV token addresses |\n| Chain health | `GET https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Fchain-health` — `{ healthy, head, headAgeSecs, … }` |\n| Landing page \u002F explorer | `https:\u002F\u002Fchain.base.org\u002Fvibenet`, `https:\u002F\u002Fchain.base.org\u002Fvibenet\u002Fexplorer` |\n| Base Sepolia (also 8130-enabled) | `https:\u002F\u002Fsepolia.base.org`, chain id `84532` |\n\n**The API host is `api.vibes.base.org`, not `vibes.base.org`.** The bare host\n302-redirects to the `chain.base.org\u002Fvibenet` HTML page; viem's HTTP transport\nthen tries to parse that as JSON and throws `Unrecognized token '\u003C'`, which\nreads like a code bug rather than a wrong URL.\n\nAll `api.vibes.base.org` endpoints (RPC proxy, payer, faucet) send permissive\nCORS headers, and so does `rpc.vibes.base.org` — so browser apps can talk to\neither. Prefer `rpc.vibes.base.org` for execution and reserve the `account\u002Frpc`\nproxy for when you specifically want the hosted path.\n\nThe 8130 modules are additive to viem itself, proposed upstream in\n[wevm\u002Fviem#5004](https:\u002F\u002Fgithub.com\u002Fwevm\u002Fviem\u002Fpull\u002F5004) (still an open draft —\nnot yet released to npm). Until it ships, they have to be built from the fork\nbranch the PR is opened from: `chunter-cb\u002Fviem` `feat\u002Feip-8130-production`.\n\n**Use the bundled installer** — it does the whole clone→build→link dance, which\nis error-prone by hand:\n\n```bash\nscripts\u002Fsetup-viem-8130.sh [APP_DIR]   # defaults to the current directory\n```\n\nWhen PR #5004 merges and a viem release ships the modules, this collapses to\n`npm install viem@latest` — the imports (`viem\u002Feip8130`, `viem\u002Feip8168`) and\nAPIs are unchanged, so no code moves.\n\n\u003Cdetails>\u003Csummary>What the script does, and why each step is needed\u003C\u002Fsummary>\n\nThe tooling is **not installable from git directly**: viem's workspace uses\npnpm's `catalog:` protocol, so `npm install \"viem@github:…\"` fails outright, and\n`bun add \"viem@github:…\"` \"succeeds\" but leaves you an unbuilt monorepo with no\n`exports` field. So you clone, build, then depend on the built package (which\nlives in viem's `src\u002F`):\n\n```bash\ngit clone -b feat\u002Feip-8130-production https:\u002F\u002Fgithub.com\u002Fchunter-cb\u002Fviem viem-fork\ncd viem-fork && npx pnpm install --ignore-scripts && npx pnpm run build\n\n# then in your app — --install-links is required:\nnpm install --install-links \"viem@file:..\u002Fviem-fork\u002Fsrc\"\n```\n\n**`--install-links` is required.** Without it npm symlinks `node_modules\u002Fviem`\nto a path outside the project root, and Turbopack\u002FNext.js then fails with\n`Module not found: Can't resolve 'viem'` for a package that is plainly there\n(`tsc` resolves it fine, which makes it look like a bundler bug).\n\u003C\u002Fdetails>\n\nThen import from `viem\u002Feip8130` (and `viem\u002Feip8168` for payers). Core helpers\nlike `createPublicClient` \u002F `parseEther` come from plain `viem` — the 8130\nmodule does not re-export them.\n\nIf your TypeScript build rejects the module's BigInt literals, set\n`\"target\": \"ES2020\"` or later in `tsconfig.json`. Next.js 16's generated config\nalready works as-is, since its `lib` includes `esnext`.\n\n## Accounts Have No Deploy Step\n\nCreating an account derives a CREATE2 address locally — synchronous, zero RPC,\n`eth_getCode` still `0x`. It becomes real as a **side effect of its first\ntransaction**, which carries `account.createChange` alongside your actual calls.\nThere is nothing else to call. The shortest path from nothing to a deployed\naccount is a *sponsored* first tx (no faucet, no funding); the self-paid route\nneeds the address funded first. Read deployment state from `eth_getCode`, never\nfrom optimistic local state — it decides whether the next tx carries\n`createChange`. Full lifecycle:\n[references\u002Feip8130-accounts.md](references\u002Feip8130-accounts.md).\n\n## Safety Guardrails\n\n- **Never commit private keys** — generate throwaway keys for devnet scripts,\n  read real ones from env vars.\n- **`key.k1(...)` builds an actor identity, not a signer** — passing it (or a\n  raw private-key hex) as `signer` fails with an opaque `pad()` TypeError. Use\n  `privateKeyToAccount(pk)`.\n- **Verify config changes by on-chain read-back** (`isActor` \u002F\n  `getConfigSequence`), never by receipt logs or `status: success` — a\n  skipped authorize is silent.\n- **Read the live config sequence right before signing** — a hardcoded\n  sequence causes silent no-ops.\n\n## Task Routing\n\nRead the reference for your task:\n\n| Task | When to Use | Reference |\n|------|-------------|-----------|\n| **Accounts & transactions** | Create an 8130 smart account, the counterfactual→deployed lifecycle, send batched calls, attribution metadata, gas estimation, reading account state, locking, gotchas | [references\u002Feip8130-accounts.md](references\u002Feip8130-accounts.md) |\n| **Session keys & policies** | Authorize\u002Frevoke actors, scopes, SessionPolicy spend limits, config sequences, verifying \"silent\" changes | [references\u002Fsession-keys-and-policies.md](references\u002Fsession-keys-and-policies.md) |\n| **Gas sponsorship** | Sponsor gas with a payer (ERC-8168), gasless onboarding, `send` vs `sign` modes | [references\u002Fpayer-sponsorship.md](references\u002Fpayer-sponsorship.md) |\n\n## Operating Procedure\n\n1. **Classify the task** using the table above and read the relevant reference\n   before implementing.\n2. **Pick the right RPC**: `rpc.vibes.base.org` works from both Node and the\n   browser; `api.vibes.base.org\u002Fapi\u002Fvibenet\u002Faccount\u002Frpc` is the hosted proxy to\n   the same chain. Never `vibes.base.org` — that host is not an API.\n3. **Implement** with explicit chain id, the `scripts\u002Fsetup-viem-8130.sh`\n   install, and read-back verification for any account-config change.\n4. **Deliver** runnable code, install commands, and any manual steps (env\n   vars, faucet funding).\n\n## For Edge Cases and Latest API Changes\n\n- **EIP-8130 spec**: [eip.tools\u002Feip\u002F8130](https:\u002F\u002Feip.tools\u002Feip\u002F8130)\n  (payer standard: [eip.tools\u002Feip\u002F8168](https:\u002F\u002Feip.tools\u002Feip\u002F8168))\n- **viem fork**: [`chunter-cb\u002Fviem` `feat\u002Feip-8130-production`](https:\u002F\u002Fgithub.com\u002Fchunter-cb\u002Fviem\u002Ftree\u002Ffeat\u002Feip-8130-production)\n  (upstream PR: [wevm\u002Fviem#5004](https:\u002F\u002Fgithub.com\u002Fwevm\u002Fviem\u002Fpull\u002F5004); API\n  surface: `src\u002Feip8130\u002Findex.ts`; docs: `site\u002Fpages\u002Feip8130`)\n- **Deep guide (chaptered)**: `github.com\u002Fchunter-cb\u002Feip-8130-web` (`\u002Fguide\u002F*`)\n- **Session-key walkthrough**:\n  [gist.github.com\u002Fchunter-cb\u002Fbf70c53a5ab6d8361ce7f4215b776114](https:\u002F\u002Fgist.github.com\u002Fchunter-cb\u002Fbf70c53a5ab6d8361ce7f4215b776114)\n\n## Installation\n\n```bash\nnpx skills add base\u002Fskills --skill vibenet\n```\n",{"data":32,"body":33},{"name":4,"description":6},{"type":34,"children":35},"root",[36,44,82,89,345,387,422,453,463,498,526,784,825,861,867,932,938,1036,1042,1047,1161,1167,1240,1246,1365,1371,1411],{"type":37,"tag":38,"props":39,"children":40},"element","h1",{"id":4},[41],{"type":42,"value":43},"text","Vibenet",{"type":37,"tag":45,"props":46,"children":47},"p",{},[48,50,56,58,63,65,72,74,80],{"type":42,"value":49},"Vibenet is Base's devnet for ",{"type":37,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":42,"value":55},"EIP-8130 native account abstraction",{"type":42,"value":57},": account\nabstraction in the protocol itself. Accounts are portable across EVM chains,\nsupport multiple signer types (secp256k1, P-256, WebAuthn), key rotation\nwithout changing address, scoped session-key actors, on-chain policies, and\nnative ",{"type":37,"tag":51,"props":59,"children":60},{},[61],{"type":42,"value":62},"ERC-8168",{"type":42,"value":64}," gas sponsorship. The tooling lives in viem's ",{"type":37,"tag":66,"props":67,"children":69},"code",{"className":68},[],[70],{"type":42,"value":71},"eip8130",{"type":42,"value":73},"\nmodule (fork branch — not yet in npm ",{"type":37,"tag":66,"props":75,"children":77},{"className":76},[],[78],{"type":42,"value":79},"viem",{"type":42,"value":81},").",{"type":37,"tag":83,"props":84,"children":86},"h2",{"id":85},"network",[87],{"type":42,"value":88},"Network",{"type":37,"tag":90,"props":91,"children":92},"table",{},[93,112],{"type":37,"tag":94,"props":95,"children":96},"thead",{},[97],{"type":37,"tag":98,"props":99,"children":100},"tr",{},[101,107],{"type":37,"tag":102,"props":103,"children":104},"th",{},[105],{"type":42,"value":106},"Endpoint",{"type":37,"tag":102,"props":108,"children":109},{},[110],{"type":42,"value":111},"Value",{"type":37,"tag":113,"props":114,"children":115},"tbody",{},[116,134,175,209,226,251,270,295,320],{"type":37,"tag":98,"props":117,"children":118},{},[119,125],{"type":37,"tag":120,"props":121,"children":122},"td",{},[123],{"type":42,"value":124},"Chain ID",{"type":37,"tag":120,"props":126,"children":127},{},[128],{"type":37,"tag":66,"props":129,"children":131},{"className":130},[],[132],{"type":42,"value":133},"84538453",{"type":37,"tag":98,"props":135,"children":136},{},[137,142],{"type":37,"tag":120,"props":138,"children":139},{},[140],{"type":42,"value":141},"Public execution RPC",{"type":37,"tag":120,"props":143,"children":144},{},[145,151,153,159,161,167,169],{"type":37,"tag":66,"props":146,"children":148},{"className":147},[],[149],{"type":42,"value":150},"https:\u002F\u002Frpc.vibes.base.org",{"type":42,"value":152}," — 8130-capable (",{"type":37,"tag":66,"props":154,"children":156},{"className":155},[],[157],{"type":42,"value":158},"AA_TX_TYPE",{"type":42,"value":160}," \u002F ",{"type":37,"tag":66,"props":162,"children":164},{"className":163},[],[165],{"type":42,"value":166},"0x79",{"type":42,"value":168},"), serves ",{"type":37,"tag":66,"props":170,"children":172},{"className":171},[],[173],{"type":42,"value":174},"access-control-allow-origin: *",{"type":37,"tag":98,"props":176,"children":177},{},[178,183],{"type":37,"tag":120,"props":179,"children":180},{},[181],{"type":42,"value":182},"Browser RPC proxy",{"type":37,"tag":120,"props":184,"children":185},{},[186,192,194,200,202,207],{"type":37,"tag":66,"props":187,"children":189},{"className":188},[],[190],{"type":42,"value":191},"https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Faccount\u002Frpc",{"type":42,"value":193}," — passes through all ",{"type":37,"tag":66,"props":195,"children":197},{"className":196},[],[198],{"type":42,"value":199},"eth_*",{"type":42,"value":201},", including ",{"type":37,"tag":66,"props":203,"children":205},{"className":204},[],[206],{"type":42,"value":166},{"type":42,"value":208}," broadcasts and receipt polling",{"type":37,"tag":98,"props":210,"children":211},{},[212,217],{"type":37,"tag":120,"props":213,"children":214},{},[215],{"type":42,"value":216},"Hosted payer (ERC-8168)",{"type":37,"tag":120,"props":218,"children":219},{},[220],{"type":37,"tag":66,"props":221,"children":223},{"className":222},[],[224],{"type":42,"value":225},"https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Faccount\u002Fpayer",{"type":37,"tag":98,"props":227,"children":228},{},[229,234],{"type":37,"tag":120,"props":230,"children":231},{},[232],{"type":42,"value":233},"Faucet",{"type":37,"tag":120,"props":235,"children":236},{},[237,243,245],{"type":37,"tag":66,"props":238,"children":240},{"className":239},[],[241],{"type":42,"value":242},"POST https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Ffaucet\u002Fdrip",{"type":42,"value":244}," with ",{"type":37,"tag":66,"props":246,"children":248},{"className":247},[],[249],{"type":42,"value":250},"{ \"address\": \"0x…\" }",{"type":37,"tag":98,"props":252,"children":253},{},[254,259],{"type":37,"tag":120,"props":255,"children":256},{},[257],{"type":42,"value":258},"Faucet status",{"type":37,"tag":120,"props":260,"children":261},{},[262,268],{"type":37,"tag":66,"props":263,"children":265},{"className":264},[],[266],{"type":42,"value":267},"GET https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Ffaucet\u002Fstatus",{"type":42,"value":269}," — drip size, cooldowns, USDV\u002FNFV token addresses",{"type":37,"tag":98,"props":271,"children":272},{},[273,278],{"type":37,"tag":120,"props":274,"children":275},{},[276],{"type":42,"value":277},"Chain health",{"type":37,"tag":120,"props":279,"children":280},{},[281,287,289],{"type":37,"tag":66,"props":282,"children":284},{"className":283},[],[285],{"type":42,"value":286},"GET https:\u002F\u002Fapi.vibes.base.org\u002Fapi\u002Fvibenet\u002Fchain-health",{"type":42,"value":288}," — ",{"type":37,"tag":66,"props":290,"children":292},{"className":291},[],[293],{"type":42,"value":294},"{ healthy, head, headAgeSecs, … }",{"type":37,"tag":98,"props":296,"children":297},{},[298,303],{"type":37,"tag":120,"props":299,"children":300},{},[301],{"type":42,"value":302},"Landing page \u002F explorer",{"type":37,"tag":120,"props":304,"children":305},{},[306,312,314],{"type":37,"tag":66,"props":307,"children":309},{"className":308},[],[310],{"type":42,"value":311},"https:\u002F\u002Fchain.base.org\u002Fvibenet",{"type":42,"value":313},", ",{"type":37,"tag":66,"props":315,"children":317},{"className":316},[],[318],{"type":42,"value":319},"https:\u002F\u002Fchain.base.org\u002Fvibenet\u002Fexplorer",{"type":37,"tag":98,"props":321,"children":322},{},[323,328],{"type":37,"tag":120,"props":324,"children":325},{},[326],{"type":42,"value":327},"Base Sepolia (also 8130-enabled)",{"type":37,"tag":120,"props":329,"children":330},{},[331,337,339],{"type":37,"tag":66,"props":332,"children":334},{"className":333},[],[335],{"type":42,"value":336},"https:\u002F\u002Fsepolia.base.org",{"type":42,"value":338},", chain id ",{"type":37,"tag":66,"props":340,"children":342},{"className":341},[],[343],{"type":42,"value":344},"84532",{"type":37,"tag":45,"props":346,"children":347},{},[348,369,371,377,379,385],{"type":37,"tag":51,"props":349,"children":350},{},[351,353,359,361,367],{"type":42,"value":352},"The API host is ",{"type":37,"tag":66,"props":354,"children":356},{"className":355},[],[357],{"type":42,"value":358},"api.vibes.base.org",{"type":42,"value":360},", not ",{"type":37,"tag":66,"props":362,"children":364},{"className":363},[],[365],{"type":42,"value":366},"vibes.base.org",{"type":42,"value":368},".",{"type":42,"value":370}," The bare host\n302-redirects to the ",{"type":37,"tag":66,"props":372,"children":374},{"className":373},[],[375],{"type":42,"value":376},"chain.base.org\u002Fvibenet",{"type":42,"value":378}," HTML page; viem's HTTP transport\nthen tries to parse that as JSON and throws ",{"type":37,"tag":66,"props":380,"children":382},{"className":381},[],[383],{"type":42,"value":384},"Unrecognized token '\u003C'",{"type":42,"value":386},", which\nreads like a code bug rather than a wrong URL.",{"type":37,"tag":45,"props":388,"children":389},{},[390,392,397,399,405,407,412,414,420],{"type":42,"value":391},"All ",{"type":37,"tag":66,"props":393,"children":395},{"className":394},[],[396],{"type":42,"value":358},{"type":42,"value":398}," endpoints (RPC proxy, payer, faucet) send permissive\nCORS headers, and so does ",{"type":37,"tag":66,"props":400,"children":402},{"className":401},[],[403],{"type":42,"value":404},"rpc.vibes.base.org",{"type":42,"value":406}," — so browser apps can talk to\neither. Prefer ",{"type":37,"tag":66,"props":408,"children":410},{"className":409},[],[411],{"type":42,"value":404},{"type":42,"value":413}," for execution and reserve the ",{"type":37,"tag":66,"props":415,"children":417},{"className":416},[],[418],{"type":42,"value":419},"account\u002Frpc",{"type":42,"value":421},"\nproxy for when you specifically want the hosted path.",{"type":37,"tag":45,"props":423,"children":424},{},[425,427,436,438,444,446,452],{"type":42,"value":426},"The 8130 modules are additive to viem itself, proposed upstream in\n",{"type":37,"tag":428,"props":429,"children":433},"a",{"href":430,"rel":431},"https:\u002F\u002Fgithub.com\u002Fwevm\u002Fviem\u002Fpull\u002F5004",[432],"nofollow",[434],{"type":42,"value":435},"wevm\u002Fviem#5004",{"type":42,"value":437}," (still an open draft —\nnot yet released to npm). Until it ships, they have to be built from the fork\nbranch the PR is opened from: ",{"type":37,"tag":66,"props":439,"children":441},{"className":440},[],[442],{"type":42,"value":443},"chunter-cb\u002Fviem",{"type":42,"value":445}," ",{"type":37,"tag":66,"props":447,"children":449},{"className":448},[],[450],{"type":42,"value":451},"feat\u002Feip-8130-production",{"type":42,"value":368},{"type":37,"tag":45,"props":454,"children":455},{},[456,461],{"type":37,"tag":51,"props":457,"children":458},{},[459],{"type":42,"value":460},"Use the bundled installer",{"type":42,"value":462}," — it does the whole clone→build→link dance, which\nis error-prone by hand:",{"type":37,"tag":464,"props":465,"children":470},"pre",{"className":466,"code":467,"language":468,"meta":469,"style":469},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","scripts\u002Fsetup-viem-8130.sh [APP_DIR]   # defaults to the current directory\n","bash","",[471],{"type":37,"tag":66,"props":472,"children":473},{"__ignoreMap":469},[474],{"type":37,"tag":475,"props":476,"children":479},"span",{"class":477,"line":478},"line",1,[480,486,492],{"type":37,"tag":475,"props":481,"children":483},{"style":482},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[484],{"type":42,"value":485},"scripts\u002Fsetup-viem-8130.sh",{"type":37,"tag":475,"props":487,"children":489},{"style":488},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[490],{"type":42,"value":491}," [APP_DIR]   ",{"type":37,"tag":475,"props":493,"children":495},{"style":494},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[496],{"type":42,"value":497},"# defaults to the current directory\n",{"type":37,"tag":45,"props":499,"children":500},{},[501,503,509,511,517,518,524],{"type":42,"value":502},"When PR #5004 merges and a viem release ships the modules, this collapses to\n",{"type":37,"tag":66,"props":504,"children":506},{"className":505},[],[507],{"type":42,"value":508},"npm install viem@latest",{"type":42,"value":510}," — the imports (",{"type":37,"tag":66,"props":512,"children":514},{"className":513},[],[515],{"type":42,"value":516},"viem\u002Feip8130",{"type":42,"value":313},{"type":37,"tag":66,"props":519,"children":521},{"className":520},[],[522],{"type":42,"value":523},"viem\u002Feip8168",{"type":42,"value":525},") and\nAPIs are unchanged, so no code moves.",{"type":37,"tag":527,"props":528,"children":529},"details",{},[530,536,588,744],{"type":37,"tag":531,"props":532,"children":533},"summary",{},[534],{"type":42,"value":535},"What the script does, and why each step is needed",{"type":37,"tag":45,"props":537,"children":538},{},[539,541,546,548,554,556,562,564,570,572,578,580,586],{"type":42,"value":540},"The tooling is ",{"type":37,"tag":51,"props":542,"children":543},{},[544],{"type":42,"value":545},"not installable from git directly",{"type":42,"value":547},": viem's workspace uses\npnpm's ",{"type":37,"tag":66,"props":549,"children":551},{"className":550},[],[552],{"type":42,"value":553},"catalog:",{"type":42,"value":555}," protocol, so ",{"type":37,"tag":66,"props":557,"children":559},{"className":558},[],[560],{"type":42,"value":561},"npm install \"viem@github:…\"",{"type":42,"value":563}," fails outright, and\n",{"type":37,"tag":66,"props":565,"children":567},{"className":566},[],[568],{"type":42,"value":569},"bun add \"viem@github:…\"",{"type":42,"value":571}," \"succeeds\" but leaves you an unbuilt monorepo with no\n",{"type":37,"tag":66,"props":573,"children":575},{"className":574},[],[576],{"type":42,"value":577},"exports",{"type":42,"value":579}," field. So you clone, build, then depend on the built package (which\nlives in viem's ",{"type":37,"tag":66,"props":581,"children":583},{"className":582},[],[584],{"type":42,"value":585},"src\u002F",{"type":42,"value":587},"):",{"type":37,"tag":464,"props":589,"children":591},{"className":466,"code":590,"language":468,"meta":469,"style":469},"git clone -b feat\u002Feip-8130-production https:\u002F\u002Fgithub.com\u002Fchunter-cb\u002Fviem viem-fork\ncd viem-fork && npx pnpm install --ignore-scripts && npx pnpm run build\n\n# then in your app — --install-links is required:\nnpm install --install-links \"viem@file:..\u002Fviem-fork\u002Fsrc\"\n",[592],{"type":37,"tag":66,"props":593,"children":594},{"__ignoreMap":469},[595,629,692,702,711],{"type":37,"tag":475,"props":596,"children":597},{"class":477,"line":478},[598,603,609,614,619,624],{"type":37,"tag":475,"props":599,"children":600},{"style":482},[601],{"type":42,"value":602},"git",{"type":37,"tag":475,"props":604,"children":606},{"style":605},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[607],{"type":42,"value":608}," clone",{"type":37,"tag":475,"props":610,"children":611},{"style":605},[612],{"type":42,"value":613}," -b",{"type":37,"tag":475,"props":615,"children":616},{"style":605},[617],{"type":42,"value":618}," feat\u002Feip-8130-production",{"type":37,"tag":475,"props":620,"children":621},{"style":605},[622],{"type":42,"value":623}," https:\u002F\u002Fgithub.com\u002Fchunter-cb\u002Fviem",{"type":37,"tag":475,"props":625,"children":626},{"style":605},[627],{"type":42,"value":628}," viem-fork\n",{"type":37,"tag":475,"props":630,"children":632},{"class":477,"line":631},2,[633,639,644,650,655,660,665,670,674,678,682,687],{"type":37,"tag":475,"props":634,"children":636},{"style":635},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[637],{"type":42,"value":638},"cd",{"type":37,"tag":475,"props":640,"children":641},{"style":605},[642],{"type":42,"value":643}," viem-fork",{"type":37,"tag":475,"props":645,"children":647},{"style":646},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[648],{"type":42,"value":649}," &&",{"type":37,"tag":475,"props":651,"children":652},{"style":482},[653],{"type":42,"value":654}," npx",{"type":37,"tag":475,"props":656,"children":657},{"style":605},[658],{"type":42,"value":659}," pnpm",{"type":37,"tag":475,"props":661,"children":662},{"style":605},[663],{"type":42,"value":664}," install",{"type":37,"tag":475,"props":666,"children":667},{"style":605},[668],{"type":42,"value":669}," --ignore-scripts",{"type":37,"tag":475,"props":671,"children":672},{"style":646},[673],{"type":42,"value":649},{"type":37,"tag":475,"props":675,"children":676},{"style":482},[677],{"type":42,"value":654},{"type":37,"tag":475,"props":679,"children":680},{"style":605},[681],{"type":42,"value":659},{"type":37,"tag":475,"props":683,"children":684},{"style":605},[685],{"type":42,"value":686}," run",{"type":37,"tag":475,"props":688,"children":689},{"style":605},[690],{"type":42,"value":691}," build\n",{"type":37,"tag":475,"props":693,"children":695},{"class":477,"line":694},3,[696],{"type":37,"tag":475,"props":697,"children":699},{"emptyLinePlaceholder":698},true,[700],{"type":42,"value":701},"\n",{"type":37,"tag":475,"props":703,"children":705},{"class":477,"line":704},4,[706],{"type":37,"tag":475,"props":707,"children":708},{"style":494},[709],{"type":42,"value":710},"# then in your app — --install-links is required:\n",{"type":37,"tag":475,"props":712,"children":714},{"class":477,"line":713},5,[715,720,724,729,734,739],{"type":37,"tag":475,"props":716,"children":717},{"style":482},[718],{"type":42,"value":719},"npm",{"type":37,"tag":475,"props":721,"children":722},{"style":605},[723],{"type":42,"value":664},{"type":37,"tag":475,"props":725,"children":726},{"style":605},[727],{"type":42,"value":728}," --install-links",{"type":37,"tag":475,"props":730,"children":731},{"style":646},[732],{"type":42,"value":733}," \"",{"type":37,"tag":475,"props":735,"children":736},{"style":605},[737],{"type":42,"value":738},"viem@file:..\u002Fviem-fork\u002Fsrc",{"type":37,"tag":475,"props":740,"children":741},{"style":646},[742],{"type":42,"value":743},"\"\n",{"type":37,"tag":45,"props":745,"children":746},{},[747,758,760,766,768,774,776,782],{"type":37,"tag":51,"props":748,"children":749},{},[750,756],{"type":37,"tag":66,"props":751,"children":753},{"className":752},[],[754],{"type":42,"value":755},"--install-links",{"type":42,"value":757}," is required.",{"type":42,"value":759}," Without it npm symlinks ",{"type":37,"tag":66,"props":761,"children":763},{"className":762},[],[764],{"type":42,"value":765},"node_modules\u002Fviem",{"type":42,"value":767},"\nto a path outside the project root, and Turbopack\u002FNext.js then fails with\n",{"type":37,"tag":66,"props":769,"children":771},{"className":770},[],[772],{"type":42,"value":773},"Module not found: Can't resolve 'viem'",{"type":42,"value":775}," for a package that is plainly there\n(",{"type":37,"tag":66,"props":777,"children":779},{"className":778},[],[780],{"type":42,"value":781},"tsc",{"type":42,"value":783}," resolves it fine, which makes it look like a bundler bug).",{"type":37,"tag":45,"props":785,"children":786},{},[787,789,794,796,801,803,809,810,816,818,823],{"type":42,"value":788},"Then import from ",{"type":37,"tag":66,"props":790,"children":792},{"className":791},[],[793],{"type":42,"value":516},{"type":42,"value":795}," (and ",{"type":37,"tag":66,"props":797,"children":799},{"className":798},[],[800],{"type":42,"value":523},{"type":42,"value":802}," for payers). Core helpers\nlike ",{"type":37,"tag":66,"props":804,"children":806},{"className":805},[],[807],{"type":42,"value":808},"createPublicClient",{"type":42,"value":160},{"type":37,"tag":66,"props":811,"children":813},{"className":812},[],[814],{"type":42,"value":815},"parseEther",{"type":42,"value":817}," come from plain ",{"type":37,"tag":66,"props":819,"children":821},{"className":820},[],[822],{"type":42,"value":79},{"type":42,"value":824}," — the 8130\nmodule does not re-export them.",{"type":37,"tag":45,"props":826,"children":827},{},[828,830,836,838,844,846,852,854,860],{"type":42,"value":829},"If your TypeScript build rejects the module's BigInt literals, set\n",{"type":37,"tag":66,"props":831,"children":833},{"className":832},[],[834],{"type":42,"value":835},"\"target\": \"ES2020\"",{"type":42,"value":837}," or later in ",{"type":37,"tag":66,"props":839,"children":841},{"className":840},[],[842],{"type":42,"value":843},"tsconfig.json",{"type":42,"value":845},". Next.js 16's generated config\nalready works as-is, since its ",{"type":37,"tag":66,"props":847,"children":849},{"className":848},[],[850],{"type":42,"value":851},"lib",{"type":42,"value":853}," includes ",{"type":37,"tag":66,"props":855,"children":857},{"className":856},[],[858],{"type":42,"value":859},"esnext",{"type":42,"value":368},{"type":37,"tag":83,"props":862,"children":864},{"id":863},"accounts-have-no-deploy-step",[865],{"type":42,"value":866},"Accounts Have No Deploy Step",{"type":37,"tag":45,"props":868,"children":869},{},[870,872,878,880,886,888,893,895,901,903,909,911,916,918,924,926,931],{"type":42,"value":871},"Creating an account derives a CREATE2 address locally — synchronous, zero RPC,\n",{"type":37,"tag":66,"props":873,"children":875},{"className":874},[],[876],{"type":42,"value":877},"eth_getCode",{"type":42,"value":879}," still ",{"type":37,"tag":66,"props":881,"children":883},{"className":882},[],[884],{"type":42,"value":885},"0x",{"type":42,"value":887},". It becomes real as a ",{"type":37,"tag":51,"props":889,"children":890},{},[891],{"type":42,"value":892},"side effect of its first\ntransaction",{"type":42,"value":894},", which carries ",{"type":37,"tag":66,"props":896,"children":898},{"className":897},[],[899],{"type":42,"value":900},"account.createChange",{"type":42,"value":902}," alongside your actual calls.\nThere is nothing else to call. The shortest path from nothing to a deployed\naccount is a ",{"type":37,"tag":904,"props":905,"children":906},"em",{},[907],{"type":42,"value":908},"sponsored",{"type":42,"value":910}," first tx (no faucet, no funding); the self-paid route\nneeds the address funded first. Read deployment state from ",{"type":37,"tag":66,"props":912,"children":914},{"className":913},[],[915],{"type":42,"value":877},{"type":42,"value":917},", never\nfrom optimistic local state — it decides whether the next tx carries\n",{"type":37,"tag":66,"props":919,"children":921},{"className":920},[],[922],{"type":42,"value":923},"createChange",{"type":42,"value":925},". Full lifecycle:\n",{"type":37,"tag":428,"props":927,"children":929},{"href":928},"references\u002Feip8130-accounts.md",[930],{"type":42,"value":928},{"type":42,"value":368},{"type":37,"tag":83,"props":933,"children":935},{"id":934},"safety-guardrails",[936],{"type":42,"value":937},"Safety Guardrails",{"type":37,"tag":939,"props":940,"children":941},"ul",{},[942,953,992,1026],{"type":37,"tag":943,"props":944,"children":945},"li",{},[946,951],{"type":37,"tag":51,"props":947,"children":948},{},[949],{"type":42,"value":950},"Never commit private keys",{"type":42,"value":952}," — generate throwaway keys for devnet scripts,\nread real ones from env vars.",{"type":37,"tag":943,"props":954,"children":955},{},[956,967,969,975,977,983,985,991],{"type":37,"tag":51,"props":957,"children":958},{},[959,965],{"type":37,"tag":66,"props":960,"children":962},{"className":961},[],[963],{"type":42,"value":964},"key.k1(...)",{"type":42,"value":966}," builds an actor identity, not a signer",{"type":42,"value":968}," — passing it (or a\nraw private-key hex) as ",{"type":37,"tag":66,"props":970,"children":972},{"className":971},[],[973],{"type":42,"value":974},"signer",{"type":42,"value":976}," fails with an opaque ",{"type":37,"tag":66,"props":978,"children":980},{"className":979},[],[981],{"type":42,"value":982},"pad()",{"type":42,"value":984}," TypeError. Use\n",{"type":37,"tag":66,"props":986,"children":988},{"className":987},[],[989],{"type":42,"value":990},"privateKeyToAccount(pk)",{"type":42,"value":368},{"type":37,"tag":943,"props":993,"children":994},{},[995,1000,1002,1008,1010,1016,1018,1024],{"type":37,"tag":51,"props":996,"children":997},{},[998],{"type":42,"value":999},"Verify config changes by on-chain read-back",{"type":42,"value":1001}," (",{"type":37,"tag":66,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":42,"value":1007},"isActor",{"type":42,"value":1009}," \u002F\n",{"type":37,"tag":66,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":42,"value":1015},"getConfigSequence",{"type":42,"value":1017},"), never by receipt logs or ",{"type":37,"tag":66,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":42,"value":1023},"status: success",{"type":42,"value":1025}," — a\nskipped authorize is silent.",{"type":37,"tag":943,"props":1027,"children":1028},{},[1029,1034],{"type":37,"tag":51,"props":1030,"children":1031},{},[1032],{"type":42,"value":1033},"Read the live config sequence right before signing",{"type":42,"value":1035}," — a hardcoded\nsequence causes silent no-ops.",{"type":37,"tag":83,"props":1037,"children":1039},{"id":1038},"task-routing",[1040],{"type":42,"value":1041},"Task Routing",{"type":37,"tag":45,"props":1043,"children":1044},{},[1045],{"type":42,"value":1046},"Read the reference for your task:",{"type":37,"tag":90,"props":1048,"children":1049},{},[1050,1071],{"type":37,"tag":94,"props":1051,"children":1052},{},[1053],{"type":37,"tag":98,"props":1054,"children":1055},{},[1056,1061,1066],{"type":37,"tag":102,"props":1057,"children":1058},{},[1059],{"type":42,"value":1060},"Task",{"type":37,"tag":102,"props":1062,"children":1063},{},[1064],{"type":42,"value":1065},"When to Use",{"type":37,"tag":102,"props":1067,"children":1068},{},[1069],{"type":42,"value":1070},"Reference",{"type":37,"tag":113,"props":1072,"children":1073},{},[1074,1097,1121],{"type":37,"tag":98,"props":1075,"children":1076},{},[1077,1085,1090],{"type":37,"tag":120,"props":1078,"children":1079},{},[1080],{"type":37,"tag":51,"props":1081,"children":1082},{},[1083],{"type":42,"value":1084},"Accounts & transactions",{"type":37,"tag":120,"props":1086,"children":1087},{},[1088],{"type":42,"value":1089},"Create an 8130 smart account, the counterfactual→deployed lifecycle, send batched calls, attribution metadata, gas estimation, reading account state, locking, gotchas",{"type":37,"tag":120,"props":1091,"children":1092},{},[1093],{"type":37,"tag":428,"props":1094,"children":1095},{"href":928},[1096],{"type":42,"value":928},{"type":37,"tag":98,"props":1098,"children":1099},{},[1100,1108,1113],{"type":37,"tag":120,"props":1101,"children":1102},{},[1103],{"type":37,"tag":51,"props":1104,"children":1105},{},[1106],{"type":42,"value":1107},"Session keys & policies",{"type":37,"tag":120,"props":1109,"children":1110},{},[1111],{"type":42,"value":1112},"Authorize\u002Frevoke actors, scopes, SessionPolicy spend limits, config sequences, verifying \"silent\" changes",{"type":37,"tag":120,"props":1114,"children":1115},{},[1116],{"type":37,"tag":428,"props":1117,"children":1119},{"href":1118},"references\u002Fsession-keys-and-policies.md",[1120],{"type":42,"value":1118},{"type":37,"tag":98,"props":1122,"children":1123},{},[1124,1132,1153],{"type":37,"tag":120,"props":1125,"children":1126},{},[1127],{"type":37,"tag":51,"props":1128,"children":1129},{},[1130],{"type":42,"value":1131},"Gas sponsorship",{"type":37,"tag":120,"props":1133,"children":1134},{},[1135,1137,1143,1145,1151],{"type":42,"value":1136},"Sponsor gas with a payer (ERC-8168), gasless onboarding, ",{"type":37,"tag":66,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":42,"value":1142},"send",{"type":42,"value":1144}," vs ",{"type":37,"tag":66,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":42,"value":1150},"sign",{"type":42,"value":1152}," modes",{"type":37,"tag":120,"props":1154,"children":1155},{},[1156],{"type":37,"tag":428,"props":1157,"children":1159},{"href":1158},"references\u002Fpayer-sponsorship.md",[1160],{"type":42,"value":1158},{"type":37,"tag":83,"props":1162,"children":1164},{"id":1163},"operating-procedure",[1165],{"type":42,"value":1166},"Operating Procedure",{"type":37,"tag":1168,"props":1169,"children":1170},"ol",{},[1171,1181,1213,1230],{"type":37,"tag":943,"props":1172,"children":1173},{},[1174,1179],{"type":37,"tag":51,"props":1175,"children":1176},{},[1177],{"type":42,"value":1178},"Classify the task",{"type":42,"value":1180}," using the table above and read the relevant reference\nbefore implementing.",{"type":37,"tag":943,"props":1182,"children":1183},{},[1184,1189,1191,1196,1198,1204,1206,1211],{"type":37,"tag":51,"props":1185,"children":1186},{},[1187],{"type":42,"value":1188},"Pick the right RPC",{"type":42,"value":1190},": ",{"type":37,"tag":66,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":42,"value":404},{"type":42,"value":1197}," works from both Node and the\nbrowser; ",{"type":37,"tag":66,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":42,"value":1203},"api.vibes.base.org\u002Fapi\u002Fvibenet\u002Faccount\u002Frpc",{"type":42,"value":1205}," is the hosted proxy to\nthe same chain. Never ",{"type":37,"tag":66,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":42,"value":366},{"type":42,"value":1212}," — that host is not an API.",{"type":37,"tag":943,"props":1214,"children":1215},{},[1216,1221,1223,1228],{"type":37,"tag":51,"props":1217,"children":1218},{},[1219],{"type":42,"value":1220},"Implement",{"type":42,"value":1222}," with explicit chain id, the ",{"type":37,"tag":66,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":42,"value":485},{"type":42,"value":1229},"\ninstall, and read-back verification for any account-config change.",{"type":37,"tag":943,"props":1231,"children":1232},{},[1233,1238],{"type":37,"tag":51,"props":1234,"children":1235},{},[1236],{"type":42,"value":1237},"Deliver",{"type":42,"value":1239}," runnable code, install commands, and any manual steps (env\nvars, faucet funding).",{"type":37,"tag":83,"props":1241,"children":1243},{"id":1242},"for-edge-cases-and-latest-api-changes",[1244],{"type":42,"value":1245},"For Edge Cases and Latest API Changes",{"type":37,"tag":939,"props":1247,"children":1248},{},[1249,1276,1325,1348],{"type":37,"tag":943,"props":1250,"children":1251},{},[1252,1257,1258,1265,1267,1274],{"type":37,"tag":51,"props":1253,"children":1254},{},[1255],{"type":42,"value":1256},"EIP-8130 spec",{"type":42,"value":1190},{"type":37,"tag":428,"props":1259,"children":1262},{"href":1260,"rel":1261},"https:\u002F\u002Feip.tools\u002Feip\u002F8130",[432],[1263],{"type":42,"value":1264},"eip.tools\u002Feip\u002F8130",{"type":42,"value":1266},"\n(payer standard: ",{"type":37,"tag":428,"props":1268,"children":1271},{"href":1269,"rel":1270},"https:\u002F\u002Feip.tools\u002Feip\u002F8168",[432],[1272],{"type":42,"value":1273},"eip.tools\u002Feip\u002F8168",{"type":42,"value":1275},")",{"type":37,"tag":943,"props":1277,"children":1278},{},[1279,1284,1285,1301,1303,1308,1310,1316,1318,1324],{"type":37,"tag":51,"props":1280,"children":1281},{},[1282],{"type":42,"value":1283},"viem fork",{"type":42,"value":1190},{"type":37,"tag":428,"props":1286,"children":1289},{"href":1287,"rel":1288},"https:\u002F\u002Fgithub.com\u002Fchunter-cb\u002Fviem\u002Ftree\u002Ffeat\u002Feip-8130-production",[432],[1290,1295,1296],{"type":37,"tag":66,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":42,"value":443},{"type":42,"value":445},{"type":37,"tag":66,"props":1297,"children":1299},{"className":1298},[],[1300],{"type":42,"value":451},{"type":42,"value":1302},"\n(upstream PR: ",{"type":37,"tag":428,"props":1304,"children":1306},{"href":430,"rel":1305},[432],[1307],{"type":42,"value":435},{"type":42,"value":1309},"; API\nsurface: ",{"type":37,"tag":66,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":42,"value":1315},"src\u002Feip8130\u002Findex.ts",{"type":42,"value":1317},"; docs: ",{"type":37,"tag":66,"props":1319,"children":1321},{"className":1320},[],[1322],{"type":42,"value":1323},"site\u002Fpages\u002Feip8130",{"type":42,"value":1275},{"type":37,"tag":943,"props":1326,"children":1327},{},[1328,1333,1334,1340,1341,1347],{"type":37,"tag":51,"props":1329,"children":1330},{},[1331],{"type":42,"value":1332},"Deep guide (chaptered)",{"type":42,"value":1190},{"type":37,"tag":66,"props":1335,"children":1337},{"className":1336},[],[1338],{"type":42,"value":1339},"github.com\u002Fchunter-cb\u002Feip-8130-web",{"type":42,"value":1001},{"type":37,"tag":66,"props":1342,"children":1344},{"className":1343},[],[1345],{"type":42,"value":1346},"\u002Fguide\u002F*",{"type":42,"value":1275},{"type":37,"tag":943,"props":1349,"children":1350},{},[1351,1356,1358],{"type":37,"tag":51,"props":1352,"children":1353},{},[1354],{"type":42,"value":1355},"Session-key walkthrough",{"type":42,"value":1357},":\n",{"type":37,"tag":428,"props":1359,"children":1362},{"href":1360,"rel":1361},"https:\u002F\u002Fgist.github.com\u002Fchunter-cb\u002Fbf70c53a5ab6d8361ce7f4215b776114",[432],[1363],{"type":42,"value":1364},"gist.github.com\u002Fchunter-cb\u002Fbf70c53a5ab6d8361ce7f4215b776114",{"type":37,"tag":83,"props":1366,"children":1368},{"id":1367},"installation",[1369],{"type":42,"value":1370},"Installation",{"type":37,"tag":464,"props":1372,"children":1374},{"className":466,"code":1373,"language":468,"meta":469,"style":469},"npx skills add base\u002Fskills --skill vibenet\n",[1375],{"type":37,"tag":66,"props":1376,"children":1377},{"__ignoreMap":469},[1378],{"type":37,"tag":475,"props":1379,"children":1380},{"class":477,"line":478},[1381,1386,1391,1396,1401,1406],{"type":37,"tag":475,"props":1382,"children":1383},{"style":482},[1384],{"type":42,"value":1385},"npx",{"type":37,"tag":475,"props":1387,"children":1388},{"style":605},[1389],{"type":42,"value":1390}," skills",{"type":37,"tag":475,"props":1392,"children":1393},{"style":605},[1394],{"type":42,"value":1395}," add",{"type":37,"tag":475,"props":1397,"children":1398},{"style":605},[1399],{"type":42,"value":1400}," base\u002Fskills",{"type":37,"tag":475,"props":1402,"children":1403},{"style":605},[1404],{"type":42,"value":1405}," --skill",{"type":37,"tag":475,"props":1407,"children":1408},{"style":605},[1409],{"type":42,"value":1410}," vibenet\n",{"type":37,"tag":1412,"props":1413,"children":1414},"style",{},[1415],{"type":42,"value":1416},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1418,"total":694},[1419,1435,1454],{"slug":1420,"name":1420,"fn":1421,"description":1422,"org":1423,"tags":1424,"stars":20,"repoUrl":21,"updatedAt":1434},"base-mcp","manage Base account and transactions","Base MCP — gives your AI assistant access to a Base Account via the Base MCP server (mcp.base.org). Wallet, portfolio, sending, swapping, signing, x402 payments, batched contract calls, and transaction history across supported chains.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1425,1426,1427,1430,1433],{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"name":1428,"slug":1429,"type":15},"MCP","mcp",{"name":1431,"slug":1432,"type":15},"Payments","payments",{"name":13,"slug":14,"type":15},"2026-07-01T08:14:57.861645",{"slug":1436,"name":1436,"fn":1437,"description":1438,"org":1439,"tags":1440,"stars":20,"repoUrl":21,"updatedAt":1453},"build-on-base","build applications on Base network","Complete Base development playbook. Covers: (1) Network — Base RPC URLs, chain IDs (8453\u002F84532), explorer config, testnet setup, connect to Base, Base Sepolia; (2) Contracts — Foundry deployment, forge create, BaseScan verification, CDP faucet, testnet ETH, deploy contract to Base; (3) Builder Codes — ERC-8021 attribution suffix, referral fees, dataSuffix for Wagmi\u002FViem\u002FPrivy\u002F ethers.js\u002Fwindow.ethereum, transaction attribution, earn referral fees, append builder code; (4) Base Account SDK — Sign in with Base (SIWB), Base Pay, USDC payments, paymasters, gas sponsorship, sub-accounts, spend permissions, prolinks, batch transactions, smart wallet, payment link, recurring subscription; (5) Agent registration — trading bots, AI agents, automated senders, ERC-8021 attribution wiring, base.dev API, register agent, builder code registration; (6) Node operation — run Base node, Reth setup, hardware requirements, self-hosted RPC, sync; (7) Migrations — migrate OnchainKit, OnchainKitProvider to WagmiProvider, wagmi migration, remove onchainkit dependency, MiniKit to Farcaster SDK, convert miniapp, Farcaster miniapp to regular app, convert Farcaster miniapp.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1441,1442,1445,1446,1449,1452],{"name":9,"slug":8,"type":15},{"name":1443,"slug":1444,"type":15},"Deployment","deployment",{"name":17,"slug":18,"type":15},{"name":1447,"slug":1448,"type":15},"Foundry","foundry",{"name":1450,"slug":1451,"type":15},"Smart Contracts","smart-contracts",{"name":13,"slug":14,"type":15},"2026-05-27T07:02:26.615091",{"slug":4,"name":4,"fn":5,"description":6,"org":1455,"tags":1456,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1457,1458,1459],{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"items":1461,"total":694},[1462,1470,1479],{"slug":1420,"name":1420,"fn":1421,"description":1422,"org":1463,"tags":1464,"stars":20,"repoUrl":21,"updatedAt":1434},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1465,1466,1467,1468,1469],{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"name":1428,"slug":1429,"type":15},{"name":1431,"slug":1432,"type":15},{"name":13,"slug":14,"type":15},{"slug":1436,"name":1436,"fn":1437,"description":1438,"org":1471,"tags":1472,"stars":20,"repoUrl":21,"updatedAt":1453},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1473,1474,1475,1476,1477,1478],{"name":9,"slug":8,"type":15},{"name":1443,"slug":1444,"type":15},{"name":17,"slug":18,"type":15},{"name":1447,"slug":1448,"type":15},{"name":1450,"slug":1451,"type":15},{"name":13,"slug":14,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":1480,"tags":1481,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1482,1483,1484],{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15}]