โ† All skills
Tencent SkillHub ยท Developer Tools

Uniswap V4

Swap tokens and read pool state on Uniswap V4 (Base, Ethereum). Use when the agent needs to: (1) swap ERC20 tokens or ETH via Uniswap V4, (2) get pool info (price, tick, liquidity, fees), (3) find the best pool for a token pair, (4) quote expected swap output via the on-chain V4Quoter, (5) set up Permit2 approvals for the Universal Router, or (6) execute exact-input swaps with proper slippage protection. Supports Base and Ethereum mainnet, plus Base Sepolia testnet. TypeScript with strict types. Write operations need a private key via env var.

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Swap tokens and read pool state on Uniswap V4 (Base, Ethereum). Use when the agent needs to: (1) swap ERC20 tokens or ETH via Uniswap V4, (2) get pool info (price, tick, liquidity, fees), (3) find the best pool for a token pair, (4) quote expected swap output via the on-chain V4Quoter, (5) set up Permit2 approvals for the Universal Router, or (6) execute exact-input swaps with proper slippage protection. Supports Base and Ethereum mainnet, plus Base Sepolia testnet. TypeScript with strict types. Write operations need a private key via env var.

โฌ‡ 0 downloads โ˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
CHANGELOG.md, README.md, SKILL.md, package-lock.json, package.json, references/addresses.md

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
2.0.4

Documentation

ClawHub primary doc Primary doc: SKILL.md 14 sections Open source page

Uniswap V4 ๐Ÿฆ„

Swap tokens and read pool state on Uniswap V4 via the Universal Router. Chains: Base (8453), Ethereum (1), Base Sepolia (84532) ContractBaseEthereumPoolManager0x498581fF718922c3f8e6A244956aF099B2652b2b0x000000000004444c5dc75cB358380D2e3dE08A90UniversalRouter0x6ff5693b99212da76ad316178a184ab56d299b430x66a9893cC07D91D95644AEDD05D03f95e1dBA8AfPermit20x000000000022D473030F116dDEE9F6B43aC78BA30x000000000022D473030F116dDEE9F6B43aC78BA3StateView0xa3c0c9b65bad0b08107aa264b0f3db444b867a710x7ffe42c4a5deea5b0fec41c94c136cf115597227V4Quoter0x0d5e0f971ed27fbff6c2837bf31316121532048d0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203 Addresses from docs.uniswap.org/contracts/v4/deployments, verified 2026-02-08.

Decision Tree

Read pool state? โ†’ src/pool-info.ts (free, no gas, no key) Get swap quote? โ†’ src/quote.ts (free, uses on-chain V4Quoter) Approve tokens? โ†’ src/approve.ts (write, ~100K gas, needs PRIVATE_KEY) Execute swap? โ†’ src/swap.ts (write, ~300-350K gas, needs PRIVATE_KEY) First time with an ERC20? โ†’ Run approve first, or use --auto-approve on swap

Scripts Reference

All scripts in src/. Run with npx tsx. Pass --help for usage.

pool-info.ts โ€” Read Pool State (free)

Returns pool ID, sqrtPriceX96, tick, liquidity, fees, token symbols/decimals. Auto-detects the best pool by liquidity (or specify --fee/--tick-spacing). npx tsx src/pool-info.ts --token0 ETH --token1 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 --chain base --rpc $BASE_RPC_URL Env: BASE_RPC_URL or ETH_RPC_URL (or pass --rpc)

quote.ts โ€” Quote Swap Amounts (free)

Quotes exact input amounts via the on-chain V4Quoter contract (simulation, no tx). Returns expected output amount and gas estimate. npx tsx src/quote.ts \ --token-in ETH \ --token-out 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ --amount 10000000000000000 \ --chain base \ --rpc $BASE_RPC_URL Env: BASE_RPC_URL or ETH_RPC_URL

approve.ts โ€” Set Up Token Approvals (write)

Two-step Permit2 flow: ERC20 โ†’ Permit2, then Permit2 โ†’ Universal Router. Skips if already approved. Only needed for ERC20 tokens (not ETH). PRIVATE_KEY=0x... npx tsx src/approve.ts \ --token 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ --chain base \ --rpc $BASE_RPC_URL \ --json Env: PRIVATE_KEY (required), BASE_RPC_URL

