pimlico
Skill1 starsChanged 25 days agoMITView on GitHub
Pimlico is ERC-4337 account abstraction infra (bundler + paymaster) used with permissionless.js and viem. Use when a hacker wants a smart account (Safe, Simple, Kernel), gasless or sponsored transactions, batched calls, paying gas in USDC (ERC-20 paymaster), a Pimlico API key, or AA on World Chain, Unichain or Arc.
- Reads credentials
- Installs packages
In this repository55 other files it gives its agents.
- aaveSkill
- agentkitSkill
- alchemySkill
- backboardSkill
- biconomySkill
- blockscoutSkill
- daimoSkill
- duneSkill
- dynamicSkill
- easSkill
- ensoSkill
- envioSkill
- fetch-aiSkill
- goldskySkill
- hardhatSkill
- litSkill
- livepeerSkill
- morphoSkill
- namespace-53d629Skill
- neynarSkill
- olasSkill
- onramp-moneySkill
- openzeppelinSkill
- pinataSkill
- ponderSkill
- privySkill
- pushSkill
- quicknodeSkill
- reclaimSkill
- reownSkill
- requestSkill
- safeSkill
- scaffold-ethSkill
- signSkill
- sponsor-chainsSkill
- superfluidSkill
- tenderlySkill
- the-graphSkill
- thirdwebSkill
- track-0gSkill
- track-1inchSkill
- track-arcSkill
- track-arkivSkill
- track-chainlinkSkill
- track-definitiveSkill
- track-efSkill
- track-ensSkill
- track-hederaSkill
- track-uniswapSkill
- track-whitechainSkill
- track-worldSkill
- transakSkill
- web3authSkill
- xmtpSkill
- zerodevSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 72
Run: npx tsx index.ts. The first transaction also deploys the account (it is counterfactual until then).
- Very specific: line 91
Check versions: npm view permissionless version and npm view viem version.
- Distinctive: line 92
Check the per-chain account table before choosing Kernel: https://docs.pimlico.io/guides/supported-chains
- Distinctive: line 93
When this skill and the official docs disagree, the docs win.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Pimlico
Pimlico runs ERC-4337 bundlers and paymasters on many EVM chains. With permissionless.js + viem you get a smart account for each user, send gasless (sponsored) transactions, batch several calls into one, or let users pay gas in USDC.
Pick it when users should not need native gas, or you want "approve + action" in one click. Skip it if a plain EOA wallet and normal transactions are enough, or if the chain is not on Pimlico's supported chains list.
Quickstart
- Get an API key: dashboard.pimlico.io > API Keys > Create API key (guide). Testnet sponsorship is free.
- Install (Node 20+, tested on Node 24; ESM project):
npm init -y && npm pkg set type=module npm i --save-exact permissionless@0.5.0 viem@2.57.7 dotenv@17.2.3 npm i -D tsx - Make a throwaway owner key, then fill
.env:node --input-type=module -e "import { generatePrivateKey } from 'viem/accounts'; console.log(generatePrivateKey())"PIMLICO_API_KEY=<YOUR_API_KEY> PRIVATE_KEY=<TEST_OWNER_KEY> # the key printed above; test funds only index.ts(Safe account on Sepolia, gas paid by Pimlico):import "dotenv/config" import { createSmartAccountClient } from "permissionless" import { toSafeSmartAccount } from "permissionless/accounts" import { createPimlicoClient } from "permissionless/clients/pimlico" import { createPublicClient, http, type Hex } from "viem" import { entryPoint07Address } from "viem/account-abstraction" import { privateKeyToAccount } from "viem/accounts" import { sepolia } from "viem/chains" const pimlicoUrl = `https://api.pimlico.io/v2/${sepolia.id}/rpc?apikey=${process.env.PIMLICO_API_KEY}` const publicClient = createPublicClient({ chain: sepolia, transport: http() }) const pimlicoClient = createPimlicoClient({ transport: http(pimlicoUrl), entryPoint: { address: entryPoint07Address, version: "0.7" }, }) const account = await toSafeSmartAccount({ client: publicClient, owners: [privateKeyToAccount(process.env.PRIVATE_KEY as Hex)], entryPoint: { address: entryPoint07Address, version: "0.7" }, version: "1.4.1", }) const smartAccountClient = createSmartAccountClient({ account, chain: sepolia, bundlerTransport: http(pimlicoUrl), paymaster: pimlicoClient, // sponsors gas userOperation: { estimateFeesPerGas: async () => (await pimlicoClient.getUserOperationGasPrice()).fast, }, }) const txHash = await smartAccountClient.sendTransaction({ to: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", value: 0n, data: "0x1234", }) console.log(account.address, txHash)- Run:
npx tsx index.ts. The first transaction also deploys the account (it is counterfactual until then). - Full version with explanations and a testnet explorer link: references/quickstart.md.
Common tasks
- Pick an account: Safe, Simple or Kernel
- Sponsored (gasless) transaction
- Batch calls (approve + action in one op)
- Pay gas in USDC (ERC-20 paymaster)
- World Chain / Unichain / Arc testnets
- Limit spend with a sponsorship policy
- User's browser wallet as the owner
- Errors and fixes (AA21, AA25, 0x000 address, timeouts)
- Pimlico CLI as an MCP server
Before you write more code
- For anything not covered here, read Pimlico's AI docs index first: https://docs.pimlico.io/llms.txt (every page also exists as
.md, e.g. https://docs.pimlico.io/guides/tutorials/tutorial-1.md). - permissionless.js reference: https://docs.pimlico.io/references/permissionless . viem account abstraction: https://viem.sh/account-abstraction
- Check versions:
npm view permissionless versionandnpm view viem version. permissionless needs viem^2.44.4(peer dependency of 0.5.0). Do not copy v0.1 examples (ENTRYPOINT_ADDRESS_V07,bundlerClient.sendUserOperation({ userOperation }),sponsorUserOperationmiddleware) — that API is old. - Check the per-chain account table before choosing Kernel: https://docs.pimlico.io/guides/supported-chains
- When this skill and the official docs disagree, the docs win.
At ETHGlobal Mumbai
- Sponsor chains: World Chain, Unichain and Arc (mainnet + testnet) are on Pimlico's supported list. Hedera, 0G and Whitechain are not listed. Details, chain IDs and account limits: references/chains.md.
- May help with: tracks that reward smooth onboarding, gasless UX or smart accounts, and sponsor-chain tracks on World Chain, Unichain or Arc. Check the real list: https://ethglobal.com/events/mumbai/prizes
- Help: Pimlico Telegram https://t.me/pimlicoHQ (linked from their docs), support@pimlico.io.
About
Hand-written for Backboard (https://backboard.0xvikram.me), an independent project not affiliated with ETHGlobal or Pimlico. Tested 2026-10-19 with permissionless@0.5.0, viem@2.57.7, dotenv@17.2.3.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

