Natural language to unsigned DeFi transactions across 13 protocols.
npx claudepluginhub nethermindeth/defi-skillsNatural language to unsigned DeFi transactions. Translates intents into transaction payloads across 13 protocols (Aave, Lido, Uniswap, Curve, Compound, MakerDAO, Rocket Pool, EigenLayer, Balancer, Pendle, WETH, ERC-20, ERC-721). Deterministic, no signing, no private keys.
Share bugs, ideas, or general feedback.
Beta: This project is under active development.
Translate natural language into unsigned DeFi transaction payloads. A data-driven playbook engine resolves human-readable parameters (token symbols, ENS names, decimal amounts) into ABI-encoded calldata, with zero protocol-specific code in the engine.
13 protocols. 53 actions. All driven by JSON playbooks.
https://github.com/user-attachments/assets/cdc2fd63-b007-40a4-900e-a6f775b6e9fa
pip install defi-skills --extra-index-url https://nethermind.jfrog.io/artifactory/api/pypi/kyoto-pypi-local-prod/simple
git clone https://github.com/NethermindEth/defi-skills
cd defi-skills
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
defi-skills config setup # interactive wizard
defi-skills actions # list all supported actions
These examples work with no API keys at all (tokens resolved from local cache):
defi-skills build --action aave_supply --args '{"asset":"USDC","amount":"500"}'
defi-skills build --action lido_stake --args '{"amount":"5"}' --json
defi-skills build --action weth_wrap --args '{"amount":"2"}' --json
Actions that need on-chain data (swaps, "max" amounts, ENS names) require ALCHEMY_API_KEY:
defi-skills build --action uniswap_swap --args '{"asset_in":"WETH","asset_out":"USDC","amount":"0.5"}' --json
defi-skills chat
defi-skills chat --model gpt-5.1
defi-skills chat --stream # raw text streaming instead of formatted output
An interactive agent that understands natural language, plans multi-step operations, and calls the deterministic engine via tool use. It discovers actions, checks parameters, and builds transactions. Type /help inside the chat for commands.
By default, responses are rendered with formatted Markdown after the LLM finishes. Use --stream for raw real-time text output, or persist the preference with defi-skills config set stream_responses true.
Transaction simulation (fork mainnet via Anvil, execute, report gas/transfers/balance changes) is implemented and available for manual testing via defi-skills simulate, but is not yet exposed to the chat agent or skill files. This is actively being worked on.
This tool is built to be used by AI agents. It ships as a skill that any agent with shell access can pick up and use to build DeFi transactions deterministically, with no LLM running inside the CLI.
--action and --args (deterministic, no API key needed)The agent is the LLM. The CLI is the execution engine. No LLM runs inside the CLI in this flow.
Ready-made skill files are included for both Claude Code and OpenClaw:
| Agent | Skill location |
|---|---|
| Claude Code | .claude/skills/intent-to-transaction/SKILL.md |
| OpenClaw / generic agents | openClaw-Skill/SKILL.md |
Both contain the same instructions. Copy the appropriate file into your project and ensure defi-skills is installed with WALLET_ADDRESS set. The agent can then invoke it naturally:
"Supply 100 USDC to Aave" "Swap 0.5 ETH for USDC on Uniswap" "Buy PT for wstETH on Pendle"
The agent workflow is always: discover actions (defi-skills actions --json), check parameters (defi-skills actions <name> --json), build transaction (defi-skills build --action <name> --args '{...}' --json).
If you use Claude Code, you can install the skill directly as a plugin:
/plugin marketplace add NethermindEth/defi-skills
/plugin install defi-skills@nethermind-defi-skills
After installing, invoke it with:
/intent-to-transaction
Agents already have an LLM (themselves). Running a second LLM inside the CLI would be redundant, slower, and more expensive. The --action + --args path uses zero LLM tokens and gives agents full control over intent classification while the engine handles the hard parts: token resolution, decimal conversion, ABI encoding, and approval handling.
The CLI has two modes. The build command is purely deterministic (no LLM). The chat command adds an interactive LLM agent on top.
