Agent skill

Use User Controlled Wallets

by circlefin in circlefin/skills

Build non-custodial wallets where end users retain control of their private keys via Circle's user-controlled wallets SDK.

Apache-2.0Auto-check: notesBackend & APIs

Install Use User Controlled Wallets

skills CLI
$ npx skills add circlefin/skills --skill use-user-controlled-wallets -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install circlefin/skills use-user-controlled-wallets --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/circlefin/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/circle/skills/use-user-controlled-wallets .claude/skills/use-user-controlled-wallets && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
use-user-controlled-wallets
GitHub stars
155
Token cost
~3.6k tokens
SKILL.md length
1,529 words
Files
8 (incl. references)
Skills in repo
18
Repo updated
First seen
Licence
Apache-2.0

At a glance

Build non-custodial wallets where end users retain control of their private keys via Circle's user-controlled wallets SDK.

  • Works in 3 steps: End User (Client) -- The person using a… → Developer Service (Backend) -- The… → Circle Wallet Service (API) -- Circle's…
  • : user-controlled wallets
  • SKILL.md covers Overview, Prerequisites / Setup, Core Concepts and Implementation Patterns, plus 5 more sections
  • Calls npm; needs CIRCLE_API_KEY

What it does

Use User Controlled Wallets is an agent skill from circlefin/skills. Build non-custodial wallets where end users retain control of their private keys via Circle's user-controlled wallets SDK. Supports Google, Apple, Facebook social login, email OTP, and PIN authentication with MPC-based key management. Covers wallet creation, token transfers, message signing, smart contract execution, and wallet management. Triggers on: user-controlled wallets, social login wallet, email OTP wallet, PIN wallet, w3s-pw-web-sdk, executeChallenge, MPC wallet, userToken, deviceToken, contract execution.

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `references/contract-execution.md`, `references/create-wallet-email-otp.md` and `references/create-wallet-pin.md`).

It sits in Backend & APIs, covering Smart contracts, Cryptography and Authentication. It works with Circle USDC and Solana. The repository describes itself as: Circle's open source skills for AI-assisted development. The licence is Apache-2.0.

When your agent uses it

  • : user-controlled wallets
  • Social login wallet
  • Email OTP wallet
  • ExecuteChallenge

Example prompts

  • “/use-user-controlled-wallets”

Requirements

  • Node.js
  • A credential in CIRCLE_API_KEY

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. End User (Client) -- The person using a web app or mobile app. They interact with the developer's frontend, authenticate (PIN, email OTP…
  2. Developer Service (Backend) -- The developer's own server. It holds the Circle API key, manages user sessions, tracks usage, and enforces…
  3. Circle Wallet Service (API) -- Circle's infrastructure that manages wallet creation, transaction submission, key management (MPC-based)…

What it can do on your machine

Read from SKILL.md and the folder at commit 58ab864. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • developers.circle.com
    • console.circle.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • CIRCLE_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Use User Controlled Wallets loads about 3.6k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 137 tokens; SKILL.md has 1,529 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~137
When it runs · the whole SKILL.md, loaded when a task matches
~3.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~13k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:196
    s manager. Add `.gitignore` entries for `.env*` and secret files when scaffolding.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from circlefin/skills at commit 58ab864, republished under its Apache-2.0 licence (© circlefin). 1,529 words, ~3,593 tokens.

Download SKILL.mdSave it as .claude/skills/use-user-controlled-wallets/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.
name
use-user-controlled-wallets
description
Build non-custodial wallets where end users retain control of their private keys via Circle's user-controlled wallets SDK. Supports Google, Apple, Facebook social login, email OTP, and PIN authentication with MPC-based key management. Covers wallet creation, token transfers, message signing, smart contract execution, and wallet management. Triggers on: user-controlled wallets, social login wallet, email OTP wallet, PIN wallet, w3s-pw-web-sdk, executeChallenge, MPC wallet, userToken, deviceToken, contract execution.

Overview

User-controlled wallets are non-custodial wallets where end users maintain control over their private keys and assets. Users authorize all sensitive operations (transactions, signing, wallet creation) through a challenge-response model that ensures user consent before execution. Multi-chain support includes EVM chains, Solana, and Aptos.

Prerequisites / Setup

Installation
bash
npm install @circle-fin/user-controlled-wallets@latest @circle-fin/w3s-pw-web-sdk@latest vite-plugin-node-polyfills
Vite Configuration

The SDKs depends on Node.js built-ins (buffer, crypto, etc.) that are not available in the browser. Add vite-plugin-node-polyfills to your Vite config:

