[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H2WQ84DT0FF1HM5CSXC2VE":3,"skill-same:01M6H2WQ84DT0FF1HM5CSXC2VE":142},{"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":18,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6H2WQ84DT0FF1HM5CSXC2VE","snaptrade-portfolio",null,"Connect to a user's investment accounts via SnapTrade SDK and generate portfolio reports (e.g., daily total value). Use when the user wants SnapTrade-based brokerage connectivity (Webull, E*TRADE, etc.), connection portal links, account registration, or automated portfolio summaries.","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\u002Fportfolio-trader\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"snaptrade portfolio","portfolio","registration","when","value","summaries","links","connection","via","connectivity","trade","sdk","investment","reports","daily","use","user","generate","connect","2026-11-10 10:12:30",false,"---\nname: snaptrade-portfolio\ndescription: Connect to a user's investment accounts via SnapTrade SDK and generate portfolio reports (e.g., daily total value). Use when the user wants SnapTrade-based brokerage connectivity (Webull, E*TRADE, etc.), connection portal links, account registration, or automated portfolio summaries.\n---\n\n# SnapTrade Portfolio\n\n## Overview\nConnect brokerage accounts through SnapTrade and generate a daily total-value report. This skill uses the official SnapTrade Python SDK (`snaptrade_client`) with request signing handled automatically.\n\n## Workflow\n\n### 2d) Place buy\u002Fsell orders (stocks\u002FETFs)\nRun:\n```\npython3 scripts\u002Fsnaptrade_order.py buy|sell TICKER UNITS --account-id \u003CACCOUNT_ID> [--order-type market|limit] [--limit-price \u003CPRICE>] [--tif Day|GTC|IOC|FOK]\n```\nDefaults:\n- order type: **market**\n- time in force: **Day**\n- limit price: only required for limit orders\n\nOptional monitoring (poll recent orders):\n```\npython3 scripts\u002Fsnaptrade_order.py buy|sell TICKER UNITS --account-id \u003CACCOUNT_ID> --watch\n```\n- polls every **10s** for up to **120s** by default\n- adjust with `--watch-interval` and `--watch-seconds`\n\nWatch an existing order by ID:\n```\npython3 scripts\u002Fsnaptrade_watch_order.py --account-id \u003CACCOUNT_ID> --order-id \u003CBROKERAGE_ORDER_ID>\n```\n- same 10s\u002F120s defaults, adjustable with `--watch-interval` and `--watch-seconds`\n\nUse **account orders endpoint** to confirm fills and report open orders to the user when asked.\n\n\n### 0) Create a SnapTrade account + API keys\nYou need a SnapTrade account to connect brokerages. Create a free account at **https:\u002F\u002Fsnaptrade.com**, generate your **Client ID** and **Consumer Key**, then add them to the skill config.\n\n### 1) Install dependencies\n```\npip3 install -r requirements.txt\n```\n\n### 2) Configure credentials (one-time)\nStore credentials in a local config file (not committed). `user_id` is generated automatically on first run:\n\n```\n\u002Fhome\u002Fopenclaw\u002F.openclaw\u002Fworkspace\u002Fsecrets\u002Fsnaptrade.json\n```\n\nExample:\n```\n{\n  \"client_id\": \"YOUR_CLIENT_ID\",\n  \"consumer_key\": \"YOUR_CONSUMER_KEY\",\n  \"user_id\": \"\u003Cauto-generated-uuid>\"\n}\n```\n\n### 2) Register user + generate connection portal link\nRun:\n```\npython3 scripts\u002Fsnaptrade_portal.py\n```\n\nThis will:\n- register the user if `user_secret` is missing\n- store `user_secret` back into the config file\n- print a **connection portal URL** the user must open to link accounts\n\n### 2b) Reconnect a disabled connection\nRun:\n```\npython3 scripts\u002Fsnaptrade_reconnect.py [brokerage-name]\n```\n\nThis will:\n- list disabled connections\n- generate a reconnect link (optionally match by brokerage name)\n- print a **reconnect URL** for the user to re‑enable the connection\n\n### 2c) List available brokerages (allowed connections)\nRun:\n```\npython3 scripts\u002Fsnaptrade_brokers.py\n```\n\nThis calls `\u002Fsnaptrade\u002Fpartners` and returns the `allowed_brokerages` list (display names).\n\n### 3) Pull total portfolio value\nRun:\n```\npython3 scripts\u002Fsnaptrade_total.py\n```\n\nOutput is JSON like:\n```\n{\"total_value\": 123456.78, \"currency\": \"CAD\"}\n```\n\n### 3b) Per-broker totals (converted currency)\nRun:\n```\npython3 scripts\u002Fsnaptrade_broker_totals.py --currency CAD\n```\n\nOutput JSON includes per-broker totals in the chosen currency and the FX rates used.\n\n**Implementation notes:** Avoid `get_user_holdings` when possible. Prefer `get_user_account_positions` (positions endpoint) for holdings\u002Fpositions data. Only use balances\u002Fcash from holdings if explicitly required by the user; otherwise do not call holdings.\n\n### 4) Schedule daily report\nUse cron to call `snaptrade_total.py`, format a concise WhatsApp message, then send it to the user. Only the total value is required.\n\n## Scripts\n\n- `scripts\u002Fsnaptrade_common.py` — config load\u002Fsave + client creation\n- `scripts\u002Fsnaptrade_portal.py` — register user + generate connection portal link\n- `scripts\u002Fsnaptrade_reconnect.py` — generate reconnect link for disabled connections\n- `scripts\u002Fsnaptrade_brokers.py` — list allowed brokerages for this client\n- `scripts\u002Fsnaptrade_order.py` — place buy\u002Fsell orders (market\u002Flimit) with optional monitoring\n- `scripts\u002Fsnaptrade_watch_order.py` — watch an existing order by ID for fills\n- `scripts\u002Fsnaptrade_total.py` — compute total value across all accounts\n- `scripts\u002Fsnaptrade_broker_totals.py` — per-broker totals with FX conversion\n\n## Notes\n- Request signing is handled by the SDK via `request_after_hook` using `consumer_key`.\n- The total is computed by summing each account’s `account.balance.total` from holdings; this avoids errors when accounts are added or removed.\n- If multiple currencies are present, the script uses the first currency encountered.\n- Keep secrets in the local config file with `chmod 600` permissions.\n","# SnapTrade Portfolio\n\n## Overview\nConnect brokerage accounts through SnapTrade and generate a daily total-value report. This skill uses the official SnapTrade Python SDK (`snaptrade_client`) with request signing handled automatically.\n\n## Workflow\n\n### 2d) Place buy\u002Fsell orders (stocks\u002FETFs)\nRun:\n```\npython3 scripts\u002Fsnaptrade_order.py buy|sell TICKER UNITS --account-id \u003CACCOUNT_ID> [--order-type market|limit] [--limit-price \u003CPRICE>] [--tif Day|GTC|IOC|FOK]\n```\nDefaults:\n- order type: **market**\n- time in force: **Day**\n- limit price: only required for limit orders\n\nOptional monitoring (poll recent orders):\n```\npython3 scripts\u002Fsnaptrade_order.py buy|sell TICKER UNITS --account-id \u003CACCOUNT_ID> --watch\n```\n- polls every **10s** for up to **120s** by default\n- adjust with `--watch-interval` and `--watch-seconds`\n\nWatch an existing order by ID:\n```\npython3 scripts\u002Fsnaptrade_watch_order.py --account-id \u003CACCOUNT_ID> --order-id \u003CBROKERAGE_ORDER_ID>\n```\n- same 10s\u002F120s defaults, adjustable with `--watch-interval` and `--watch-seconds`\n\nUse **account orders endpoint** to confirm fills and report open orders to the user when asked.\n\n\n### 0) Create a SnapTrade account + API keys\nYou need a SnapTrade account to connect brokerages. Create a free account at **https:\u002F\u002Fsnaptrade.com**, generate your **Client ID** and **Consumer Key**, then add them to the skill config.\n\n### 1) Install dependencies\n```\npip3 install -r requirements.txt\n```\n\n### 2) Configure credentials (one-time)\nStore credentials in a local config file (not committed). `user_id` is generated automatically on first run:\n\n```\n\u002Fhome\u002Fopenclaw\u002F.openclaw\u002Fworkspace\u002Fsecrets\u002Fsnaptrade.json\n```\n\nExample:\n```\n{\n  \"client_id\": \"YOUR_CLIENT_ID\",\n  \"consumer_key\": \"YOUR_CONSUMER_KEY\",\n  \"user_id\": \"\u003Cauto-generated-uuid>\"\n}\n```\n\n### 2) Register user + generate connection portal link\nRun:\n```\npython3 scripts\u002Fsnaptrade_portal.py\n```\n\nThis will:\n- register the user if `user_secret` is missing\n- store `user_secret` back into the config file\n- print a **connection portal URL** the user must open to link accounts\n\n### 2b) Reconnect a disabled connection\nRun:\n```\npython3 scripts\u002Fsnaptrade_reconnect.py [brokerage-name]\n```\n\nThis will:\n- list disabled connections\n- generate a reconnect link (optionally match by brokerage name)\n- print a **reconnect URL** for the user to re‑enable the connection\n\n### 2c) List available brokerages (allowed connections)\nRun:\n```\npython3 scripts\u002Fsnaptrade_brokers.py\n```\n\nThis calls `\u002Fsnaptrade\u002Fpartners` and returns the `allowed_brokerages` list (display names).\n\n### 3) Pull total portfolio value\nRun:\n```\npython3 scripts\u002Fsnaptrade_total.py\n```\n\nOutput is JSON like:\n```\n{\"total_value\": 123456.78, \"currency\": \"CAD\"}\n```\n\n### 3b) Per-broker totals (converted currency)\nRun:\n```\npython3 scripts\u002Fsnaptrade_broker_totals.py --currency CAD\n```\n\nOutput JSON includes per-broker totals in the chosen currency and the FX rates used.\n\n**Implementation notes:** Avoid `get_user_holdings` when possible. Prefer `get_user_account_positions` (positions endpoint) for holdings\u002Fpositions data. Only use balances\u002Fcash from holdings if explicitly required by the user; otherwise do not call holdings.\n\n### 4) Schedule daily report\nUse cron to call `snaptrade_total.py`, format a concise WhatsApp message, then send it to the user. Only the total value is required.\n\n## Scripts\n\n- `scripts\u002Fsnaptrade_common.py` — config load\u002Fsave + client creation\n- `scripts\u002Fsnaptrade_portal.py` — register user + generate connection portal link\n- `scripts\u002Fsnaptrade_reconnect.py` — generate reconnect link for disabled connections\n- `scripts\u002Fsnaptrade_brokers.py` — list allowed brokerages for this client\n- `scripts\u002Fsnaptrade_order.py` — place buy\u002Fsell orders (market\u002Flimit) with optional monitoring\n- `scripts\u002Fsnaptrade_watch_order.py` — watch an existing order by ID for fills\n- `scripts\u002Fsnaptrade_total.py` — compute total value across all accounts\n- `scripts\u002Fsnaptrade_broker_totals.py` — per-broker totals with FX conversion\n\n## Notes\n- Request signing is handled by the SDK via `request_after_hook` using `consumer_key`.\n- The total is computed by summing each account’s `account.balance.total` from holdings; this avoids errors when accounts are added or removed.\n- If multiple currencies are present, the script uses the first currency encountered.\n- Keep secrets in the local config file with `chmod 600` permissions.\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Ftrading\u002Fportfolio-trader",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-12 02:28:42",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill snaptrade-portfolio",{"tool":58,"command":59},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill snaptrade-portfolio",{"tool":61,"command":62},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill snaptrade-portfolio","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002FSKILL.md",true,[66,72,76,80,84,88,92,98,102,106,110,114,118,122,126,130,134,138],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"_meta.json","REFERENCE","参考文档",135,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002F_meta.json",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fapi-reference.md",394,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Freferences\u002Fapi-reference.md",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fconnection-portal.md",623,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Freferences\u002Fconnection-portal.md",{"path":81,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fgetting-started.md",925,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Freferences\u002Fgetting-started.md",{"path":85,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fwebhooks.md",665,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Freferences\u002Fwebhooks.md",{"path":89,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":90,"sourceHtmlUrl":91},"requirements.txt",31,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Frequirements.txt",{"path":93,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":96,"sourceHtmlUrl":97},"scripts\u002Fsnaptrade_accounts.py","SCRIPT","脚本",1096,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fscripts\u002Fsnaptrade_accounts.py",{"path":99,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002Fsnaptrade_broker_totals.py",4460,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fscripts\u002Fsnaptrade_broker_totals.py",{"path":103,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":104,"sourceHtmlUrl":105},"scripts\u002Fsnaptrade_brokers.py",954,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fscripts\u002Fsnaptrade_brokers.py",{"path":107,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":108,"sourceHtmlUrl":109},"scripts\u002Fsnaptrade_common.py",1180,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fscripts\u002Fsnaptrade_common.py",{"path":111,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Fsnaptrade_order.py",3410,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fscripts\u002Fsnaptrade_order.py",{"path":115,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":116,"sourceHtmlUrl":117},"scripts\u002Fsnaptrade_portal.py",2098,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fscripts\u002Fsnaptrade_portal.py",{"path":119,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":120,"sourceHtmlUrl":121},"scripts\u002Fsnaptrade_reconnect.py",2251,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fscripts\u002Fsnaptrade_reconnect.py",{"path":123,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":124,"sourceHtmlUrl":125},"scripts\u002Fsnaptrade_total.py",10509,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fscripts\u002Fsnaptrade_total.py",{"path":127,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":128,"sourceHtmlUrl":129},"scripts\u002Fsnaptrade_watch_order.py",1981,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fscripts\u002Fsnaptrade_watch_order.py",{"path":131,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":132,"sourceHtmlUrl":133},"skill-card.md",2624,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002Fskill-card.md",{"path":135,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":136,"sourceHtmlUrl":137},"SOURCE.md",262,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002FSOURCE.md",{"path":139,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":140,"sourceHtmlUrl":141},"TRUST.auto.yaml",2229,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fportfolio-trader\u002FTRUST.auto.yaml",[143,172,195,213,226,236],{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":147,"licenseFileUrl":148,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":38},"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",[],[152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":176,"licenseFileUrl":177,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":38},"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",[],[181,182,183,184,185,186,187,188,189,190,191,192,193,194],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":196,"name":197,"nameZh":6,"description":198,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":176,"licenseFileUrl":199,"sourceHtmlUrl":200,"categories":201,"keywords":202,"publishedAt":38},"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",[],[203,182,204,205,206,207,208,192,191,190,209,210,211,186,212,185,184],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":214,"name":215,"nameZh":6,"description":216,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":176,"licenseFileUrl":217,"sourceHtmlUrl":218,"categories":219,"keywords":220,"publishedAt":38},"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",[],[221,222,183,223,224,193,191,225,189,188,186,185],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":227,"name":228,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":147,"licenseFileUrl":229,"sourceHtmlUrl":230,"categories":231,"keywords":232,"publishedAt":38},"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",[],[233,234,235],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":237,"name":238,"nameZh":6,"description":239,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":147,"licenseFileUrl":240,"sourceHtmlUrl":241,"categories":242,"keywords":243,"publishedAt":38},"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",[],[244,245,246,247,248,249,250,34,251,252,253],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]