agentleFS
0xvikram0xvikram/backboard-skills/skills/pimlico/SKILL.md

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

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
  1. Very specific:

    Run: npx tsx index.ts. The first transaction also deploys the account (it is counterfactual until then).

    line 72
  2. Very specific:

    Check versions: npm view permissionless version and npm view viem version.

    line 91
  3. Distinctive:

    Check the per-chain account table before choosing Kernel: https://docs.pimlico.io/guides/supported-chains

    line 92
  4. Distinctive:

    When this skill and the official docs disagree, the docs win.

    line 93

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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

  1. Get an API key: dashboard.pimlico.io > API Keys > Create API key (guide). Testnet sponsorship is free.
  2. 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
  3. 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
  4. 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)
  5. Run: npx tsx index.ts. The first transaction also deploys the account (it is counterfactual until then).
  6. 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

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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.