[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H2ZP5KB37KXQPB7R3YEJ98":3,"skill-same:01M6H2ZP5KB37KXQPB7R3YEJ98":94},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6H2ZP5KB37KXQPB7R3YEJ98","vibetrading",null,"Build, backtest, and deploy cryptocurrency trading strategies using the vibetrading Python framework. Use when: (1) generating trading strategies from natural language, (2) backtesting strategies on historical data, (3) deploying strategies to live exchanges (Hyperliquid, Paradex, Lighter, Aster), (4) comparing strategy performance, (5) working with crypto trading indicators, position sizing, or risk management. NOT for: general finance questions, non-crypto trading, or strategies outside the vibetrading framework.","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\u002Fvibetrading\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"natural language","when","for","aster","questions","with","strategies","lighter","backtesting","crypto","python","build","general","use","strategy","indicators","risk","cryptocurrency","data","performance","2026-11-10 10:12:30",false,"---\nname: vibetrading\ndescription: \"Build, backtest, and deploy cryptocurrency trading strategies using the vibetrading Python framework. Use when: (1) generating trading strategies from natural language, (2) backtesting strategies on historical data, (3) deploying strategies to live exchanges (Hyperliquid, Paradex, Lighter, Aster), (4) comparing strategy performance, (5) working with crypto trading indicators, position sizing, or risk management. NOT for: general finance questions, non-crypto trading, or strategies outside the vibetrading framework.\"\n---\n\n# vibetrading\n\nAgent-first crypto trading framework. Strategies are Python functions decorated with `@vibe` that call sandbox functions (`get_perp_price`, `long`, `short`, etc.). Same code runs in backtest and live.\n\n## Install\n\n```bash\npip install vibetrading                    # Core\npip install \"vibetrading[hyperliquid]\"     # + Hyperliquid live trading\npip install \"vibetrading[dev]\"             # + pytest, ruff\n```\n\n## Core Workflow\n\n### 1. Write a Strategy\n\n```python\nimport math\nfrom vibetrading import vibe, get_perp_price, get_perp_position, get_perp_summary\nfrom vibetrading import set_leverage, long, reduce_position, get_futures_ohlcv\nfrom vibetrading.indicators import rsi\n\n@vibe(interval=\"1h\")\ndef my_strategy():\n    price = get_perp_price(\"BTC\")\n    if math.isnan(price):\n        return\n\n    position = get_perp_position(\"BTC\")\n    if position and position.get(\"size\", 0) != 0:\n        pnl = (price - position[\"entry_price\"]) \u002F position[\"entry_price\"]\n        if pnl >= 0.03 or pnl \u003C= -0.02:\n            reduce_position(\"BTC\", abs(position[\"size\"]))\n        return\n\n    ohlcv = get_futures_ohlcv(\"BTC\", \"1h\", 20)\n    if ohlcv is None or len(ohlcv) \u003C 15:\n        return\n\n    if rsi(ohlcv[\"close\"]).iloc[-1] \u003C 30:\n        summary = get_perp_summary()\n        margin = summary.get(\"available_margin\", 0)\n        if margin > 100:\n            set_leverage(\"BTC\", 3)\n            qty = (margin * 0.1 * 3) \u002F price\n            if qty * price >= 15:\n                long(\"BTC\", qty, price, order_type=\"market\")\n```\n\n### 2. Backtest\n\n```python\nimport vibetrading.backtest\n\nresults = vibetrading.backtest.run(code, interval=\"1h\", slippage_bps=5)\nm = results[\"metrics\"]\n# Keys: total_return, sharpe_ratio, sortino_ratio, calmar_ratio, max_drawdown,\n#        win_rate, profit_factor, expectancy, number_of_trades, cagr, etc.\n```\n\n### 3. Deploy Live\n\n```python\nimport vibetrading.live\n\nawait vibetrading.live.start(\n    code,\n    exchange=\"hyperliquid\",\n    api_key=\"0xWalletAddress\",\n    api_secret=\"0xPrivateKey\",\n    interval=\"1m\",\n)\n```\n\n## Strategy Rules\n\nEvery strategy **must**:\n- Import and use `@vibe` or `@vibe(interval=\"1h\")` decorator\n- Guard against `math.isnan(price)` — prices are NaN before data loads\n- Check position before entering (avoid stacking)\n- Have both take-profit and stop-loss exits\n- Check `margin > 50` and `qty * price >= 15` before trading\n\nOrder types: `\"market\"` (fills immediately + slippage) or `\"limit\"` (fills at price).\n\n## Sandbox Functions\n\n**Data**: `get_perp_price(asset)`, `get_spot_price(asset)`, `get_futures_ohlcv(asset, interval, limit)`, `get_spot_ohlcv(asset, interval, limit)`, `get_funding_rate(asset)`, `get_open_interest(asset)`, `get_current_time()`, `get_supported_assets()`\n\n**Account**: `get_perp_summary()` → `{available_margin, total_margin, ...}`, `get_perp_position(asset)` → `{size, entry_price, pnl, leverage}` or `None`, `my_spot_balance(asset?)`, `my_futures_balance()`\n\n**Trading**: `long(asset, qty, price, order_type=\"market\")`, `short(asset, qty, price, order_type=\"market\")`, `buy(asset, qty, price)`, `sell(asset, qty, price)`, `reduce_position(asset, qty)`, `set_leverage(asset, leverage)`\n\n## Indicators\n\n`from vibetrading.indicators import sma, ema, rsi, bbands, atr, macd, stochastic, vwap`\n\nAll take pandas Series, return pandas Series. Pure pandas — no dependencies.\n\n| Function | Signature | Returns |\n|---|---|---|\n| `rsi` | `rsi(close, period=14)` | Series (0-100) |\n| `bbands` | `bbands(close, period=20, std=2.0)` | `(upper, middle, lower)` |\n| `macd` | `macd(close, fast=12, slow=26, signal=9)` | `(macd_line, signal, histogram)` |\n| `atr` | `atr(high, low, close, period=14)` | Series |\n| `stochastic` | `stochastic(high, low, close, k=14, d=3)` | `(%K, %D)` |\n\n## Position Sizing\n\n`from vibetrading.sizing import kelly_size, fixed_fraction_size, volatility_adjusted_size, risk_per_trade_size`\n\n- `kelly_size(win_rate, avg_win, avg_loss, balance, fraction=0.5)` — half-Kelly default\n- `risk_per_trade_size(balance, risk_pct, stop_distance, price)` — risk-based\n\n## Templates\n\n```python\nfrom vibetrading.templates import momentum, mean_reversion, grid, dca, multi_momentum\ncode = momentum()  # Returns valid strategy code string\n```\n\n## AI Generation\n\n```python\nimport vibetrading.strategy\n\ncode = vibetrading.strategy.generate(\"BTC RSI oversold entry, 3x leverage\", model=\"claude-sonnet-4-20250514\")\nresult = vibetrading.strategy.validate(code)  # Static analysis\nreport = vibetrading.strategy.analyze(results, strategy_code=code)  # LLM analysis\n```\n\nRequires `ANTHROPIC_API_KEY` or `OPENAI_API_KEY` in environment.\n\n## Comparing Strategies\n\n```python\nimport vibetrading.compare\n\nresults = vibetrading.compare.run({\"RSI\": code1, \"MACD\": code2}, slippage_bps=5)\nvibetrading.compare.print_table(results)\ndf = vibetrading.compare.to_dataframe(results)\n```\n\n## Data Download\n\n```python\nimport vibetrading.tools\nfrom datetime import datetime, timezone\n\ndata = vibetrading.tools.download_data(\n    [\"BTC\", \"ETH\", \"SOL\"], exchange=\"binance\", interval=\"1h\",\n    start_time=datetime(2025, 1, 1, tzinfo=timezone.utc),\n    end_time=datetime(2025, 6, 1, tzinfo=timezone.utc),\n)\nresults = vibetrading.backtest.run(code, data=data, slippage_bps=5)\n```\n\n## Exchange Credentials\n\nStore in `.env.local` (gitignored):\n\n| Exchange | `api_key` | `api_secret` | Extra |\n|---|---|---|---|\n| Hyperliquid | Wallet address `0x...` | Private key `0x...` | — |\n| Paradex | StarkNet public key | StarkNet private key | `account_address=` |\n| Lighter | API key | API secret | — |\n| Aster | API key | API secret | `user_address=` |\n\n## Common Patterns\n\nFor detailed API docs, strategy patterns, and exchange-specific setup: see [references\u002Fapi-details.md](references\u002Fapi-details.md).\n","# vibetrading\n\nAgent-first crypto trading framework. Strategies are Python functions decorated with `@vibe` that call sandbox functions (`get_perp_price`, `long`, `short`, etc.). Same code runs in backtest and live.\n\n## Install\n\n```bash\npip install vibetrading                    # Core\npip install \"vibetrading[hyperliquid]\"     # + Hyperliquid live trading\npip install \"vibetrading[dev]\"             # + pytest, ruff\n```\n\n## Core Workflow\n\n### 1. Write a Strategy\n\n```python\nimport math\nfrom vibetrading import vibe, get_perp_price, get_perp_position, get_perp_summary\nfrom vibetrading import set_leverage, long, reduce_position, get_futures_ohlcv\nfrom vibetrading.indicators import rsi\n\n@vibe(interval=\"1h\")\ndef my_strategy():\n    price = get_perp_price(\"BTC\")\n    if math.isnan(price):\n        return\n\n    position = get_perp_position(\"BTC\")\n    if position and position.get(\"size\", 0) != 0:\n        pnl = (price - position[\"entry_price\"]) \u002F position[\"entry_price\"]\n        if pnl >= 0.03 or pnl \u003C= -0.02:\n            reduce_position(\"BTC\", abs(position[\"size\"]))\n        return\n\n    ohlcv = get_futures_ohlcv(\"BTC\", \"1h\", 20)\n    if ohlcv is None or len(ohlcv) \u003C 15:\n        return\n\n    if rsi(ohlcv[\"close\"]).iloc[-1] \u003C 30:\n        summary = get_perp_summary()\n        margin = summary.get(\"available_margin\", 0)\n        if margin > 100:\n            set_leverage(\"BTC\", 3)\n            qty = (margin * 0.1 * 3) \u002F price\n            if qty * price >= 15:\n                long(\"BTC\", qty, price, order_type=\"market\")\n```\n\n### 2. Backtest\n\n```python\nimport vibetrading.backtest\n\nresults = vibetrading.backtest.run(code, interval=\"1h\", slippage_bps=5)\nm = results[\"metrics\"]\n# Keys: total_return, sharpe_ratio, sortino_ratio, calmar_ratio, max_drawdown,\n#        win_rate, profit_factor, expectancy, number_of_trades, cagr, etc.\n```\n\n### 3. Deploy Live\n\n```python\nimport vibetrading.live\n\nawait vibetrading.live.start(\n    code,\n    exchange=\"hyperliquid\",\n    api_key=\"0xWalletAddress\",\n    api_secret=\"0xPrivateKey\",\n    interval=\"1m\",\n)\n```\n\n## Strategy Rules\n\nEvery strategy **must**:\n- Import and use `@vibe` or `@vibe(interval=\"1h\")` decorator\n- Guard against `math.isnan(price)` — prices are NaN before data loads\n- Check position before entering (avoid stacking)\n- Have both take-profit and stop-loss exits\n- Check `margin > 50` and `qty * price >= 15` before trading\n\nOrder types: `\"market\"` (fills immediately + slippage) or `\"limit\"` (fills at price).\n\n## Sandbox Functions\n\n**Data**: `get_perp_price(asset)`, `get_spot_price(asset)`, `get_futures_ohlcv(asset, interval, limit)`, `get_spot_ohlcv(asset, interval, limit)`, `get_funding_rate(asset)`, `get_open_interest(asset)`, `get_current_time()`, `get_supported_assets()`\n\n**Account**: `get_perp_summary()` → `{available_margin, total_margin, ...}`, `get_perp_position(asset)` → `{size, entry_price, pnl, leverage}` or `None`, `my_spot_balance(asset?)`, `my_futures_balance()`\n\n**Trading**: `long(asset, qty, price, order_type=\"market\")`, `short(asset, qty, price, order_type=\"market\")`, `buy(asset, qty, price)`, `sell(asset, qty, price)`, `reduce_position(asset, qty)`, `set_leverage(asset, leverage)`\n\n## Indicators\n\n`from vibetrading.indicators import sma, ema, rsi, bbands, atr, macd, stochastic, vwap`\n\nAll take pandas Series, return pandas Series. Pure pandas — no dependencies.\n\n| Function | Signature | Returns |\n|---|---|---|\n| `rsi` | `rsi(close, period=14)` | Series (0-100) |\n| `bbands` | `bbands(close, period=20, std=2.0)` | `(upper, middle, lower)` |\n| `macd` | `macd(close, fast=12, slow=26, signal=9)` | `(macd_line, signal, histogram)` |\n| `atr` | `atr(high, low, close, period=14)` | Series |\n| `stochastic` | `stochastic(high, low, close, k=14, d=3)` | `(%K, %D)` |\n\n## Position Sizing\n\n`from vibetrading.sizing import kelly_size, fixed_fraction_size, volatility_adjusted_size, risk_per_trade_size`\n\n- `kelly_size(win_rate, avg_win, avg_loss, balance, fraction=0.5)` — half-Kelly default\n- `risk_per_trade_size(balance, risk_pct, stop_distance, price)` — risk-based\n\n## Templates\n\n```python\nfrom vibetrading.templates import momentum, mean_reversion, grid, dca, multi_momentum\ncode = momentum()  # Returns valid strategy code string\n```\n\n## AI Generation\n\n```python\nimport vibetrading.strategy\n\ncode = vibetrading.strategy.generate(\"BTC RSI oversold entry, 3x leverage\", model=\"claude-sonnet-4-20250514\")\nresult = vibetrading.strategy.validate(code)  # Static analysis\nreport = vibetrading.strategy.analyze(results, strategy_code=code)  # LLM analysis\n```\n\nRequires `ANTHROPIC_API_KEY` or `OPENAI_API_KEY` in environment.\n\n## Comparing Strategies\n\n```python\nimport vibetrading.compare\n\nresults = vibetrading.compare.run({\"RSI\": code1, \"MACD\": code2}, slippage_bps=5)\nvibetrading.compare.print_table(results)\ndf = vibetrading.compare.to_dataframe(results)\n```\n\n## Data Download\n\n```python\nimport vibetrading.tools\nfrom datetime import datetime, timezone\n\ndata = vibetrading.tools.download_data(\n    [\"BTC\", \"ETH\", \"SOL\"], exchange=\"binance\", interval=\"1h\",\n    start_time=datetime(2025, 1, 1, tzinfo=timezone.utc),\n    end_time=datetime(2025, 6, 1, tzinfo=timezone.utc),\n)\nresults = vibetrading.backtest.run(code, data=data, slippage_bps=5)\n```\n\n## Exchange Credentials\n\nStore in `.env.local` (gitignored):\n\n| Exchange | `api_key` | `api_secret` | Extra |\n|---|---|---|---|\n| Hyperliquid | Wallet address `0x...` | Private key `0x...` | — |\n| Paradex | StarkNet public key | StarkNet private key | `account_address=` |\n| Lighter | API key | API secret | — |\n| Aster | API key | API secret | `user_address=` |\n\n## Common Patterns\n\nFor detailed API docs, strategy patterns, and exchange-specific setup: see [references\u002Fapi-details.md](references\u002Fapi-details.md).\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Ftrading\u002Fvibetrading",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-13 02:31:19",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill vibetrading",{"tool":64,"command":65},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill vibetrading",{"tool":67,"command":68},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill vibetrading","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fvibetrading\u002FSKILL.md",true,[72,78,82,86,90],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"_meta.json","REFERENCE","参考文档",130,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fvibetrading\u002F_meta.json",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fapi-details.md",9789,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fvibetrading\u002Freferences\u002Fapi-details.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"skill-card.md",2196,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fvibetrading\u002Fskill-card.md",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"SOURCE.md",246,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fvibetrading\u002FSOURCE.md",{"path":91,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":92,"sourceHtmlUrl":93},"TRUST.auto.yaml",2100,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fvibetrading\u002FTRUST.auto.yaml",[95,123,145,162,175,185],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":99,"licenseFileUrl":100,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":44},"01M712C436EQYE43342Q4E7GG1","recipe-performance","Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold\u002Fwarm\u002Fbackground-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout\u002Fpaint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.","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",[],[43,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122],"recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":127,"licenseFileUrl":128,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":44},"01M70XT2F8A5CQZ81JBP98KSW3","mexc-spot-websocket","MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FSKILL.md",[],[132,133,134,135,136,137,138,139,140,141,26,142,143,144],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","api keys","maintenance","protobuf",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":127,"licenseFileUrl":149,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":44},"01M70XT0MBXN3WZY1BKN0CPNKR","mexc-spot-rest","MEXC Spot REST workflows for public data, signed account requests, orders, wallet\u002Fadmin actions, and secure signing without exposing API keys.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FSKILL.md",[],[153,133,154,155,156,157,158,142,26,141,159,160,42,137,161,136,135],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","orders",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":127,"licenseFileUrl":166,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":44},"01M70XSYSVZ2N0N91XCAR2CAK0","mexc-futures-websocket","MEXC Futures WebSocket workflows for public streams, private account\u002Forder\u002Fposition streams, ping\u002Fpong, subscriptions, and depth maintenance.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FSKILL.md",[],[170,171,134,172,173,143,26,174,140,139,137,136],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":176,"name":177,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":99,"licenseFileUrl":178,"sourceHtmlUrl":179,"categories":180,"keywords":181,"publishedAt":44},"01M6H0ZWHVE5W04WG2DKQE2SQC","0xklen-version-and-refresh-sanctions-lists","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FSKILL.md",[],[182,183,184],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":99,"licenseFileUrl":189,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":44},"01M6H0Z28Q3R8J0S799GJQWXM3","verify-tests-cover-changed-lines","Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FSKILL.md",[],[193,194,195,196,197,198,199,37,200,201,202],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]