[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GWM16Q76V165MQPBBVFSXB":3,"skill-same:01M6GWM16Q76V165MQPBBVFSXB":87},{"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":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6GWM16Q76V165MQPBBVFSXB","gdex-ui-install-setup",null,"React and Next.js project setup for GDEX — SDK initialization, context providers, environment variables, and TypeScript configuration","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fgemachdao-gdex-ui-install-setup\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fgemachdao-gdex-ui-install-setup\u002FSKILL.md",[19],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"setup","ui","gdex ui install setup","install","initialization","typescript","for","Variables","environment variables","project","next","configuration","project setup","environment","context","js","Next.js","Providers","react","sdk","2026-11-10 10:12:30",false,"---\nname: gdex-ui-install-setup\ndescription: React and Next.js project setup for GDEX — SDK initialization, context providers, environment variables, and TypeScript configuration\n---\n\n# GDEX: Frontend Installation & Setup\n\nSet up a React or Next.js project to build trading UIs with the GDEX SDK. This skill covers project scaffolding, provider patterns, and SDK initialization.\n\n## When to Use\n\n- Starting a new frontend project that integrates GDEX trading\n- Adding GDEX SDK to an existing React\u002FNext.js app\n- Setting up the provider hierarchy and context pattern\n- Configuring TypeScript and environment variables for GDEX\n\n## Prerequisites\n\n- Node.js 18+ installed\n- Basic React\u002FNext.js knowledge\n\n## Project Setup\n\n### Next.js (Recommended)\n\n```bash\nnpx create-next-app@latest my-gdex-app --typescript --tailwind --app\ncd my-gdex-app\nnpm install @gemachdao\u002Fgdex-skill ethers\n```\n\n### Vite + React\n\n```bash\nnpm create vite@latest my-gdex-app -- --template react-ts\ncd my-gdex-app\nnpm install @gemachdao\u002Fgdex-skill ethers\n```\n\n## Environment Variables\n\n```env\n# .env.local (Next.js) or .env (Vite)\nNEXT_PUBLIC_GDEX_API_KEY=9b4e1c73-6a2f-4d88-b5c9-3e7a2f1d6c54\n# Or use the secondary key:\n# NEXT_PUBLIC_GDEX_API_KEY=2c8f0a91-5d34-4e7b-9a62-f1c3d8e4b705\n```\n\n> For Vite, use `VITE_GDEX_API_KEY` prefix instead of `NEXT_PUBLIC_`.\n\n## SDK Context Provider\n\nCreate a React context that initializes and shares the `GdexSkill` instance across your app:\n\n```typescript\n\u002F\u002F src\u002Fproviders\u002FGdexProvider.tsx\n'use client'; \u002F\u002F Next.js App Router\n\nimport React, { createContext, useContext, useEffect, useRef, useState } from 'react';\nimport { GdexSkill } from '@gemachdao\u002Fgdex-skill';\n\ninterface GdexContextValue {\n  skill: GdexSkill;\n  isReady: boolean;\n  error: string | null;\n}\n\nconst GdexContext = createContext\u003CGdexContextValue | null>(null);\n\nexport function GdexProvider({ children, apiKey }: { children: React.ReactNode; apiKey: string }) {\n  const skillRef = useRef(new GdexSkill());\n  const [isReady, setIsReady] = useState(false);\n  const [error, setError] = useState\u003Cstring | null>(null);\n\n  useEffect(() => {\n    try {\n      skillRef.current.loginWithApiKey(apiKey);\n      setIsReady(true);\n    } catch (err) {\n      setError(err instanceof Error ? err.message : 'Failed to initialize GDEX SDK');\n    }\n  }, [apiKey]);\n\n  return (\n    \u003CGdexContext.Provider value={{ skill: skillRef.current, isReady, error }}>\n      {children}\n    \u003C\u002FGdexContext.Provider>\n  );\n}\n\nexport function useGdex(): GdexContextValue {\n  const ctx = useContext(GdexContext);\n  if (!ctx) throw new Error('useGdex must be used within \u003CGdexProvider>');\n  return ctx;\n}\n```\n\n## App Layout with Provider\n\n### Next.js App Router\n\n```typescript\n\u002F\u002F src\u002Fapp\u002Flayout.tsx\nimport { GdexProvider } from '@\u002Fproviders\u002FGdexProvider';\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml lang=\"en\">\n      \u003Cbody>\n        \u003CGdexProvider apiKey={process.env.NEXT_PUBLIC_GDEX_API_KEY!}>\n          {children}\n        \u003C\u002FGdexProvider>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  );\n}\n```\n\n### Vite + React\n\n```typescript\n\u002F\u002F src\u002Fmain.tsx\nimport { GdexProvider } from '.\u002Fproviders\u002FGdexProvider';\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n  \u003CGdexProvider apiKey={import.meta.env.VITE_GDEX_API_KEY}>\n    \u003CApp \u002F>\n  \u003C\u002FGdexProvider>\n);\n```\n\n## Custom Hooks Pattern\n\nBuild feature-specific hooks on top of `useGdex()`:\n\n```typescript\n\u002F\u002F src\u002Fhooks\u002FusePortfolio.ts\nimport { useState, useCallback } from 'react';\nimport { useGdex } from '@\u002Fproviders\u002FGdexProvider';\n\nexport function usePortfolio(walletAddress: string) {\n  const { skill, isReady } = useGdex();\n  const [portfolio, setPortfolio] = useState\u003Cany>(null);\n  const [loading, setLoading] = useState(false);\n\n  const refresh = useCallback(async () => {\n    if (!isReady || !walletAddress) return;\n    setLoading(true);\n    try {\n      const data = await skill.getPortfolio({ walletAddress, chain: 8453 });\n      setPortfolio(data);\n    } finally {\n      setLoading(false);\n    }\n  }, [skill, isReady, walletAddress]);\n\n  return { portfolio, loading, refresh };\n}\n```\n\n```typescript\n\u002F\u002F src\u002Fhooks\u002FuseTrade.ts\nimport { useState } from 'react';\nimport type { SupportedChain } from '@gemachdao\u002Fgdex-skill';\nimport { useGdex } from '@\u002Fproviders\u002FGdexProvider';\nimport { useAuth } from '@\u002Fproviders\u002FAuthProvider'; \u002F\u002F managed-custody creds, see gdex-ui-wallet-connection\n\ntype TradeInput = { chain: SupportedChain; tokenAddress: string; amount: string; slippage?: number };\n\nexport function useTrade() {\n  const { skill, isReady } = useGdex();\n  const { creds } = useAuth();\n  const [pending, setPending] = useState(false);\n  const [result, setResult] = useState\u003Cany>(null);\n\n  const buyToken = async (params: TradeInput) => {\n    if (!isReady || !creds) throw new Error('Sign in with a wallet first');\n    setPending(true);\n    try {\n      const res = await skill.buyToken({ ...params, ...creds });\n      setResult(res);\n      return res;\n    } finally {\n      setPending(false);\n    }\n  };\n\n  const sellToken = async (params: TradeInput) => {\n    if (!isReady || !creds) throw new Error('Sign in with a wallet first');\n    setPending(true);\n    try {\n      const res = await skill.sellToken({ ...params, walletAddress: creds.walletAddress });\n      setResult(res);\n      return res;\n    } finally {\n      setPending(false);\n    }\n  };\n\n  return { buyToken, sellToken, pending, result };\n}\n```\n\n## TypeScript Configuration\n\nEnsure your `tsconfig.json` includes Node.js types for the SDK:\n\n```json\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"strict\": true,\n    \"jsx\": \"react-jsx\",\n    \"paths\": {\n      \"@\u002F*\": [\".\u002Fsrc\u002F*\"]\n    }\n  }\n}\n```\n\n## Provider Hierarchy\n\nFor apps with wallet connection + GDEX + theming:\n\n```\nThemeProvider          ← dark\u002Flight mode (see gdex-ui-theming)\n  └─ WalletProvider   ← wallet connection (see gdex-ui-wallet-connection)\n       └─ GdexProvider ← SDK instance + auth state\n            └─ App     ← your trading UI\n```\n\n## Related Skills\n\n- **gdex-ui-trading-components** — Trading UI component patterns (order forms, position tables)\n- **gdex-ui-wallet-connection** — Wallet connection UI and auth flows\n- **gdex-ui-theming** — CSS theming for trading interfaces\n- **gdex-ui-page-layouts** — Full page compositions (trading, portfolio, copy trade)\n- **gdex-authentication** — Backend auth details (encryption, session keys)\n","# GDEX: Frontend Installation & Setup\n\nSet up a React or Next.js project to build trading UIs with the GDEX SDK. This skill covers project scaffolding, provider patterns, and SDK initialization.\n\n## When to Use\n\n- Starting a new frontend project that integrates GDEX trading\n- Adding GDEX SDK to an existing React\u002FNext.js app\n- Setting up the provider hierarchy and context pattern\n- Configuring TypeScript and environment variables for GDEX\n\n## Prerequisites\n\n- Node.js 18+ installed\n- Basic React\u002FNext.js knowledge\n\n## Project Setup\n\n### Next.js (Recommended)\n\n```bash\nnpx create-next-app@latest my-gdex-app --typescript --tailwind --app\ncd my-gdex-app\nnpm install @gemachdao\u002Fgdex-skill ethers\n```\n\n### Vite + React\n\n```bash\nnpm create vite@latest my-gdex-app -- --template react-ts\ncd my-gdex-app\nnpm install @gemachdao\u002Fgdex-skill ethers\n```\n\n## Environment Variables\n\n```env\n# .env.local (Next.js) or .env (Vite)\nNEXT_PUBLIC_GDEX_API_KEY=9b4e1c73-6a2f-4d88-b5c9-3e7a2f1d6c54\n# Or use the secondary key:\n# NEXT_PUBLIC_GDEX_API_KEY=2c8f0a91-5d34-4e7b-9a62-f1c3d8e4b705\n```\n\n> For Vite, use `VITE_GDEX_API_KEY` prefix instead of `NEXT_PUBLIC_`.\n\n## SDK Context Provider\n\nCreate a React context that initializes and shares the `GdexSkill` instance across your app:\n\n```typescript\n\u002F\u002F src\u002Fproviders\u002FGdexProvider.tsx\n'use client'; \u002F\u002F Next.js App Router\n\nimport React, { createContext, useContext, useEffect, useRef, useState } from 'react';\nimport { GdexSkill } from '@gemachdao\u002Fgdex-skill';\n\ninterface GdexContextValue {\n  skill: GdexSkill;\n  isReady: boolean;\n  error: string | null;\n}\n\nconst GdexContext = createContext\u003CGdexContextValue | null>(null);\n\nexport function GdexProvider({ children, apiKey }: { children: React.ReactNode; apiKey: string }) {\n  const skillRef = useRef(new GdexSkill());\n  const [isReady, setIsReady] = useState(false);\n  const [error, setError] = useState\u003Cstring | null>(null);\n\n  useEffect(() => {\n    try {\n      skillRef.current.loginWithApiKey(apiKey);\n      setIsReady(true);\n    } catch (err) {\n      setError(err instanceof Error ? err.message : 'Failed to initialize GDEX SDK');\n    }\n  }, [apiKey]);\n\n  return (\n    \u003CGdexContext.Provider value={{ skill: skillRef.current, isReady, error }}>\n      {children}\n    \u003C\u002FGdexContext.Provider>\n  );\n}\n\nexport function useGdex(): GdexContextValue {\n  const ctx = useContext(GdexContext);\n  if (!ctx) throw new Error('useGdex must be used within \u003CGdexProvider>');\n  return ctx;\n}\n```\n\n## App Layout with Provider\n\n### Next.js App Router\n\n```typescript\n\u002F\u002F src\u002Fapp\u002Flayout.tsx\nimport { GdexProvider } from '@\u002Fproviders\u002FGdexProvider';\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml lang=\"en\">\n      \u003Cbody>\n        \u003CGdexProvider apiKey={process.env.NEXT_PUBLIC_GDEX_API_KEY!}>\n          {children}\n        \u003C\u002FGdexProvider>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  );\n}\n```\n\n### Vite + React\n\n```typescript\n\u002F\u002F src\u002Fmain.tsx\nimport { GdexProvider } from '.\u002Fproviders\u002FGdexProvider';\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n  \u003CGdexProvider apiKey={import.meta.env.VITE_GDEX_API_KEY}>\n    \u003CApp \u002F>\n  \u003C\u002FGdexProvider>\n);\n```\n\n## Custom Hooks Pattern\n\nBuild feature-specific hooks on top of `useGdex()`:\n\n```typescript\n\u002F\u002F src\u002Fhooks\u002FusePortfolio.ts\nimport { useState, useCallback } from 'react';\nimport { useGdex } from '@\u002Fproviders\u002FGdexProvider';\n\nexport function usePortfolio(walletAddress: string) {\n  const { skill, isReady } = useGdex();\n  const [portfolio, setPortfolio] = useState\u003Cany>(null);\n  const [loading, setLoading] = useState(false);\n\n  const refresh = useCallback(async () => {\n    if (!isReady || !walletAddress) return;\n    setLoading(true);\n    try {\n      const data = await skill.getPortfolio({ walletAddress, chain: 8453 });\n      setPortfolio(data);\n    } finally {\n      setLoading(false);\n    }\n  }, [skill, isReady, walletAddress]);\n\n  return { portfolio, loading, refresh };\n}\n```\n\n```typescript\n\u002F\u002F src\u002Fhooks\u002FuseTrade.ts\nimport { useState } from 'react';\nimport type { SupportedChain } from '@gemachdao\u002Fgdex-skill';\nimport { useGdex } from '@\u002Fproviders\u002FGdexProvider';\nimport { useAuth } from '@\u002Fproviders\u002FAuthProvider'; \u002F\u002F managed-custody creds, see gdex-ui-wallet-connection\n\ntype TradeInput = { chain: SupportedChain; tokenAddress: string; amount: string; slippage?: number };\n\nexport function useTrade() {\n  const { skill, isReady } = useGdex();\n  const { creds } = useAuth();\n  const [pending, setPending] = useState(false);\n  const [result, setResult] = useState\u003Cany>(null);\n\n  const buyToken = async (params: TradeInput) => {\n    if (!isReady || !creds) throw new Error('Sign in with a wallet first');\n    setPending(true);\n    try {\n      const res = await skill.buyToken({ ...params, ...creds });\n      setResult(res);\n      return res;\n    } finally {\n      setPending(false);\n    }\n  };\n\n  const sellToken = async (params: TradeInput) => {\n    if (!isReady || !creds) throw new Error('Sign in with a wallet first');\n    setPending(true);\n    try {\n      const res = await skill.sellToken({ ...params, walletAddress: creds.walletAddress });\n      setResult(res);\n      return res;\n    } finally {\n      setPending(false);\n    }\n  };\n\n  return { buyToken, sellToken, pending, result };\n}\n```\n\n## TypeScript Configuration\n\nEnsure your `tsconfig.json` includes Node.js types for the SDK:\n\n```json\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"strict\": true,\n    \"jsx\": \"react-jsx\",\n    \"paths\": {\n      \"@\u002F*\": [\".\u002Fsrc\u002F*\"]\n    }\n  }\n}\n```\n\n## Provider Hierarchy\n\nFor apps with wallet connection + GDEX + theming:\n\n```\nThemeProvider          ← dark\u002Flight mode (see gdex-ui-theming)\n  └─ WalletProvider   ← wallet connection (see gdex-ui-wallet-connection)\n       └─ GdexProvider ← SDK instance + auth state\n            └─ App     ← your trading UI\n```\n\n## Related Skills\n\n- **gdex-ui-trading-components** — Trading UI component patterns (order forms, position tables)\n- **gdex-ui-wallet-connection** — Wallet connection UI and auth flows\n- **gdex-ui-theming** — CSS theming for trading interfaces\n- **gdex-ui-page-layouts** — Full page compositions (trading, portfolio, copy trade)\n- **gdex-authentication** — Backend auth details (encryption, session keys)\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fmcp-servers\u002Fgemachdao-gdex-ui-install-setup",17,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia","https:\u002F\u002Feth2030.com","Hardcore infra. Building @alt-research and applied cryptography.","2026-11-14 02:27:51",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill gdex-ui-install-setup",{"tool":65,"command":66},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill gdex-ui-install-setup",{"tool":68,"command":69},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill gdex-ui-install-setup","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fgemachdao-gdex-ui-install-setup\u002FSKILL.md",true,[73,77,83],{"path":74,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":16},"LICENSE","许可证",1066,{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"SOURCE.md","REFERENCE","参考文档",350,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fgemachdao-gdex-ui-install-setup\u002FSOURCE.md",{"path":84,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":85,"sourceHtmlUrl":86},"TRUST.auto.yaml",2114,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fgemachdao-gdex-ui-install-setup\u002FTRUST.auto.yaml",[88,115,137,155,168,178],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":92,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":45},"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",[],[96,97,98,99,100,101,102,103,104,105,106,107,108,109,43,110,111,112,113,114],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","browser","layout","screen","network","metamask",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":119,"licenseFileUrl":120,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":45},"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",[],[124,125,126,127,128,129,130,131,132,133,31,134,135,136],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","api keys","maintenance","protobuf",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":119,"licenseFileUrl":141,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":45},"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",[],[145,125,146,147,148,149,150,134,31,133,151,152,153,129,154,128,127],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":119,"licenseFileUrl":159,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":45},"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",[],[163,164,126,165,166,135,31,167,132,131,129,128],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":169,"name":170,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":171,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":45},"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",[],[175,176,177],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":182,"sourceHtmlUrl":183,"categories":184,"keywords":185,"publishedAt":45},"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",[],[186,187,188,189,190,191,192,193,194,195,196],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","use","patch","code","share"]