typescript
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import { nodePolyfills } from "vite-plugin-node-polyfills";

export default defineConfig({
  plugins: [react(), nodePolyfills()],
});
Environment Variables
bash
# Backend
CIRCLE_API_KEY=          # Circle API key

# Frontend
CIRCLE_APP_ID=           # App ID from Wallets > User Controlled > Configurator
Backend SDK Initialization

Uses @circle-fin/user-controlled-wallets for all server-side operations (user creation, challenge creation, transaction queries).

typescript
import { initiateUserControlledWalletsClient, Blockchain, TokenBlockchain } from "@circle-fin/user-controlled-wallets";

const circleClient = initiateUserControlledWalletsClient({
  apiKey: process.env.CIRCLE_API_KEY!,
});
Frontend SDK Initialization

Uses @circle-fin/w3s-pw-web-sdk for user-facing operations (challenge execution, auth flows, PIN/OTP/OAuth UI).

typescript
import { W3SSdk } from "@circle-fin/w3s-pw-web-sdk";

const sdk = new W3SSdk({ appSettings: { appId: circleAppId } });

IMPORTANT: You must call sdk.getDeviceId() after SDK initialization. This establishes a session with Circle's service via an iframe. Without this call, sdk.execute() will silently fail.

For email OTP and social login, the SDK must be initialized with a login callback as the second argument. See the corresponding reference files for details.

Core Concepts

Account Types

User-controlled wallets support EOA and SCA account types, chosen at wallet creation.

EOA (Externally Owned Account): No creation fees, higher TPS, broadest chain support (EVM, Solana, Aptos). Requires native tokens for gas on EVM chains (on Arc, that gas asset is USDC — there is no separate native token). Gas sponsorship only available on Solana via feePayer.

SCA (Smart Contract Account): ERC-4337 account abstraction. Gas sponsorship via Circle Gas Station paymaster, batch operations, flexible key management. EVM-only (no Solana/Aptos). First outbound transaction incurs gas for lazy deployment. Avoid on Ethereum mainnet due to high gas -- use on L2s (Arbitrum, Base, Polygon, Optimism).

For supported blockchains by account type: https://developers.circle.com/wallets/account-types

Architecture

User-controlled wallets involve three parties:

  1. End User (Client) -- The person using a web app or mobile app. They interact with the developer's frontend, authenticate (PIN, email OTP, or social login), and approve all sensitive operations (wallet creation, transactions, signing) through Circle's hosted UI via @circle-fin/w3s-pw-web-sdk. Users retain full control of their private keys -- neither the developer nor Circle can act on their behalf.

  2. Developer Service (Backend) -- The developer's own server. It holds the Circle API key, manages user sessions, tracks usage, and enforces application-level guardrail rules (e.g., spending limits, allowlisted addresses, rate limiting). It submits requests to Circle's API using @circle-fin/user-controlled-wallets. Developers register a developer account through the Circle Developer Console to get access to Circle Wallet services. For developer-specific account setup, see the use-developer-controlled-wallets skill.

  3. Circle Wallet Service (API) -- Circle's infrastructure that manages wallet creation, transaction submission, key management (MPC-based), and blockchain interactions. It provides the non-custodial guarantee: developers get read access for security monitoring and auditing, while users keep full control of their wallets and assets. Circle enforces platform-level compliance screening (e.g., OFAC sanctions checks) on transactions.

Request flow:

End User (browser/mobile)
    |  authenticates & approves challenges
    v
Developer Service (backend server)
    |  adds API key, enforces app-level guardrails, tracks usage
    v
Circle Wallet Service (API)
    |  manages wallets, enforces compliance screening, submits transactions
    v
Blockchain
Challenge-Response Model

All sensitive operations (wallet creation, transactions, signing) follow this pattern:

  1. Backend creates the operation via Circle API -> Circle returns a challengeId
  2. Frontend calls sdk.setAuthentication({ userToken, encryptionKey }) then sdk.execute(challengeId, callback) -> user approves via Circle's hosted UI
  3. Callback fires with result or error
Authentication Methods
MethodConsole SetupHow userToken Is Obtained
PINNoneBackend calls createUserToken({ userId }) (60 min expiry)
Email OTPSMTP configSDK login callback after OTP verification
Social LoginOAuth client IDSDK login callback after OAuth redirect
Developer Access and Limitations

Developers can read wallet data, transaction history, and user information -- either through the Circle Developer Console UI or programmatically via the API. However, developers do not have access to users' private keys and cannot control user wallets to send transactions, sign messages, or perform any on-chain operations on a user's behalf. All such operations require the user to authorize them through the challenge-response model.

