Skills agent-wallet
Route wallet workflows for agents that need to generate or import wallets using either a seed phrase or private key. Use when the user asks for wallet creation, import, recovery, or key-based onboarding.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/beardkoda/agent-wallets" ~/.claude/skills/openclaw-skills-agent-wallet && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/beardkoda/agent-wallets" ~/.openclaw/skills/openclaw-skills-agent-wallet && rm -rf "$T"
manifest:
skills/beardkoda/agent-wallets/SKILL.mdsource content
Agent Wallet Skills
Purpose
Use this skill as the main entrypoint for wallet setup workflows.
Runtime Requirements
- Runtime: Node.js 18+ (or equivalent TS/JS runtime)
- Required package:
viem - Network access: RPC endpoint for the target chain
- Secret storage: vault, key manager, or encrypted secret store
Required Secrets / Inputs
for chain reads/writesRPC_URL
only when user explicitly chooses mnemonic import/signingSEED_PHRASE
only when user explicitly chooses private key import/signingPRIVATE_KEY- Agent must ask for confirmation before reading env-based secrets
Wallet Type -> Skill Location Map
- Local wallet (generate/import with seed phrase or private key): local-wallet/SKILL.md
- Check native/token balance (
): local-wallet/balance/SKILL.mdviem - Send transaction with existing wallet (
): local-wallet/send/SKILL.mdviem
Routing Logic
- Check if the agent already has a wallet configured:
- if wallet exists, use existing wallet flow
- if wallet does not exist, run wallet generation flow (step 2)
- Wallet generation flow (no existing wallet):
- ask preferred method: seed phrase or private key import
- if user does not provide a method, default to generating a new seed phrase wallet
- generate/import with
account helpers inviemlocal-wallet/SKILL.md - derive address/public key and persist via the project's secure secret mechanism
- Identify the wallet input type from the user request:
- mnemonic / seed phrase words
- hex private key string
- request to generate a new wallet
- Route by wallet type to the mapped location:
->seed phraselocal-wallet/SKILL.md
->private keylocal-wallet/SKILL.md
->check balancelocal-wallet/balance/SKILL.md
->send transactionlocal-wallet/send/SKILL.md
- If input type is unclear, ask one focused question:
- "Do you want to use a seed phrase or a private key?"
No Wallet Exists (Viem Flow)
When the agent has no wallet configured, create one with
viem before continuing.
Preferred default (generate new private key wallet)
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts' const privateKey = generatePrivateKey() const account = privateKeyToAccount(privateKey) // Persist privateKey via secure secret storage only (env vault, key manager, etc.) // Use account.address as the agent wallet address.
Optional seed phrase path
- If user explicitly asks for seed phrase-based setup, follow
seed phrase flow.local-wallet/SKILL.md - Derive the account/address and store secret material in secure secret storage.
Required checks after generation
- Wallet address exists and is valid format for the target chain.
- Secret material is stored securely and never echoed in plaintext.
- Agent metadata references the new wallet address for future operations.
Shared Safety Rules
- Never print full seed phrases or private keys in outputs, logs, or summaries.
- Mask secrets when showing examples (for example
).ab12...9f - Prefer offline generation/import steps where possible.
- Remind users to back up secrets in a secure location.
- Default to read-only actions until user explicitly asks to send/broadcast.
- If chain is not provided, default to a testnet and state that choice.
- Never broadcast immediately after simulation without explicit confirmation.
Completion Requirements
Before finishing:
- confirm wallet address/public key was derived successfully
- confirm secret material was not exposed in plain text
- if wallet was missing, confirm a new wallet was created and stored securely
- provide next action (backup, test transaction, or network config)
Standard Response Contract
Return this structure across all wallet skills:
:action
|generate
|import
|balancesend
: chain id/name usedchain
: active wallet or queried addressaddress
: transaction hash when available, elsetxHashnull
:status
|success
|failedneeds_confirmation
: one clear follow-up actionnext_step