Uniswap Rebalance Position

v0.1.0

Rebalance an out-of-range Uniswap V3/V4 LP position by closing the old position and opening a new one centered on the current price. Handles fee collection, removal, range calculation, and re-entry in a single workflow. Use when a position is out of range and needs adjustment.

0· 726·2 current·2 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
Name/description and the SKILL.md workflow are consistent: the skill reads Uniswap positions, calculates ranges, and performs fee-collection/removal/add operations. However README suggests an external GitHub install URL while the registry metadata lists 'source: unknown' and there is no install spec — an inconsistency the user should verify. The skill depends on a 'liquidity-manager' subagent (declared in allowed-tools) which plausibly implements transaction capabilities needed for the stated purpose.
!
Instruction Scope
SKILL.md explicitly instructs fee collection, approval of tokens, removal of liquidity, and adding a new position — all actions that require on‑chain transactions and signing. It delegates execution to a 'liquidity-manager' subagent but does not enumerate how approvals/signatures are obtained, where signing occurs, or what confirmation flow exists. It also references a 'safety-guardian' validator in execution steps, but 'safety-guardian' is not listed in allowed-tools — a mismatch that could hide an unchecked step or missing guard.
Install Mechanism
This is instruction-only (no install spec, no code files) so it doesn't drop code to disk. That is lower installation risk. That said, README includes explicit npx install commands pointing to a GitHub repo (https://github.com/wpank/Agentic-Uniswap/...), which contradicts the registry's 'no install' status; if you follow those instructions you will download external code — inspect that repo before running.
!
Credentials
The skill declares no required environment variables or credentials, yet its execution requires ability to sign/send transactions and approve tokens. The allowed 'liquidity-manager' subagent likely needs RPC endpoints, signer/private key access, or platform wallet permissions; none of this is documented. Absence of declared credentials is disproportionate to the described actions and creates ambiguity about where sensitive keys live and what will be used to sign txs.
Persistence & Privilege
always is false and there is no install or persistence. The skill does allow autonomous invocation per platform defaults, but that is normal. There is no evidence it modifies other skills or requests permanent system presence.
What to consider before installing
This skill appears to implement a plausible Uniswap V3/V4 rebalance workflow, but before installing or using it verify the following: (1) How and where are on‑chain transactions signed? Ask which signer/wallet (platform-managed wallet, hardware wallet, or private key) the 'liquidity-manager' will use and whether it requires explicit user approval for each tx. (2) Inspect the 'liquidity-manager' and any referenced 'safety-guardian' components (source code or platform permission descriptions). Do not provide private keys or secrets directly; prefer a signer that asks for user confirmation. (3) Confirm the provenance of the skill: README points to a GitHub repo but the registry shows no source — review that repo before running any install command. (4) If you expect this skill to act only on read-only data, demand explicit docs proving it will never sign transactions without an interactive approval. If you cannot verify these points, treat the skill as risky and avoid delegating wallet access to it.

Like a lobster shell, security has layers — review code before you run it.

latestvk9707yfym8w5dyk6d62aaajean80wbrc
726downloads
0stars
1versions
Updated 1mo ago
v0.1.0
MIT-0

Rebalance Position

Overview

When a V3/V4 LP position goes out of range, it stops earning fees. This skill handles the full rebalance workflow: collect accumulated fees, close the old position, calculate a new optimal range centered on the current price, and open a new position — all in a single operation.

This is a high-value skill because out-of-range positions are effectively dead capital. The difference between a monitored position that gets rebalanced promptly and an unmonitored one can be 15-30% APY in lost fee revenue.

When to Use

Activate when the user says:

  • "Rebalance my position"
  • "My position is out of range"
  • "Adjust my LP range"
  • "Re-center my liquidity"
  • "Position #12345 is out of range, fix it"
  • "My ETH/USDC position stopped earning"
  • "Move my range to the current price"
  • "My LP isn't earning fees anymore"

Also proactively suggest rebalancing when:

  • A track-performance or portfolio-report shows an out-of-range position
  • The user asks "why am I not earning fees?"

Parameters

ParameterRequiredDefaultHow to Extract
positionIdNo*Position ID, or "my ETH/USDC position" (resolved by search)
chainNoethereumChain where the position lives
newRangeNoAuto-optimal"narrow" (±5%), "medium" (±15%), "wide" (±50%)

*If no position ID: search with get_positions_by_owner, filter for out-of-range positions, and confirm with the user.

Workflow

Pre-Rebalance Analysis

Before executing anything, gather data and present the situation to the user:

Step 1: IDENTIFY THE POSITION
├── If position ID given → fetch via get_position
├── If "my X/Y position" → search via get_positions_by_owner
│   ├── Filter by token pair and out-of-range status
│   ├── If multiple out-of-range → list all, ask which one
│   └── If none out-of-range → "All your positions are in range!"
└── Validate: confirm the position IS actually out of range

Step 2: ANALYZE CURRENT SITUATION
├── Current pool state via get_pool_info
│   ├── Current price
│   ├── Pool TVL, volume, fee APY
│   └── Tick distribution (where is liquidity concentrated?)
├── Position details
│   ├── Current tick range (lower, upper)
│   ├── How far out of range (above or below?)
│   ├── Uncollected fees
│   ├── Current token balances in position
│   └── Time since going out of range (if estimable)
└── Cost-benefit calculation
    ├── Estimated gas cost for full rebalance (remove + add = ~$30-60 on mainnet)
    ├── Estimated daily fee revenue if rebalanced (from pool APY + position size)
    ├── Break-even time: gas_cost / daily_revenue
    └── If break-even > 30 days → WARN that rebalancing may not be worth it

Present the Rebalance Plan

Before executing, show the user exactly what will happen:

Rebalance Plan for Position #12345

  Current Situation:
    Pool:      WETH/USDC 0.05% (V3, Ethereum)
    Status:    OUT OF RANGE ⚠ (price moved above your range)
    Current:   $1,963
    Your range: $1,500 - $1,800 (position is 9% above upper bound)
    
  Uncollected Fees: 0.01 WETH ($19.60) + 15.20 USDC ($15.20)
  Position Value: ~$3,940

  Proposed New Range:
    Strategy: Medium (±15%)
    Lower:    $1,668 (current - 15%)
    Upper:    $2,258 (current + 15%)
    Expected time-in-range: ~80-85%

  Cost:
    Gas (remove + add): ~$35
    Break-even: ~2 days at current fee APY

  Steps:
    1. Collect uncollected fees ($34.80)
    2. Remove all liquidity from position #12345
    3. Add liquidity at new range ($1,668 - $2,258)
    4. New position created with new NFT ID

  Proceed? (yes/no)

Execution (after user confirms)

Step 3: DELEGATE TO LIQUIDITY-MANAGER
├── The agent executes atomically:
│   a. Collect fees from old position
│   b. Remove 100% liquidity from old position
│   c. Calculate new tick range based on:
│      - Current pool price
│      - Selected range strategy (narrow/medium/wide)
│      - Pool tick spacing
│   d. Approve tokens for new position (if needed)
│   e. Add liquidity at new range
│   f. Each step validated by safety-guardian
└── Returns: old position closed, fees collected, new position ID, new range, tx hashes

Step 4: PRESENT RESULT
├── Confirmation of old position closure
├── Fees collected (amounts + USD)
├── New position details (ID, range, amounts deposited)
├── Total gas cost for the operation
├── Net cost/benefit of the rebalance
└── Next steps for monitoring

Range Strategy Guide

When the user doesn't specify a range, use this decision framework:

Pair TypeRecommended RangeWidthRationale
Stable-stableNarrow±0.5%Price barely moves; maximize capital efficiency
Stable-volatileMedium±15%Balance between earning and avoiding rebalance
Volatile-volatileWide±30%Reduce rebalance frequency; accept lower APY
User says "aggressive"Narrow±5%Higher fees but frequent rebalancing needed
User says "passive"Wide±50%Low maintenance, lower returns
Small position (<$1K)Wide±50%Gas costs make frequent rebalancing uneconomical

When NOT to Rebalance

Proactively advise against rebalancing in these situations:

SituationAdvice
Position size < 10x gas cost"Gas would cost ${gas} but your position is only ${value}."
Price is near range boundary (within 2%)"Price is close to your range — wait to see if it re-enters."
Position went out of range < 1 hour ago"Give it time — price may return to your range."
User has no strong view on direction"Consider a wider range to reduce future rebalances."
Break-even time > 14 days"At current fee rates, rebalancing won't pay for itself for {days} days."

Output Format

Successful Rebalance

Position Rebalanced Successfully

  Old Position: #12345 (CLOSED)
    Received: 0.52 WETH + 950 USDC ($1,970)
    Fees collected: 0.01 WETH + 15.20 USDC ($34.80)

  New Position: #67890
    Pool: WETH/USDC 0.05% (V3, Ethereum)
    Deposited: 0.51 WETH + 965 USDC ($1,960)
    Range: $1,668 - $2,258 (medium, ±15%)
    Current: $1,963 — IN RANGE ✓
    
  Cost:
    Gas: $32.50 (2 transactions)
    
  Net: Position rebalanced with $2.30 lost to gas
       Now earning ~15-21% APY in fees

  Txs:
    Remove: https://etherscan.io/tx/0x...
    Add:    https://etherscan.io/tx/0x...

  Monitor: "How are my positions doing?" or "Track position #67890"

Position Already In Range

Position #12345 is IN RANGE ✓

  Pool:    WETH/USDC 0.05% (V3, Ethereum)
  Current: $1,963
  Range:   $1,700 - $2,300
  Status:  Actively earning fees

  No rebalance needed. Your position is healthy.
  
  Uncollected fees: $34.80
  Want to collect them? (This doesn't affect your position.)

Important Notes

  • Always confirm before executing. Rebalancing involves closing and reopening a position — it's irreversible.
  • Gas matters. On Ethereum mainnet, a full rebalance costs $30-60 in gas. On L2s (Base, Arbitrum), it's < $1. Factor this into recommendations.
  • IL is locked in. When you close a position, any impermanent loss becomes realized. Mention this if the position has significant IL.
  • New NFT ID. The rebalanced position gets a new NFT token ID. The old one is burned. Make sure the user understands this.
  • V2 positions cannot be rebalanced — they have full range. If a user asks to rebalance a V2 position, explain that V2 positions cover the entire price range and don't go "out of range."
  • Slippage on exit. For large positions relative to pool TVL, exiting may cause slippage. Warn if position is > 5% of pool TVL.

Error Handling

ErrorUser-Facing MessageSuggested Action
Position not found"Position #{id} not found."Check ID and chain
Position already in range"Position is already in range — no rebalance needed."Show position status instead
V2 position"V2 positions cover the full price range and can't go out of range."Explain V2 vs V3 differences
Wallet not configured"No wallet configured for transactions."Set WALLET_TYPE + PRIVATE_KEY
Insufficient gas"Not enough ETH for gas."Fund wallet with ETH
Safety check failed"Safety blocked the rebalance: {reason}"Review safety configuration
Remove tx failed"Failed to remove liquidity: {reason}"Check position status and try again
Add tx failed"Removed old position but failed to add new one."Tokens are in wallet; retry add manually
liquidity-manager unavailable"Liquidity agent is not available."Check agent configuration

Comments

Loading comments...