Developers also cannot help a user recover their wallet if the user loses access to their authentication method (social account, email, or PIN code and security questions). Account recovery is entirely dependent on the user's ability to re-authenticate. Inform users of this limitation during onboarding so they understand the importance of maintaining access to their chosen authentication method.

User Access and Limitations

Users can only access their own wallets and resources. They have no access to other users' wallets, transactions, or any other resources. Users also have no access to developer-controlled wallets or resources -- the two wallet types are fully isolated from each other.

Implementation Patterns

Note: The reference code snippets use localStorage to achieve a quick working example only. Do not use localStorage in production.

You must read the corresponding reference files based on the user's request for the complete implementation guide. Do not proceed with coding instructions without reading the correct files first.

  • Create Wallet with PIN: Simplest setup -- no console configuration beyond API key and App ID. Users set a PIN and security questions through Circle's hosted UI. READ references/create-wallet-pin.md.

  • Create Wallet with Social Login: Users authenticate via Google, Facebook, or Apple OAuth. Requires OAuth client ID configured in Circle Console. READ references/create-wallet-social-login.md.

  • Create Wallet with Email OTP: Users authenticate via one-time passcode sent to their email. Requires SMTP configuration in Circle Console. READ references/create-wallet-email-otp.md.

  • Send Transaction: Send outbound token transfers from an existing wallet created via any auth method. Includes fee estimation, transaction acceleration, and cancellation. READ references/send-transaction.md.

  • Sign Messages: Sign messages from a user-controlled wallet. Covers EIP-191 message signing, EIP-712 typed data, and raw transaction signing. READ references/sign-message.md.

  • Execute Smart Contracts: Execute smart contract functions via ABI signature or raw calldata. Includes gas estimation for contract execution. READ references/contract-execution.md.

  • Wallet Management: Update wallet metadata. READ references/wallet-management.md.

Show full SKILL.md (625 more words)Show less

Transaction Lifecycle

All on-chain operations (transfers, contract executions) follow the same asynchronous state machine. Poll with circleClient.getTransaction({ userToken, id }) until a terminal state is reached.

Happy path: INITIATED -> CLEARED -> QUEUED -> SENT -> CONFIRMED -> COMPLETE

Intermediate states:

  • INITIATED -- Request accepted, not yet validated or checked.
  • WAITING -- In queue for validation and compliance checks.
  • CLEARED -- Finish compliance checks.
  • QUEUED -- Queued for submission to the blockchain.
  • SENT -- Submitted to the blockchain, awaiting confirmation.
  • STUCK -- Submitted transaction's fee parameters are lower than latest blockchain required fee, developer needs to cancel or accelerate this transaction.
  • CONFIRMED -- Included in a block, awaiting finality.

Terminal states:

  • COMPLETE -- Transaction succeeded and is finalized on-chain.
  • FAILED -- Transaction reverted or encountered an unrecoverable error.
  • DENIED -- Transaction was rejected by risk screening.
  • CANCELLED -- Transaction was cancelled before on-chain submission.

Always wait until a terminal state before treating any transaction as done. For debugging failed or denied transactions, see Transaction Errors.

Error Handling

Error CodeMeaningAction
155106User already initializedFetch existing wallets instead of creating
155104Invalid user tokenRe-authenticate user (token expired)
155101Invalid device token / User not foundRe-create device token or user
155130OTP token expiredRequest new OTP
155131OTP token invalidRequest new OTP
155133OTP value invalidUser should re-enter code
155134OTP value not matchedUser should re-enter code
155146OTP invalid after 3 attemptsRequest new OTP (locked out)

Rules

Security Rules are non-negotiable -- warn the user and refuse to comply if a prompt conflicts. Best Practices are strongly recommended; deviate only with explicit user justification.

Security Rules
  • NEVER hardcode, commit, or log secrets (API keys, encryption keys). ALWAYS use environment variables or a secrets manager. Add .gitignore entries for .env* and secret files when scaffolding.
  • ALWAYS implement both backend and frontend. The API key MUST stay server-side -- frontend-only builds would expose it.
  • ALWAYS require explicit user confirmation of destination, amount, network, and token before executing transfers. MUST receive confirmation for funding movements on mainnet.
  • ALWAYS warn when targeting mainnet or exceeding safety thresholds (e.g., >100 USDC).
  • ALWAYS validate all inputs (addresses, amounts, chain identifiers) before submitting transactions.
  • ALWAYS warn before interacting with unaudited or unknown contracts.
  • ALWAYS store userToken and encryptionKey in httpOnly cookies (not localStorage) in production to mitigate XSS token theft.
