{
  "schemaVersion": "1.0",
  "item": {
    "slug": "manage-liquidity",
    "name": "Uniswap Manage Liquidity",
    "source": "tencent",
    "type": "skill",
    "category": "金融交易",
    "sourceUrl": "https://clawhub.ai/wpank/manage-liquidity",
    "canonicalUrl": "https://clawhub.ai/wpank/manage-liquidity",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/manage-liquidity",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=manage-liquidity",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/manage-liquidity"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/manage-liquidity",
    "agentPageUrl": "https://openagent3.xyz/skills/manage-liquidity/agent",
    "manifestUrl": "https://openagent3.xyz/skills/manage-liquidity/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/manage-liquidity/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "This is the primary skill for all liquidity operations on Uniswap. It handles three distinct actions:\n\nAdd liquidity — Find the best pool, recommend a range, handle approvals, deposit tokens\nRemove liquidity — Withdraw tokens from an existing position (partial or full)\nCollect fees — Claim accumulated trading fees from a position\n\nEach action delegates to the liquidity-manager agent for execution, with optional pool-researcher delegation for intelligent pool selection. This skill extracts the user's intent, validates parameters, and orchestrates the right agent workflow."
      },
      {
        "title": "When to Use",
        "body": "Activate when the user says anything related to providing, removing, or managing Uniswap liquidity:\n\nAdding liquidity:\n\n\"Add liquidity to ETH/USDC\"\n\"Provide LP for WETH/USDC on Base\"\n\"LP into the best pool for ETH/USDC\"\n\"Open a position in UNI/WETH\"\n\"I want to LP $5000 into ETH/USDC\"\n\"Deposit liquidity into the 0.05% pool\"\n\"Add $10K to my WETH/USDC position\"\n\nRemoving liquidity:\n\n\"Remove my liquidity\"\n\"Close my ETH/USDC position\"\n\"Withdraw 50% from position #12345\"\n\"Exit my LP position\"\n\nCollecting fees:\n\n\"Collect my fees\"\n\"Claim accumulated fees from position #12345\"\n\"How much in fees have I earned?\" (check first, then offer to collect)"
      },
      {
        "title": "For Adding Liquidity",
        "body": "ParameterRequiredDefaultHow to ExtractactionYes—Always \"add\" for this sub-flowtoken0Yes—First token: \"ETH\", \"WETH\", \"USDC\", or 0x addresstoken1Yes—Second tokenamountYes—Dollar amount (\"$5000\"), token amount (\"2.5 ETH\"), or bothchainNoethereum\"ethereum\", \"base\", \"arbitrum\", \"optimism\", \"polygon\"versionNov3\"v2\" (passive), \"v3\" (concentrated), \"v4\" (hooks)rangeNomedium\"narrow\" (±5%), \"medium\" (±15%), \"wide\" (±50%), \"full\" (±∞)feeTierNoAuto-detect\"0.01%\", \"0.05%\", \"0.3%\", \"1%\"  or bps: 100, 500, 3000, 10000"
      },
      {
        "title": "For Removing Liquidity / Collecting Fees",
        "body": "ParameterRequiredDefaultHow to ExtractactionYes—\"remove\" or \"collect\"positionIdYes*—NFT token ID (\"position #12345\") or found via searchchainNoethereumChain where the position existspercentageNo100\"50%\", \"all\", \"half\" — only for removecollectFeesNotrueWhether to also collect fees when removing\n\n*If the user doesn't provide a position ID (e.g., \"remove my ETH/USDC position\"), search for it using get_positions_by_owner and confirm with the user before proceeding."
      },
      {
        "title": "Add Liquidity Flow",
        "body": "Step 1: PARSE INTENT\n├── Extract: tokens, amount, chain, version, range, fee tier\n├── Normalize: \"ETH\" → \"WETH\", \"$5K\" → \"$5000\"\n└── If any required params missing → ASK the user (don't guess)\n\nStep 2: POOL SELECTION (if user didn't specify exact pool)\n├── If \"best pool\" or no fee tier specified:\n│   └── Delegate to pool-researcher: \"Find the best pool for {token0}/{token1} on {chain}\"\n│       Pool researcher returns ranked pools with APY, TVL, depth\n│       Pick the recommended pool (or present top 3 if user wants to choose)\n└── If specific pool given: use directly\n\nStep 3: PRE-FLIGHT CHECKS\n├── Check safety status via check_safety_status\n├── Verify wallet has sufficient token balances\n└── If checks fail → STOP and tell user what's wrong\n\nStep 4: DELEGATE TO LIQUIDITY-MANAGER\n├── Pass: token0, token1, amount, chain, version, range, feeTier, pool address\n├── The liquidity-manager agent handles:\n│   a. Check and execute token approvals (Permit2)\n│   b. Calculate optimal tick range based on range strategy\n│   c. Simulate the add-liquidity transaction\n│   d. Route through safety-guardian for validation\n│   e. Execute the transaction\n│   f. Wait for confirmation\n└── Returns: positionId, amounts deposited, tick range, tx hash\n\nStep 5: PRESENT RESULT\n├── Position ID (NFT token ID)\n├── Tokens deposited with USD values\n├── Price range (lower price, upper price, current price)\n├── Estimated fee APY (from pool-researcher data)\n├── Explorer link to the transaction\n└── Tip: \"Monitor with /track-performance\""
      },
      {
        "title": "Remove Liquidity Flow",
        "body": "Step 1: IDENTIFY POSITION\n├── If position ID given → use directly\n├── If \"my ETH/USDC position\" → call get_positions_by_owner\n│   ├── Filter by token pair and chain\n│   ├── If multiple matches → LIST them and ask user to choose\n│   └── If no matches → tell user \"No positions found for {pair}\"\n└── Confirm: \"I found position #{id} — {pair} {feeTier} with {value}. Remove?\"\n\nStep 2: DELEGATE TO LIQUIDITY-MANAGER\n├── Pass: positionId, chain, percentage (default 100%), collectFees\n├── Agent handles: fee collection → partial/full removal → safety validation → execution\n└── Returns: tokens received, fees collected, tx hash\n\nStep 3: PRESENT RESULT\n├── Tokens received with USD values\n├── Fees collected (if any)\n├── Total value received\n├── Explorer link\n└── If partial removal: remaining position details"
      },
      {
        "title": "Collect Fees Flow",
        "body": "Step 1: IDENTIFY POSITION (same as remove)\n\nStep 2: CHECK UNCOLLECTED FEES\n├── Call get_position to see tokensOwed0 and tokensOwed1\n├── If fees are zero → \"No fees to collect on this position\"\n└── Show fee amounts and ask to proceed\n\nStep 3: DELEGATE TO LIQUIDITY-MANAGER\n├── Pass: positionId, chain, action: \"collect\"\n└── Returns: fees collected, tx hash\n\nStep 4: PRESENT RESULT\n├── Fees collected (token amounts + USD values)\n├── Explorer link\n└── Tip: \"Your position is still active and earning more fees\""
      },
      {
        "title": "Critical Decision Points",
        "body": "These are the moments where the skill must stop and ask rather than assume:\n\nSituationActionMultiple positions matchList all matches, ask user to pick oneAmount exceeds wallet balanceShow balance, ask if they want a smaller amountPool TVL < $10,000Warn about low liquidity risk, ask to confirmRange strategy not specifiedDefault to \"medium\" but mention the tradeoffsFirst time LPingBriefly explain IL risk before proceedingRemove > 50% of pool liquidityWarn about price impact on exit"
      },
      {
        "title": "Successful Add",
        "body": "Liquidity Added Successfully\n\n  Position: #456789\n  Pool:     WETH/USDC 0.05% (V3, Ethereum)\n  \n  Deposited:\n    0.5 WETH  ($980)\n    980 USDC  ($980)\n    Total:    $1,960\n\n  Range:\n    Lower: $1,700 (tick -204714)\n    Upper: $2,300 (tick -199514)\n    Current: $1,963 — IN RANGE ✓\n    Width: ±15% (medium)\n\n  Expected Fee APY: ~15-21% (based on 7d pool data)\n  \n  Tx: https://etherscan.io/tx/0x...\n\n  Next steps:\n  - Monitor with: \"How are my positions doing?\"\n  - Rebalance if out of range: \"Rebalance position #456789\"\n  - Collect fees anytime: \"Collect fees from position #456789\""
      },
      {
        "title": "Successful Remove",
        "body": "Liquidity Removed\n\n  Position: #456789 (CLOSED)\n  \n  Received:\n    0.52 WETH  ($1,020)\n    950 USDC   ($950)\n    Total:     $1,970\n\n  Fees Collected:\n    0.01 WETH  ($19.60)\n    15.20 USDC ($15.20)\n    Total fees: $34.80\n\n  Net Result: +$44.80 (+2.3%) including fees\n  \n  Tx: https://etherscan.io/tx/0x..."
      },
      {
        "title": "Important Notes",
        "body": "IL risk: Always mention impermanent loss risk when adding liquidity to volatile pairs. Don't bury it.\nGas costs: On Ethereum mainnet, LP operations cost $15-50 in gas. Mention this for small positions.\nRange tradeoffs: Narrow = higher fees but more rebalancing. Wide = lower fees but less maintenance. Always explain.\nV2 vs V3: V2 is \"set and forget\" with lower returns. V3 requires active management but earns more. Help the user choose.\nNever auto-execute: For remove and rebalance, always confirm with the user before executing."
      },
      {
        "title": "Error Handling",
        "body": "ErrorUser-Facing MessageSuggested ActionWallet not configured\"No wallet configured for transactions.\"Set WALLET_TYPE + PRIVATE_KEY in .envInsufficient balance\"You have X but need Y to add liquidity.\"Reduce amount or swap for needed tokensPool not found\"No pool found for X/Y at this fee tier.\"Try different fee tier or check token namesPosition not found\"Position #ID not found on this chain.\"Check chain and position IDSafety check failed\"Transaction blocked by safety: {reason}\"Adjust parameters or check safety configTransaction reverted\"Transaction failed: {reason}\"Check slippage, amounts, or try againliquidity-manager unavailable\"Liquidity agent is not available.\"Check agent configuration"
      }
    ],
    "body": "Manage Liquidity\nOverview\n\nThis is the primary skill for all liquidity operations on Uniswap. It handles three distinct actions:\n\nAdd liquidity — Find the best pool, recommend a range, handle approvals, deposit tokens\nRemove liquidity — Withdraw tokens from an existing position (partial or full)\nCollect fees — Claim accumulated trading fees from a position\n\nEach action delegates to the liquidity-manager agent for execution, with optional pool-researcher delegation for intelligent pool selection. This skill extracts the user's intent, validates parameters, and orchestrates the right agent workflow.\n\nWhen to Use\n\nActivate when the user says anything related to providing, removing, or managing Uniswap liquidity:\n\nAdding liquidity:\n\n\"Add liquidity to ETH/USDC\"\n\"Provide LP for WETH/USDC on Base\"\n\"LP into the best pool for ETH/USDC\"\n\"Open a position in UNI/WETH\"\n\"I want to LP $5000 into ETH/USDC\"\n\"Deposit liquidity into the 0.05% pool\"\n\"Add $10K to my WETH/USDC position\"\n\nRemoving liquidity:\n\n\"Remove my liquidity\"\n\"Close my ETH/USDC position\"\n\"Withdraw 50% from position #12345\"\n\"Exit my LP position\"\n\nCollecting fees:\n\n\"Collect my fees\"\n\"Claim accumulated fees from position #12345\"\n\"How much in fees have I earned?\" (check first, then offer to collect)\nParameters\nFor Adding Liquidity\nParameter\tRequired\tDefault\tHow to Extract\naction\tYes\t—\tAlways \"add\" for this sub-flow\ntoken0\tYes\t—\tFirst token: \"ETH\", \"WETH\", \"USDC\", or 0x address\ntoken1\tYes\t—\tSecond token\namount\tYes\t—\tDollar amount (\"$5000\"), token amount (\"2.5 ETH\"), or both\nchain\tNo\tethereum\t\"ethereum\", \"base\", \"arbitrum\", \"optimism\", \"polygon\"\nversion\tNo\tv3\t\"v2\" (passive), \"v3\" (concentrated), \"v4\" (hooks)\nrange\tNo\tmedium\t\"narrow\" (±5%), \"medium\" (±15%), \"wide\" (±50%), \"full\" (±∞)\nfeeTier\tNo\tAuto-detect\t\"0.01%\", \"0.05%\", \"0.3%\", \"1%\" or bps: 100, 500, 3000, 10000\nFor Removing Liquidity / Collecting Fees\nParameter\tRequired\tDefault\tHow to Extract\naction\tYes\t—\t\"remove\" or \"collect\"\npositionId\tYes*\t—\tNFT token ID (\"position #12345\") or found via search\nchain\tNo\tethereum\tChain where the position exists\npercentage\tNo\t100\t\"50%\", \"all\", \"half\" — only for remove\ncollectFees\tNo\ttrue\tWhether to also collect fees when removing\n\n*If the user doesn't provide a position ID (e.g., \"remove my ETH/USDC position\"), search for it using get_positions_by_owner and confirm with the user before proceeding.\n\nWorkflow\nAdd Liquidity Flow\nStep 1: PARSE INTENT\n├── Extract: tokens, amount, chain, version, range, fee tier\n├── Normalize: \"ETH\" → \"WETH\", \"$5K\" → \"$5000\"\n└── If any required params missing → ASK the user (don't guess)\n\nStep 2: POOL SELECTION (if user didn't specify exact pool)\n├── If \"best pool\" or no fee tier specified:\n│   └── Delegate to pool-researcher: \"Find the best pool for {token0}/{token1} on {chain}\"\n│       Pool researcher returns ranked pools with APY, TVL, depth\n│       Pick the recommended pool (or present top 3 if user wants to choose)\n└── If specific pool given: use directly\n\nStep 3: PRE-FLIGHT CHECKS\n├── Check safety status via check_safety_status\n├── Verify wallet has sufficient token balances\n└── If checks fail → STOP and tell user what's wrong\n\nStep 4: DELEGATE TO LIQUIDITY-MANAGER\n├── Pass: token0, token1, amount, chain, version, range, feeTier, pool address\n├── The liquidity-manager agent handles:\n│   a. Check and execute token approvals (Permit2)\n│   b. Calculate optimal tick range based on range strategy\n│   c. Simulate the add-liquidity transaction\n│   d. Route through safety-guardian for validation\n│   e. Execute the transaction\n│   f. Wait for confirmation\n└── Returns: positionId, amounts deposited, tick range, tx hash\n\nStep 5: PRESENT RESULT\n├── Position ID (NFT token ID)\n├── Tokens deposited with USD values\n├── Price range (lower price, upper price, current price)\n├── Estimated fee APY (from pool-researcher data)\n├── Explorer link to the transaction\n└── Tip: \"Monitor with /track-performance\"\n\nRemove Liquidity Flow\nStep 1: IDENTIFY POSITION\n├── If position ID given → use directly\n├── If \"my ETH/USDC position\" → call get_positions_by_owner\n│   ├── Filter by token pair and chain\n│   ├── If multiple matches → LIST them and ask user to choose\n│   └── If no matches → tell user \"No positions found for {pair}\"\n└── Confirm: \"I found position #{id} — {pair} {feeTier} with {value}. Remove?\"\n\nStep 2: DELEGATE TO LIQUIDITY-MANAGER\n├── Pass: positionId, chain, percentage (default 100%), collectFees\n├── Agent handles: fee collection → partial/full removal → safety validation → execution\n└── Returns: tokens received, fees collected, tx hash\n\nStep 3: PRESENT RESULT\n├── Tokens received with USD values\n├── Fees collected (if any)\n├── Total value received\n├── Explorer link\n└── If partial removal: remaining position details\n\nCollect Fees Flow\nStep 1: IDENTIFY POSITION (same as remove)\n\nStep 2: CHECK UNCOLLECTED FEES\n├── Call get_position to see tokensOwed0 and tokensOwed1\n├── If fees are zero → \"No fees to collect on this position\"\n└── Show fee amounts and ask to proceed\n\nStep 3: DELEGATE TO LIQUIDITY-MANAGER\n├── Pass: positionId, chain, action: \"collect\"\n└── Returns: fees collected, tx hash\n\nStep 4: PRESENT RESULT\n├── Fees collected (token amounts + USD values)\n├── Explorer link\n└── Tip: \"Your position is still active and earning more fees\"\n\nCritical Decision Points\n\nThese are the moments where the skill must stop and ask rather than assume:\n\nSituation\tAction\nMultiple positions match\tList all matches, ask user to pick one\nAmount exceeds wallet balance\tShow balance, ask if they want a smaller amount\nPool TVL < $10,000\tWarn about low liquidity risk, ask to confirm\nRange strategy not specified\tDefault to \"medium\" but mention the tradeoffs\nFirst time LPing\tBriefly explain IL risk before proceeding\nRemove > 50% of pool liquidity\tWarn about price impact on exit\nOutput Format\nSuccessful Add\nLiquidity Added Successfully\n\n  Position: #456789\n  Pool:     WETH/USDC 0.05% (V3, Ethereum)\n  \n  Deposited:\n    0.5 WETH  ($980)\n    980 USDC  ($980)\n    Total:    $1,960\n\n  Range:\n    Lower: $1,700 (tick -204714)\n    Upper: $2,300 (tick -199514)\n    Current: $1,963 — IN RANGE ✓\n    Width: ±15% (medium)\n\n  Expected Fee APY: ~15-21% (based on 7d pool data)\n  \n  Tx: https://etherscan.io/tx/0x...\n\n  Next steps:\n  - Monitor with: \"How are my positions doing?\"\n  - Rebalance if out of range: \"Rebalance position #456789\"\n  - Collect fees anytime: \"Collect fees from position #456789\"\n\nSuccessful Remove\nLiquidity Removed\n\n  Position: #456789 (CLOSED)\n  \n  Received:\n    0.52 WETH  ($1,020)\n    950 USDC   ($950)\n    Total:     $1,970\n\n  Fees Collected:\n    0.01 WETH  ($19.60)\n    15.20 USDC ($15.20)\n    Total fees: $34.80\n\n  Net Result: +$44.80 (+2.3%) including fees\n  \n  Tx: https://etherscan.io/tx/0x...\n\nImportant Notes\nIL risk: Always mention impermanent loss risk when adding liquidity to volatile pairs. Don't bury it.\nGas costs: On Ethereum mainnet, LP operations cost $15-50 in gas. Mention this for small positions.\nRange tradeoffs: Narrow = higher fees but more rebalancing. Wide = lower fees but less maintenance. Always explain.\nV2 vs V3: V2 is \"set and forget\" with lower returns. V3 requires active management but earns more. Help the user choose.\nNever auto-execute: For remove and rebalance, always confirm with the user before executing.\nError Handling\nError\tUser-Facing Message\tSuggested Action\nWallet not configured\t\"No wallet configured for transactions.\"\tSet WALLET_TYPE + PRIVATE_KEY in .env\nInsufficient balance\t\"You have X but need Y to add liquidity.\"\tReduce amount or swap for needed tokens\nPool not found\t\"No pool found for X/Y at this fee tier.\"\tTry different fee tier or check token names\nPosition not found\t\"Position #ID not found on this chain.\"\tCheck chain and position ID\nSafety check failed\t\"Transaction blocked by safety: {reason}\"\tAdjust parameters or check safety config\nTransaction reverted\t\"Transaction failed: {reason}\"\tCheck slippage, amounts, or try again\nliquidity-manager unavailable\t\"Liquidity agent is not available.\"\tCheck agent configuration"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wpank/manage-liquidity",
    "publisherUrl": "https://clawhub.ai/wpank/manage-liquidity",
    "owner": "wpank",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/manage-liquidity",
    "downloadUrl": "https://openagent3.xyz/downloads/manage-liquidity",
    "agentUrl": "https://openagent3.xyz/skills/manage-liquidity/agent",
    "manifestUrl": "https://openagent3.xyz/skills/manage-liquidity/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/manage-liquidity/agent.md"
  }
}