[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FA49X6HSTBYWM21B2FVXTJ":3,"skill-same:01M6FA49X6HSTBYWM21B2FVXTJ":76},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6FA49X6HSTBYWM21B2FVXTJ","elevenlabs-rate-limits",null,"Implement ElevenLabs rate limiting, concurrency queuing, and backoff patterns.\nUse when handling 429 errors, implementing retry logic,\nor managing concurrent TTS request throughput.\nTrigger: \"elevenlabs rate limit\", \"elevenlabs throttling\",\n\"elevenlabs 429\", \"elevenlabs retry\", \"elevenlabs backoff\",\n\"elevenlabs concurrent requests\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Felevenlabs-rate-limits\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"elevenlabs rate limits","elevenlabs","patterns","rate-limits","errors","429","backoff","retry","throughput","trigger","io","code","reliability","use","edit","write","read","tts","throttling","concurrency","2026-11-10 10:12:30",false,"---\nname: elevenlabs-rate-limits\ndescription: |\n  Implement ElevenLabs rate limiting, concurrency queuing, and backoff patterns.\n  Use when handling 429 errors, implementing retry logic,\n  or managing concurrent TTS request throughput.\n  Trigger: \"elevenlabs rate limit\", \"elevenlabs throttling\",\n  \"elevenlabs 429\", \"elevenlabs retry\", \"elevenlabs backoff\",\n  \"elevenlabs concurrent requests\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, voice, ai, elevenlabs, rate-limits, reliability]\ncompatible-with: claude-code\n---\n\n# ElevenLabs Rate Limits\n\n## Overview\n\nHandle ElevenLabs rate limits with plan-aware concurrency queuing, exponential backoff, and quota monitoring. ElevenLabs uses two rate limit mechanisms: concurrent request limits (per plan) and system-level throttling.\n\n## Prerequisites\n\n- ElevenLabs SDK installed\n- Understanding of your subscription plan's limits\n- `p-queue` package (recommended): `npm install p-queue`\n\n## Instructions\n\n### Step 1: Understand the Two 429 Error Types\n\nElevenLabs returns HTTP 429 for two different reasons:\n\n| 429 Variant | Response Body | Cause | Strategy |\n|-------------|--------------|-------|----------|\n| `too_many_concurrent_requests` | `{\"detail\":{\"status\":\"too_many_concurrent_requests\"}}` | Exceeded plan concurrency | Queue requests, don't backoff |\n| `system_busy` | `{\"detail\":{\"status\":\"system_busy\"}}` | Server overload | Exponential backoff |\n\n### Step 2: Plan Concurrency Limits\n\n| Plan | Max Concurrent Requests | Characters\u002FMonth |\n|------|------------------------|-------------------|\n| Free | 2 | 10,000 |\n| Starter | 3 | 30,000 |\n| Creator | 5 | 100,000 |\n| Pro | 10 | 500,000 |\n| Scale | 15 | 2,000,000 |\n| Business | 15 | Custom |\n\n### Step 3: Concurrency-Aware Request Queue\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Frate-limiter.ts\nimport PQueue from \"p-queue\";\n\ntype ElevenLabsPlan = \"free\" | \"starter\" | \"creator\" | \"pro\" | \"scale\" | \"business\";\n\nconst CONCURRENCY_LIMITS: Record\u003CElevenLabsPlan, number> = {\n  free: 2,\n  starter: 3,\n  creator: 5,\n  pro: 10,\n  scale: 15,\n  business: 15,\n};\n\nexport function createRequestQueue(plan: ElevenLabsPlan) {\n  const concurrency = CONCURRENCY_LIMITS[plan];\n\n  const queue = new PQueue({\n    concurrency,\n    \u002F\u002F Each queued request adds ~50ms to response time\n    \u002F\u002F so keep queue depth reasonable\n    timeout: 120_000,  \u002F\u002F 2 minute timeout per request\n    throwOnTimeout: true,\n  });\n\n  queue.on(\"error\", (error) => {\n    console.error(\"[ElevenLabs Queue] Request failed:\", error.message);\n  });\n\n  return queue;\n}\n\n\u002F\u002F Usage\nconst queue = createRequestQueue(\"pro\"); \u002F\u002F 10 concurrent\n\nasync function generateWithQueue(voiceId: string, text: string) {\n  return queue.add(async () => {\n    return client.textToSpeech.convert(voiceId, {\n      text,\n      model_id: \"eleven_flash_v2_5\",\n    });\n  });\n}\n\n\u002F\u002F All 20 requests run with max 10 concurrent\nconst results = await Promise.all(\n  texts.map(text => generateWithQueue(\"21m00Tcm4TlvDq8ikWAM\", text))\n);\n```\n\n### Step 4: Exponential Backoff for system_busy\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fbackoff.ts\nexport async function withBackoff\u003CT>(\n  operation: () => Promise\u003CT>,\n  config = {\n    maxRetries: 5,\n    baseDelayMs: 1000,\n    maxDelayMs: 32_000,\n    jitterMs: 500,\n  }\n): Promise\u003CT> {\n  for (let attempt = 0; attempt \u003C= config.maxRetries; attempt++) {\n    try {\n      return await operation();\n    } catch (error: any) {\n      const status = error.statusCode || error.status;\n      const errorType = error.body?.detail?.status;\n\n      \u002F\u002F Don't retry non-retryable errors\n      if (status === 401 || status === 400 || status === 404) throw error;\n\n      \u002F\u002F For concurrent limit, retry immediately (queue handles spacing)\n      if (errorType === \"too_many_concurrent_requests\") {\n        if (attempt === config.maxRetries) throw error;\n        \u002F\u002F Short pause — the queue is managing concurrency\n        await new Promise(r => setTimeout(r, 50 * (attempt + 1)));\n        continue;\n      }\n\n      \u002F\u002F For system_busy or 5xx, exponential backoff with jitter\n      if (attempt === config.maxRetries) throw error;\n\n      const exponentialDelay = config.baseDelayMs * Math.pow(2, attempt);\n      const jitter = Math.random() * config.jitterMs;\n      const delay = Math.min(exponentialDelay + jitter, config.maxDelayMs);\n\n      console.warn(`[ElevenLabs] ${errorType || status}. Retry ${attempt + 1}\u002F${config.maxRetries} in ${delay.toFixed(0)}ms`);\n      await new Promise(r => setTimeout(r, delay));\n    }\n  }\n  throw new Error(\"Unreachable\");\n}\n```\n\n### Step 5: Quota Monitor\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fquota-monitor.ts\nimport { ElevenLabsClient } from \"@elevenlabs\u002Felevenlabs-js\";\n\nexport class QuotaMonitor {\n  private characterCount = 0;\n  private characterLimit = 0;\n  private lastCheck = 0;\n\n  constructor(\n    private client: ElevenLabsClient,\n    private warningThresholdPct = 80,\n    private checkIntervalMs = 60_000\n  ) {}\n\n  async check(): Promise\u003C{\n    used: number;\n    limit: number;\n    remaining: number;\n    pctUsed: number;\n    warning: boolean;\n  }> {\n    const now = Date.now();\n    if (now - this.lastCheck > this.checkIntervalMs) {\n      const user = await this.client.user.get();\n      this.characterCount = user.subscription.character_count;\n      this.characterLimit = user.subscription.character_limit;\n      this.lastCheck = now;\n    }\n\n    const remaining = this.characterLimit - this.characterCount;\n    const pctUsed = (this.characterCount \u002F this.characterLimit) * 100;\n\n    return {\n      used: this.characterCount,\n      limit: this.characterLimit,\n      remaining,\n      pctUsed: Math.round(pctUsed * 10) \u002F 10,\n      warning: pctUsed >= this.warningThresholdPct,\n    };\n  }\n\n  async guardRequest(textLength: number): Promise\u003Cvoid> {\n    const quota = await this.check();\n    if (textLength > quota.remaining) {\n      throw new Error(\n        `Insufficient quota: need ${textLength} chars, have ${quota.remaining} remaining (${quota.pctUsed}% used)`\n      );\n    }\n    if (quota.warning) {\n      console.warn(`[ElevenLabs] Quota warning: ${quota.pctUsed}% used (${quota.remaining} chars remaining)`);\n    }\n  }\n}\n```\n\n### Step 6: Combined Rate-Limited Client\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fresilient-client.ts\nimport { ElevenLabsClient } from \"@elevenlabs\u002Felevenlabs-js\";\nimport { createRequestQueue } from \".\u002Frate-limiter\";\nimport { withBackoff } from \".\u002Fbackoff\";\nimport { QuotaMonitor } from \".\u002Fquota-monitor\";\n\nexport function createResilientClient(plan: \"free\" | \"starter\" | \"creator\" | \"pro\" | \"scale\" = \"pro\") {\n  const client = new ElevenLabsClient({ maxRetries: 0 }); \u002F\u002F We handle retries\n  const queue = createRequestQueue(plan);\n  const quota = new QuotaMonitor(client);\n\n  return {\n    async generateSpeech(voiceId: string, text: string, modelId = \"eleven_multilingual_v2\") {\n      await quota.guardRequest(text.length);\n\n      return queue.add(() =>\n        withBackoff(() =>\n          client.textToSpeech.convert(voiceId, {\n            text,\n            model_id: modelId,\n          })\n        )\n      );\n    },\n\n    getQueueStats() {\n      return {\n        pending: queue.pending,\n        size: queue.size,\n      };\n    },\n\n    checkQuota: () => quota.check(),\n  };\n}\n```\n\n## Model Cost Impact on Quota\n\n| Model | Credits per Character | 10,000 Chars Cost |\n|-------|-----------------------|-------------------|\n| `eleven_v3` | 1.0 | 10,000 credits |\n| `eleven_multilingual_v2` | 1.0 | 10,000 credits |\n| `eleven_flash_v2_5` | 0.5 | 5,000 credits |\n| `eleven_turbo_v2_5` | 0.5 | 5,000 credits |\n\nUse Flash\u002FTurbo models during development to conserve quota.\n\n## Error Handling\n\n| Scenario | Detection | Response |\n|----------|-----------|----------|\n| Concurrent limit hit | 429 + `too_many_concurrent_requests` | Queue; retry after ~50ms per queued request |\n| System busy | 429 + `system_busy` | Exponential backoff (1s, 2s, 4s, 8s...) |\n| Quota exhausted | 401 + `quota_exceeded` | Stop requests; alert; wait for reset |\n| Server error | 500-599 | Exponential backoff; max 5 retries |\n\n## Resources\n\n- [ElevenLabs Rate Limits Help](https:\u002F\u002Fhelp.elevenlabs.io\u002Fhc\u002Fen-us\u002Farticles\u002F19571824571921)\n- [ElevenLabs Pricing](https:\u002F\u002Felevenlabs.io\u002Fpricing)\n- [p-queue Documentation](https:\u002F\u002Fgithub.com\u002Fsindresorhus\u002Fp-queue)\n\n## Next Steps\n\nFor security configuration, see `elevenlabs-security-basics`.\n\n","# ElevenLabs Rate Limits\n\n## Overview\n\nHandle ElevenLabs rate limits with plan-aware concurrency queuing, exponential backoff, and quota monitoring. ElevenLabs uses two rate limit mechanisms: concurrent request limits (per plan) and system-level throttling.\n\n## Prerequisites\n\n- ElevenLabs SDK installed\n- Understanding of your subscription plan's limits\n- `p-queue` package (recommended): `npm install p-queue`\n\n## Instructions\n\n### Step 1: Understand the Two 429 Error Types\n\nElevenLabs returns HTTP 429 for two different reasons:\n\n| 429 Variant | Response Body | Cause | Strategy |\n|-------------|--------------|-------|----------|\n| `too_many_concurrent_requests` | `{\"detail\":{\"status\":\"too_many_concurrent_requests\"}}` | Exceeded plan concurrency | Queue requests, don't backoff |\n| `system_busy` | `{\"detail\":{\"status\":\"system_busy\"}}` | Server overload | Exponential backoff |\n\n### Step 2: Plan Concurrency Limits\n\n| Plan | Max Concurrent Requests | Characters\u002FMonth |\n|------|------------------------|-------------------|\n| Free | 2 | 10,000 |\n| Starter | 3 | 30,000 |\n| Creator | 5 | 100,000 |\n| Pro | 10 | 500,000 |\n| Scale | 15 | 2,000,000 |\n| Business | 15 | Custom |\n\n### Step 3: Concurrency-Aware Request Queue\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Frate-limiter.ts\nimport PQueue from \"p-queue\";\n\ntype ElevenLabsPlan = \"free\" | \"starter\" | \"creator\" | \"pro\" | \"scale\" | \"business\";\n\nconst CONCURRENCY_LIMITS: Record\u003CElevenLabsPlan, number> = {\n  free: 2,\n  starter: 3,\n  creator: 5,\n  pro: 10,\n  scale: 15,\n  business: 15,\n};\n\nexport function createRequestQueue(plan: ElevenLabsPlan) {\n  const concurrency = CONCURRENCY_LIMITS[plan];\n\n  const queue = new PQueue({\n    concurrency,\n    \u002F\u002F Each queued request adds ~50ms to response time\n    \u002F\u002F so keep queue depth reasonable\n    timeout: 120_000,  \u002F\u002F 2 minute timeout per request\n    throwOnTimeout: true,\n  });\n\n  queue.on(\"error\", (error) => {\n    console.error(\"[ElevenLabs Queue] Request failed:\", error.message);\n  });\n\n  return queue;\n}\n\n\u002F\u002F Usage\nconst queue = createRequestQueue(\"pro\"); \u002F\u002F 10 concurrent\n\nasync function generateWithQueue(voiceId: string, text: string) {\n  return queue.add(async () => {\n    return client.textToSpeech.convert(voiceId, {\n      text,\n      model_id: \"eleven_flash_v2_5\",\n    });\n  });\n}\n\n\u002F\u002F All 20 requests run with max 10 concurrent\nconst results = await Promise.all(\n  texts.map(text => generateWithQueue(\"21m00Tcm4TlvDq8ikWAM\", text))\n);\n```\n\n### Step 4: Exponential Backoff for system_busy\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fbackoff.ts\nexport async function withBackoff\u003CT>(\n  operation: () => Promise\u003CT>,\n  config = {\n    maxRetries: 5,\n    baseDelayMs: 1000,\n    maxDelayMs: 32_000,\n    jitterMs: 500,\n  }\n): Promise\u003CT> {\n  for (let attempt = 0; attempt \u003C= config.maxRetries; attempt++) {\n    try {\n      return await operation();\n    } catch (error: any) {\n      const status = error.statusCode || error.status;\n      const errorType = error.body?.detail?.status;\n\n      \u002F\u002F Don't retry non-retryable errors\n      if (status === 401 || status === 400 || status === 404) throw error;\n\n      \u002F\u002F For concurrent limit, retry immediately (queue handles spacing)\n      if (errorType === \"too_many_concurrent_requests\") {\n        if (attempt === config.maxRetries) throw error;\n        \u002F\u002F Short pause — the queue is managing concurrency\n        await new Promise(r => setTimeout(r, 50 * (attempt + 1)));\n        continue;\n      }\n\n      \u002F\u002F For system_busy or 5xx, exponential backoff with jitter\n      if (attempt === config.maxRetries) throw error;\n\n      const exponentialDelay = config.baseDelayMs * Math.pow(2, attempt);\n      const jitter = Math.random() * config.jitterMs;\n      const delay = Math.min(exponentialDelay + jitter, config.maxDelayMs);\n\n      console.warn(`[ElevenLabs] ${errorType || status}. Retry ${attempt + 1}\u002F${config.maxRetries} in ${delay.toFixed(0)}ms`);\n      await new Promise(r => setTimeout(r, delay));\n    }\n  }\n  throw new Error(\"Unreachable\");\n}\n```\n\n### Step 5: Quota Monitor\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fquota-monitor.ts\nimport { ElevenLabsClient } from \"@elevenlabs\u002Felevenlabs-js\";\n\nexport class QuotaMonitor {\n  private characterCount = 0;\n  private characterLimit = 0;\n  private lastCheck = 0;\n\n  constructor(\n    private client: ElevenLabsClient,\n    private warningThresholdPct = 80,\n    private checkIntervalMs = 60_000\n  ) {}\n\n  async check(): Promise\u003C{\n    used: number;\n    limit: number;\n    remaining: number;\n    pctUsed: number;\n    warning: boolean;\n  }> {\n    const now = Date.now();\n    if (now - this.lastCheck > this.checkIntervalMs) {\n      const user = await this.client.user.get();\n      this.characterCount = user.subscription.character_count;\n      this.characterLimit = user.subscription.character_limit;\n      this.lastCheck = now;\n    }\n\n    const remaining = this.characterLimit - this.characterCount;\n    const pctUsed = (this.characterCount \u002F this.characterLimit) * 100;\n\n    return {\n      used: this.characterCount,\n      limit: this.characterLimit,\n      remaining,\n      pctUsed: Math.round(pctUsed * 10) \u002F 10,\n      warning: pctUsed >= this.warningThresholdPct,\n    };\n  }\n\n  async guardRequest(textLength: number): Promise\u003Cvoid> {\n    const quota = await this.check();\n    if (textLength > quota.remaining) {\n      throw new Error(\n        `Insufficient quota: need ${textLength} chars, have ${quota.remaining} remaining (${quota.pctUsed}% used)`\n      );\n    }\n    if (quota.warning) {\n      console.warn(`[ElevenLabs] Quota warning: ${quota.pctUsed}% used (${quota.remaining} chars remaining)`);\n    }\n  }\n}\n```\n\n### Step 6: Combined Rate-Limited Client\n\n```typescript\n\u002F\u002F src\u002Felevenlabs\u002Fresilient-client.ts\nimport { ElevenLabsClient } from \"@elevenlabs\u002Felevenlabs-js\";\nimport { createRequestQueue } from \".\u002Frate-limiter\";\nimport { withBackoff } from \".\u002Fbackoff\";\nimport { QuotaMonitor } from \".\u002Fquota-monitor\";\n\nexport function createResilientClient(plan: \"free\" | \"starter\" | \"creator\" | \"pro\" | \"scale\" = \"pro\") {\n  const client = new ElevenLabsClient({ maxRetries: 0 }); \u002F\u002F We handle retries\n  const queue = createRequestQueue(plan);\n  const quota = new QuotaMonitor(client);\n\n  return {\n    async generateSpeech(voiceId: string, text: string, modelId = \"eleven_multilingual_v2\") {\n      await quota.guardRequest(text.length);\n\n      return queue.add(() =>\n        withBackoff(() =>\n          client.textToSpeech.convert(voiceId, {\n            text,\n            model_id: modelId,\n          })\n        )\n      );\n    },\n\n    getQueueStats() {\n      return {\n        pending: queue.pending,\n        size: queue.size,\n      };\n    },\n\n    checkQuota: () => quota.check(),\n  };\n}\n```\n\n## Model Cost Impact on Quota\n\n| Model | Credits per Character | 10,000 Chars Cost |\n|-------|-----------------------|-------------------|\n| `eleven_v3` | 1.0 | 10,000 credits |\n| `eleven_multilingual_v2` | 1.0 | 10,000 credits |\n| `eleven_flash_v2_5` | 0.5 | 5,000 credits |\n| `eleven_turbo_v2_5` | 0.5 | 5,000 credits |\n\nUse Flash\u002FTurbo models during development to conserve quota.\n\n## Error Handling\n\n| Scenario | Detection | Response |\n|----------|-----------|----------|\n| Concurrent limit hit | 429 + `too_many_concurrent_requests` | Queue; retry after ~50ms per queued request |\n| System busy | 429 + `system_busy` | Exponential backoff (1s, 2s, 4s, 8s...) |\n| Quota exhausted | 401 + `quota_exceeded` | Stop requests; alert; wait for reset |\n| Server error | 500-599 | Exponential backoff; max 5 retries |\n\n## Resources\n\n- [ElevenLabs Rate Limits Help](https:\u002F\u002Fhelp.elevenlabs.io\u002Fhc\u002Fen-us\u002Farticles\u002F19571824571921)\n- [ElevenLabs Pricing](https:\u002F\u002Felevenlabs.io\u002Fpricing)\n- [p-queue Documentation](https:\u002F\u002Fgithub.com\u002Fsindresorhus\u002Fp-queue)\n\n## Next Steps\n\nFor security configuration, see `elevenlabs-security-basics`.\n\n",{"name":5,"tags":44,"author":48,"license":15,"version":49,"description":50,"allowed-tools":51,"compatible-with":52},[45,46,47,20,22,31],"saas","voice","ai","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Implement ElevenLabs rate limiting, concurrency queuing, and backoff patterns.\nUse when handling 429 errors, implementing retry logic,\nor managing concurrent TTS request throughput.\nTrigger: \"elevenlabs rate limit\", \"elevenlabs throttling\",\n\"elevenlabs 429\", \"elevenlabs retry\", \"elevenlabs backoff\",\n\"elevenlabs concurrent requests\".\n","Read, Write, Edit","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Felevenlabs-rate-limits",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill elevenlabs-rate-limits",{"tool":68,"command":69},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill elevenlabs-rate-limits",{"tool":71,"command":72},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill elevenlabs-rate-limits","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Felevenlabs-rate-limits\u002FSKILL.md",true,[],[77,91,101,110,116,123],{"skillNo":78,"name":79,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":87,"publishedAt":39},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[88,89,90],"model","model hierarchy","model hierarchy skill",{"skillNo":92,"name":93,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":97,"publishedAt":39},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[96],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[98,99,100],"MCP","zoom","zoom mcp",{"skillNo":102,"name":103,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":39},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[107,108,109,99],"sdk","zoom apps sdk","apps",{"skillNo":111,"name":112,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":39},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[112],{"skillNo":117,"name":118,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":122,"publishedAt":39},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[121],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[118],{"skillNo":124,"name":125,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":39},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[125]]