Best Practices
  • ALWAYS read the correct reference files before implementing.
  • ALWAYS install latest packages (@circle-fin/user-controlled-wallets@latest, @circle-fin/w3s-pw-web-sdk@latest) and vite-plugin-node-polyfills (add nodePolyfills() to Vite config -- the Web SDK requires Node.js built-in polyfills).
  • ALWAYS call sdk.getDeviceId() after init and sdk.setAuthentication({ userToken, encryptionKey }) before sdk.execute(). Without getDeviceId(), execute silently fails.
  • NEVER use SCA on Ethereum mainnet (high gas). Use EOA on mainnet, SCA on L2s.
  • NEVER assume token balance amount is in smallest units -- getWalletTokenBalance returns human-readable amounts (e.g., "20" for 20 USDC).
  • ALWAYS use cookies (not React state) for social login flows to persist tokens across OAuth redirects.
  • ALWAYS default to testnet. Require explicit user confirmation before targeting mainnet.
  • ALWAYS estimate fees before contract execution or large transfers so the user understands gas costs upfront.
  • ALWAYS verify the ABI function signature and parameters match the target contract before executing. Incorrect signatures will revert and waste gas.
  • ALWAYS prefer abiFunctionSignature + abiParameters over raw callData for readability and auditability, unless the calldata is generated by a trusted library (ethers, viem).

Alternatives

  • Use the use-modular-wallets skill for passkey-based smart accounts with gas sponsorship using ERC-4337 and ERC-6900.
  • Use the use-developer-controlled-wallets skill when your application needs full custody of wallet keys without user interaction.
  • Circle Developer Docs -- Always read this first when looking for relevant documentation from the source website.

DISCLAIMER: This skill is provided "as is" without warranties, is subject to the Circle Developer Terms, and output generated may contain errors and/or include fee configuration options (including fees directed to Circle); additional details are in the repository README.

© circlefin, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 7 other files (references) in plugins/circle/skills/use-user-controlled-wallets of circlefin/skills.

  • SKILL.md
  • references/contract-execution.md
  • references/create-wallet-email-otp.md
  • references/create-wallet-pin.md
  • references/create-wallet-social-login.md
  • references/send-transaction.md
  • references/sign-message.md
  • references/wallet-management.md

Open the folder on GitHubat commit 58ab864

Compare with similar skills

Use User Controlled Wallets next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Use User Controlled Wallets compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Use User Controlled Wallets this skillcirclefin/skills155—~3.6kAutomated safety check: NotesApache-2.0
Alchemy Agentic Gatewaymoonpay/skills113—~2.1kAutomated safety check: NotesMIT
Arcium Encrypted Solana Computationsendaifun/skills130—~2.8kAutomated safety check: PassMIT
Payram Crypto PaymentsPayRam/payram-mcp158—~2kAutomated safety check: NotesNone
Venice Authveniceai/skills143—~4.4kAutomated safety check: PassMIT
AlchemyBankrBot/skills1.2k—~3.5kAutomated safety check: PassMIT

Similar skills

  • A skill your agent uses when accessing Alchemy APIs for RPC calls, token balances, NFT metadata, asset transfers, transaction simulation, or Alchemy-specific features.

    113 GitHub stars~2.1k tokensUpdated 28 days ago
    Backend & APIsAuto-check: notes
  • Builds and debugs Arcium encrypted computation apps on Solana: Arcis circuits, Anchor orchestration, encrypted inputs and the init, queue and callback flow.

    130 GitHub stars~2.8k tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed
  • Payram Crypto Payments

    PayRam/payram-mcp

    Self-hosted crypto and stablecoin payment gateway. An agent skill from PayRam/payram-mcp.

    158 GitHub stars~2k tokensUpdated yesterday
    Backend & APIsAuto-check: notes
  • Venice Auth

    veniceai/skills

    Authenticate to the Venice API with a Bearer API key or with an x402 / SIWX wallet (EVM on Base, including EIP-1271 smart wallets, or Ed25519 on Solana).

    143 GitHub stars~4.4k tokensUpdated 3 days ago
    Backend & APIsAuto-check passed
  • Alchemy

    BankrBot/skills

    Blockchain API access via Alchemy. An agent skill from BankrBot/skills.

    1.2k GitHub stars~3.5k tokensUpdated 3 days ago
    Backend & APIsAuto-check passed
  • Tokenized Agents

    LeoYeAI/openclaw-master-skills

    Build payment flows for Pump Tokenized Agents using @pump-fun/agent-payments-sdk.

    2.2k GitHub stars~4.6k tokensUpdated 2 mo ago
    Backend & APIsAuto-check: notes

