[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GSWKB6ZP81B180W618YTQX":3,"skill-same:01M6GSWKB6ZP81B180W618YTQX":83},{"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":24,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6GSWKB6ZP81B180W618YTQX","kraken-rate-limits",null,"Understand Kraken API rate limits and adapt agent behavior when limits are hit.","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\u002Fexchanges\u002Fkraken-official-rate-limits\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkraken-official-rate-limits\u002FSKILL.md",[19],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000040","财务","PROFESSION","适用职业",[25,26,27,28,29,30,31,32,33,34,35],"kraken","kraken rate limits","rate","limits","finance","api","behavior","adapt","understand","api rate","when","2026-11-10 10:12:30",false,"---\nname: kraken-rate-limits\nversion: 2.0.0\ndescription: \"Understand Kraken API rate limits and adapt agent behavior when limits are hit.\"\nmetadata:\n  openclaw:\n    category: \"finance\"\n  requires:\n    bins: [\"kraken\"]\n---\n\n# kraken-rate-limits\n\nUse this skill for:\n- understanding Kraken's rate limit systems (Spot REST, trading engine, Futures)\n- adapting agent behavior when rate limit errors occur\n- choosing optimal request patterns (WebSocket vs REST, batch vs individual)\n\n## How Rate Limiting Works\n\nThe CLI does not pre-throttle or retry rate-limited requests. The Kraken API server enforces rate limits. When a limit is hit, the CLI returns the error immediately with structured fields:\n\n```json\n{\n  \"error\": \"rate_limit\",\n  \"message\": \"Spot REST API rate limit exceeded ...\",\n  \"suggestion\": \"Wait 5-15 seconds before retrying. ...\",\n  \"retryable\": true,\n  \"docs_url\": \"https:\u002F\u002Fdocs.kraken.com\u002Fapi\u002Fdocs\u002Fguides\u002Fspot-rest-ratelimits\u002F\"\n}\n```\n\nRead the `suggestion` field to understand what limit was hit and how to adapt.\n\n## Kraken's Rate Limit Systems\n\n### 1. Spot REST Counter\n\nCounter-decay model. Each call adds to a counter; the counter decays over time.\n\n| Tier | Max Counter | Decay Rate |\n|------|-------------|------------|\n| Starter | 15 | 0.33\u002Fs |\n| Intermediate | 20 | 0.5\u002Fs |\n| Pro | 20 | 1.0\u002Fs |\n\nMost calls cost 1 point. Ledgers, trade history, and query-ledgers cost 2. AddOrder and CancelOrder are excluded from this counter (they use the trading engine limiter instead).\n\nDocs: https:\u002F\u002Fdocs.kraken.com\u002Fapi\u002Fdocs\u002Fguides\u002Fspot-rest-ratelimits\u002F\n\n### 2. Spot Trading Engine (per-pair)\n\nSeparate per-pair counter with penalties for short-lived orders:\n\n| Tier | Threshold | Decay Rate |\n|------|-----------|------------|\n| Starter | 60 | 1\u002Fs |\n| Intermediate | 125 | 2.34\u002Fs |\n| Pro | 180 | 3.75\u002Fs |\n\nCancel within 5 seconds costs +8, amend within 5 seconds costs +3. Let orders rest longer to reduce cost.\n\nDocs: https:\u002F\u002Fdocs.kraken.com\u002Fapi\u002Fdocs\u002Fguides\u002Fspot-ratelimits\n\n### 3. Futures Cost Budget\n\nCost-based system with two separate pools:\n\n- `\u002Fderivatives` endpoints: budget of 500 per 10 seconds. `sendorder` costs 10, `editorder` costs 10, `cancelorder` costs 10, `batchorder` costs 9 + batch size, `cancelallorders` costs 25, `accounts` costs 2.\n- `\u002Fhistory` endpoints: pool of 100 tokens, refills at 100 per 10 minutes.\n\nDocs: https:\u002F\u002Fdocs.kraken.com\u002Fapi\u002Fdocs\u002Fguides\u002Ffutures-rate-limits\u002F\n\n## Agent Strategies\n\n### Prefer WebSocket over REST polling\n\nStreaming does not consume REST rate limit points. For real-time data, always prefer:\n\n```bash\nkraken ws ticker BTC\u002FUSD -o json 2>\u002Fdev\u002Fnull\n```\n\n### Use batch orders\n\nBatch orders cost less per-order on both Spot and Futures. Up to 15 orders per batch on Spot.\n\n### Read the suggestion field\n\nWhen a rate limit error is returned, the `suggestion` field contains the specific limit that was hit and concrete advice. Parse it and adapt:\n\n```bash\nRESULT=$(kraken balance -o json 2>\u002Fdev\u002Fnull)\nif [ $? -ne 0 ]; then\n  CATEGORY=$(echo \"$RESULT\" | jq -r '.error \u002F\u002F \"unknown\"')\n  if [ \"$CATEGORY\" = \"rate_limit\" ]; then\n    SUGGESTION=$(echo \"$RESULT\" | jq -r '.suggestion \u002F\u002F \"Wait and retry\"')\n    DOCS=$(echo \"$RESULT\" | jq -r '.docs_url \u002F\u002F \"\"')\n    echo \"Rate limited. $SUGGESTION\"\n    echo \"Read more: $DOCS\"\n  fi\nfi\n```\n\n### Multi-command budget planning\n\nBefore executing a sequence, estimate total cost:\n\n```bash\n# This sequence costs ~5 points on the Spot REST counter:\nkraken ticker BTCUSD -o json 2>\u002Fdev\u002Fnull       # 1 point\nkraken balance -o json 2>\u002Fdev\u002Fnull             # 1 point\nkraken open-orders -o json 2>\u002Fdev\u002Fnull         # 1 point\nkraken trades-history -o json 2>\u002Fdev\u002Fnull      # 2 points (heavy call)\n```\n\nLeave headroom for retries and unexpected calls.\n\nIf you hit a mismatch between what you are trying to do and the CLI's interface or responses — including a mismatch between this skill and the installed CLI version's contract — feel free to submit feedback with `kraken feedback`.\n","# kraken-rate-limits\n\nUse this skill for:\n- understanding Kraken's rate limit systems (Spot REST, trading engine, Futures)\n- adapting agent behavior when rate limit errors occur\n- choosing optimal request patterns (WebSocket vs REST, batch vs individual)\n\n## How Rate Limiting Works\n\nThe CLI does not pre-throttle or retry rate-limited requests. The Kraken API server enforces rate limits. When a limit is hit, the CLI returns the error immediately with structured fields:\n\n```json\n{\n  \"error\": \"rate_limit\",\n  \"message\": \"Spot REST API rate limit exceeded ...\",\n  \"suggestion\": \"Wait 5-15 seconds before retrying. ...\",\n  \"retryable\": true,\n  \"docs_url\": \"https:\u002F\u002Fdocs.kraken.com\u002Fapi\u002Fdocs\u002Fguides\u002Fspot-rest-ratelimits\u002F\"\n}\n```\n\nRead the `suggestion` field to understand what limit was hit and how to adapt.\n\n## Kraken's Rate Limit Systems\n\n### 1. Spot REST Counter\n\nCounter-decay model. Each call adds to a counter; the counter decays over time.\n\n| Tier | Max Counter | Decay Rate |\n|------|-------------|------------|\n| Starter | 15 | 0.33\u002Fs |\n| Intermediate | 20 | 0.5\u002Fs |\n| Pro | 20 | 1.0\u002Fs |\n\nMost calls cost 1 point. Ledgers, trade history, and query-ledgers cost 2. AddOrder and CancelOrder are excluded from this counter (they use the trading engine limiter instead).\n\nDocs: https:\u002F\u002Fdocs.kraken.com\u002Fapi\u002Fdocs\u002Fguides\u002Fspot-rest-ratelimits\u002F\n\n### 2. Spot Trading Engine (per-pair)\n\nSeparate per-pair counter with penalties for short-lived orders:\n\n| Tier | Threshold | Decay Rate |\n|------|-----------|------------|\n| Starter | 60 | 1\u002Fs |\n| Intermediate | 125 | 2.34\u002Fs |\n| Pro | 180 | 3.75\u002Fs |\n\nCancel within 5 seconds costs +8, amend within 5 seconds costs +3. Let orders rest longer to reduce cost.\n\nDocs: https:\u002F\u002Fdocs.kraken.com\u002Fapi\u002Fdocs\u002Fguides\u002Fspot-ratelimits\n\n### 3. Futures Cost Budget\n\nCost-based system with two separate pools:\n\n- `\u002Fderivatives` endpoints: budget of 500 per 10 seconds. `sendorder` costs 10, `editorder` costs 10, `cancelorder` costs 10, `batchorder` costs 9 + batch size, `cancelallorders` costs 25, `accounts` costs 2.\n- `\u002Fhistory` endpoints: pool of 100 tokens, refills at 100 per 10 minutes.\n\nDocs: https:\u002F\u002Fdocs.kraken.com\u002Fapi\u002Fdocs\u002Fguides\u002Ffutures-rate-limits\u002F\n\n## Agent Strategies\n\n### Prefer WebSocket over REST polling\n\nStreaming does not consume REST rate limit points. For real-time data, always prefer:\n\n```bash\nkraken ws ticker BTC\u002FUSD -o json 2>\u002Fdev\u002Fnull\n```\n\n### Use batch orders\n\nBatch orders cost less per-order on both Spot and Futures. Up to 15 orders per batch on Spot.\n\n### Read the suggestion field\n\nWhen a rate limit error is returned, the `suggestion` field contains the specific limit that was hit and concrete advice. Parse it and adapt:\n\n```bash\nRESULT=$(kraken balance -o json 2>\u002Fdev\u002Fnull)\nif [ $? -ne 0 ]; then\n  CATEGORY=$(echo \"$RESULT\" | jq -r '.error \u002F\u002F \"unknown\"')\n  if [ \"$CATEGORY\" = \"rate_limit\" ]; then\n    SUGGESTION=$(echo \"$RESULT\" | jq -r '.suggestion \u002F\u002F \"Wait and retry\"')\n    DOCS=$(echo \"$RESULT\" | jq -r '.docs_url \u002F\u002F \"\"')\n    echo \"Rate limited. $SUGGESTION\"\n    echo \"Read more: $DOCS\"\n  fi\nfi\n```\n\n### Multi-command budget planning\n\nBefore executing a sequence, estimate total cost:\n\n```bash\n# This sequence costs ~5 points on the Spot REST counter:\nkraken ticker BTCUSD -o json 2>\u002Fdev\u002Fnull       # 1 point\nkraken balance -o json 2>\u002Fdev\u002Fnull             # 1 point\nkraken open-orders -o json 2>\u002Fdev\u002Fnull         # 1 point\nkraken trades-history -o json 2>\u002Fdev\u002Fnull      # 2 points (heavy call)\n```\n\nLeave headroom for retries and unexpected calls.\n\nIf you hit a mismatch between what you are trying to do and the CLI's interface or responses — including a mismatch between this skill and the installed CLI version's contract — feel free to submit feedback with `kraken feedback`.\n",{"name":5,"version":41,"metadata":42,"description":7},"2.0.0",{"openclaw":43,"requires":44},{"category":29},{"bins":45},[25],"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fexchanges\u002Fkraken-official-rate-limits",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":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill kraken-rate-limits",{"tool":61,"command":62},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill kraken-rate-limits",{"tool":64,"command":65},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill kraken-rate-limits","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkraken-official-rate-limits\u002FSKILL.md",true,[69,73,79],{"path":70,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":16},"LICENSE","许可证",1074,{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"SOURCE.md","REFERENCE","参考文档",171,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkraken-official-rate-limits\u002FSOURCE.md",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"TRUST.auto.yaml",2246,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkraken-official-rate-limits\u002FTRUST.auto.yaml",[84,112,134,152,165,175],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":88,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":36},"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",[],[92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":116,"licenseFileUrl":117,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":36},"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",[],[121,122,123,30,124,125,126,127,128,129,130,131,132,133],"mexc spot websocket","spot","websocket","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":116,"licenseFileUrl":138,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":36},"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",[],[142,122,143,144,145,146,147,131,130,129,148,149,150,125,151,124,30],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":116,"licenseFileUrl":156,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":36},"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",[],[160,161,123,162,163,132,130,164,128,127,125,124],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":166,"name":167,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":168,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":36},"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",[],[172,173,174],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":179,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":36},"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",[],[183,184,185,186,187,188,189,190,191,192,193],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","use","patch","code","share"]