[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F9TGAAV6CVEBDPP2VYMJQZ":3,"skill-same:01M6F9TGAAV6CVEBDPP2VYMJQZ":84},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":61,"commitSha":62,"skillDirectory":63,"forksCount":64,"repositoryHtmlUrl":65,"repositoryHomepageUrl":66,"ownerHtmlUrl":67,"ownerBlogUrl":6,"ownerDescription":68,"updatedAt":69,"install":70,"resources":83},"01M6F9TGAAV6CVEBDPP2VYMJQZ","deepgram-rate-limits",null,"Implement Deepgram rate limiting and backoff strategies.\nUse when handling API quotas, implementing request throttling,\nor dealing with 429 rate limit errors.\nTrigger: \"deepgram rate limit\", \"deepgram throttling\", \"429 error deepgram\",\n\"deepgram quota\", \"deepgram backoff\", \"deepgram concurrency\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fdeepgram-rate-limits\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"deepgram rate limits","deepgram","quota","errors","429","backoff","error","trigger","io","strategies","openclaw","use","edit","write","read","api","throttling","saas","concurrency","code","2026-11-10 10:12:30",false,"---\nname: deepgram-rate-limits\ndescription: |\n  Implement Deepgram rate limiting and backoff strategies.\n  Use when handling API quotas, implementing request throttling,\n  or dealing with 429 rate limit errors.\n  Trigger: \"deepgram rate limit\", \"deepgram throttling\", \"429 error deepgram\",\n  \"deepgram quota\", \"deepgram backoff\", \"deepgram concurrency\".\nallowed-tools: Read, Write, Edit, Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\ntags: [saas, deepgram, api, rate-limiting]\n\n---\n# Deepgram Rate Limits\n\n## Overview\nImplement rate limiting, exponential backoff, and circuit breaker patterns for Deepgram API. Deepgram limits by **concurrent connections** (not requests per second). Understanding this model is key to building reliable integrations.\n\n## Deepgram Rate Limit Model\n\nDeepgram uses **concurrency-based** limits, not traditional requests-per-minute:\n\n| Plan | Concurrent Requests (STT) | Concurrent Connections (Live) | Concurrent Requests (TTS) |\n|------|---------------------------|-------------------------------|---------------------------|\n| Pay As You Go | 100 | 100 | 100 |\n| Growth | 200 | 200 | 200 |\n| Enterprise | Custom | Custom | Custom |\n\nWhen you exceed your concurrency limit, Deepgram returns `429 Too Many Requests`.\n\n**Key insight:** You can send unlimited total requests — just not more than your concurrency limit *simultaneously*.\n\n## Instructions\n\n### Step 1: Concurrency-Aware Queue\n\n```typescript\nimport pLimit from 'p-limit';\nimport { createClient } from '@deepgram\u002Fsdk';\n\nclass DeepgramRateLimiter {\n  private limit: ReturnType\u003Ctypeof pLimit>;\n  private client: ReturnType\u003Ctypeof createClient>;\n  private stats = { total: 0, active: 0, queued: 0, errors: 0 };\n\n  constructor(apiKey: string, maxConcurrent = 50) {\n    \u002F\u002F Stay well under plan limit (e.g., 50 of 100 allowed)\n    this.limit = pLimit(maxConcurrent);\n    this.client = createClient(apiKey);\n  }\n\n  async transcribe(source: { url: string }, options: Record\u003Cstring, any>) {\n    this.stats.queued++;\n    return this.limit(async () => {\n      this.stats.queued--;\n      this.stats.active++;\n      this.stats.total++;\n      try {\n        const { result, error } = await this.client.listen.prerecorded.transcribeUrl(\n          source, options\n        );\n        if (error) {\n          this.stats.errors++;\n          throw error;\n        }\n        return result;\n      } catch (err) {\n        this.stats.errors++;\n        throw err;\n      } finally {\n        this.stats.active--;\n      }\n    });\n  }\n\n  getStats() { return { ...this.stats }; }\n}\n\n\u002F\u002F Usage:\nconst limiter = new DeepgramRateLimiter(process.env.DEEPGRAM_API_KEY!, 50);\nconst urls = ['audio1.wav', 'audio2.wav', \u002F* ...hundreds more *\u002F];\nconst results = await Promise.allSettled(\n  urls.map(url => limiter.transcribe({ url }, { model: 'nova-3', smart_format: true }))\n);\n```\n\n### Step 2: Exponential Backoff with Jitter\n\n```typescript\nclass RetryableDeepgramClient {\n  private client: ReturnType\u003Ctypeof createClient>;\n\n  constructor(apiKey: string) {\n    this.client = createClient(apiKey);\n  }\n\n  async transcribeWithRetry(\n    source: any,\n    options: any,\n    config = { maxRetries: 5, baseDelay: 1000, maxDelay: 60000 }\n  ) {\n    let lastError: Error | null = null;\n\n    for (let attempt = 0; attempt \u003C= config.maxRetries; attempt++) {\n      try {\n        const { result, error } = await this.client.listen.prerecorded.transcribeUrl(\n          source, options\n        );\n        if (!error) return result;\n\n        \u002F\u002F Non-retryable errors (4xx except 429, 408)\n        const status = (error as any).status;\n        if (status >= 400 && status \u003C 500 && status !== 429 && status !== 408) {\n          throw new Error(`Non-retryable error ${status}: ${error.message}`);\n        }\n        lastError = error;\n      } catch (err: any) {\n        if (err.message.startsWith('Non-retryable')) throw err;\n        lastError = err;\n      }\n\n      if (attempt \u003C config.maxRetries) {\n        \u002F\u002F Exponential backoff: 1s, 2s, 4s, 8s, 16s + random jitter\n        const delay = Math.min(\n          config.baseDelay * Math.pow(2, attempt) + Math.random() * 1000,\n          config.maxDelay\n        );\n        console.log(`Retry ${attempt + 1}\u002F${config.maxRetries} in ${Math.round(delay)}ms`);\n        await new Promise(r => setTimeout(r, delay));\n      }\n    }\n    throw lastError ?? new Error('Max retries exceeded');\n  }\n}\n```\n\n### Step 3: Circuit Breaker\n\n```typescript\nenum CircuitState { CLOSED, OPEN, HALF_OPEN }\n\nclass DeepgramCircuitBreaker {\n  private state = CircuitState.CLOSED;\n  private failureCount = 0;\n  private lastFailureTime = 0;\n  private successCount = 0;\n\n  constructor(\n    private failureThreshold = 5,\n    private resetTimeout = 30000,     \u002F\u002F 30 seconds\n    private halfOpenMaxRequests = 3,\n  ) {}\n\n  async execute\u003CT>(fn: () => Promise\u003CT>): Promise\u003CT> {\n    if (this.state === CircuitState.OPEN) {\n      if (Date.now() - this.lastFailureTime >= this.resetTimeout) {\n        this.state = CircuitState.HALF_OPEN;\n        this.successCount = 0;\n      } else {\n        throw new Error(`Circuit OPEN — retry in ${\n          Math.ceil((this.resetTimeout - (Date.now() - this.lastFailureTime)) \u002F 1000)\n        }s`);\n      }\n    }\n\n    try {\n      const result = await fn();\n      this.onSuccess();\n      return result;\n    } catch (err) {\n      this.onFailure();\n      throw err;\n    }\n  }\n\n  private onSuccess() {\n    if (this.state === CircuitState.HALF_OPEN) {\n      this.successCount++;\n      if (this.successCount >= this.halfOpenMaxRequests) {\n        this.state = CircuitState.CLOSED;\n        this.failureCount = 0;\n      }\n    } else {\n      this.failureCount = 0;\n    }\n  }\n\n  private onFailure() {\n    this.failureCount++;\n    this.lastFailureTime = Date.now();\n    if (this.failureCount >= this.failureThreshold) {\n      this.state = CircuitState.OPEN;\n      console.error(`Circuit OPEN after ${this.failureCount} failures`);\n    }\n  }\n\n  getState() { return CircuitState[this.state]; }\n}\n```\n\n### Step 4: Combined Rate Limiter + Circuit Breaker\n\n```typescript\nclass ResilientDeepgramClient {\n  private limiter: DeepgramRateLimiter;\n  private breaker: DeepgramCircuitBreaker;\n  private retryClient: RetryableDeepgramClient;\n\n  constructor(apiKey: string, maxConcurrent = 50) {\n    this.limiter = new DeepgramRateLimiter(apiKey, maxConcurrent);\n    this.breaker = new DeepgramCircuitBreaker();\n    this.retryClient = new RetryableDeepgramClient(apiKey);\n  }\n\n  async transcribe(audioUrl: string, options: Record\u003Cstring, any> = {}) {\n    return this.breaker.execute(() =>\n      this.retryClient.transcribeWithRetry(\n        { url: audioUrl },\n        { model: 'nova-3', smart_format: true, ...options }\n      )\n    );\n  }\n}\n\n\u002F\u002F Production usage\nconst client = new ResilientDeepgramClient(process.env.DEEPGRAM_API_KEY!, 50);\nconst result = await client.transcribe('https:\u002F\u002Fexample.com\u002Faudio.wav');\n```\n\n### Step 5: Usage Monitoring\n\n```typescript\n\u002F\u002F Query Deepgram's usage API to track consumption\nasync function checkUsage(client: ReturnType\u003Ctypeof createClient>, projectId: string) {\n  const { result } = await client.manage.getUsage(projectId, {\n    start: new Date(Date.now() - 86400000).toISOString(), \u002F\u002F Last 24 hours\n    end: new Date().toISOString(),\n  });\n\n  const totalMinutes = (result as any).results?.reduce(\n    (sum: number, r: any) => sum + (r.hours * 60 + r.minutes), 0\n  ) ?? 0;\n\n  console.log(`Last 24h usage: ${totalMinutes.toFixed(1)} minutes`);\n  return totalMinutes;\n}\n```\n\n## Output\n- Concurrency-aware request queue with `p-limit`\n- Exponential backoff with jitter for 429\u002F5xx errors\n- Circuit breaker (CLOSED -> OPEN -> HALF_OPEN)\n- Combined resilient client pattern\n- Usage monitoring via Deepgram API\n\n## Error Handling\n| Issue | Cause | Resolution |\n|-------|-------|------------|\n| 429 Too Many Requests | Concurrency limit exceeded | Lower `maxConcurrent`, implement backoff |\n| Circuit breaker OPEN | 5+ consecutive failures | Wait for reset, check status.deepgram.com |\n| Queue growing unbounded | Sustained high load | Increase plan limits or scale horizontally |\n| Usage API returns empty | Wrong project ID | Verify project ID from `getProjects()` |\n\n## Resources\n- [Concurrency Rate Limits](https:\u002F\u002Fdevelopers.deepgram.com\u002Fdocs\u002Fworking-with-concurrency-rate-limits)\n- [API Rate Limits](https:\u002F\u002Fdevelopers.deepgram.com\u002Freference\u002Fapi-rate-limits)\n- [Backoff Strategies](https:\u002F\u002Fdeepgram.com\u002Flearn\u002Fapi-back-off-strategies)\n- [Usage API](https:\u002F\u002Fdevelopers.deepgram.com\u002Freference\u002Fget-usage)\n\n","# Deepgram Rate Limits\n\n## Overview\nImplement rate limiting, exponential backoff, and circuit breaker patterns for Deepgram API. Deepgram limits by **concurrent connections** (not requests per second). Understanding this model is key to building reliable integrations.\n\n## Deepgram Rate Limit Model\n\nDeepgram uses **concurrency-based** limits, not traditional requests-per-minute:\n\n| Plan | Concurrent Requests (STT) | Concurrent Connections (Live) | Concurrent Requests (TTS) |\n|------|---------------------------|-------------------------------|---------------------------|\n| Pay As You Go | 100 | 100 | 100 |\n| Growth | 200 | 200 | 200 |\n| Enterprise | Custom | Custom | Custom |\n\nWhen you exceed your concurrency limit, Deepgram returns `429 Too Many Requests`.\n\n**Key insight:** You can send unlimited total requests — just not more than your concurrency limit *simultaneously*.\n\n## Instructions\n\n### Step 1: Concurrency-Aware Queue\n\n```typescript\nimport pLimit from 'p-limit';\nimport { createClient } from '@deepgram\u002Fsdk';\n\nclass DeepgramRateLimiter {\n  private limit: ReturnType\u003Ctypeof pLimit>;\n  private client: ReturnType\u003Ctypeof createClient>;\n  private stats = { total: 0, active: 0, queued: 0, errors: 0 };\n\n  constructor(apiKey: string, maxConcurrent = 50) {\n    \u002F\u002F Stay well under plan limit (e.g., 50 of 100 allowed)\n    this.limit = pLimit(maxConcurrent);\n    this.client = createClient(apiKey);\n  }\n\n  async transcribe(source: { url: string }, options: Record\u003Cstring, any>) {\n    this.stats.queued++;\n    return this.limit(async () => {\n      this.stats.queued--;\n      this.stats.active++;\n      this.stats.total++;\n      try {\n        const { result, error } = await this.client.listen.prerecorded.transcribeUrl(\n          source, options\n        );\n        if (error) {\n          this.stats.errors++;\n          throw error;\n        }\n        return result;\n      } catch (err) {\n        this.stats.errors++;\n        throw err;\n      } finally {\n        this.stats.active--;\n      }\n    });\n  }\n\n  getStats() { return { ...this.stats }; }\n}\n\n\u002F\u002F Usage:\nconst limiter = new DeepgramRateLimiter(process.env.DEEPGRAM_API_KEY!, 50);\nconst urls = ['audio1.wav', 'audio2.wav', \u002F* ...hundreds more *\u002F];\nconst results = await Promise.allSettled(\n  urls.map(url => limiter.transcribe({ url }, { model: 'nova-3', smart_format: true }))\n);\n```\n\n### Step 2: Exponential Backoff with Jitter\n\n```typescript\nclass RetryableDeepgramClient {\n  private client: ReturnType\u003Ctypeof createClient>;\n\n  constructor(apiKey: string) {\n    this.client = createClient(apiKey);\n  }\n\n  async transcribeWithRetry(\n    source: any,\n    options: any,\n    config = { maxRetries: 5, baseDelay: 1000, maxDelay: 60000 }\n  ) {\n    let lastError: Error | null = null;\n\n    for (let attempt = 0; attempt \u003C= config.maxRetries; attempt++) {\n      try {\n        const { result, error } = await this.client.listen.prerecorded.transcribeUrl(\n          source, options\n        );\n        if (!error) return result;\n\n        \u002F\u002F Non-retryable errors (4xx except 429, 408)\n        const status = (error as any).status;\n        if (status >= 400 && status \u003C 500 && status !== 429 && status !== 408) {\n          throw new Error(`Non-retryable error ${status}: ${error.message}`);\n        }\n        lastError = error;\n      } catch (err: any) {\n        if (err.message.startsWith('Non-retryable')) throw err;\n        lastError = err;\n      }\n\n      if (attempt \u003C config.maxRetries) {\n        \u002F\u002F Exponential backoff: 1s, 2s, 4s, 8s, 16s + random jitter\n        const delay = Math.min(\n          config.baseDelay * Math.pow(2, attempt) + Math.random() * 1000,\n          config.maxDelay\n        );\n        console.log(`Retry ${attempt + 1}\u002F${config.maxRetries} in ${Math.round(delay)}ms`);\n        await new Promise(r => setTimeout(r, delay));\n      }\n    }\n    throw lastError ?? new Error('Max retries exceeded');\n  }\n}\n```\n\n### Step 3: Circuit Breaker\n\n```typescript\nenum CircuitState { CLOSED, OPEN, HALF_OPEN }\n\nclass DeepgramCircuitBreaker {\n  private state = CircuitState.CLOSED;\n  private failureCount = 0;\n  private lastFailureTime = 0;\n  private successCount = 0;\n\n  constructor(\n    private failureThreshold = 5,\n    private resetTimeout = 30000,     \u002F\u002F 30 seconds\n    private halfOpenMaxRequests = 3,\n  ) {}\n\n  async execute\u003CT>(fn: () => Promise\u003CT>): Promise\u003CT> {\n    if (this.state === CircuitState.OPEN) {\n      if (Date.now() - this.lastFailureTime >= this.resetTimeout) {\n        this.state = CircuitState.HALF_OPEN;\n        this.successCount = 0;\n      } else {\n        throw new Error(`Circuit OPEN — retry in ${\n          Math.ceil((this.resetTimeout - (Date.now() - this.lastFailureTime)) \u002F 1000)\n        }s`);\n      }\n    }\n\n    try {\n      const result = await fn();\n      this.onSuccess();\n      return result;\n    } catch (err) {\n      this.onFailure();\n      throw err;\n    }\n  }\n\n  private onSuccess() {\n    if (this.state === CircuitState.HALF_OPEN) {\n      this.successCount++;\n      if (this.successCount >= this.halfOpenMaxRequests) {\n        this.state = CircuitState.CLOSED;\n        this.failureCount = 0;\n      }\n    } else {\n      this.failureCount = 0;\n    }\n  }\n\n  private onFailure() {\n    this.failureCount++;\n    this.lastFailureTime = Date.now();\n    if (this.failureCount >= this.failureThreshold) {\n      this.state = CircuitState.OPEN;\n      console.error(`Circuit OPEN after ${this.failureCount} failures`);\n    }\n  }\n\n  getState() { return CircuitState[this.state]; }\n}\n```\n\n### Step 4: Combined Rate Limiter + Circuit Breaker\n\n```typescript\nclass ResilientDeepgramClient {\n  private limiter: DeepgramRateLimiter;\n  private breaker: DeepgramCircuitBreaker;\n  private retryClient: RetryableDeepgramClient;\n\n  constructor(apiKey: string, maxConcurrent = 50) {\n    this.limiter = new DeepgramRateLimiter(apiKey, maxConcurrent);\n    this.breaker = new DeepgramCircuitBreaker();\n    this.retryClient = new RetryableDeepgramClient(apiKey);\n  }\n\n  async transcribe(audioUrl: string, options: Record\u003Cstring, any> = {}) {\n    return this.breaker.execute(() =>\n      this.retryClient.transcribeWithRetry(\n        { url: audioUrl },\n        { model: 'nova-3', smart_format: true, ...options }\n      )\n    );\n  }\n}\n\n\u002F\u002F Production usage\nconst client = new ResilientDeepgramClient(process.env.DEEPGRAM_API_KEY!, 50);\nconst result = await client.transcribe('https:\u002F\u002Fexample.com\u002Faudio.wav');\n```\n\n### Step 5: Usage Monitoring\n\n```typescript\n\u002F\u002F Query Deepgram's usage API to track consumption\nasync function checkUsage(client: ReturnType\u003Ctypeof createClient>, projectId: string) {\n  const { result } = await client.manage.getUsage(projectId, {\n    start: new Date(Date.now() - 86400000).toISOString(), \u002F\u002F Last 24 hours\n    end: new Date().toISOString(),\n  });\n\n  const totalMinutes = (result as any).results?.reduce(\n    (sum: number, r: any) => sum + (r.hours * 60 + r.minutes), 0\n  ) ?? 0;\n\n  console.log(`Last 24h usage: ${totalMinutes.toFixed(1)} minutes`);\n  return totalMinutes;\n}\n```\n\n## Output\n- Concurrency-aware request queue with `p-limit`\n- Exponential backoff with jitter for 429\u002F5xx errors\n- Circuit breaker (CLOSED -> OPEN -> HALF_OPEN)\n- Combined resilient client pattern\n- Usage monitoring via Deepgram API\n\n## Error Handling\n| Issue | Cause | Resolution |\n|-------|-------|------------|\n| 429 Too Many Requests | Concurrency limit exceeded | Lower `maxConcurrent`, implement backoff |\n| Circuit breaker OPEN | 5+ consecutive failures | Wait for reset, check status.deepgram.com |\n| Queue growing unbounded | Sustained high load | Increase plan limits or scale horizontally |\n| Usage API returns empty | Wrong project ID | Verify project ID from `getProjects()` |\n\n## Resources\n- [Concurrency Rate Limits](https:\u002F\u002Fdevelopers.deepgram.com\u002Fdocs\u002Fworking-with-concurrency-rate-limits)\n- [API Rate Limits](https:\u002F\u002Fdevelopers.deepgram.com\u002Freference\u002Fapi-rate-limits)\n- [Backoff Strategies](https:\u002F\u002Fdeepgram.com\u002Flearn\u002Fapi-back-off-strategies)\n- [Usage API](https:\u002F\u002Fdevelopers.deepgram.com\u002Freference\u002Fget-usage)\n\n",{"name":5,"tags":54,"author":56,"license":15,"version":57,"description":58,"allowed-tools":59,"compatible-with":60},[46,30,44,55],"rate-limiting","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Implement Deepgram rate limiting and backoff strategies.\nUse when handling API quotas, implementing request throttling,\nor dealing with 429 rate limit errors.\nTrigger: \"deepgram rate limit\", \"deepgram throttling\", \"429 error deepgram\",\n\"deepgram quota\", \"deepgram backoff\", \"deepgram concurrency\".\n","Read, Write, Edit, Grep","claude-code, codex, openclaw","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fdeepgram-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":71,"prompt":81,"zipAvailable":82},[72,75,78],{"tool":73,"command":74},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill deepgram-rate-limits",{"tool":76,"command":77},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill deepgram-rate-limits",{"tool":79,"command":80},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill deepgram-rate-limits","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fdeepgram-rate-limits\u002FSKILL.md",true,[],[85,97,107,116,122,129],{"skillNo":86,"name":87,"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":88,"categories":89,"keywords":93,"publishedAt":49},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[90],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[94,95,96],"model","model hierarchy","model hierarchy skill",{"skillNo":98,"name":99,"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":100,"categories":101,"keywords":103,"publishedAt":49},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[102],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},[104,105,106],"MCP","zoom","zoom mcp",{"skillNo":108,"name":109,"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":110,"categories":111,"keywords":112,"publishedAt":49},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[113,114,115,105],"sdk","zoom apps sdk","apps",{"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":121,"publishedAt":49},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[118],{"skillNo":123,"name":124,"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":125,"categories":126,"keywords":128,"publishedAt":49},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[127],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},[124],{"skillNo":130,"name":131,"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":132,"categories":133,"keywords":134,"publishedAt":49},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[131]]