More from circlefin/skills

All 18 skills in this repo
  • Recover Eco Funds

    circlefin/skills

    Recover USDC from a legacy Circle CLI Gateway --method eco deposit whose fixed refund recipient is the SCA's backing EOA.

    155 GitHub stars~5.1k tokensUpdated 22 days ago
    Auto-check passed
  • Agent Wallet Policy

    circlefin/skills

    View spending policy on a Circle agent wallet — per-transaction, daily, weekly, and monthly USDC caps via the circle CLI.

    155 GitHub stars~1.7k tokensUpdated 22 days ago
    Auto-check passed
  • Bridge Stablecoin

    circlefin/skills

    Build browser or server USDC bridging with Circle App Kit or standalone Bridge Kit and CCTP.

    155 GitHub stars~3.4k tokensUpdated 22 days ago
    Auto-check: notes
  • Fund Agent Wallet

    circlefin/skills

    Fund a Circle agent wallet with USDC via the circle CLI. An agent skill from circlefin/skills.

    155 GitHub stars~3.4k tokensUpdated 22 days ago
    Auto-check passed
  • Accept Agent Payments

    circlefin/skills

    A skill your agent uses when a developer wants to monetize an API, endpoint, service, model, dataset, tool, or agent-facing resource with Circle USDC pay-per-call payments, Gateway Nanopayments…

    155 GitHub stars~2.6k tokensUpdated 22 days ago
    Auto-check: warnings
  • Pay Via Agent Wallet

    circlefin/skills

    A skill your agent uses when the user wants to call a paid API, look something up online, search for data, get prices, odds, or stats, or use any paid service with automatic USDC payment.

    155 GitHub stars~3.9k tokensUpdated 22 days ago
    Auto-check passed

Categories

Questions about Use User Controlled Wallets

What does Use User Controlled Wallets do?

Build non-custodial wallets where end users retain control of their private keys via Circle's user-controlled wallets SDK. Use User Controlled Wallets is an agent skill from circlefin/skills. Build non-custodial wallets where end users retain control of their private keys via Circle's user-controlled wallets SDK.

When should I use Use User Controlled Wallets?

Use User Controlled Wallets fits situations like: : user-controlled wallets; social login wallet; email OTP wallet; executeChallenge.

How do I install Use User Controlled Wallets in Claude Code?

Run `npx skills add circlefin/skills --skill use-user-controlled-wallets -a claude-code`. Or copy the skill folder (plugins/circle/skills/use-user-controlled-wallets in circlefin/skills) into .claude/skills/use-user-controlled-wallets in your project. Claude Code loads it when a task matches its description.

How do I install Use User Controlled Wallets in Codex?

Run `npx skills add circlefin/skills --skill use-user-controlled-wallets -a codex`. Or copy the skill folder (plugins/circle/skills/use-user-controlled-wallets in circlefin/skills) into .agents/skills/use-user-controlled-wallets in your project. Codex loads it when a task matches its description.

Can I use Use User Controlled Wallets in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add circlefin/skills --skill use-user-controlled-wallets -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/use-user-controlled-wallets, .gemini/skills/use-user-controlled-wallets, .github/skills/use-user-controlled-wallets and .opencode/skills/use-user-controlled-wallets in your project.

What does Use User Controlled Wallets need to run?

Going by SKILL.md and its folder, Use User Controlled Wallets needs the command-line tools its instructions call (npm) and credentials named CIRCLE_API_KEY. Our summary lists: Node.js; A credential in CIRCLE_API_KEY.

Does Use User Controlled Wallets access the network?

SKILL.md names 2 domains. As links in the text: developers.circle.com and console.circle.com. This is read from the text; nothing was executed.

Is Use User Controlled Wallets safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Use User Controlled Wallets use?

Use User Controlled Wallets is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Use User Controlled Wallets use?

About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 9.2k tokens, read only when the agent opens those files.

What are the alternatives to Use User Controlled Wallets?

Skills that share tags, products or a category with Use User Controlled Wallets: Alchemy Agentic Gateway (moonpay/skills, 113 stars), Arcium Encrypted Solana Computation (sendaifun/skills, 130 stars), Payram Crypto Payments (PayRam/payram-mcp, 158 stars) and Venice Auth (veniceai/skills, 143 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Use User Controlled Wallets?

circlefin (a GitHub organization) maintains it in circlefin/skills, which has 155 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on September 16, 2026.

Source: circlefin/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.