Lista Lending Skill (POC)
SkillDev toolsView and operate Lista Lending vaults/markets. Use when user asks about LENDING-ONLY positions or wants to deposit/withdraw/borrow/repay. For report-style overview, use lista instead.
Use Lista Lending Skill (POC) in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Lista Lending Skill (POC) and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Lista Lending Skill (POC)
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by leoyeai/openclaw-master-skills in skills/lista-lending/SKILL.md and read by Ahel’s review.
Status: Pre-release (internal only, not in public registry) Agent quick check:
node dist/cli/cli.bundle.mjs versionAgent rebuild:npm install && npm run build
Execute Lista Lending vault and market operations through @lista-dao/moolah-lending-sdk, with transaction sending delegated to lista-wallet-connect.
Agent Execution Policy
- Execute CLI/setup commands directly as the agent; do not ask the user to run shell commands.
- If dependencies/build are missing or outdated, run setup/build automatically.
- Before any signing or on-chain write action, explain the action and get user consent.
- Do not output raw JSON/internal payloads to users by default; convert results into human-readable summaries/tables.
- Use command snippets in this document as agent-side execution references only.
When to Use This Skill
This skill handles LENDING-SPECIFIC viewing and operations.
✅ Use when user wants to:
1. View LENDING positions only:
- "Check my lending positions"
- "Show my Lista vaults"
- "What's in my lending markets"
- "My collateral in lending vaults"
2. Execute lending operations:
- "Deposit 100 USDT to Lista vault"
- "Withdraw from my Lista vault"
- "Borrow against my collateral"
- "Repay my lending debt"
- "Find best lending yield"
❌ Do NOT use for:
- All-product/report-style overview → Use
lista - "Check ALL my Lista positions" (report view) → Use
lista - "My total Lista collateral/debt" (summary-style answer) → Use
lista
Key difference:
lista: VIEW report-style lending analytics and summarieslista-lending: VIEW/OPERATE lending only (vaults + markets)lista-wallet-connect: Wallet operations (connect/sign/call)
Routing Priority (Required)
Apply these routing rules before running commands:
- Wallet/session/signing issues (
pair,auth,sign,topic,session) →lista-wallet-connect - Lending write operations (
deposit,withdraw,supply,borrow,repay,market-withdraw) →lista-lending - Lending actionable reads (
holdings,vaults,marketsfor selection/filtering/follow-up execution) →lista-lending - Report/narrative analysis (
position report,risk check,daily digest, high-level market/vault summary) →lista
Ambiguous intent handling:
check my positions: if user asks for operation follow-up or lending-only detail, uselista-lending; otherwise uselista.market list/vault list: if user needs execution target selection, uselista-lending; if user only wants macro overview, uselista.
Scope
Supported capabilities:
- Vault:
vaults,select --vault,deposit,withdraw - Market:
markets,select --market,supply,borrow,repay,market-withdraw - Portfolio:
holdings - Runtime/config:
config,version
Not in scope:
- CDP operations
- Non-EVM chains
Temporary Limitations
Current unsupported market types for trade actions (select/supply/borrow/repay/market-withdraw):
- SmartLending markets (
zone === 3) - Fixed-term markets (
termType === 1)
Behavior:
marketscommand filters them out from list output.select --marketrejects them withunsupported_market_type.holdingsstill returns them (for full portfolio visibility) and marks:isSmartLendingisFixedTermisActionable
Project Structure
skills/lista-lending/
├── SKILL.md
├── package.json
├── tsconfig.json
└── src/
├── cli/ # args/help/meta/run
├── api/ # vault/market/user read-side queries
├── sdk/ # SDK client + market runtime prefetch
├── executor/ # tx execution + receipt polling
├── commands/ # command handlers
│ ├── shared/ # context/errors/output/tx helpers
│ ├── select/
│ ├── borrow/
│ └── repay/
├── presenters/
├── utils/
├── config.ts
├── context.ts
├── api.ts # API facade export
├── sdk.ts # SDK facade export
├── executor.ts # executor facade export
└── cli.ts # CLI entrypoint
Notes:
- CLI parsing/routing lives in
src/cli/*and keepssrc/cli.tsas the single entrypoint. - Read-side querying is split by domain in
src/api/*(vault,market,user). - SDK integration is centralized in
src/sdk/client.ts; market runtime prefetch is insrc/sdk/market-runtime.ts. borrowandrepayare split into dedicatedsimulateandexecutemodules to keep command files small.
Prerequisites
- Wallet is paired via
lista-wallet-connectskill. - You have a valid
wallet-topicandwallet-address. - Node.js version is
>= 18.0.0(recommended>= 20). lista-wallet-connectis built (skills/lista-wallet-connect/dist/cli/cli.bundle.mjsexists).lista-lendingis built (skills/lista-lending/dist/cli/cli.bundle.mjsexists).
Setup (Agent-Run)
Use prebuilt dist/ by default for faster startup.
cd skills/lista-lending
# 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-lending
npm install
npm run build
node dist/cli/cli.bundle.mjs version
Fallback for local debugging (non-bundled output):
cd skills/lista-lending
npm run build
node dist/cli.js version
If skills/lista-wallet-connect/dist/cli/cli.bundle.mjs is missing, rebuild wallet-connect as well:
cd skills/lista-wallet-connect
npm install
npm run build
Agent execution path:
cd skills/lista-lending
node dist/cli/cli.bundle.mjs <command> [options]
Output Contract
stdout: machine-readable JSON (result payload)stderr: errors only- Optional debug mode: add
--debug-log-file <path>to append structuredstdout/stderrlogs (jsonl).
Agent Display Guidelines
For user-facing answers, keep CLI JSON as internal source of truth, then render human-readable tables/summaries. Return raw JSON only when the user explicitly asks for raw output.
vaults recommended columns:
Vault,Asset,TVL (USD),APY,Curator
markets recommended columns:
Collateral,Loan,LLTV,Borrow Rate,Liquidity (USD)
holdings recommended structure:
- Summary block first: total vault count, total market count, actionable market count, unsupported market count.
- Vault table columns:
Vault,Chain,Deposited,Deposited USD,APY,Wallet Balance
- Actionable market table columns:
Market,Chain,Collateral USD,Borrowed USD,LTV,Health
- Unsupported market table columns (non-technical by default):
Market,Chain,Reason,Collateral USD,Borrowed USD
Default rule:
- Use different table layouts for different commands (
vaults,markets,holdings); do not reuse holdings layout for vault/market list pages. - Keep CLI/runtime JSON and debug logs in raw format (for example
eip155:56,eip155:1) for stable machine parsing and debugging. - For user-facing text/tables, map chain IDs to names (
eip155:1->Ethereum,eip155:56->BSC). - Do not show
zone/termTypein user-facing table unless user explicitly asks for technical details. - Do not paste full raw payloads (JSON/RPC internals) in normal user-facing replies.
- Derive
Reasonfrom flags:isSmartLending => SmartLendingisFixedTerm => Fixed-term
Health definition (for market positions):
- Formula:
health = LLTV / LTVwhenLTV > 0; otherwisehealth = 100. - Display label suggestion:
Healthy:health >= 1.2Warning:1.0 <= health < 1.2Risk:health < 1.0
- Action hint: if label is
WarningorRisk, suggest repay/reduce borrow.
Supported Chains
eip155:56(BSC, default)eip155:1(Ethereum)
Command Index
version- show skill version and compatibility hintsconfig- read/update RPC settingsvaults- list vaults with filtersmarkets- list markets with filters (SmartLending/fixed-term filtered)holdings- query user positions across vault + marketselect- set active vault or market contextdeposit- deposit to selected/explicit vaultwithdraw- withdraw from selected/explicit vaultsupply- supply collateral to selected/explicit marketborrow- simulate or execute borrowrepay- simulate or execute repaymarket-withdraw- withdraw supplied collateral from selected/explicit market
Global/Shared Options
--chain <eip155:56|eip155:1>--wallet-topic <topic>--wallet-address <0x...>
Command Details
All command snippets below are for agent execution; do not instruct the user to type them manually.
1) version
Purpose: Print skill version and dependency constraints.
node dist/cli/cli.bundle.mjs version
2) config
Purpose: Manage RPC override.
Examples:
# show config
node dist/cli/cli.bundle.mjs config --show
# set rpc override
node dist/cli/cli.bundle.mjs config --set-rpc --chain eip155:56 --url https://bsc-mainnet.nodereal.io/v1/<key>
# clear rpc override
node dist/cli/cli.bundle.mjs config --clear-rpc --chain eip155:56
Notes:
- Config file:
~/.agent-wallet/lending-config.json - Chain fallback RPCs are still used if primary RPC fails.
3) vaults
Purpose: Discover vaults from SDK list API.
Common options:
--page,--page-size,--sort,--order--zone,--keyword--assets <a,b>,--curators <a,b>
Examples:
node dist/cli/cli.bundle.mjs vaults
node dist/cli/cli.bundle.mjs vaults --chain eip155:1
node dist/cli/cli.bundle.mjs vaults --sort apy --order desc --page 1 --page-size 10
node dist/cli/cli.bundle.mjs vaults --assets 0x8d0d...,0x55d3... --curators "Lista DAO,Pangolins"
4) markets
Purpose: Discover markets from SDK list API.
Common options:
--page,--page-size,--sort,--order--zone,--keyword--loans <a,b>,--collaterals <a,b>
Examples:
node dist/cli/cli.bundle.mjs markets
node dist/cli/cli.bundle.mjs markets --chain eip155:56 --sort liquidity --order desc --page-size 20
node dist/cli/cli.bundle.mjs markets --loans USD1,USDT --collaterals USD1,BTCB
Notes:
- Command filters out SmartLending (
zone=3) and fixed-term (termType=1) markets in output. - Always include this user-facing note when presenting market list:
Smart Lending and fixed-term market operations are currently not supported in this skill. For full functionality, please use the Lista website.
5) holdings
Purpose: Query positions by wallet address.
Options:
--address <0x...>(optional if context already hasuserAddress)--scope <all|vault|market|selected>
Examples:
# all positions (vault + market)
node dist/cli/cli.bundle.mjs holdings --address 0xYOUR_ADDRESS
# only vault positions
node dist/cli/cli.bundle.mjs holdings --address 0xYOUR_ADDRESS --scope vault
# only market positions
node dist/cli/cli.bundle.mjs holdings --address 0xYOUR_ADDRESS --scope market
# only currently selected position
node dist/cli/cli.bundle.mjs holdings --scope selected
Market position fields include:
- User-facing fields:
isSmartLending(zone === 3)isFixedTerm(termType === 1)isActionable(!isSmartLending && !isFixedTerm)
- Raw JSON technical fields (debug/integration only):
zone,termType
6) select
Purpose: Persist active target in context for follow-up operations.
Modes:
- select vault:
--vault - select market:
--market - read context:
--show - clear context:
--clear
Examples:
# select vault
node dist/cli/cli.bundle.mjs select \
--vault 0xfa27f172e0b6ebcef9c51abf817e2cb142fbe627 \
--chain eip155:56 \
--wallet-topic <topic> \
--wallet-address 0xYOUR_ADDRESS
# select market
node dist/cli/cli.bundle.mjs select \
--market 0xd384584abf6504425c9873f34a63372625d46cd1f2e79aeedc77475cacaca922 \
--chain eip155:56 \
--wallet-topic <topic> \
--wallet-address 0xYOUR_ADDRESS
# show/clear
node dist/cli/cli.bundle.mjs select --show
node dist/cli/cli.bundle.mjs select --clear
Notes:
- Market selection rejects SmartLending and fixed-term markets.
- Context file:
~/.agent-wallet/lending-context.json
7) deposit
Purpose: Deposit vault asset.
Required:
--amount- plus either selected vault context or explicit
--vault+ wallet info
Example:
# using selected vault
node dist/cli/cli.bundle.mjs deposit --amount 1
# explicit target
node dist/cli/cli.bundle.mjs deposit \
--vault 0xVAULT \
--amount 1 \
--chain eip155:56 \
--wallet-topic <topic> \
--wallet-address 0xYOUR_ADDRESS
8) withdraw
Purpose: Withdraw vault asset.
Required:
- one of
--amountor--withdraw-all
Examples:
node dist/cli/cli.bundle.mjs withdraw --amount 0.5
node dist/cli/cli.bundle.mjs withdraw --withdraw-all
9) supply
Purpose: Supply market collateral.
Required:
--amount- plus selected market context or explicit market/wallet parameters
Example:
node dist/cli/cli.bundle.mjs supply --amount 2
10) borrow
Purpose: Borrow loan token, or simulate borrow capacity.
Modes:
- simulate only:
--simulate - simulate with hypothetical supply:
--simulate --simulate-supply <amt> - execute borrow:
--amount <amt>
Examples:
# check max borrowable
node dist/cli/cli.bundle.mjs borrow --simulate
# check max after hypothetical supply
node dist/cli/cli.bundle.mjs borrow --simulate --simulate-supply 2
# execute borrow
node dist/cli/cli.bundle.mjs borrow --amount 0.01
11) repay
Purpose: Repay market debt, or simulate repay impact.
Modes:
- simulate repay amount:
--simulate --amount <amt> - simulate repay-all:
--simulate --repay-all - execute repay:
--amount <amt>or--repay-all
Examples:
# simulate partial repay impact
node dist/cli/cli.bundle.mjs repay --simulate --amount 0.01
# simulate full repay impact
node dist/cli/cli.bundle.mjs repay --simulate --repay-all
# execute
node dist/cli/cli.bundle.mjs repay --amount 0.01
node dist/cli/cli.bundle.mjs repay --repay-all
12) market-withdraw
Purpose: Withdraw market collateral.
Required:
- one of
--amountor--withdraw-all
Examples:
node dist/cli/cli.bundle.mjs market-withdraw --amount 0.5
node dist/cli/cli.bundle.mjs market-withdraw --withdraw-all
Transaction Behavior
- Transactions are built by SDK and executed through
lista-wallet-connectcallcommand. callperforms simulation by default before requesting wallet signature.- If simulation fails, result is returned as error/reverted and no signing request is sent.
- If user rejects in wallet, command returns
status: "rejected", reason: "user_rejected". - For multi-step operations (approve + action), responses include completed step count and failed/pending step.
Typical Workflows
Vault flow
# 1) discover
node dist/cli/cli.bundle.mjs vaults --chain eip155:56
# 2) select
node dist/cli/cli.bundle.mjs select --vault 0xVAULT --wallet-topic <topic> --wallet-address 0xADDR
# 3) operate
node dist/cli/cli.bundle.mjs deposit --amount 1
node dist/cli/cli.bundle.mjs withdraw --amount 0.5
Market flow
# 1) discover
node dist/cli/cli.bundle.mjs markets --chain eip155:56
# 2) select
node dist/cli/cli.bundle.mjs select --market 0xMARKET --wallet-topic <topic> --wallet-address 0xADDR
# 3) operate
node dist/cli/cli.bundle.mjs supply --amount 2
node dist/cli/cli.bundle.mjs borrow --simulate
node dist/cli/cli.bundle.mjs borrow --amount 0.01
node dist/cli/cli.bundle.mjs repay --simulate --amount 0.01
node dist/cli/cli.bundle.mjs repay --amount 0.01
node dist/cli/cli.bundle.mjs market-withdraw --amount 1
Security Checklist
- Confirm token symbol and amount with user before any state-changing action.
- Confirm chain (
eip155:56vseip155:1) before sending tx. - Prefer
borrow --simulatebefore first borrow on a market. - Treat
user_rejectedas normal user decision, not protocol failure.
Signals
- GitHub stars
- 2k
- Forks
- 325
- Last commit
- Jul 2026
Ahel review
K1binfo
installs-packagesK1binfo
installs-packages (in dist/cli/run.js)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
lista-lending- Source
- github.com/leoyeai/openclaw-master-skills
github.com/leoyeai/openclaw-master-skills
Related picks
Skill · thedaviddias
The pick for JavaScriptmodern-javascript-patterns
Skill · wshobson
The pick for JavaScriptsetup-ts-deep-modules
Skill · mattpocock
The pick for TypeScripttypescript-pro
Skill · jeffallan
The pick for TypeScriptteach
Skill · mattpocock
More in Dev toolscaveman
Skill · juliusbrussee
More in Dev tools