Install
openclaw skills install lista-wallet-connectConnect wallets via WalletConnect v2 and execute EVM signing/contract-call operations on Ethereum and BSC.
openclaw skills install lista-wallet-connectStatus: Pre-release (internal only, not in public registry) Agent quick check:
node dist/cli/cli.bundle.mjs versionAgent rebuild:npm install && npm run build
Wallet connection and transaction bridge skill for EVM (eip155:1, eip155:56).
skills/lista-wallet-connect/
├── SKILL.md
├── package.json
├── tsconfig.json
├── references/
│ └── chains.md
└── src/
├── cli/ # args/help/meta/router/env
├── commands/ # pair/auth/sign/call/...
│ └── call/ # parse/simulate/constants
├── client.ts
├── storage.ts
├── helpers.ts
├── rpc.ts
├── types.ts
└── cli.ts # CLI entrypoint
Notes:
src/cli.ts stays as the entrypoint; argument parsing/help/dispatch are split under src/cli/*.src/commands/call/* (parse, simulate, constants).Use prebuilt dist/ by default for faster startup.
cd skills/lista-wallet-connect
# ensure Node.js >= 18 (recommended >= 20)
node -v
node dist/cli/cli.bundle.mjs version
Only run install/build when dist/ is missing or version check fails:
cd skills/lista-wallet-connect
npm install
npm run build
node dist/cli/cli.bundle.mjs version
Set WalletConnect project id:
export WALLETCONNECT_PROJECT_ID=c9e9af475f95d71b87da341e0b1e2237
Default project id is already included in skills/lista-wallet-connect/.env.
You can override it by exporting WALLETCONNECT_PROJECT_ID in your shell.
node dist/cli/cli.bundle.mjs <command> ...stdout: JSON payloads for automation/agent parsingstderr: progress/diagnostic logswaiting_for_approval event first, then a terminal status (paired/authenticated/signed/sent/rejected/simulation_failed/error).--debug-log-file <path> to append structured stdout/stderr logs (jsonl).eip155:1, eip155:56) for stable machine parsing and troubleshooting.eip155:1 -> Ethereum, eip155:56 -> BSC) in rendered text/tables.pair, auth, sign, sign-typed-data, call) as long-running streams.status: "waiting_for_approval"; this is an interim event only.paired, authenticated, signed, sent, rejected, simulation_failed, error.pair, always try image delivery first (qrPath attachment, then qrMarkdown if supported).uri (wc:) when image rendering/delivery is unsupported or fails.deliveryPlan in the waiting payload as the source of truth for this fallback order.openclaw.mediaDirective exists, emit that MEDIA:<path> line as the image-send directive.openclaw.fallbackUri (wc: URI) as text.interactionRequired: true, show a user reminder immediately (once per request) using userReminder text, e.g. "Please approve/reject in your wallet app."eip155:1 (Ethereum)eip155:56 (BSC)call simulation by default; avoid --no-simulate unless user insists.pairstatusauthsignsign-typed-datacallsessionslist-sessionswhoamidelete-sessionhealthversionAll command snippets below are for agent execution; do not instruct the user to type them manually.
pairPurpose: Start WalletConnect pairing flow.
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs pair --chains eip155:56
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs pair --chains eip155:56,eip155:1
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs pair --chains eip155:56 --open
Behavior:
status: "waiting_for_approval" with uri, qrPath, qrMarkdown, deliveryPlan, openclaw, plus guidance fields.status: "paired" with message, topic, accounts, peerName, pairedAt, and summary.statusPurpose: Check whether a stored session exists.
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs status --topic <topic>
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs status --address 0xADDRESS
authPurpose: Request a consent signature and mark session as authenticated.
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs auth --topic <topic>
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs auth --address 0xADDRESS
signPurpose: Sign an arbitrary message (personal_sign).
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs sign --topic <topic> --message "Hello"
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs sign --address 0xADDRESS --message "Hello" --chain eip155:56
sign-typed-dataPurpose: Sign EIP-712 typed data (eth_signTypedData_v4).
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs sign-typed-data --topic <topic> --data '{"domain":...,"types":...,"message":...}'
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs sign-typed-data --address 0xADDRESS --data @/path/to/typed-data.json --chain eip155:1
callPurpose: Send arbitrary contract transaction (eth_sendTransaction) with optional calldata and value.
Key points:
eth_call before sending by default.status: "simulation_failed" and does not send tx.--no-simulate only when you intentionally want to bypass simulation.--value accepts hex wei (0x...) or native decimal string (for example 0.01).Examples:
# contract call with calldata
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs call --topic <topic> --chain eip155:56 --to 0xCONTRACT --data 0xCALLDATA
# with native value
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs call --topic <topic> --chain eip155:56 --to 0xCONTRACT --data 0xCALLDATA --value 0.01
# custom gas
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs call --topic <topic> --chain eip155:56 --to 0xCONTRACT --data 0xCALLDATA --gas 500000
# force send without simulation (risky)
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs call --topic <topic> --chain eip155:56 --to 0xCONTRACT --data 0xCALLDATA --no-simulate
sessionsPurpose: Dump raw saved sessions JSON (internal/debug usage).
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs sessions
list-sessionsPurpose: Human-readable session listing.
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs list-sessions
whoamiPurpose: Show account details for a session, or latest session if omitted.
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs whoami --topic <topic>
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs whoami --address 0xADDRESS
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs whoami
delete-sessionPurpose: Remove a saved session entry.
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs delete-session --topic <topic>
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs delete-session --address 0xADDRESS
healthPurpose: Ping session(s) for liveness and optionally clean dead sessions.
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs health --topic <topic>
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs health --address 0xADDRESS
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs health --all
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs health --all --clean
versionPurpose: Print skill version.
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs version
--address <0x...>: resolve and use latest session matching address--topic <topic>: explicit session topic--chain <eip155:1|eip155:56>--open (pair): force open QR image in system viewer--no-simulate (call): bypass simulation~/.agent-wallet/wc-store/~/.agent-wallet/sessions.json# 1) pair
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs pair --chains eip155:56,eip155:1 --open
# 2) auth
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs auth --topic <topic>
# 3) verify
node skills/lista-wallet-connect/dist/cli/cli.bundle.mjs whoami --topic <topic>
lista-lending executes transactions by calling this skill's call command.stderr from both skills.