[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GWTHRZK0PCR33QT29TM9QZ":3,"skill-same:01M6GWTHRZK0PCR33QT29TM9QZ":472},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":19,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6GWTHRZK0PCR33QT29TM9QZ","realized-lp",null,"Check what liquidity providers ACTUALLY earned in a Uniswap v3 or Aerodrome pool — fee income minus impermanent loss — against the fees-only APR that DEX UIs advertise. Use when asked whether an LP position, pool, or yield number is actually profitable, whether an advertised APR is trustworthy, or to audit many pools at once for misleading yield. Backed by live Graph subgraph data.","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FSKILL.md",[],[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"lp","realized lp","liquidity","when","aerodrome","for","at","impermanent loss","number","income","v3","uniswap v3","graph","uniswap","live","yield","fees","dex","only","use","check","Providers","data","audit","2026-11-10 10:12:30",false,"---\nname: realized-lp\ndescription: Check what liquidity providers ACTUALLY earned in a Uniswap v3 or Aerodrome pool — fee income minus impermanent loss — against the fees-only APR that DEX UIs advertise. Use when asked whether an LP position, pool, or yield number is actually profitable, whether an advertised APR is trustworthy, or to audit many pools at once for misleading yield. Backed by live Graph subgraph data.\n---\n\n# Realized LP\n\nAdvertised LP APR is fee income, annualized. **It has no price term, so it cannot go negative.**\nA pool cannot advertise a loss no matter what happened to the people in it. This skill computes\nthe number that can: `realized = fees + impermanent loss`.\n\n## When to use this\n\n- \"Is this pool actually profitable?\" \u002F \"Is this APR real?\"\n- \"I'm LPing WETH\u002FUSDC, am I making money?\"\n- \"Find me pools where the advertised yield is lying\"\n- Any yield-farming or LP decision where the advertised number is the only evidence on offer\n\n## Quick start (no install, no API key)\n\n```bash\ncurl -s https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fpools\n```\n\n202 live pools across 4 validated venues. The response embeds its own `schema` and the exact\nimpermanent-loss formula in `howToComputeRealizedReturn`, so you can compute any range yourself\nwith no further docs. Fields per pool:\n\n| field | meaning |\n|---|---|\n| `pair` | token0\u002Ftoken1 symbols |\n| `dex` \u002F `chain` | `uniswap-v3` \\| `aerodrome` \u002F `mainnet` \\| `arbitrum` \\| `polygon` \\| `base` |\n| `r` | price ratio over the window (exit ÷ entry) |\n| `fees` | fee income over window, % of entry TVL |\n| `adv` | **advertised** APR % — what the DEX UI shows |\n| `days` | window length |\n\n### Compute realized return for any range\n\n```js\nfunction il(r, w) {                      \u002F\u002F w = range half-width: 1.25 tight, 2 typical, 1e8 full\n  const sa = Math.sqrt(1 \u002F w), sb = Math.sqrt(w);\n  let pos;\n  if (r \u003C= 1 \u002F w) pos = (1 \u002F sa - 1 \u002F sb) * r;\n  else if (r >= w) pos = sb - sa;\n  else pos = 2 * Math.sqrt(r) - sa - r \u002F sb;\n  return ((pos \u002F ((1 - sa) + (1 - 1 \u002F sb) * r)) - 1) * 100;\n}\nconst realizedPct = pool.fees + il(pool.r, 2);\nconst realizedApr = (realizedPct \u002F pool.days) * 365;\nconst misleading  = pool.adv > 0 && realizedApr \u003C 0;   \u002F\u002F advertised a profit you didn't get\n```\n\n**`r \u003C= 1\u002Fw` or `r >= w` means price left the band** — the LP is fully converted into the losing\nasset and the loss is realized, not impermanent. Always say so; it changes the advice.\n\n## Live queries (MCP server)\n\nFor pools not in the cached set, or a custom window, run the MCP server. Needs a free\n[Subgraph Studio](https:\u002F\u002Fthegraph.com\u002Fstudio\u002F) API key.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fjiggy-cadence\u002Frealized && cd realized && npm install\n```\n\nPaste into Claude Desktop (`claude_desktop_config.json`), Cursor (`.cursor\u002Fmcp.json`), or any\nMCP client, then restart it:\n\n```json\n{\n  \"mcpServers\": {\n    \"realized\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002Frealized\u002Fbin\u002Fmcp-server.js\"],\n      \"env\": { \"GRAPH_API_KEY\": \"your-subgraph-studio-key\" }\n    }\n  }\n}\n```\n\n**No key? Skip the MCP server entirely.** Every tool is also a plain HTTP GET against our\nserver, which proxies its own Graph key — no auth, CORS open:\n\n```bash\ncurl \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Ffind?q=WETH\u002FUSDC\"\n```\n\n| tool | use |\n|---|---|\n| `find_pool(query)` | **start here** — resolve `\"WETH\u002FUSDC\"` or `\"PEPE\"` to ranked poolIds. You never need to know an address. |\n| `realized_return(poolId, days?, rangeWidthX?)` | fees vs IL vs advertised for one pool over a recent window |\n| `position_realized(poolId, entryDate, rangeWidthX?)` | **what YOU actually made** on a position entered on a *specific date*, however long ago — not \"the last 30 days,\" but \"since I actually put money in.\" See below. |\n| `explain_gap(poolId)` | plain-language verdict + the evidence chain that produced it |\n| `audit_pools(limit?)` | corpus-wide sweep: how many pools advertise a profit LPs didn't get |\n\n### Stop assuming the range — read the real one\n\nEvery number above needs a range width, and `±2×` is a guess. `\u002Fapi\u002Fwallet\u002F{address}` reads what\nthe LP actually set:\n\n```bash\ncurl -s \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fwallet\u002F0xYourAddress\"\n```\n\nRead-only. No signing, no wallet connection, no permissions — it is a subgraph lookup on a public\naddress, nothing more. Returns each open position with its real `tickLower`\u002F`tickUpper`, the\nderived `range.widthX`, and a plain-language `range.label`. **Feed `range.widthX` into\n`position_realized` (or `\u002Fapi\u002Fposition\u002F{poolId}?range=`) to get realized return at the LP's actual\nband instead of an assumed one.** That is the whole point of the endpoint.\n\n#### It searches Uniswap v3 AND v4 — and they are not the same kind of answer\n\nWith no `?dex=`, the endpoint queries **both v3 and v4 on mainnet in parallel** and returns\n`{ searched, foundIn, openPositions, venues: { \"uniswap-v3\": {…}, \"uniswap-v4\": {…} } }`.\nThe venues stay in separate blocks deliberately: merging them would produce one position list\nwhere some rows silently cannot support a realized-return number.\n\n| | v3 (+ arbitrum\u002Fpolygon\u002Fbase), Aerodrome | v4 (mainnet) |\n|---|---|---|\n| source | position **state** read | **event reconstruction** |\n| real range | yes | yes |\n| realized return | **yes** | **no** |\n| exit simulation | **yes** | **no** |\n\nWhy the asymmetry: the v4 `Position` entity carries only `id\u002FtokenId\u002Fowner\u002Forigin\u002Ftimestamps` —\n**no tick range at all.** Ranges are reconstructed by summing signed `ModifyLiquidity.amount` per\n`(pool, tickLower, tickUpper)`. That is a strictly weaker evidence class than reading a struct the\nchain already maintains, so we report the range and `inRange` and **refuse to price a v4 exit.**\n`\u002Fapi\u002Fvenues` exposes this per venue as `realizedReturn` \u002F `exitSimulation` booleans, so an agent\ncan check capability instead of assuming it.\n\n**If you are an agent consuming v4 results, respect these four things:**\n1. **Check `audit.allPass` before using any number.** Every v4 response ships `audit.checks[]` with\n   5 invariants (completeness, negatives classified, positions strictly positive, ticks ordered,\n   all keys accounted).\n2. **`openPositions: null` + `error` means the history was truncated** (>5000 ModifyLiquidity\n   events). A truncated sum is self-consistent and wrong, so no positions are reported at all\n   rather than a partial total that looks authoritative.\n3. **`incompleteHistory[]`** lists ranges where liquidity was *removed* with no matching add in this\n   wallet's events — almost always a position transferred in. Their size is deliberately not\n   reported; do not infer one.\n4. Lookups key on **`origin`** (the EOA). `sender` is the position manager contract and matches\n   nothing — if you query v4 events yourself, do not use `sender`.\n\nUniswap **v2 is not supported, on purpose.** v2 LP shares are fungible and always full-range, so\n\"read the range you actually set\" has no meaning there — including it would dilute the claim rather\nthan extend it.\n\n**It is position discovery, not per-position P&L — deliberately.** Two fields look like they'd\ngive you fees and entry value. Both lie:\n\n- `collectedFees*` is a **withdrawal** record, not an earnings record — it only populates when the\n  LP calls `collect()`. Measured live: of 150 positions with `collectedFeesToken0 == 0`, **71 had\n  non-zero `feeGrowthInside0LastX128`** — they earned fees and never collected. So uncollected fees\n  return `measurable: false` with a reason, **never `$0`**. Reporting zero there would reproduce the\n  exact defect this project exists to expose, pointed at the user's own money.\n- `deposited*`\u002F`withdrawn*` are **lifetime cumulative**, not entry state (75% of live positions read\n  as one-sided because of it). They are namespaced under `cumulative` and must not be read as\n  position value.\n\nEvery response carries a `limits` block stating both, and token `decimals` ship beside every raw\namount so you never guess the divisor. Never render a position's fees as a number unless\n`fees.measurable` is `true`.\n\n### `position_realized` — the one question every real LP actually has\n\n`realized_return` answers \"what does the average LP get in this pool right now.\"\n`position_realized` answers \"I put money into this exact pool on this exact date at this exact\nrange — what have I actually made since.\" Anchors to a real calendar date, not a fixed lookback:\n\n```json\n{ \"poolId\": \"0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640\", \"entryDate\": \"2026-07-28\", \"rangeWidthX\": 2 }\n```\n\nReturns fees earned, impermanent loss, realized return, whether price ever left your band (if\nso the loss is **locked in**, not impermanent), and a day-by-day series so you can see exactly\nwhen the position turned. Refuses to answer (`measurable: false`) rather than guess if fewer\nthan 2 days have passed since entry — there is nothing to measure yet, and 0% is not the honest\nanswer to \"not enough data.\"\n\nSame math as everywhere else in this project (`lib\u002Fconcentrated.js`'s own IL formula, not a\nseparate implementation) — hand-verified in `test\u002Fcanary.test.js` against an independent,\nfrom-scratch calculation, plus a live check against a real 45-day-old position.\n\nAlso available over plain HTTP (no MCP client, no API key — we proxy our own Graph key):\n\n```bash\ncurl -s \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fposition\u002F0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640?entry=2026-07-01&range=2\"\n```\n\n`entry` accepts an ISO date or a unix timestamp; `range` is the band width (omit for ±2×, use a\nhuge value for full range). Errors are explicit and never fabricated: a future `entry`, an\nunparseable date, an unknown pool, and a window too short to measure each return a stated reason\nrather than a number. The same call backs the date picker on the web UI — one implementation of\nthe math, three transports (MCP, HTTP, browser).\n\n### `simulate_exit` — decision support for closing a position TODAY\n\nNot a new claim: calls the identical `position_realized` math and reframes it around the\nquestion a holder actually has at the moment of deciding — dollars on a stated stake, not just\npercent since entry.\n\n```bash\ncurl -s \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fsimulate-exit\u002F0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640?entry=2026-07-28&range=2&stake=25000\"\n```\n\n**Gas is real.** Live gas price from 1inch × estimated gas units for `decreaseLiquidity` +\n`collect` (~270k), priced in the chain's native token. The *price* is measured; the *units* are\nan estimate, so the response carries `isEstimate: true` and you should report the dollar figure\nas approximate. It degrades to `{ available: false, reason }` rather than guessing.\n\n**Slippage is zero for a plain close, and that zero is measured, not missing.** Closing a v3\nposition is not a swap — `decreaseLiquidity` + `collect` returns *both* tokens at the current\ntick, so there is no price impact. Slippage only exists if the holder then chooses to swap one\nside into the other:\n\n```bash\ncurl -s \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fsimulate-exit\u002F0x88e6...5640?entry=2026-07-28&stake=25000&consolidate=true\"\n```\n\nWith `consolidate=true` the estimate is an explicit **lower bound**: impact is modelled against\ntotal pool TVL, but a concentrated pool's depth at the active tick is thinner than its TVL, so\nreal impact is likely higher. Say \"at least,\" never \"exactly.\"\n\n`netAfterCostsUsd` is populated **only** when both gas and slippage are known, and is `null`\notherwise — a partial subtraction presented as a complete figure is the same defect this project\nexists to expose. If `outOfRange` is true, say plainly that the loss is locked in regardless of\ntiming — waiting does not un-realize it.\n\n## Reporting rules (these matter more than the numbers)\n\n1. **Always state the range.** The same pool can be honest full-range and misleading at ±1.25×.\n   Full-range is the *most generous possible case for the pool* — never quote it alone.\n2. **`measurable: false` is not zero.** It means the window couldn't be priced. Say \"couldn't\n   measure,\" never \"no loss.\"\n3. **Check the canary before quoting an aggregate.** `audit_pools` returns\n   `canary.passed` — stable\u002Fstable pairs must show ~0 IL. If it's false the instrument is\n   unproven and every number in that response is untrusted.\n4. **Fees are held constant across ranges**, which is unfair to *this tool*: concentrating earns\n   more fees too, so some IL is earned back. The **direction** is reliable; treat magnitudes as\n   bounded by that caveat.\n5. **This is backward-looking measurement, not a forecast.** It says what happened over the\n   window, not what will happen.\n\n## What holds this up\n\n110 independent (non-overlapping) 30-day windows across 4 chains, plus the same instrument run\nunchanged on Aerodrome Slipstream — different team, codebase, incentive model — showing the same\ndefect with the same shape. Venues whose stable pairs can't prove ~0 IL are **excluded, not\nreported as clean**. Full tables: \u003Chttps:\u002F\u002Frealized.drainfun.xyz\u002Freport.html>\n\nData: The Graph. Per-day `feesUSD` are indexer-derived aggregates. **Not** unreachable by RPC —\n`feeGrowthGlobal0X128` is public pool state readable at any historical block, verified live\n2026-09-11 — but reconstructing per-day USD from it needs an archive node, a block lookup per\nday boundary, and a historical price for both tokens at each one, repeated per pool. The Graph\npublishes that join already computed across 256 pools and 4 chains. The claim is practicality,\nnot impossibility.\n\n## Machine-readable API spec\n\nFull OpenAPI 3.1 description of every endpoint, parameter, response shape and error:\n\u003Chttps:\u002F\u002Frealized.drainfun.xyz\u002Fopenapi.json> — so an agent never has to guess a request shape.\n","# Realized LP\n\nAdvertised LP APR is fee income, annualized. **It has no price term, so it cannot go negative.**\nA pool cannot advertise a loss no matter what happened to the people in it. This skill computes\nthe number that can: `realized = fees + impermanent loss`.\n\n## When to use this\n\n- \"Is this pool actually profitable?\" \u002F \"Is this APR real?\"\n- \"I'm LPing WETH\u002FUSDC, am I making money?\"\n- \"Find me pools where the advertised yield is lying\"\n- Any yield-farming or LP decision where the advertised number is the only evidence on offer\n\n## Quick start (no install, no API key)\n\n```bash\ncurl -s https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fpools\n```\n\n202 live pools across 4 validated venues. The response embeds its own `schema` and the exact\nimpermanent-loss formula in `howToComputeRealizedReturn`, so you can compute any range yourself\nwith no further docs. Fields per pool:\n\n| field | meaning |\n|---|---|\n| `pair` | token0\u002Ftoken1 symbols |\n| `dex` \u002F `chain` | `uniswap-v3` \\| `aerodrome` \u002F `mainnet` \\| `arbitrum` \\| `polygon` \\| `base` |\n| `r` | price ratio over the window (exit ÷ entry) |\n| `fees` | fee income over window, % of entry TVL |\n| `adv` | **advertised** APR % — what the DEX UI shows |\n| `days` | window length |\n\n### Compute realized return for any range\n\n```js\nfunction il(r, w) {                      \u002F\u002F w = range half-width: 1.25 tight, 2 typical, 1e8 full\n  const sa = Math.sqrt(1 \u002F w), sb = Math.sqrt(w);\n  let pos;\n  if (r \u003C= 1 \u002F w) pos = (1 \u002F sa - 1 \u002F sb) * r;\n  else if (r >= w) pos = sb - sa;\n  else pos = 2 * Math.sqrt(r) - sa - r \u002F sb;\n  return ((pos \u002F ((1 - sa) + (1 - 1 \u002F sb) * r)) - 1) * 100;\n}\nconst realizedPct = pool.fees + il(pool.r, 2);\nconst realizedApr = (realizedPct \u002F pool.days) * 365;\nconst misleading  = pool.adv > 0 && realizedApr \u003C 0;   \u002F\u002F advertised a profit you didn't get\n```\n\n**`r \u003C= 1\u002Fw` or `r >= w` means price left the band** — the LP is fully converted into the losing\nasset and the loss is realized, not impermanent. Always say so; it changes the advice.\n\n## Live queries (MCP server)\n\nFor pools not in the cached set, or a custom window, run the MCP server. Needs a free\n[Subgraph Studio](https:\u002F\u002Fthegraph.com\u002Fstudio\u002F) API key.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fjiggy-cadence\u002Frealized && cd realized && npm install\n```\n\nPaste into Claude Desktop (`claude_desktop_config.json`), Cursor (`.cursor\u002Fmcp.json`), or any\nMCP client, then restart it:\n\n```json\n{\n  \"mcpServers\": {\n    \"realized\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002Frealized\u002Fbin\u002Fmcp-server.js\"],\n      \"env\": { \"GRAPH_API_KEY\": \"your-subgraph-studio-key\" }\n    }\n  }\n}\n```\n\n**No key? Skip the MCP server entirely.** Every tool is also a plain HTTP GET against our\nserver, which proxies its own Graph key — no auth, CORS open:\n\n```bash\ncurl \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Ffind?q=WETH\u002FUSDC\"\n```\n\n| tool | use |\n|---|---|\n| `find_pool(query)` | **start here** — resolve `\"WETH\u002FUSDC\"` or `\"PEPE\"` to ranked poolIds. You never need to know an address. |\n| `realized_return(poolId, days?, rangeWidthX?)` | fees vs IL vs advertised for one pool over a recent window |\n| `position_realized(poolId, entryDate, rangeWidthX?)` | **what YOU actually made** on a position entered on a *specific date*, however long ago — not \"the last 30 days,\" but \"since I actually put money in.\" See below. |\n| `explain_gap(poolId)` | plain-language verdict + the evidence chain that produced it |\n| `audit_pools(limit?)` | corpus-wide sweep: how many pools advertise a profit LPs didn't get |\n\n### Stop assuming the range — read the real one\n\nEvery number above needs a range width, and `±2×` is a guess. `\u002Fapi\u002Fwallet\u002F{address}` reads what\nthe LP actually set:\n\n```bash\ncurl -s \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fwallet\u002F0xYourAddress\"\n```\n\nRead-only. No signing, no wallet connection, no permissions — it is a subgraph lookup on a public\naddress, nothing more. Returns each open position with its real `tickLower`\u002F`tickUpper`, the\nderived `range.widthX`, and a plain-language `range.label`. **Feed `range.widthX` into\n`position_realized` (or `\u002Fapi\u002Fposition\u002F{poolId}?range=`) to get realized return at the LP's actual\nband instead of an assumed one.** That is the whole point of the endpoint.\n\n#### It searches Uniswap v3 AND v4 — and they are not the same kind of answer\n\nWith no `?dex=`, the endpoint queries **both v3 and v4 on mainnet in parallel** and returns\n`{ searched, foundIn, openPositions, venues: { \"uniswap-v3\": {…}, \"uniswap-v4\": {…} } }`.\nThe venues stay in separate blocks deliberately: merging them would produce one position list\nwhere some rows silently cannot support a realized-return number.\n\n| | v3 (+ arbitrum\u002Fpolygon\u002Fbase), Aerodrome | v4 (mainnet) |\n|---|---|---|\n| source | position **state** read | **event reconstruction** |\n| real range | yes | yes |\n| realized return | **yes** | **no** |\n| exit simulation | **yes** | **no** |\n\nWhy the asymmetry: the v4 `Position` entity carries only `id\u002FtokenId\u002Fowner\u002Forigin\u002Ftimestamps` —\n**no tick range at all.** Ranges are reconstructed by summing signed `ModifyLiquidity.amount` per\n`(pool, tickLower, tickUpper)`. That is a strictly weaker evidence class than reading a struct the\nchain already maintains, so we report the range and `inRange` and **refuse to price a v4 exit.**\n`\u002Fapi\u002Fvenues` exposes this per venue as `realizedReturn` \u002F `exitSimulation` booleans, so an agent\ncan check capability instead of assuming it.\n\n**If you are an agent consuming v4 results, respect these four things:**\n1. **Check `audit.allPass` before using any number.** Every v4 response ships `audit.checks[]` with\n   5 invariants (completeness, negatives classified, positions strictly positive, ticks ordered,\n   all keys accounted).\n2. **`openPositions: null` + `error` means the history was truncated** (>5000 ModifyLiquidity\n   events). A truncated sum is self-consistent and wrong, so no positions are reported at all\n   rather than a partial total that looks authoritative.\n3. **`incompleteHistory[]`** lists ranges where liquidity was *removed* with no matching add in this\n   wallet's events — almost always a position transferred in. Their size is deliberately not\n   reported; do not infer one.\n4. Lookups key on **`origin`** (the EOA). `sender` is the position manager contract and matches\n   nothing — if you query v4 events yourself, do not use `sender`.\n\nUniswap **v2 is not supported, on purpose.** v2 LP shares are fungible and always full-range, so\n\"read the range you actually set\" has no meaning there — including it would dilute the claim rather\nthan extend it.\n\n**It is position discovery, not per-position P&L — deliberately.** Two fields look like they'd\ngive you fees and entry value. Both lie:\n\n- `collectedFees*` is a **withdrawal** record, not an earnings record — it only populates when the\n  LP calls `collect()`. Measured live: of 150 positions with `collectedFeesToken0 == 0`, **71 had\n  non-zero `feeGrowthInside0LastX128`** — they earned fees and never collected. So uncollected fees\n  return `measurable: false` with a reason, **never `$0`**. Reporting zero there would reproduce the\n  exact defect this project exists to expose, pointed at the user's own money.\n- `deposited*`\u002F`withdrawn*` are **lifetime cumulative**, not entry state (75% of live positions read\n  as one-sided because of it). They are namespaced under `cumulative` and must not be read as\n  position value.\n\nEvery response carries a `limits` block stating both, and token `decimals` ship beside every raw\namount so you never guess the divisor. Never render a position's fees as a number unless\n`fees.measurable` is `true`.\n\n### `position_realized` — the one question every real LP actually has\n\n`realized_return` answers \"what does the average LP get in this pool right now.\"\n`position_realized` answers \"I put money into this exact pool on this exact date at this exact\nrange — what have I actually made since.\" Anchors to a real calendar date, not a fixed lookback:\n\n```json\n{ \"poolId\": \"0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640\", \"entryDate\": \"2026-07-28\", \"rangeWidthX\": 2 }\n```\n\nReturns fees earned, impermanent loss, realized return, whether price ever left your band (if\nso the loss is **locked in**, not impermanent), and a day-by-day series so you can see exactly\nwhen the position turned. Refuses to answer (`measurable: false`) rather than guess if fewer\nthan 2 days have passed since entry — there is nothing to measure yet, and 0% is not the honest\nanswer to \"not enough data.\"\n\nSame math as everywhere else in this project (`lib\u002Fconcentrated.js`'s own IL formula, not a\nseparate implementation) — hand-verified in `test\u002Fcanary.test.js` against an independent,\nfrom-scratch calculation, plus a live check against a real 45-day-old position.\n\nAlso available over plain HTTP (no MCP client, no API key — we proxy our own Graph key):\n\n```bash\ncurl -s \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fposition\u002F0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640?entry=2026-07-01&range=2\"\n```\n\n`entry` accepts an ISO date or a unix timestamp; `range` is the band width (omit for ±2×, use a\nhuge value for full range). Errors are explicit and never fabricated: a future `entry`, an\nunparseable date, an unknown pool, and a window too short to measure each return a stated reason\nrather than a number. The same call backs the date picker on the web UI — one implementation of\nthe math, three transports (MCP, HTTP, browser).\n\n### `simulate_exit` — decision support for closing a position TODAY\n\nNot a new claim: calls the identical `position_realized` math and reframes it around the\nquestion a holder actually has at the moment of deciding — dollars on a stated stake, not just\npercent since entry.\n\n```bash\ncurl -s \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fsimulate-exit\u002F0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640?entry=2026-07-28&range=2&stake=25000\"\n```\n\n**Gas is real.** Live gas price from 1inch × estimated gas units for `decreaseLiquidity` +\n`collect` (~270k), priced in the chain's native token. The *price* is measured; the *units* are\nan estimate, so the response carries `isEstimate: true` and you should report the dollar figure\nas approximate. It degrades to `{ available: false, reason }` rather than guessing.\n\n**Slippage is zero for a plain close, and that zero is measured, not missing.** Closing a v3\nposition is not a swap — `decreaseLiquidity` + `collect` returns *both* tokens at the current\ntick, so there is no price impact. Slippage only exists if the holder then chooses to swap one\nside into the other:\n\n```bash\ncurl -s \"https:\u002F\u002Frealized.drainfun.xyz\u002Fapi\u002Fsimulate-exit\u002F0x88e6...5640?entry=2026-07-28&stake=25000&consolidate=true\"\n```\n\nWith `consolidate=true` the estimate is an explicit **lower bound**: impact is modelled against\ntotal pool TVL, but a concentrated pool's depth at the active tick is thinner than its TVL, so\nreal impact is likely higher. Say \"at least,\" never \"exactly.\"\n\n`netAfterCostsUsd` is populated **only** when both gas and slippage are known, and is `null`\notherwise — a partial subtraction presented as a complete figure is the same defect this project\nexists to expose. If `outOfRange` is true, say plainly that the loss is locked in regardless of\ntiming — waiting does not un-realize it.\n\n## Reporting rules (these matter more than the numbers)\n\n1. **Always state the range.** The same pool can be honest full-range and misleading at ±1.25×.\n   Full-range is the *most generous possible case for the pool* — never quote it alone.\n2. **`measurable: false` is not zero.** It means the window couldn't be priced. Say \"couldn't\n   measure,\" never \"no loss.\"\n3. **Check the canary before quoting an aggregate.** `audit_pools` returns\n   `canary.passed` — stable\u002Fstable pairs must show ~0 IL. If it's false the instrument is\n   unproven and every number in that response is untrusted.\n4. **Fees are held constant across ranges**, which is unfair to *this tool*: concentrating earns\n   more fees too, so some IL is earned back. The **direction** is reliable; treat magnitudes as\n   bounded by that caveat.\n5. **This is backward-looking measurement, not a forecast.** It says what happened over the\n   window, not what will happen.\n\n## What holds this up\n\n110 independent (non-overlapping) 30-day windows across 4 chains, plus the same instrument run\nunchanged on Aerodrome Slipstream — different team, codebase, incentive model — showing the same\ndefect with the same shape. Venues whose stable pairs can't prove ~0 IL are **excluded, not\nreported as clean**. Full tables: \u003Chttps:\u002F\u002Frealized.drainfun.xyz\u002Freport.html>\n\nData: The Graph. Per-day `feesUSD` are indexer-derived aggregates. **Not** unreachable by RPC —\n`feeGrowthGlobal0X128` is public pool state readable at any historical block, verified live\n2026-09-11 — but reconstructing per-day USD from it needs an archive node, a block lookup per\nday boundary, and a historical price for both tokens at each one, repeated per pool. The Graph\npublishes that join already computed across 256 pools and 4 chains. The claim is practicality,\nnot impossibility.\n\n## Machine-readable API spec\n\nFull OpenAPI 3.1 description of every endpoint, parameter, response shape and error:\n\u003Chttps:\u002F\u002Frealized.drainfun.xyz\u002Fopenapi.json> — so an agent never has to guess a request shape.\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp",17,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia","https:\u002F\u002Feth2030.com","Hardcore infra. Building @alt-research and applied cryptography.","2026-11-14 02:27:51",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill realized-lp",{"tool":64,"command":65},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill realized-lp",{"tool":67,"command":68},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill realized-lp","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FSKILL.md",true,[72,78,82,88,94,98,102,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,356,360,364,368,372,376,380,384,388,392,396,400,404,408,412,416,420,424,428,432,436,440,444,448,452,456,460,464,468],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},".gitignore","OTHER","其他",32,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002F.gitignore",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},".grepignore",59,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002F.grepignore",{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"api\u002Fpools.json","REFERENCE","参考文档",71824,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fapi\u002Fpools.json",{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"assets\u002Flogo-256.png","ASSET","资产文件",44508,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fassets\u002Flogo-256.png",{"path":95,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":96,"sourceHtmlUrl":97},"assets\u002Flogo-64.png",4775,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fassets\u002Flogo-64.png",{"path":99,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":100,"sourceHtmlUrl":101},"assets\u002Flogo.jpg",33753,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fassets\u002Flogo.jpg",{"path":103,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":106,"sourceHtmlUrl":107},"bin\u002Fapi.js","SCRIPT","脚本",29751,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fbin\u002Fapi.js",{"path":109,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":110,"sourceHtmlUrl":111},"bin\u002Fmcp-server.js",24974,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fbin\u002Fmcp-server.js",{"path":113,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":114,"sourceHtmlUrl":115},"COMPOSABILITY.md",6243,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FCOMPOSABILITY.md",{"path":117,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":118,"sourceHtmlUrl":119},"data\u002Fcorpus.json",1163160,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fcorpus.json",{"path":121,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":122,"sourceHtmlUrl":123},"data\u002Fcross-dex.json",131243,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fcross-dex.json",{"path":125,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":126,"sourceHtmlUrl":127},"data\u002Ffee-uplift-bound.json",3269,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Ffee-uplift-bound.json",{"path":129,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":130,"sourceHtmlUrl":131},"data\u002Fhistory.json",365657,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fhistory.json",{"path":133,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":134,"sourceHtmlUrl":135},"data\u002Fleaderboard.json",14739,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fleaderboard.json",{"path":137,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":138,"sourceHtmlUrl":139},"data\u002Fllama-grade-backdated.json",2354048,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fllama-grade-backdated.json",{"path":141,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":142,"sourceHtmlUrl":143},"data\u002Fllama-layer.json",2562,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fllama-layer.json",{"path":145,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":146,"sourceHtmlUrl":147},"data\u002Fllama-predictions-t0.json",3702471,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fllama-predictions-t0.json",{"path":149,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":150,"sourceHtmlUrl":151},"data\u002Fpools.json",69927,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fpools.json",{"path":153,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":154,"sourceHtmlUrl":155},"data\u002Fpricecheck.json",1993,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fpricecheck.json",{"path":157,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":158,"sourceHtmlUrl":159},"data\u002Fselect-v2.json",2865,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fselect-v2.json",{"path":161,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":162,"sourceHtmlUrl":163},"data\u002Fspike-hunt.json",2420,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fspike-hunt.json",{"path":165,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":166,"sourceHtmlUrl":167},"data\u002Fspike-hunt2.json",5163,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fspike-hunt2.json",{"path":169,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":170,"sourceHtmlUrl":171},"data\u002Fspike-hunt3.json",3558,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fspike-hunt3.json",{"path":173,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":174,"sourceHtmlUrl":175},"data\u002Fspike-hunt4.json",2317,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fspike-hunt4.json",{"path":177,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":178,"sourceHtmlUrl":179},"data\u002Fspike-hunt5.json",2922,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fspike-hunt5.json",{"path":181,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":182,"sourceHtmlUrl":183},"data\u002Fspike-hunt6.json",32845,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fspike-hunt6.json",{"path":185,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":186,"sourceHtmlUrl":187},"data\u002Fspike-hunt7.json",429996,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fspike-hunt7.json",{"path":189,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":190,"sourceHtmlUrl":191},"data\u002Fspike-hunt8.json",767162,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fspike-hunt8.json",{"path":193,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":194,"sourceHtmlUrl":195},"data\u002Fspreads.json",26535,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fspreads.json",{"path":197,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":198,"sourceHtmlUrl":199},"data\u002Fwalkforward.json",30309,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdata\u002Fwalkforward.json",{"path":201,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":202,"sourceHtmlUrl":203},"deck.html",19331,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdeck.html",{"path":205,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":206,"sourceHtmlUrl":207},"DEMO-SCRIPT.md",10152,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FDEMO-SCRIPT.md",{"path":209,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":210,"sourceHtmlUrl":211},"demo.js",6077,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fdemo.js",{"path":213,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":214,"sourceHtmlUrl":215},"ecosystem.realized-api.config.cjs",307,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fecosystem.realized-api.config.cjs",{"path":217,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":218,"sourceHtmlUrl":219},"FEEDBACK.md",10689,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FFEEDBACK.md",{"path":221,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":222,"sourceHtmlUrl":223},"FOR-JUDGES.md",7918,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FFOR-JUDGES.md",{"path":225,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":226,"sourceHtmlUrl":227},"index.html",135118,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Findex.html",{"path":229,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":230,"sourceHtmlUrl":231},"lib\u002Fconcentrated.js",150,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Flib\u002Fconcentrated.js",{"path":233,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":234,"sourceHtmlUrl":235},"lib\u002Frealized.js",358,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Flib\u002Frealized.js",{"path":237,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":238,"sourceHtmlUrl":239},"lib\u002Fvenues.js",138,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Flib\u002Fvenues.js",{"path":241,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":242,"sourceHtmlUrl":243},"lib\u002Fwalkforward.js",148,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Flib\u002Fwalkforward.js",{"path":245,"resourceType":245,"resourceTypeDesc":246,"sizeBytes":247,"sourceHtmlUrl":16},"LICENSE","许可证",1072,{"path":249,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":250,"sourceHtmlUrl":251},"llms.txt",7669,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fllms.txt",{"path":253,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":254,"sourceHtmlUrl":255},"openapi.json",43687,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fopenapi.json",{"path":257,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":258,"sourceHtmlUrl":259},"package-lock.json",42357,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackage-lock.json",{"path":261,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":262,"sourceHtmlUrl":263},"package.json",651,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackage.json",{"path":265,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":266,"sourceHtmlUrl":267},"packages\u002Fcore\u002Fpackage.json",880,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002Fpackage.json",{"path":269,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":270,"sourceHtmlUrl":271},"packages\u002Fcore\u002FREADME.md",3897,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002FREADME.md",{"path":273,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":274,"sourceHtmlUrl":275},"packages\u002Fcore\u002Fsrc\u002Fconcentrated.js",2706,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002Fsrc\u002Fconcentrated.js",{"path":277,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":278,"sourceHtmlUrl":279},"packages\u002Fcore\u002Fsrc\u002Findex.js",3014,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002Fsrc\u002Findex.js",{"path":281,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":282,"sourceHtmlUrl":283},"packages\u002Fcore\u002Fsrc\u002Foneinch.js",9340,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002Fsrc\u002Foneinch.js",{"path":285,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":286,"sourceHtmlUrl":287},"packages\u002Fcore\u002Fsrc\u002Frealized.js",26181,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002Fsrc\u002Frealized.js",{"path":289,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":290,"sourceHtmlUrl":291},"packages\u002Fcore\u002Fsrc\u002Fv4.js",13289,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002Fsrc\u002Fv4.js",{"path":293,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":294,"sourceHtmlUrl":295},"packages\u002Fcore\u002Fsrc\u002Fvenues.js",3890,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002Fsrc\u002Fvenues.js",{"path":297,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":298,"sourceHtmlUrl":299},"packages\u002Fcore\u002Fsrc\u002Fwalkforward.js",5789,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002Fsrc\u002Fwalkforward.js",{"path":301,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":302,"sourceHtmlUrl":303},"packages\u002Fcore\u002Fsrc\u002Fwallet.js",12027,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fpackages\u002Fcore\u002Fsrc\u002Fwallet.js",{"path":305,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":306,"sourceHtmlUrl":307},"PREREG-selection-v2.md",2605,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FPREREG-selection-v2.md",{"path":309,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":310,"sourceHtmlUrl":311},"README.md",35877,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FREADME.md",{"path":313,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":314,"sourceHtmlUrl":315},"report.html",19640,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Freport.html",{"path":317,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":318,"sourceHtmlUrl":319},"REVIEW-GUARDRAILS.md",950,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FREVIEW-GUARDRAILS.md",{"path":321,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":322,"sourceHtmlUrl":323},"scripts\u002Fbuild-app.js",73704,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fbuild-app.js",{"path":325,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":326,"sourceHtmlUrl":327},"scripts\u002Fbuild-corpus.js",7805,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fbuild-corpus.js",{"path":329,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":330,"sourceHtmlUrl":331},"scripts\u002Fbuild-deck.js",26903,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fbuild-deck.js",{"path":333,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":334,"sourceHtmlUrl":335},"scripts\u002Fbuild-leaderboard.js",6847,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fbuild-leaderboard.js",{"path":337,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":338,"sourceHtmlUrl":339},"scripts\u002Fbuild-llama-layer.js",5839,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fbuild-llama-layer.js",{"path":341,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":342,"sourceHtmlUrl":343},"scripts\u002Fbuild-pools.js",5699,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fbuild-pools.js",{"path":345,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":346,"sourceHtmlUrl":347},"scripts\u002Fbuild-pricecheck.js",8776,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fbuild-pricecheck.js",{"path":349,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":350,"sourceHtmlUrl":351},"scripts\u002Fbuild-report.js",15779,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fbuild-report.js",{"path":353,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":354,"sourceHtmlUrl":355},"scripts\u002Fbuild-spreads.js",6050,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fbuild-spreads.js",{"path":357,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":358,"sourceHtmlUrl":359},"scripts\u002Fcross-dex.js",6923,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fcross-dex.js",{"path":361,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":362,"sourceHtmlUrl":363},"scripts\u002Fdemo-refresh.js",6257,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fdemo-refresh.js",{"path":365,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":366,"sourceHtmlUrl":367},"scripts\u002Fdex-probe.mjs",2207,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fdex-probe.mjs",{"path":369,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":370,"sourceHtmlUrl":371},"scripts\u002Ffee-uplift-bound.js",5881,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Ffee-uplift-bound.js",{"path":373,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":374,"sourceHtmlUrl":375},"scripts\u002Fgrade-llama-backdated.py",8752,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fgrade-llama-backdated.py",{"path":377,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":378,"sourceHtmlUrl":379},"scripts\u002Fgrade-llama.py",6839,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fgrade-llama.py",{"path":381,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":382,"sourceHtmlUrl":383},"scripts\u002Fhistory-run.js",10725,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fhistory-run.js",{"path":385,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":386,"sourceHtmlUrl":387},"scripts\u002Fpersistence-test.js",3673,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fpersistence-test.js",{"path":389,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":390,"sourceHtmlUrl":391},"scripts\u002Fprobe-tick-widths.mjs",3211,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fprobe-tick-widths.mjs",{"path":393,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":394,"sourceHtmlUrl":395},"scripts\u002Fprobe-tick-widths2.mjs",3583,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fprobe-tick-widths2.mjs",{"path":397,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":398,"sourceHtmlUrl":399},"scripts\u002Fprobe-tick-widths3.mjs",4336,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fprobe-tick-widths3.mjs",{"path":401,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":402,"sourceHtmlUrl":403},"scripts\u002Fselect-v2.js",10464,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fselect-v2.js",{"path":405,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":406,"sourceHtmlUrl":407},"scripts\u002Fsignal-probe.js",5719,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fsignal-probe.js",{"path":409,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":410,"sourceHtmlUrl":411},"scripts\u002Fspike-hunt.js",9506,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fspike-hunt.js",{"path":413,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":414,"sourceHtmlUrl":415},"scripts\u002Fspike-hunt2.js",14502,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fspike-hunt2.js",{"path":417,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":418,"sourceHtmlUrl":419},"scripts\u002Fspike-hunt3.js",8661,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fspike-hunt3.js",{"path":421,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":422,"sourceHtmlUrl":423},"scripts\u002Fspike-hunt4.js",8279,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fspike-hunt4.js",{"path":425,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":426,"sourceHtmlUrl":427},"scripts\u002Fspike-hunt5.js",10345,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fspike-hunt5.js",{"path":429,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":430,"sourceHtmlUrl":431},"scripts\u002Fspike-hunt6.js",12349,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fspike-hunt6.js",{"path":433,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":434,"sourceHtmlUrl":435},"scripts\u002Fspike-hunt7.js",13239,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fspike-hunt7.js",{"path":437,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":438,"sourceHtmlUrl":439},"scripts\u002Fspike-hunt8.js",13825,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fspike-hunt8.js",{"path":441,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":442,"sourceHtmlUrl":443},"scripts\u002Fwalk-forward.js",5677,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Fscripts\u002Fwalk-forward.js",{"path":445,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":446,"sourceHtmlUrl":447},"SHOT-LIST.md",9066,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FSHOT-LIST.md",{"path":449,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":450,"sourceHtmlUrl":451},"SOURCE.md",329,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FSOURCE.md",{"path":453,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":454,"sourceHtmlUrl":455},"TALKING-POINTS.md",12413,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FTALKING-POINTS.md",{"path":457,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":458,"sourceHtmlUrl":459},"test\u002Fcanary.test.js",16992,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Ftest\u002Fcanary.test.js",{"path":461,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":462,"sourceHtmlUrl":463},"test\u002Fil-tick-crossing-probe.mjs",3272,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002Ftest\u002Fil-tick-crossing-probe.mjs",{"path":465,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":466,"sourceHtmlUrl":467},"TRUST.auto.yaml",2256,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FTRUST.auto.yaml",{"path":469,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":470,"sourceHtmlUrl":471},"WALLET-CONNECT-NOTES.md",3736,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fjiggy-cadence-realized-lp\u002FWALLET-CONNECT-NOTES.md",[473,501,523,540,553,563],{"skillNo":474,"name":475,"nameZh":6,"description":476,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":477,"sourceHtmlUrl":478,"categories":479,"keywords":480,"publishedAt":44},"01M712C436EQYE43342Q4E7GG1","recipe-performance","Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold\u002Fwarm\u002Fbackground-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout\u002Fpaint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FSKILL.md",[],[481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":502,"name":503,"nameZh":6,"description":504,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":505,"licenseFileUrl":506,"sourceHtmlUrl":507,"categories":508,"keywords":509,"publishedAt":44},"01M70XT2F8A5CQZ81JBP98KSW3","mexc-spot-websocket","MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FSKILL.md",[],[510,511,512,513,514,515,516,517,518,519,25,520,521,522],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","api keys","maintenance","protobuf",{"skillNo":524,"name":525,"nameZh":6,"description":526,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":505,"licenseFileUrl":527,"sourceHtmlUrl":528,"categories":529,"keywords":530,"publishedAt":44},"01M70XT0MBXN3WZY1BKN0CPNKR","mexc-spot-rest","MEXC Spot REST workflows for public data, signed account requests, orders, wallet\u002Fadmin actions, and secure signing without exposing API keys.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FSKILL.md",[],[531,511,532,533,534,535,536,520,25,519,537,538,42,515,539,514,513],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","orders",{"skillNo":541,"name":542,"nameZh":6,"description":543,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":505,"licenseFileUrl":544,"sourceHtmlUrl":545,"categories":546,"keywords":547,"publishedAt":44},"01M70XSYSVZ2N0N91XCAR2CAK0","mexc-futures-websocket","MEXC Futures WebSocket workflows for public streams, private account\u002Forder\u002Fposition streams, ping\u002Fpong, subscriptions, and depth maintenance.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FSKILL.md",[],[548,549,512,550,551,521,25,552,518,517,515,514],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":554,"name":555,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":556,"sourceHtmlUrl":557,"categories":558,"keywords":559,"publishedAt":44},"01M6H0ZWHVE5W04WG2DKQE2SQC","0xklen-version-and-refresh-sanctions-lists","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FSKILL.md",[],[560,561,562],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":564,"name":565,"nameZh":6,"description":566,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":567,"sourceHtmlUrl":568,"categories":569,"keywords":570,"publishedAt":44},"01M6H0Z28Q3R8J0S799GJQWXM3","verify-tests-cover-changed-lines","Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FSKILL.md",[],[571,572,573,574,575,576,577,39,578,579,580],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]