swap.ts โ€” Execute Swap (write)

Exact-input swap via Universal Router. Quotes expected output first, applies slippage, then sends the transaction. PRIVATE_KEY=0x... npx tsx src/swap.ts \ --token-in ETH \ --token-out 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ --amount 10000000000000000 \ --slippage 50 \ --chain base \ --rpc $BASE_RPC_URL \ --json With auto-approval (sets up Permit2 if needed): PRIVATE_KEY=0x... npx tsx src/swap.ts \ --token-in 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ --token-out ETH \ --amount 25000000 \ --slippage 100 \ --auto-approve \ --chain base \ --rpc $BASE_RPC_URL Options: --slippage <bps> (default 50 = 0.5%), --recipient <addr>, --auto-approve, --json Env: PRIVATE_KEY (required), BASE_RPC_URL

Token Input

ETH or eth โ†’ native ETH (address(0) in V4) Contract address โ†’ ERC20 token Common Base tokens: USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, WETH 0x4200000000000000000000000000000000000006

Environment Variables

VariableUsed ByRequiredDescriptionPRIVATE_KEYapprove, swapYes*Wallet private key (never CLI!)BASE_RPC_URLall (Base)NoBase mainnet RPC URLETH_RPC_URLall (Ethereum)NoEthereum mainnet RPC URLBASE_SEPOLIA_RPC_URLall (testnet)NoBase Sepolia RPC URL * Only required for write operations. Read operations (pool-info, quote) don't need a key.

V4 Architecture Notes

Singleton PoolManager holds all pools in one contract State read via StateView contract (wraps PoolManager storage) Swaps: Universal Router โ†’ PoolManager via V4_SWAP command Approvals: ERC20 โ†’ Permit2 โ†’ Universal Router (two-step) Pool ID: keccak256(abi.encode(currency0, currency1, fee, tickSpacing, hooks)) Currency ordering: currency0 < currency1 by numeric value. ETH = address(0) Action sequence: SWAP_EXACT_IN_SINGLE (0x06) + SETTLE_ALL (0x0c) + TAKE_ALL (0x0f) See references/v4-encoding.md for full encoding reference

Error Handling

ErrorCauseFixNo V4 pool foundPair not listed on V4 for this chainCheck token addressesQuote failedPool exists but can't simulate swapCheck amount, pool may lack liqPRIVATE_KEY requiredMissing env var for write operationexport PRIVATE_KEY=0x...No RPC URLMissing RPC configPass --rpc or set env varTx revertsInsufficient balance, expired, slippageCheck balance, increase slippageuint128 maxAmount too large for V4Use smaller amount

SECURITY

PRIVATE_KEY must be provided via an environment variable or secret manager only. NEVER paste or send PRIVATE_KEY in chat. NEVER commit PRIVATE_KEY (or .env files) to git. Treat stdout/stderr as public logs (CI, terminals, chat). CI tests ensure the PRIVATE_KEY value is never printed. NEVER pass private keys as CLI arguments (rejected by all scripts) Private keys accepted via PRIVATE_KEY env var only All inputs validated: addresses (format), amounts (BigInt bounds), slippage (0-10000) No eval(), no exec(), no shell commands โ€” pure TypeScript BigInt used everywhere for token amounts (no floating point, no overflow)

Testing

npm run test:unit # Unit tests (no network) npm run test:fork # Fork tests (needs: anvil --fork-url https://mainnet.base.org) npm run test:testnet # Testnet reads (Base Sepolia) npm run test:mainnet # Mainnet smoke tests (read-only) npm run security # Security scan

References

V4 encoding reference: references/v4-encoding.md Contract addresses: references/addresses.md V4 architecture: references/v4-architecture.md

Category context

Code helpers, APIs, CLIs, browser automation, testing, and developer operations.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
4 Docs2 Config
  • SKILL.md Primary doc
  • CHANGELOG.md Docs
  • README.md Docs
  • references/addresses.md Docs
  • package-lock.json Config
  • package.json Config