mcpField
B
building-with-base-account

building-with-base-account

github.com/baseDevelopment120357 installsUpdated 1d ago
Repository

About building-with-base-account

building-with-base-account is a developer skill for integrating Base Account, with an SDK quick start and references for its features. It also lists key requirements for transaction verification, popup handling, and credential safety.

Key features

  1. 01SDK installation and initialization example
  2. 02Sign-in and backend verification guidance
  3. 03Payment, subscription, and sub-account references
  4. 04Batch transaction and gas sponsorship guidance
  5. 05Security and popup handling requirements

Use cases

  1. 01Integrating Base Account into an application
  2. 02Implementing sign-in or USDC payments
  3. 03Building subscriptions, sub-accounts, or batch transactions
  4. 04Troubleshooting popup and wallet call issues

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/base/skills --skill building-with-base-account

After installing, type/building-with-base-accountin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
authentication.md
capabilities.md
payments.md
prolinks.md
sub-accounts.md
subscriptions.md
troubleshooting.md

Details

From the project README

Building with Base Account

Base Account is an ERC-4337 smart wallet providing universal sign-on, one-tap USDC payments, and multi-chain support (Base, Arbitrum, Optimism, Zora, Polygon, BNB, Avalanche, Lordchain, Ethereum Mainnet).

Quick Start

npm install @base-org/account @base-org/account-ui
import { createBaseAccountSDK } from '@base-org/account';

const sdk = createBaseAccountSDK({
  appName: 'My App',
  appLogoUrl: 'https://example.com/logo.png',
  appChainIds: [8453], // Base Mainnet
});

const provider = sdk.getProvider();

Feature References

Read the reference for the feature you're implementing:

FeatureReferenceWhen to Read
Sign in with Basereferences/authentication.mdWallet auth, SIWE, backend verification, SignInWithBaseButton, Wagmi/Privy setup
Base Payreferences/payments.mdOne-tap USDC payments, payerInfo, server-side verification, BasePayButton
Subscriptionsreferences/subscriptions.mdRecurring charges, spend permissions, CDP wallet setup, charge/revoke lifecycle
Sub Accountsreferences/sub-accounts.mdApp-specific embedded wallets, key generation, funding
Capabilitiesreferences/capabilities.mdBatch transactions, gas sponsorship (paymasters), atomic execution, auxiliaryFunds, attribution
Prolinksreferences/prolinks.mdShareable payment links, QR codes, encoded transaction URLs
Troubleshootingreferences/troubleshooting.mdPopup issues, gas usage, unsupported calls, migration, doc links

Critical Requirements

Security
  • Track transaction IDs to prevent replay attacks
  • Verify sender matches authenticated user to prevent impersonation
  • Use a proxy to protect Paymaster URLs from frontend exposure
  • Paymaster providers must be ERC-7677-compliant
  • Never expose CDP credentials client-side (subscription backend only)
Popup Handling
  • Generate nonces before user clicks "Sign in" to avoid popup blockers
  • Use Cross-Origin-Opener-Policy: same-origin-allow-popups
  • same-origin breaks the Base Account popup
Base Pay
  • Base Pay works independently from SIWB — no auth required for pay()
  • testnet param in getPaymentStatus() must match pay() call
  • Never disable actions based on onchain balance alone — check auxiliaryFunds capability
Sub Accounts
  • Call wallet_addSubAccount each session before use
  • Ownership changes expected on new devices/browsers
  • Only Coinbase Smart Wallet contracts supported for import
Smart Wallets
  • ERC-6492 wrapper enables signature verification before wallet deployment
  • Viem's verifyMessage/verifyTypedData handle this automatically

For Edge Cases and Latest API Changes

Comments

Markdown supported