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/aviclaw/zeroex-swap" ~/.claude/skills/clawdbot-skills-zeroex-swap && rm -rf "$T"
manifest:
skills/aviclaw/zeroex-swap/SKILL.mdsource content
ZeroEx Swap Skill
⚠️ SECURITY WARNING: This skill involves real funds. Review all parameters before executing swaps.
Install
cd skills/zeroex-swap npm install
Required Environment Variables
| Variable | Description | Required |
|---|---|---|
| Get from https://dashboard.0x.org/ | Yes |
| Wallet private key (hex, without 0x prefix) | Yes |
| RPC endpoint for chain (optional, defaults provided) | No |
Declared required env vars:
ZEROEX_API_KEY, PRIVATE_KEY
export ZEROEX_API_KEY="your-0x-api-key" export PRIVATE_KEY="your-private-key-hex" export RPC_URL="https://mainnet.base.org" # optional
Usage
Get Price Quote
node quote.js --sell USDC --buy WETH --amount 1 --chain base
Execute Swap (sell → buy)
node swap.js --sell USDC --buy WETH --amount 1 --chain base
Execute Swap (buy example)
node swap.js --sell WETH --buy USDC --amount 0.01 --chain base
Trade History
getSwapTrades
curl -s "https://api.0x.org/trade-analytics/swap?chainId=8453&taker=0xYOUR_WALLET" \ -H "0x-api-key: $ZEROEX_API_KEY" \ -H "0x-version: v2"
getGaslessTrades
curl -s "https://api.0x.org/trade-analytics/gasless?chainId=8453&taker=0xYOUR_WALLET" \ -H "0x-api-key: $ZEROEX_API_KEY" \ -H "0x-version: v2"
Gasless Swap (Meta-transaction)
Flow:
- Get gasless quote
- Sign EIP-712 payload
- Submit meta-tx
1) Get gasless quote
curl -s "https://api.0x.org/gasless/quote?sellToken=USDC&buyToken=WETH&sellAmount=1000000&chainId=8453&taker=0xYOUR_WALLET" \ -H "0x-api-key: $ZEROEX_API_KEY" \ -H "0x-version: v2"
2) Sign EIP-712 (use viem)
// use viem to sign quote.trade.eip712 await client.signTypedData({ domain: quote.trade.eip712.domain, types: quote.trade.eip712.types, message: quote.trade.eip712.message, primaryType: quote.trade.eip712.primaryType });
3) Submit
curl -s -X POST "https://api.0x.org/gasless/submit" \ -H "0x-api-key: $ZEROEX_API_KEY" \ -H "0x-version: v2" \ -H "Content-Type: application/json" \ -d '{"trade": {"type":"settler_metatransaction","eip712": {"domain": {"name": "Settler", "chainId": 8453, "verifyingContract": "0x..."},"types": {...},"message": {...},"primaryType":"..."},"signature": {"v": 27, "r": "0x...", "s": "0x...", "signatureType": 2}}}'
Security Best Practices
- Use a dedicated hot wallet
- Set slippage protection
- Approve exact amounts only
- Use your own RPC via
RPC_URL