[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H2A02RCGGNDZXKPXYVNPS3":3,"skill-same:01M6H2A02RCGGNDZXKPXYVNPS3":157},{"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":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6H2A02RCGGNDZXKPXYVNPS3","hoodmarkets",null,"Launch, buy, sell, and claim fees for hood.markets tokens on Robinhood Chain (4663) via api.hood.markets. Use for hoodmarkets, hood.markets, $hood, launch token, deploy token, buy token, sell token, claim fees, Bankr Robinhood. NEVER use hood.markets for API POST — use api.hood.markets.","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[5,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"uniswap","token-launcher","hood","for","robinhood chain","launch token","markets","post","chain","defi","tokens","token","fees","claim","bankr","launcher","never","use","api","2026-11-10 10:12:30",false,"---\nname: hoodmarkets\ndescription: Launch, buy, sell, and claim fees for hood.markets tokens on Robinhood Chain (4663) via api.hood.markets. Use for hoodmarkets, hood.markets, $hood, launch token, deploy token, buy token, sell token, claim fees, Bankr Robinhood. NEVER use hood.markets for API POST — use api.hood.markets.\ntags: [hoodmarkets, hood, bankr, robinhood, defi, token-launcher, uniswap]\nversion: 18\n---\n\n# hood.markets — Bankr agent skill\n\nLaunch and trade tokens on **[hood.markets](https:\u002F\u002Fhood.markets)** (Robinhood Chain, chain ID **4663**). Bankr supports Robinhood — users can deploy, swap, and claim through `@bankrbot` when this skill is installed.\n\n**Human \u002F integrator docs:** [hood.markets\u002Fsdk.md](https:\u002F\u002Fhood.markets\u002Fsdk.md) · [hood.markets\u002Fagent.md](https:\u002F\u002Fhood.markets\u002Fagent.md) · [hood.markets\u002FDev](https:\u002F\u002Fhood.markets\u002FDev)\n\n## Platform fees (only two)\n\n| Fee | Split |\n|-----|--------|\n| Swap trading fees | 5% platform \u002F 95% pro-rata to Holder NFT share holders |\n| Share marketplace sales | 5% of listed price \u002F 95% to seller |\n\nNo fee on sends, airdrops, or other share moves (v0.11 factory `0x9BDd…0Df5`).\n\n## CRITICAL — API host (read first)\n\n| Role | URL |\n|------|-----|\n| **Agent API** | `https:\u002F\u002Fapi.hood.markets` |\n| **Web UI** | `https:\u002F\u002Fhood.markets` |\n\n```\nGET  https:\u002F\u002Fapi.hood.markets\u002Fhealth\nGET  https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fbriefing?wallet=0x…\nGET  https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fpreflight-deploy?wallet=0x…&name=…&symbol=…\nGET  https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Ftoken-info?token=0x…\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fprepare-deploy\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fresolve-deploy-image\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fprepare-buy\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fprepare-sell\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fdeploy          (after haiku JWT)\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fclaim-for-recipient  (anyone — fees to catalog recipient)\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fclaim      (fee recipient wallet only)\n```\n\n**NEVER** call `https:\u002F\u002Fhood.markets\u002Fapi\u002F...` for agent POST — the website is frontend-only.\n\nSee `references\u002FAPI-HOST.md` before any HTTP call.\n\n---\n\n## Install\n\n```text\ninstall the hoodmarkets skill from https:\u002F\u002Fgithub.com\u002FBankrBot\u002Fskills\u002Ftree\u002Fmain\u002Fhoodmarkets\n```\n\n---\n\n## What users mean\n\n| Term | Meaning |\n|------|---------|\n| **Launch \u002F deploy** | Create a new token + liquidity pool on Robinhood |\n| **Simple launch** | Uniswap V3 via HoodMarketsV3 factory `0x9BDd…0Df5` (v0.11.0) — DexScreener-friendly; **5%** platform \u002F **95%** trading fees to Holder NFT holders pro-rata; **1,000-share** Holder NFT vault embedded |\n| **Holder NFTs** | 1,000 shares. Platform fees **only**: (1) swap fees 5%\u002F95% via locker + `claimTradingFees`, (2) share listings 5% of sale price. See `references\u002FHOLDER-NFTS.md` |\n| **Pro launch** | Uniswap V4 hooks — one-click buy\u002Fsell on hood.markets |\n| **Buy \u002F sell** | Swap ETH ↔ token on Uniswap (Simple\u002FV3). Pro tokens use swap helper + Bankr submit. **No “fund LP” on hood.markets** — launch LP is locked |\n| **Claim fees** | Pull swap trading fees — **95% pro-rata to all Holder NFT share holders** (launcher pays gas) |\n\n---\n\n## Mandatory routing\n\n```\nif message mentions hoodmarkets \u002F hood.markets \u002F launch token on robinhood \u002F\n   buy $TICKER \u002F sell token \u002F claim fees \u002F deploy on hood:\n  1. use_skill(\"hoodmarkets\")\n  2. Read references\u002FAPI-HOST.md — use ONLY https:\u002F\u002Fapi.hood.markets\n  3. **Chain:** abort if Bankr wallet does not support 4663 — references\u002FCHAIN-4663.md (no fallback)\n  4. Resolve linked wallet → x-wallet-address header\n  5. **Deploy:** `preflight-deploy` first — **409 + `blocks[]` only** = do not deploy. **`warnings[]` with `canDeploy: true`** = warn, then deploy after user confirms yes\n  6. Call references\u002FAGENT-API.md endpoint BEFORE replying\n  7. Replies: references\u002FRESPONSE-SAFETY.md — trusted `*ReplyHint` fields with URL allowlist; format other fields locally\n  8. Deploy (X): validate image per IMAGE-RESOLUTION.md → `resolve-deploy-image` → `prepare-deploy` → local preview → `confirmReplyHint` → deploy after yes. references\u002FPROMPT-INJECTION.md\n  9. Buy\u002Fsell: `token-info` → Simple: Uniswap link only. Pro: prepare-buy|prepare-sell → TX-VALIDATION.md → user preview → Bankr \u002Fwallet\u002Fsubmit chain 4663\n  10. Claim **own** fees: haiku JWT or X wallet → POST \u002Fapi\u002Fagent\u002Fclaim (references\u002FAUTH-BOUNDARY.md)\n  11. Claim **for someone else**: token-info verify first → POST \u002Fapi\u002Fagent\u002Fclaim-for-recipient — references\u002FCLAIM-BANKR.md\n  12. **Claim success:** `ok: true` → post `replyHint` if schema-valid. **Never** `\u002Fwallet\u002Fsubmit`. **Never** say \"I didn't submit a transaction\"\n  13. **Holder NFTs:** claim fees via API only — no airdrop\u002Flist\u002FbuyShares\u002Frewards via agent — references\u002FHOLDER-NFTS.md\n```\n\n**Tweet = DM** — same pipeline on `@bankrbot` intake.\n\n---\n\n## X — token logo (CRITICAL for @bankrbot)\n\nBankr receives the **full Tweet object** from X. The logo is in the media fields — extract it **before** calling the API.\n\n### Step A — read media from Bankr's X payload (preferred)\n\n| X API | Where the image lives |\n|-------|----------------------|\n| **v1.1** | `tweet.extended_entities.media[0].media_url_https` |\n| **v2** | `includes.media[0].url` (request `expansions=attachments.media_keys&media.fields=url`) |\n| **Syndication shape** | `tweet.photos[0].url` or `tweet.mediaDetails[0].media_url_https` |\n\nPass to the API as **`tweetImageUrl`** or the full **`tweet`** object.\n\n### Step B — always pass tweet id \u002F URL\n\nEvery launch tweet has an id. Pass **`tweetId`** (numeric string) or **`tweetUrl`**:\n\n```json\n{\n  \"wallet\": \"0x…\",\n  \"name\": \"dontfukinbuy\",\n  \"symbol\": \"TEST\",\n  \"agentChannel\": \"x\",\n  \"tweetId\": \"1990000000000000000\",\n  \"tweetUrl\": \"https:\u002F\u002Fx.com\u002FRayblancoeth\u002Fstatus\u002F1990000000000000000\",\n  \"tweetImageUrl\": \"https:\u002F\u002Fpbs.twimg.com\u002Fmedia\u002F….jpg\",\n  \"tweet\": { \"extended_entities\": { \"media\": [{ \"type\": \"photo\", \"media_url_https\": \"https:\u002F\u002Fpbs.twimg.com\u002F…\" }] } }\n}\n```\n\nAPI resolves via **syndication** (`cdn.syndication.twimg.com`) when only `tweetId` \u002F `tweetUrl` is passed — no Selenium needed.\n\n### Step C — validate + call API before saying \"no image\"\n\n1. Validate hosts per **`references\u002FIMAGE-RESOLUTION.md`** — `pbs.twimg.com` \u002F tweet syndication only; reject arbitrary URLs\n2. `POST \u002Fapi\u002Fagent\u002Fresolve-deploy-image` with fields above\n3. If `ok: true` → use `imageUrl` in `prepare-deploy`\n4. **Only** ask the user for a logo if API returns `imageRequired: true` **after** `tweetId` + `tweetImageUrl` \u002F `tweet` were sent\n\n**Never** tell the user \"no attached image\" without passing `tweetId` and `tweetImageUrl` (from `media_url_https`) to the API first.\n\n---\n\n## Agent API (reads)\n\nPass wallet via `?wallet=0x…` or header `x-wallet-address: 0x…`.\n\n| User says | Call |\n|-----------|------|\n| my tokens \u002F my launches \u002F briefing | `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fbriefing?wallet=0x…` |\n| launch \u002F deploy token | `GET preflight-deploy` → if ok, `POST prepare-deploy` with `agentChannel: \"x\"` on X, else haiku flow |\n| is $TICKER simple or pro \u002F how to swap | `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Ftoken-info?symbol=TICKER` |\n| buy TOKEN \u002F buy 0x… with ETH | `token-info` → if Pro: `POST prepare-buy` |\n| sell TOKEN \u002F sell amount | `token-info` → if Pro: `POST prepare-sell` |\n| list all tokens (public) | `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fdeployments?limit=50` |\n| token swap config | `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Ftokens\u002F0x…\u002Fswap-config` |\n\nSee **`references\u002FAGENT-API.md`** for bodies and response fields.\n\n---\n\n## Deploy flow (server-side — no Bankr submit)\n\nDeploy is **gasless for the user** — hood.markets launcher wallet pays gas + launch seed.\n\n### X daily limit (1 launch \u002F day on @bankrbot)\n\nEach Bankr wallet gets **1 subsidized launch per Eastern calendar day** on X (`agentChannel: \"x\"`). A second attempt the same day returns **409** with:\n\n- `replyHint` — short copy for the tweet reply (use as-is)\n- `xDailyLimit.todayToken` — name, symbol, address, `tokenPageUrl` of today's launch\n- `xDailyLimit.resetsAtEastern` — when the X limit resets (midnight Eastern)\n\n**Do not retry deploy on X after 409.** Tell the user they already launched today, link `todayToken.tokenPageUrl`, and send them to **https:\u002F\u002Fhood.markets** to launch more (sign in + wallet pays gas).\n\n### On X \u002F Twitter (`agentChannel: \"x\"`)\n\n1. Pass **`tweetUrl`** (full status URL of the launch tweet) — API pulls the attached photo via oEmbed even when Bankr cannot see media in context.\n2. Pass **`xUsername`** (the X @handle of the user who asked to launch — without `@`) so the token page shows who requested it and their launch count. If omitted, API infers from `tweetUrl`.\n3. Optionally also pass `tweetImageUrl`, `tweet`, `tweetMedia`, or `imageUrl` if available in Bankr's payload.\n4. Call `POST \u002Fapi\u002Fagent\u002Fprepare-deploy` with `agentChannel: \"x\"`, wallet, name, symbol, and fields above.\n5. Wait for user **yes\u002Fconfirm**, then deploy — **no haiku**. Use the **`steps[].body`** from `prepare-deploy` as-is (includes **`xUsername`**, **`tweetUrl`** \u002F **`sourceUrl`** so the token page shows the requester and launch tweet):\n\n```http\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fdeploy\nx-wallet-address: 0x…\nx-agent-channel: x\nContent-Type: application\u002Fjson\n\n{\n  \"name\": \"My Token\",\n  \"symbol\": \"MTK\",\n  \"feeTarget\": \"agent_wallet\",\n  \"clientKind\": \"agent\",\n  \"agentProvider\": \"bankr\",\n  \"agentChannel\": \"x\",\n  \"launchMode\": \"simple\",\n  \"imageUrl\": \"https:\u002F\u002F…\",\n  \"xUsername\": \"user\",\n  \"tweetUrl\": \"https:\u002F\u002Fx.com\u002Fuser\u002Fstatus\u002F…\",\n  \"sourceUrl\": \"https:\u002F\u002Fx.com\u002Fuser\u002Fstatus\u002F…\",\n  \"wallet\": \"0x…\"\n}\n```\n\n### Non-X agents (API, cron, cloud — automatable)\n\nUse **haiku JWT** — no in-thread confirm step:\n\n1. `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent-captcha\u002Fchallenge`\n2. `POST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent-captcha\u002Fverify` with haiku + `agentFeeRecipient: \u003CBankr wallet>`\n3. `POST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fdeploy` with header `X-Agent-Captcha-JWT: \u003Cjwt>`:\n\n```json\n{\n  \"name\": \"My Token\",\n  \"symbol\": \"MTK\",\n  \"feeTarget\": \"agent_wallet\",\n  \"clientKind\": \"agent\",\n  \"agentProvider\": \"bankr\",\n  \"launchMode\": \"simple\",\n  \"imageUrl\": \"https:\u002F\u002F…\",\n  \"description\": \"…\"\n}\n```\n\n- `launchMode`: `\"simple\"` (V3, DexScreener) or `\"pro\"` (V4, hood.markets swap UI)\n- Fee recipient = wallet from captcha JWT (Bankr linked wallet)\n- **Simple:** 5% platform \u002F 95% pro-rata to Holder NFT share holders — embedded in `HoodMarketsV3LpLocker`\n- **Buyer rewards:** post-launch on token page (`fundBuyerRewardPool`) — not on hood.markets launch form. API deploy may accept optional `buyerRewardShareCount` (legacy).\n\n**Web UI (hood.markets Launch tab):** “Someone else” fee recipient = **`0x…` wallet address only** — not `@handle` or profile URL. Agents\u002FAPI may still resolve social handles for other channels.\n\nOr use `POST \u002Fapi\u002Fagent\u002Fprepare-deploy` for the full `steps[]` checklist (runs preflight automatically).\n\n### Preflight (before captcha)\n\nCheck ticker\u002Fname taken, wallet deploy limits, and launch mode **before** asking the user to solve the haiku:\n\n```http\nGET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fpreflight-deploy?wallet=0x…&name=My+Token&symbol=MTK&launchMode=simple\n```\n\n- **409** + `blocks[]` → do not deploy; reply with `blocks[0].replyHint` — includes **existing token address** when ticker\u002Fname is taken (`blocks[0].existingToken`)\n- **200** + `canDeploy: true` + `warnings[]` → **deploy is allowed**. If `rate_limit_would_force_platform_fee`: user already launched in the last 24h — fees on **this** token go to the hood.markets platform (same as the website). Show the warning, wait for **yes**, then call `POST \u002Fapi\u002Fdeploy` — do **not** block or say \"24h cooldown.\"\n- After deploy: post **`deployReplyHint`** from `\u002Fapi\u002Fdeploy` — no DexScreener\u002Fsimple-mode footer\n\nSee `streaming-hints.json` for V3 vs Pro detection and error codes.\n\n---\n\n## Buy \u002F sell flow (Bankr wallet submit)\n\n**Prerequisite:** Bankr wallet must support **chain 4663** — abort if not (`references\u002FCHAIN-4663.md`).\n\n1. `GET \u002Fapi\u002Fagent\u002Ftoken-info?token=0x…` or `?symbol=TICKER` — read `launchType` and `swapMode`\n2. **Simple (V3):** reply with `uniswapSwapUrl` — do not call prepare-buy\u002Fsell; no Bankr submit\n3. **Pro (V4):** `POST prepare-buy` or `prepare-sell`\n4. **`references\u002FTX-VALIDATION.md`** — selector allowlist, exact `to`, token\u002Fspender match, no unlimited approve, value bounds, user preview\n5. Submit via Bankr (chain **4663**):\n\n```http\nPOST https:\u002F\u002Fapi.bankr.bot\u002Fwallet\u002Fsubmit\nX-API-Key: …\nContent-Type: application\u002Fjson\n\n{\n  \"transaction\": {\n    \"to\": \"0x…\",\n    \"data\": \"0x…\",\n    \"value\": \"0\",\n    \"chainId\": 4663\n  },\n  \"description\": \"hood.markets: buy MTK\",\n  \"waitForConfirmation\": true\n}\n```\n\n6. **Pro tokens only** for prepare-buy\u002Fsell (V4 swap helper). **Simple (V3)** → Uniswap link from token-info (primary route, not a bypass).\n\nIf Bankr returns `untrusted_address` → **stop** per `references\u002FBANKR-SUBMIT.md`. Do not suggest Uniswap, web UI, or any alternate venue.\n\n---\n\n## Claim fees\n\nTwo paths — pick based on who is asking:\n\n### A) Help someone else \u002F claim for a token (any X user)\n\nWhen the user gives a **token contract** and wants fees sent to the **catalog fee recipient** (e.g. \"claim fees for EA's $HR\"), use:\n\n```\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fclaim-for-recipient\nContent-Type: application\u002Fjson\n\n{ \"tokenAddress\": \"0x78594eD700e343846B4d0Bbba79Ee0cb50Deaa8D\" }\n```\n\n**Before calling:** `GET \u002Fapi\u002Fagent\u002Ftoken-info` — verify catalog token, `feeRecipientAddress`, and user intent (`references\u002FCLAIM-BANKR.md`).\n\n**No JWT. No Bankr `\u002Fwallet\u002Fsubmit`.** hood.markets server broadcasts and pays gas.\n\nResponse: `ok`, `replyHint` (trusted outcome field per `RESPONSE-SAFETY.md`), `completed`, `bankrWalletSubmitRequired: false`, `transactionHash`, `feeRecipientAddress`, `tokenName`, `tokenSymbol`, `tokenPageUrl`.\n\nIf `ok: true`, the claim succeeded — post `replyHint` when schema-valid. Do not check Bankr wallet submit.\n\n### B) Fee recipient claims their own tokens\n\n```\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fclaim\nX-Agent-Captcha-JWT: \u003Cjwt>   (or X channel + x-wallet-address = fee recipient)\nContent-Type: application\u002Fjson\n\n{ \"tokenAddress\": \"0x…\" }\n```\n\n**Default launches are Simple (V3).** Same endpoint auto-routes V3 fraction `claimTradingFees` (v0.7+) vs legacy factory `claimRewards` vs V4 locker.\n\n| Launch | On-chain (API picks automatically) |\n|--------|--------------------------------------|\n| **Simple (V3) v0.7+** | `claimTradingFees()` on Holder NFT — **pro-rata to all share holders** |\n| **Simple (V3) v0.6** | `HoodMarketsV3.claimRewards(token)` — fee wallet only |\n| **Pro (V4)** | Collect pool → claim WETH from locker |\n\nResponse includes `feeRecipientAddress`, `txHash`, `explorerUrl`, `feeModel` \u002F `launchType`.\n\n---\n\n## Example one-liners\n\n> launch $PEPE on hoodmarkets simple mode with image https:\u002F\u002F…\n\n→ prepare-deploy (`agentChannel: \"x\"` on X: confirm first, no haiku; else haiku) → deploy → reply with `https:\u002F\u002Fhood.markets\u002F?token=0x…`\n\n> buy 0.01 ETH of 0x4895… on hood\n\n→ prepare-buy → validate → `\u002Fwallet\u002Fsubmit` → confirm on Blockscout\n\n> claim fees for 0x7859… \u002F help EA claim $HR hood fees\n\n→ POST \u002Fapi\u002Fagent\u002Fclaim-for-recipient `{ \"tokenAddress\": \"0x…\" }` — if `ok: true`, reply with **`replyHint`** only\n\n> claim fees for my token MTK\n\n→ captcha JWT or X wallet → POST \u002Fapi\u002Fagent\u002Fclaim — if `ok: true`, reply with **`replyHint`**\n\n---\n\n## Files\n\n| File | Purpose |\n|------|---------|\n| `references\u002FAPI-HOST.md` | Correct API base URL + allowlist |\n| `references\u002FAGENT-API.md` | Endpoint reference |\n| `references\u002FAUTH-BOUNDARY.md` | Deploy\u002Fclaim auth, JWT, X confirm, replay |\n| `references\u002FCHAIN-4663.md` | Abort if Bankr lacks Robinhood Chain |\n| `references\u002FCLAIM-BANKR.md` | Claim without Bankr submit + verification |\n| `references\u002FTX-VALIDATION.md` | Selector allowlist + pre-submit checklist |\n| `references\u002FBANKR-SUBMIT.md` | Bankr security scan — no bypass |\n| `references\u002FRESPONSE-SAFETY.md` | Trusted hint fields + local formatting |\n| `references\u002FPROMPT-INJECTION.md` | Untrusted tweet\u002Fmetadata rules |\n| `references\u002FIMAGE-RESOLUTION.md` | Deploy logo host validation |\n| `references\u002FONE-LINE-INTENTS.md` | Tweet → API mapping |\n| `references\u002FHOLDER-NFTS.md` | Shares — agent claim only, no marketplace txs |\n| `streaming-hints.json` | V3 vs Pro detection + preflight error codes |\n| `known-contracts.json` | Pinned Robinhood addresses |\n","# hood.markets — Bankr agent skill\n\nLaunch and trade tokens on **[hood.markets](https:\u002F\u002Fhood.markets)** (Robinhood Chain, chain ID **4663**). Bankr supports Robinhood — users can deploy, swap, and claim through `@bankrbot` when this skill is installed.\n\n**Human \u002F integrator docs:** [hood.markets\u002Fsdk.md](https:\u002F\u002Fhood.markets\u002Fsdk.md) · [hood.markets\u002Fagent.md](https:\u002F\u002Fhood.markets\u002Fagent.md) · [hood.markets\u002FDev](https:\u002F\u002Fhood.markets\u002FDev)\n\n## Platform fees (only two)\n\n| Fee | Split |\n|-----|--------|\n| Swap trading fees | 5% platform \u002F 95% pro-rata to Holder NFT share holders |\n| Share marketplace sales | 5% of listed price \u002F 95% to seller |\n\nNo fee on sends, airdrops, or other share moves (v0.11 factory `0x9BDd…0Df5`).\n\n## CRITICAL — API host (read first)\n\n| Role | URL |\n|------|-----|\n| **Agent API** | `https:\u002F\u002Fapi.hood.markets` |\n| **Web UI** | `https:\u002F\u002Fhood.markets` |\n\n```\nGET  https:\u002F\u002Fapi.hood.markets\u002Fhealth\nGET  https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fbriefing?wallet=0x…\nGET  https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fpreflight-deploy?wallet=0x…&name=…&symbol=…\nGET  https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Ftoken-info?token=0x…\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fprepare-deploy\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fresolve-deploy-image\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fprepare-buy\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fprepare-sell\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fdeploy          (after haiku JWT)\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fclaim-for-recipient  (anyone — fees to catalog recipient)\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fclaim      (fee recipient wallet only)\n```\n\n**NEVER** call `https:\u002F\u002Fhood.markets\u002Fapi\u002F...` for agent POST — the website is frontend-only.\n\nSee `references\u002FAPI-HOST.md` before any HTTP call.\n\n---\n\n## Install\n\n```text\ninstall the hoodmarkets skill from https:\u002F\u002Fgithub.com\u002FBankrBot\u002Fskills\u002Ftree\u002Fmain\u002Fhoodmarkets\n```\n\n---\n\n## What users mean\n\n| Term | Meaning |\n|------|---------|\n| **Launch \u002F deploy** | Create a new token + liquidity pool on Robinhood |\n| **Simple launch** | Uniswap V3 via HoodMarketsV3 factory `0x9BDd…0Df5` (v0.11.0) — DexScreener-friendly; **5%** platform \u002F **95%** trading fees to Holder NFT holders pro-rata; **1,000-share** Holder NFT vault embedded |\n| **Holder NFTs** | 1,000 shares. Platform fees **only**: (1) swap fees 5%\u002F95% via locker + `claimTradingFees`, (2) share listings 5% of sale price. See `references\u002FHOLDER-NFTS.md` |\n| **Pro launch** | Uniswap V4 hooks — one-click buy\u002Fsell on hood.markets |\n| **Buy \u002F sell** | Swap ETH ↔ token on Uniswap (Simple\u002FV3). Pro tokens use swap helper + Bankr submit. **No “fund LP” on hood.markets** — launch LP is locked |\n| **Claim fees** | Pull swap trading fees — **95% pro-rata to all Holder NFT share holders** (launcher pays gas) |\n\n---\n\n## Mandatory routing\n\n```\nif message mentions hoodmarkets \u002F hood.markets \u002F launch token on robinhood \u002F\n   buy $TICKER \u002F sell token \u002F claim fees \u002F deploy on hood:\n  1. use_skill(\"hoodmarkets\")\n  2. Read references\u002FAPI-HOST.md — use ONLY https:\u002F\u002Fapi.hood.markets\n  3. **Chain:** abort if Bankr wallet does not support 4663 — references\u002FCHAIN-4663.md (no fallback)\n  4. Resolve linked wallet → x-wallet-address header\n  5. **Deploy:** `preflight-deploy` first — **409 + `blocks[]` only** = do not deploy. **`warnings[]` with `canDeploy: true`** = warn, then deploy after user confirms yes\n  6. Call references\u002FAGENT-API.md endpoint BEFORE replying\n  7. Replies: references\u002FRESPONSE-SAFETY.md — trusted `*ReplyHint` fields with URL allowlist; format other fields locally\n  8. Deploy (X): validate image per IMAGE-RESOLUTION.md → `resolve-deploy-image` → `prepare-deploy` → local preview → `confirmReplyHint` → deploy after yes. references\u002FPROMPT-INJECTION.md\n  9. Buy\u002Fsell: `token-info` → Simple: Uniswap link only. Pro: prepare-buy|prepare-sell → TX-VALIDATION.md → user preview → Bankr \u002Fwallet\u002Fsubmit chain 4663\n  10. Claim **own** fees: haiku JWT or X wallet → POST \u002Fapi\u002Fagent\u002Fclaim (references\u002FAUTH-BOUNDARY.md)\n  11. Claim **for someone else**: token-info verify first → POST \u002Fapi\u002Fagent\u002Fclaim-for-recipient — references\u002FCLAIM-BANKR.md\n  12. **Claim success:** `ok: true` → post `replyHint` if schema-valid. **Never** `\u002Fwallet\u002Fsubmit`. **Never** say \"I didn't submit a transaction\"\n  13. **Holder NFTs:** claim fees via API only — no airdrop\u002Flist\u002FbuyShares\u002Frewards via agent — references\u002FHOLDER-NFTS.md\n```\n\n**Tweet = DM** — same pipeline on `@bankrbot` intake.\n\n---\n\n## X — token logo (CRITICAL for @bankrbot)\n\nBankr receives the **full Tweet object** from X. The logo is in the media fields — extract it **before** calling the API.\n\n### Step A — read media from Bankr's X payload (preferred)\n\n| X API | Where the image lives |\n|-------|----------------------|\n| **v1.1** | `tweet.extended_entities.media[0].media_url_https` |\n| **v2** | `includes.media[0].url` (request `expansions=attachments.media_keys&media.fields=url`) |\n| **Syndication shape** | `tweet.photos[0].url` or `tweet.mediaDetails[0].media_url_https` |\n\nPass to the API as **`tweetImageUrl`** or the full **`tweet`** object.\n\n### Step B — always pass tweet id \u002F URL\n\nEvery launch tweet has an id. Pass **`tweetId`** (numeric string) or **`tweetUrl`**:\n\n```json\n{\n  \"wallet\": \"0x…\",\n  \"name\": \"dontfukinbuy\",\n  \"symbol\": \"TEST\",\n  \"agentChannel\": \"x\",\n  \"tweetId\": \"1990000000000000000\",\n  \"tweetUrl\": \"https:\u002F\u002Fx.com\u002FRayblancoeth\u002Fstatus\u002F1990000000000000000\",\n  \"tweetImageUrl\": \"https:\u002F\u002Fpbs.twimg.com\u002Fmedia\u002F….jpg\",\n  \"tweet\": { \"extended_entities\": { \"media\": [{ \"type\": \"photo\", \"media_url_https\": \"https:\u002F\u002Fpbs.twimg.com\u002F…\" }] } }\n}\n```\n\nAPI resolves via **syndication** (`cdn.syndication.twimg.com`) when only `tweetId` \u002F `tweetUrl` is passed — no Selenium needed.\n\n### Step C — validate + call API before saying \"no image\"\n\n1. Validate hosts per **`references\u002FIMAGE-RESOLUTION.md`** — `pbs.twimg.com` \u002F tweet syndication only; reject arbitrary URLs\n2. `POST \u002Fapi\u002Fagent\u002Fresolve-deploy-image` with fields above\n3. If `ok: true` → use `imageUrl` in `prepare-deploy`\n4. **Only** ask the user for a logo if API returns `imageRequired: true` **after** `tweetId` + `tweetImageUrl` \u002F `tweet` were sent\n\n**Never** tell the user \"no attached image\" without passing `tweetId` and `tweetImageUrl` (from `media_url_https`) to the API first.\n\n---\n\n## Agent API (reads)\n\nPass wallet via `?wallet=0x…` or header `x-wallet-address: 0x…`.\n\n| User says | Call |\n|-----------|------|\n| my tokens \u002F my launches \u002F briefing | `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fbriefing?wallet=0x…` |\n| launch \u002F deploy token | `GET preflight-deploy` → if ok, `POST prepare-deploy` with `agentChannel: \"x\"` on X, else haiku flow |\n| is $TICKER simple or pro \u002F how to swap | `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Ftoken-info?symbol=TICKER` |\n| buy TOKEN \u002F buy 0x… with ETH | `token-info` → if Pro: `POST prepare-buy` |\n| sell TOKEN \u002F sell amount | `token-info` → if Pro: `POST prepare-sell` |\n| list all tokens (public) | `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fdeployments?limit=50` |\n| token swap config | `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Ftokens\u002F0x…\u002Fswap-config` |\n\nSee **`references\u002FAGENT-API.md`** for bodies and response fields.\n\n---\n\n## Deploy flow (server-side — no Bankr submit)\n\nDeploy is **gasless for the user** — hood.markets launcher wallet pays gas + launch seed.\n\n### X daily limit (1 launch \u002F day on @bankrbot)\n\nEach Bankr wallet gets **1 subsidized launch per Eastern calendar day** on X (`agentChannel: \"x\"`). A second attempt the same day returns **409** with:\n\n- `replyHint` — short copy for the tweet reply (use as-is)\n- `xDailyLimit.todayToken` — name, symbol, address, `tokenPageUrl` of today's launch\n- `xDailyLimit.resetsAtEastern` — when the X limit resets (midnight Eastern)\n\n**Do not retry deploy on X after 409.** Tell the user they already launched today, link `todayToken.tokenPageUrl`, and send them to **https:\u002F\u002Fhood.markets** to launch more (sign in + wallet pays gas).\n\n### On X \u002F Twitter (`agentChannel: \"x\"`)\n\n1. Pass **`tweetUrl`** (full status URL of the launch tweet) — API pulls the attached photo via oEmbed even when Bankr cannot see media in context.\n2. Pass **`xUsername`** (the X @handle of the user who asked to launch — without `@`) so the token page shows who requested it and their launch count. If omitted, API infers from `tweetUrl`.\n3. Optionally also pass `tweetImageUrl`, `tweet`, `tweetMedia`, or `imageUrl` if available in Bankr's payload.\n4. Call `POST \u002Fapi\u002Fagent\u002Fprepare-deploy` with `agentChannel: \"x\"`, wallet, name, symbol, and fields above.\n5. Wait for user **yes\u002Fconfirm**, then deploy — **no haiku**. Use the **`steps[].body`** from `prepare-deploy` as-is (includes **`xUsername`**, **`tweetUrl`** \u002F **`sourceUrl`** so the token page shows the requester and launch tweet):\n\n```http\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fdeploy\nx-wallet-address: 0x…\nx-agent-channel: x\nContent-Type: application\u002Fjson\n\n{\n  \"name\": \"My Token\",\n  \"symbol\": \"MTK\",\n  \"feeTarget\": \"agent_wallet\",\n  \"clientKind\": \"agent\",\n  \"agentProvider\": \"bankr\",\n  \"agentChannel\": \"x\",\n  \"launchMode\": \"simple\",\n  \"imageUrl\": \"https:\u002F\u002F…\",\n  \"xUsername\": \"user\",\n  \"tweetUrl\": \"https:\u002F\u002Fx.com\u002Fuser\u002Fstatus\u002F…\",\n  \"sourceUrl\": \"https:\u002F\u002Fx.com\u002Fuser\u002Fstatus\u002F…\",\n  \"wallet\": \"0x…\"\n}\n```\n\n### Non-X agents (API, cron, cloud — automatable)\n\nUse **haiku JWT** — no in-thread confirm step:\n\n1. `GET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent-captcha\u002Fchallenge`\n2. `POST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent-captcha\u002Fverify` with haiku + `agentFeeRecipient: \u003CBankr wallet>`\n3. `POST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fdeploy` with header `X-Agent-Captcha-JWT: \u003Cjwt>`:\n\n```json\n{\n  \"name\": \"My Token\",\n  \"symbol\": \"MTK\",\n  \"feeTarget\": \"agent_wallet\",\n  \"clientKind\": \"agent\",\n  \"agentProvider\": \"bankr\",\n  \"launchMode\": \"simple\",\n  \"imageUrl\": \"https:\u002F\u002F…\",\n  \"description\": \"…\"\n}\n```\n\n- `launchMode`: `\"simple\"` (V3, DexScreener) or `\"pro\"` (V4, hood.markets swap UI)\n- Fee recipient = wallet from captcha JWT (Bankr linked wallet)\n- **Simple:** 5% platform \u002F 95% pro-rata to Holder NFT share holders — embedded in `HoodMarketsV3LpLocker`\n- **Buyer rewards:** post-launch on token page (`fundBuyerRewardPool`) — not on hood.markets launch form. API deploy may accept optional `buyerRewardShareCount` (legacy).\n\n**Web UI (hood.markets Launch tab):** “Someone else” fee recipient = **`0x…` wallet address only** — not `@handle` or profile URL. Agents\u002FAPI may still resolve social handles for other channels.\n\nOr use `POST \u002Fapi\u002Fagent\u002Fprepare-deploy` for the full `steps[]` checklist (runs preflight automatically).\n\n### Preflight (before captcha)\n\nCheck ticker\u002Fname taken, wallet deploy limits, and launch mode **before** asking the user to solve the haiku:\n\n```http\nGET https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fpreflight-deploy?wallet=0x…&name=My+Token&symbol=MTK&launchMode=simple\n```\n\n- **409** + `blocks[]` → do not deploy; reply with `blocks[0].replyHint` — includes **existing token address** when ticker\u002Fname is taken (`blocks[0].existingToken`)\n- **200** + `canDeploy: true` + `warnings[]` → **deploy is allowed**. If `rate_limit_would_force_platform_fee`: user already launched in the last 24h — fees on **this** token go to the hood.markets platform (same as the website). Show the warning, wait for **yes**, then call `POST \u002Fapi\u002Fdeploy` — do **not** block or say \"24h cooldown.\"\n- After deploy: post **`deployReplyHint`** from `\u002Fapi\u002Fdeploy` — no DexScreener\u002Fsimple-mode footer\n\nSee `streaming-hints.json` for V3 vs Pro detection and error codes.\n\n---\n\n## Buy \u002F sell flow (Bankr wallet submit)\n\n**Prerequisite:** Bankr wallet must support **chain 4663** — abort if not (`references\u002FCHAIN-4663.md`).\n\n1. `GET \u002Fapi\u002Fagent\u002Ftoken-info?token=0x…` or `?symbol=TICKER` — read `launchType` and `swapMode`\n2. **Simple (V3):** reply with `uniswapSwapUrl` — do not call prepare-buy\u002Fsell; no Bankr submit\n3. **Pro (V4):** `POST prepare-buy` or `prepare-sell`\n4. **`references\u002FTX-VALIDATION.md`** — selector allowlist, exact `to`, token\u002Fspender match, no unlimited approve, value bounds, user preview\n5. Submit via Bankr (chain **4663**):\n\n```http\nPOST https:\u002F\u002Fapi.bankr.bot\u002Fwallet\u002Fsubmit\nX-API-Key: …\nContent-Type: application\u002Fjson\n\n{\n  \"transaction\": {\n    \"to\": \"0x…\",\n    \"data\": \"0x…\",\n    \"value\": \"0\",\n    \"chainId\": 4663\n  },\n  \"description\": \"hood.markets: buy MTK\",\n  \"waitForConfirmation\": true\n}\n```\n\n6. **Pro tokens only** for prepare-buy\u002Fsell (V4 swap helper). **Simple (V3)** → Uniswap link from token-info (primary route, not a bypass).\n\nIf Bankr returns `untrusted_address` → **stop** per `references\u002FBANKR-SUBMIT.md`. Do not suggest Uniswap, web UI, or any alternate venue.\n\n---\n\n## Claim fees\n\nTwo paths — pick based on who is asking:\n\n### A) Help someone else \u002F claim for a token (any X user)\n\nWhen the user gives a **token contract** and wants fees sent to the **catalog fee recipient** (e.g. \"claim fees for EA's $HR\"), use:\n\n```\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fclaim-for-recipient\nContent-Type: application\u002Fjson\n\n{ \"tokenAddress\": \"0x78594eD700e343846B4d0Bbba79Ee0cb50Deaa8D\" }\n```\n\n**Before calling:** `GET \u002Fapi\u002Fagent\u002Ftoken-info` — verify catalog token, `feeRecipientAddress`, and user intent (`references\u002FCLAIM-BANKR.md`).\n\n**No JWT. No Bankr `\u002Fwallet\u002Fsubmit`.** hood.markets server broadcasts and pays gas.\n\nResponse: `ok`, `replyHint` (trusted outcome field per `RESPONSE-SAFETY.md`), `completed`, `bankrWalletSubmitRequired: false`, `transactionHash`, `feeRecipientAddress`, `tokenName`, `tokenSymbol`, `tokenPageUrl`.\n\nIf `ok: true`, the claim succeeded — post `replyHint` when schema-valid. Do not check Bankr wallet submit.\n\n### B) Fee recipient claims their own tokens\n\n```\nPOST https:\u002F\u002Fapi.hood.markets\u002Fapi\u002Fagent\u002Fclaim\nX-Agent-Captcha-JWT: \u003Cjwt>   (or X channel + x-wallet-address = fee recipient)\nContent-Type: application\u002Fjson\n\n{ \"tokenAddress\": \"0x…\" }\n```\n\n**Default launches are Simple (V3).** Same endpoint auto-routes V3 fraction `claimTradingFees` (v0.7+) vs legacy factory `claimRewards` vs V4 locker.\n\n| Launch | On-chain (API picks automatically) |\n|--------|--------------------------------------|\n| **Simple (V3) v0.7+** | `claimTradingFees()` on Holder NFT — **pro-rata to all share holders** |\n| **Simple (V3) v0.6** | `HoodMarketsV3.claimRewards(token)` — fee wallet only |\n| **Pro (V4)** | Collect pool → claim WETH from locker |\n\nResponse includes `feeRecipientAddress`, `txHash`, `explorerUrl`, `feeModel` \u002F `launchType`.\n\n---\n\n## Example one-liners\n\n> launch $PEPE on hoodmarkets simple mode with image https:\u002F\u002F…\n\n→ prepare-deploy (`agentChannel: \"x\"` on X: confirm first, no haiku; else haiku) → deploy → reply with `https:\u002F\u002Fhood.markets\u002F?token=0x…`\n\n> buy 0.01 ETH of 0x4895… on hood\n\n→ prepare-buy → validate → `\u002Fwallet\u002Fsubmit` → confirm on Blockscout\n\n> claim fees for 0x7859… \u002F help EA claim $HR hood fees\n\n→ POST \u002Fapi\u002Fagent\u002Fclaim-for-recipient `{ \"tokenAddress\": \"0x…\" }` — if `ok: true`, reply with **`replyHint`** only\n\n> claim fees for my token MTK\n\n→ captcha JWT or X wallet → POST \u002Fapi\u002Fagent\u002Fclaim — if `ok: true`, reply with **`replyHint`**\n\n---\n\n## Files\n\n| File | Purpose |\n|------|---------|\n| `references\u002FAPI-HOST.md` | Correct API base URL + allowlist |\n| `references\u002FAGENT-API.md` | Endpoint reference |\n| `references\u002FAUTH-BOUNDARY.md` | Deploy\u002Fclaim auth, JWT, X confirm, replay |\n| `references\u002FCHAIN-4663.md` | Abort if Bankr lacks Robinhood Chain |\n| `references\u002FCLAIM-BANKR.md` | Claim without Bankr submit + verification |\n| `references\u002FTX-VALIDATION.md` | Selector allowlist + pre-submit checklist |\n| `references\u002FBANKR-SUBMIT.md` | Bankr security scan — no bypass |\n| `references\u002FRESPONSE-SAFETY.md` | Trusted hint fields + local formatting |\n| `references\u002FPROMPT-INJECTION.md` | Untrusted tweet\u002Fmetadata rules |\n| `references\u002FIMAGE-RESOLUTION.md` | Deploy logo host validation |\n| `references\u002FONE-LINE-INTENTS.md` | Tweet → API mapping |\n| `references\u002FHOLDER-NFTS.md` | Shares — agent claim only, no marketplace txs |\n| `streaming-hints.json` | V3 vs Pro detection + preflight error codes |\n| `known-contracts.json` | Pinned Robinhood addresses |\n",{"name":5,"tags":51,"version":53,"description":7},[5,29,41,52,36,28,27],"robinhood",18,"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Ftrading\u002Fbankrbot-official-hoodmarkets",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-15 02:28:10",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill hoodmarkets",{"tool":69,"command":70},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill hoodmarkets",{"tool":72,"command":73},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill hoodmarkets","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002FSKILL.md",true,[77,83,87,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"catalog.json","REFERENCE","参考文档",2022,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Fcatalog.json",{"path":84,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":85,"sourceHtmlUrl":86},"known-contracts.json",1047,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Fknown-contracts.json",{"path":88,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":91,"sourceHtmlUrl":92},"logo.svg","ASSET","资产文件",360,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Flogo.svg",{"path":94,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":95,"sourceHtmlUrl":96},"README.md",2904,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002FREADME.md",{"path":98,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002FAGENT-API.md",12151,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FAGENT-API.md",{"path":102,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002FAPI-HOST.md",887,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FAPI-HOST.md",{"path":106,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002FAUTH-BOUNDARY.md",4280,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FAUTH-BOUNDARY.md",{"path":110,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002FBANKR-SUBMIT.md",1302,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FBANKR-SUBMIT.md",{"path":114,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002FCHAIN-4663.md",1161,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FCHAIN-4663.md",{"path":118,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":119,"sourceHtmlUrl":120},"references\u002FCLAIM-BANKR.md",3056,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FCLAIM-BANKR.md",{"path":122,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":123,"sourceHtmlUrl":124},"references\u002FHOLDER-NFTS.md",4026,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FHOLDER-NFTS.md",{"path":126,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":127,"sourceHtmlUrl":128},"references\u002FIMAGE-RESOLUTION.md",2419,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FIMAGE-RESOLUTION.md",{"path":130,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":131,"sourceHtmlUrl":132},"references\u002FONE-LINE-INTENTS.md",2043,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FONE-LINE-INTENTS.md",{"path":134,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":135,"sourceHtmlUrl":136},"references\u002FPROMPT-INJECTION.md",2910,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FPROMPT-INJECTION.md",{"path":138,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":139,"sourceHtmlUrl":140},"references\u002FRESPONSE-SAFETY.md",3642,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FRESPONSE-SAFETY.md",{"path":142,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":143,"sourceHtmlUrl":144},"references\u002FTX-VALIDATION.md",2565,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Freferences\u002FTX-VALIDATION.md",{"path":146,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":147,"sourceHtmlUrl":148},"SOURCE.md",321,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002FSOURCE.md",{"path":150,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":151,"sourceHtmlUrl":152},"streaming-hints.json",4369,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002Fstreaming-hints.json",{"path":154,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":155,"sourceHtmlUrl":156},"TRUST.auto.yaml",2250,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fbankrbot-official-hoodmarkets\u002FTRUST.auto.yaml",[158,187,208,226,239,249],{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":162,"licenseFileUrl":163,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":46},"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.","MIT","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",[],[167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":191,"licenseFileUrl":192,"sourceHtmlUrl":193,"categories":194,"keywords":195,"publishedAt":46},"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",[],[196,197,198,45,199,200,201,202,203,204,30,205,206,207],"mexc spot websocket","spot","websocket","workflows","public","listen","streams","depth","keys","api keys","maintenance","protobuf",{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":191,"licenseFileUrl":212,"sourceHtmlUrl":213,"categories":214,"keywords":215,"publishedAt":46},"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",[],[216,197,217,218,219,220,221,205,30,204,222,223,224,200,225,199,45],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":227,"name":228,"nameZh":6,"description":229,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":191,"licenseFileUrl":230,"sourceHtmlUrl":231,"categories":232,"keywords":233,"publishedAt":46},"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",[],[234,235,198,236,237,206,30,238,203,202,200,199],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":240,"name":241,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":162,"licenseFileUrl":242,"sourceHtmlUrl":243,"categories":244,"keywords":245,"publishedAt":46},"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",[],[246,247,248],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":250,"name":251,"nameZh":6,"description":252,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":162,"licenseFileUrl":253,"sourceHtmlUrl":254,"categories":255,"keywords":256,"publishedAt":46},"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",[],[257,258,259,260,261,262,263,44,264,265,266],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]