{
  "schemaVersion": "1.0",
  "item": {
    "slug": "uniswap-pool-analysis",
    "name": "Uniswap Pool Analysis",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/wpank/uniswap-pool-analysis",
    "canonicalUrl": "https://clawhub.ai/wpank/uniswap-pool-analysis",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/uniswap-pool-analysis",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=uniswap-pool-analysis",
    "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/uniswap-pool-analysis"
    },
    "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/uniswap-pool-analysis",
    "agentPageUrl": "https://openagent3.xyz/skills/uniswap-pool-analysis/agent",
    "manifestUrl": "https://openagent3.xyz/skills/uniswap-pool-analysis/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/uniswap-pool-analysis/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 skill covers querying and analyzing Uniswap v3/v4 pool state on-chain using viem."
      },
      {
        "title": "Key Concepts",
        "body": "sqrtPriceX96: Encoded price format used by Uniswap v3/v4. Convert with price = (sqrtPriceX96 / 2^96)^2\nTicks: Discrete price points defining liquidity ranges. Tick spacing depends on fee tier.\nLiquidity: The L value representing active liquidity at the current tick."
      },
      {
        "title": "Fee Tiers (v3)",
        "body": "Fee (bps)Tick SpacingTypical Use1 (0.01%)1Stablecoin pairs5 (0.05%)10Correlated pairs30 (0.30%)60Standard pairs100 (1.00%)200Exotic pairs"
      },
      {
        "title": "Querying Pool State",
        "body": "Use the Uniswap v3 Pool ABI to read on-chain state:\n\nimport { createPublicClient, http } from \"viem\";\nimport { mainnet } from \"viem/chains\";\n\nconst client = createPublicClient({\n  chain: mainnet,\n  transport: http(process.env.ETHEREUM_RPC_URL),\n});\n\n// Read slot0 for current price and tick\nconst [\n  sqrtPriceX96,\n  tick,\n  observationIndex,\n  observationCardinality,\n  observationCardinalityNext,\n  feeProtocol,\n  unlocked,\n] = await client.readContract({\n  address: poolAddress,\n  abi: poolAbi,\n  functionName: \"slot0\",\n});\n\n// Read liquidity\nconst liquidity = await client.readContract({\n  address: poolAddress,\n  abi: poolAbi,\n  functionName: \"liquidity\",\n});"
      },
      {
        "title": "Price Conversion",
        "body": "function sqrtPriceX96ToPrice(\n  sqrtPriceX96: bigint,\n  decimals0: number,\n  decimals1: number,\n): number {\n  const price = Number(sqrtPriceX96) / 2 ** 96;\n  return (price * price * 10 ** decimals0) / 10 ** decimals1;\n}\n\nfunction tickToPrice(\n  tick: number,\n  decimals0: number,\n  decimals1: number,\n): number {\n  return (1.0001 ** tick * 10 ** decimals0) / 10 ** decimals1;\n}"
      },
      {
        "title": "Liquidity Distribution",
        "body": "To analyze liquidity distribution across ticks:\n\nQuery tickBitmap to find initialized ticks\nFor each initialized tick, read ticks(tickIndex) to get liquidityNet\nWalk from MIN_TICK to MAX_TICK, accumulating net liquidity changes\nPlot cumulative liquidity vs price for the distribution"
      },
      {
        "title": "Multi-chain Support",
        "body": "Always accept a chainId parameter. Use the shared chain config from packages/common/ to resolve:\n\nRPC URL\nPool factory address\nQuoter address\nSubgraph endpoint (if available)"
      }
    ],
    "body": "Uniswap Pool Analysis\nOverview\n\nThis skill covers querying and analyzing Uniswap v3/v4 pool state on-chain using viem.\n\nKey Concepts\nsqrtPriceX96: Encoded price format used by Uniswap v3/v4. Convert with price = (sqrtPriceX96 / 2^96)^2\nTicks: Discrete price points defining liquidity ranges. Tick spacing depends on fee tier.\nLiquidity: The L value representing active liquidity at the current tick.\nFee Tiers (v3)\nFee (bps)\tTick Spacing\tTypical Use\n1 (0.01%)\t1\tStablecoin pairs\n5 (0.05%)\t10\tCorrelated pairs\n30 (0.30%)\t60\tStandard pairs\n100 (1.00%)\t200\tExotic pairs\nQuerying Pool State\n\nUse the Uniswap v3 Pool ABI to read on-chain state:\n\nimport { createPublicClient, http } from \"viem\";\nimport { mainnet } from \"viem/chains\";\n\nconst client = createPublicClient({\n  chain: mainnet,\n  transport: http(process.env.ETHEREUM_RPC_URL),\n});\n\n// Read slot0 for current price and tick\nconst [\n  sqrtPriceX96,\n  tick,\n  observationIndex,\n  observationCardinality,\n  observationCardinalityNext,\n  feeProtocol,\n  unlocked,\n] = await client.readContract({\n  address: poolAddress,\n  abi: poolAbi,\n  functionName: \"slot0\",\n});\n\n// Read liquidity\nconst liquidity = await client.readContract({\n  address: poolAddress,\n  abi: poolAbi,\n  functionName: \"liquidity\",\n});\n\nPrice Conversion\nfunction sqrtPriceX96ToPrice(\n  sqrtPriceX96: bigint,\n  decimals0: number,\n  decimals1: number,\n): number {\n  const price = Number(sqrtPriceX96) / 2 ** 96;\n  return (price * price * 10 ** decimals0) / 10 ** decimals1;\n}\n\nfunction tickToPrice(\n  tick: number,\n  decimals0: number,\n  decimals1: number,\n): number {\n  return (1.0001 ** tick * 10 ** decimals0) / 10 ** decimals1;\n}\n\nLiquidity Distribution\n\nTo analyze liquidity distribution across ticks:\n\nQuery tickBitmap to find initialized ticks\nFor each initialized tick, read ticks(tickIndex) to get liquidityNet\nWalk from MIN_TICK to MAX_TICK, accumulating net liquidity changes\nPlot cumulative liquidity vs price for the distribution\nMulti-chain Support\n\nAlways accept a chainId parameter. Use the shared chain config from packages/common/ to resolve:\n\nRPC URL\nPool factory address\nQuoter address\nSubgraph endpoint (if available)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wpank/uniswap-pool-analysis",
    "publisherUrl": "https://clawhub.ai/wpank/uniswap-pool-analysis",
    "owner": "wpank",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/uniswap-pool-analysis",
    "downloadUrl": "https://openagent3.xyz/downloads/uniswap-pool-analysis",
    "agentUrl": "https://openagent3.xyz/skills/uniswap-pool-analysis/agent",
    "manifestUrl": "https://openagent3.xyz/skills/uniswap-pool-analysis/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/uniswap-pool-analysis/agent.md"
  }
}