[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FGDQCBYFVBPDXAZ8A00AHV":3,"skill-same:01M6FGDQCBYFVBPDXAZ8A00AHV":109},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6FGDQCBYFVBPDXAZ8A00AHV","cloudflare-workers-performance",null,"Cloudflare Workers performance optimization with CPU, memory, caching, bundle size. Use for slow workers, high latency, cold starts, or encountering CPU limits, memory issues, timeout errors.","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\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"workers","cloudflare workers performance","cloudflare workers","cloudflare","performance","Optimization","performance optimization","bundle size","use","issues","memory","caching","latency","bundle","cold","CPU","with","errors","2026-11-10 10:12:30",false,"---\nname: cloudflare-workers-performance\ndescription: Cloudflare Workers performance optimization with CPU, memory, caching, bundle size. Use for slow workers, high latency, cold starts, or encountering CPU limits, memory issues, timeout errors.\nlicense: MIT\n---\n\n# Cloudflare Workers Performance Optimization\n\nTechniques for maximizing Worker performance and minimizing latency.\n\n## Quick Wins\n\n```typescript\n\u002F\u002F 1. Avoid unnecessary cloning\n\u002F\u002F ❌ Bad: Clones entire request\nconst body = await request.clone().json();\n\n\u002F\u002F ✅ Good: Parse directly when not re-using body\nconst body = await request.json();\n\n\u002F\u002F 2. Use streaming instead of buffering\n\u002F\u002F ❌ Bad: Buffers entire response\nconst text = await response.text();\nreturn new Response(transform(text));\n\n\u002F\u002F ✅ Good: Stream transformation\nreturn new Response(response.body.pipeThrough(new TransformStream({\n  transform(chunk, controller) {\n    controller.enqueue(process(chunk));\n  }\n})));\n\n\u002F\u002F 3. Cache expensive operations\nconst cache = caches.default;\nconst cached = await cache.match(request);\nif (cached) return cached;\n```\n\n## Critical Rules\n\n1. **Stay under CPU limits** - 10ms (free), 30ms (paid), 50ms (unbound)\n2. **Minimize cold starts** - Keep bundles \u003C 1MB, avoid dynamic imports\n3. **Use Cache API** - Cache responses at the edge\n4. **Stream large payloads** - Don't buffer entire responses\n5. **Batch operations** - Combine multiple KV\u002FD1 calls\n\n## Top 10 Performance Errors\n\n| Error | Symptom | Fix |\n|-------|---------|-----|\n| CPU limit exceeded | Worker terminated | Optimize hot paths, use streaming |\n| Cold start latency | First request slow | Reduce bundle size, avoid top-level await |\n| Memory pressure | Slow GC, timeouts | Stream data, avoid large arrays |\n| KV latency | Slow reads | Use Cache API, batch reads |\n| D1 slow queries | High latency | Add indexes, optimize SQL |\n| Large bundles | Slow cold starts | Tree-shake, code split |\n| Blocking operations | Request timeouts | Use Promise.all, streaming |\n| Unnecessary cloning | Memory spike | Only clone when needed |\n| Missing cache | Repeated computation | Implement caching layer |\n| Sync operations | CPU spikes | Use async alternatives |\n\n## CPU Optimization\n\n### Profile Hot Paths\n\n```typescript\nasync function profiledHandler(request: Request): Promise\u003CResponse> {\n  const timing: Record\u003Cstring, number> = {};\n\n  const time = async \u003CT>(name: string, fn: () => Promise\u003CT>): Promise\u003CT> => {\n    const start = Date.now();\n    const result = await fn();\n    timing[name] = Date.now() - start;\n    return result;\n  };\n\n  const data = await time('fetch', () => fetchData());\n  const processed = await time('process', () => processData(data));\n  const response = await time('serialize', () => serialize(processed));\n\n  console.log('Timing:', timing);\n  return new Response(response);\n}\n```\n\n### Optimize JSON Operations\n\n```typescript\n\u002F\u002F For large JSON, use streaming parser\nimport { JSONParser } from '@streamparser\u002Fjson';\n\nasync function parseStreamingJSON(stream: ReadableStream): Promise\u003Cunknown[]> {\n  const parser = new JSONParser();\n  const results: unknown[] = [];\n\n  parser.onValue = (value) => results.push(value);\n\n  for await (const chunk of stream) {\n    parser.write(chunk);\n  }\n\n  return results;\n}\n```\n\n## Memory Optimization\n\n### Avoid Large Arrays\n\n```typescript\n\u002F\u002F ❌ Bad: Loads all into memory\nconst items = await db.prepare('SELECT * FROM items').all();\nconst processed = items.results.map(transform);\n\n\u002F\u002F ✅ Good: Process in batches\nasync function* batchProcess(db: D1Database, batchSize = 100) {\n  let offset = 0;\n  while (true) {\n    const { results } = await db\n      .prepare('SELECT * FROM items LIMIT ? OFFSET ?')\n      .bind(batchSize, offset)\n      .all();\n\n    if (results.length === 0) break;\n\n    for (const item of results) {\n      yield transform(item);\n    }\n    offset += batchSize;\n  }\n}\n```\n\n## Caching Strategies\n\n### Multi-Layer Cache\n\n```typescript\ninterface CacheLayer {\n  get(key: string): Promise\u003Cunknown | null>;\n  set(key: string, value: unknown, ttl?: number): Promise\u003Cvoid>;\n}\n\n\u002F\u002F Layer 1: In-memory (request-scoped)\nconst memoryCache = new Map\u003Cstring, unknown>();\n\n\u002F\u002F Layer 2: Cache API (edge-local)\nconst edgeCache: CacheLayer = {\n  async get(key) {\n    const response = await caches.default.match(new Request(`https:\u002F\u002Fcache\u002F${key}`));\n    return response ? response.json() : null;\n  },\n  async set(key, value, ttl = 60) {\n    await caches.default.put(\n      new Request(`https:\u002F\u002Fcache\u002F${key}`),\n      new Response(JSON.stringify(value), {\n        headers: { 'Cache-Control': `max-age=${ttl}` }\n      })\n    );\n  }\n};\n\n\u002F\u002F Layer 3: KV (global)\n\u002F\u002F Use env.KV.get\u002Fput\n```\n\n## Bundle Optimization\n\n```typescript\n\u002F\u002F 1. Tree-shake imports\n\u002F\u002F ❌ Bad\nimport * as lodash from 'lodash';\n\n\u002F\u002F ✅ Good\nimport { debounce } from 'lodash-es';\n\n\u002F\u002F 2. Lazy load heavy dependencies\nlet heavyLib: typeof import('heavy-lib') | undefined;\n\nasync function getHeavyLib() {\n  if (!heavyLib) {\n    heavyLib = await import('heavy-lib');\n  }\n  return heavyLib;\n}\n```\n\n## When to Load References\n\nLoad specific references based on the task:\n\n- **Optimizing CPU usage?** → Load `references\u002Fcpu-optimization.md`\n- **Memory issues?** → Load `references\u002Fmemory-optimization.md`\n- **Implementing caching?** → Load `references\u002Fcaching-strategies.md`\n- **Reducing bundle size?** → Load `references\u002Fbundle-optimization.md`\n- **Cold start problems?** → Load `references\u002Fcold-starts.md`\n\n## Templates\n\n| Template | Purpose | Use When |\n|----------|---------|----------|\n| `templates\u002Fperformance-middleware.ts` | Performance monitoring | Adding timing\u002Fprofiling |\n| `templates\u002Fcaching-layer.ts` | Multi-layer caching | Implementing cache |\n| `templates\u002Foptimized-worker.ts` | Performance patterns | Starting optimized worker |\n\n## Scripts\n\n| Script | Purpose | Command |\n|--------|---------|---------|\n| `scripts\u002Fbenchmark.sh` | Load testing | `.\u002Fbenchmark.sh \u003Curl>` |\n| `scripts\u002Fprofile-worker.sh` | CPU profiling | `.\u002Fprofile-worker.sh` |\n\n## Resources\n\n- Performance: https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fplatform\u002Fperformance\u002F\n- Limits: https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fplatform\u002Flimits\u002F\n- Caching: https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fruntime-apis\u002Fcache\u002F\n","# Cloudflare Workers Performance Optimization\n\nTechniques for maximizing Worker performance and minimizing latency.\n\n## Quick Wins\n\n```typescript\n\u002F\u002F 1. Avoid unnecessary cloning\n\u002F\u002F ❌ Bad: Clones entire request\nconst body = await request.clone().json();\n\n\u002F\u002F ✅ Good: Parse directly when not re-using body\nconst body = await request.json();\n\n\u002F\u002F 2. Use streaming instead of buffering\n\u002F\u002F ❌ Bad: Buffers entire response\nconst text = await response.text();\nreturn new Response(transform(text));\n\n\u002F\u002F ✅ Good: Stream transformation\nreturn new Response(response.body.pipeThrough(new TransformStream({\n  transform(chunk, controller) {\n    controller.enqueue(process(chunk));\n  }\n})));\n\n\u002F\u002F 3. Cache expensive operations\nconst cache = caches.default;\nconst cached = await cache.match(request);\nif (cached) return cached;\n```\n\n## Critical Rules\n\n1. **Stay under CPU limits** - 10ms (free), 30ms (paid), 50ms (unbound)\n2. **Minimize cold starts** - Keep bundles \u003C 1MB, avoid dynamic imports\n3. **Use Cache API** - Cache responses at the edge\n4. **Stream large payloads** - Don't buffer entire responses\n5. **Batch operations** - Combine multiple KV\u002FD1 calls\n\n## Top 10 Performance Errors\n\n| Error | Symptom | Fix |\n|-------|---------|-----|\n| CPU limit exceeded | Worker terminated | Optimize hot paths, use streaming |\n| Cold start latency | First request slow | Reduce bundle size, avoid top-level await |\n| Memory pressure | Slow GC, timeouts | Stream data, avoid large arrays |\n| KV latency | Slow reads | Use Cache API, batch reads |\n| D1 slow queries | High latency | Add indexes, optimize SQL |\n| Large bundles | Slow cold starts | Tree-shake, code split |\n| Blocking operations | Request timeouts | Use Promise.all, streaming |\n| Unnecessary cloning | Memory spike | Only clone when needed |\n| Missing cache | Repeated computation | Implement caching layer |\n| Sync operations | CPU spikes | Use async alternatives |\n\n## CPU Optimization\n\n### Profile Hot Paths\n\n```typescript\nasync function profiledHandler(request: Request): Promise\u003CResponse> {\n  const timing: Record\u003Cstring, number> = {};\n\n  const time = async \u003CT>(name: string, fn: () => Promise\u003CT>): Promise\u003CT> => {\n    const start = Date.now();\n    const result = await fn();\n    timing[name] = Date.now() - start;\n    return result;\n  };\n\n  const data = await time('fetch', () => fetchData());\n  const processed = await time('process', () => processData(data));\n  const response = await time('serialize', () => serialize(processed));\n\n  console.log('Timing:', timing);\n  return new Response(response);\n}\n```\n\n### Optimize JSON Operations\n\n```typescript\n\u002F\u002F For large JSON, use streaming parser\nimport { JSONParser } from '@streamparser\u002Fjson';\n\nasync function parseStreamingJSON(stream: ReadableStream): Promise\u003Cunknown[]> {\n  const parser = new JSONParser();\n  const results: unknown[] = [];\n\n  parser.onValue = (value) => results.push(value);\n\n  for await (const chunk of stream) {\n    parser.write(chunk);\n  }\n\n  return results;\n}\n```\n\n## Memory Optimization\n\n### Avoid Large Arrays\n\n```typescript\n\u002F\u002F ❌ Bad: Loads all into memory\nconst items = await db.prepare('SELECT * FROM items').all();\nconst processed = items.results.map(transform);\n\n\u002F\u002F ✅ Good: Process in batches\nasync function* batchProcess(db: D1Database, batchSize = 100) {\n  let offset = 0;\n  while (true) {\n    const { results } = await db\n      .prepare('SELECT * FROM items LIMIT ? OFFSET ?')\n      .bind(batchSize, offset)\n      .all();\n\n    if (results.length === 0) break;\n\n    for (const item of results) {\n      yield transform(item);\n    }\n    offset += batchSize;\n  }\n}\n```\n\n## Caching Strategies\n\n### Multi-Layer Cache\n\n```typescript\ninterface CacheLayer {\n  get(key: string): Promise\u003Cunknown | null>;\n  set(key: string, value: unknown, ttl?: number): Promise\u003Cvoid>;\n}\n\n\u002F\u002F Layer 1: In-memory (request-scoped)\nconst memoryCache = new Map\u003Cstring, unknown>();\n\n\u002F\u002F Layer 2: Cache API (edge-local)\nconst edgeCache: CacheLayer = {\n  async get(key) {\n    const response = await caches.default.match(new Request(`https:\u002F\u002Fcache\u002F${key}`));\n    return response ? response.json() : null;\n  },\n  async set(key, value, ttl = 60) {\n    await caches.default.put(\n      new Request(`https:\u002F\u002Fcache\u002F${key}`),\n      new Response(JSON.stringify(value), {\n        headers: { 'Cache-Control': `max-age=${ttl}` }\n      })\n    );\n  }\n};\n\n\u002F\u002F Layer 3: KV (global)\n\u002F\u002F Use env.KV.get\u002Fput\n```\n\n## Bundle Optimization\n\n```typescript\n\u002F\u002F 1. Tree-shake imports\n\u002F\u002F ❌ Bad\nimport * as lodash from 'lodash';\n\n\u002F\u002F ✅ Good\nimport { debounce } from 'lodash-es';\n\n\u002F\u002F 2. Lazy load heavy dependencies\nlet heavyLib: typeof import('heavy-lib') | undefined;\n\nasync function getHeavyLib() {\n  if (!heavyLib) {\n    heavyLib = await import('heavy-lib');\n  }\n  return heavyLib;\n}\n```\n\n## When to Load References\n\nLoad specific references based on the task:\n\n- **Optimizing CPU usage?** → Load `references\u002Fcpu-optimization.md`\n- **Memory issues?** → Load `references\u002Fmemory-optimization.md`\n- **Implementing caching?** → Load `references\u002Fcaching-strategies.md`\n- **Reducing bundle size?** → Load `references\u002Fbundle-optimization.md`\n- **Cold start problems?** → Load `references\u002Fcold-starts.md`\n\n## Templates\n\n| Template | Purpose | Use When |\n|----------|---------|----------|\n| `templates\u002Fperformance-middleware.ts` | Performance monitoring | Adding timing\u002Fprofiling |\n| `templates\u002Fcaching-layer.ts` | Multi-layer caching | Implementing cache |\n| `templates\u002Foptimized-worker.ts` | Performance patterns | Starting optimized worker |\n\n## Scripts\n\n| Script | Purpose | Command |\n|--------|---------|---------|\n| `scripts\u002Fbenchmark.sh` | Load testing | `.\u002Fbenchmark.sh \u003Curl>` |\n| `scripts\u002Fprofile-worker.sh` | CPU profiling | `.\u002Fprofile-worker.sh` |\n\n## Resources\n\n- Performance: https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fplatform\u002Fperformance\u002F\n- Limits: https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fplatform\u002Flimits\u002F\n- Caching: https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fruntime-apis\u002Fcache\u002F\n",{"name":5,"license":15,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance",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":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill cloudflare-workers-performance",{"tool":57,"command":58},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill cloudflare-workers-performance",{"tool":60,"command":61},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill cloudflare-workers-performance","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002FSKILL.md",true,[65,71,75,79,83,87,93,97,101,105],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fbundle-optimization.md","REFERENCE","参考文档",8719,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Freferences\u002Fbundle-optimization.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fcaching-strategies.md",11208,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Freferences\u002Fcaching-strategies.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fcold-starts.md",9454,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Freferences\u002Fcold-starts.md",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fcpu-optimization.md",9686,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Freferences\u002Fcpu-optimization.md",{"path":84,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fmemory-optimization.md",9976,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Freferences\u002Fmemory-optimization.md",{"path":88,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":91,"sourceHtmlUrl":92},"scripts\u002Fbenchmark.sh","SCRIPT","脚本",11985,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Fscripts\u002Fbenchmark.sh",{"path":94,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":95,"sourceHtmlUrl":96},"scripts\u002Fprofile-worker.sh",12407,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Fscripts\u002Fprofile-worker.sh",{"path":98,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":99,"sourceHtmlUrl":100},"templates\u002Fcaching-layer.ts",13724,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Ftemplates\u002Fcaching-layer.ts",{"path":102,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":103,"sourceHtmlUrl":104},"templates\u002Foptimized-worker.ts",9835,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Ftemplates\u002Foptimized-worker.ts",{"path":106,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":107,"sourceHtmlUrl":108},"templates\u002Fperformance-middleware.ts",10767,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-performance\u002Ftemplates\u002Fperformance-middleware.ts",[110,124,134,143,149,156],{"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":120,"publishedAt":37},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[115],{"categoryNo":116,"categoryName":117,"taxonomyType":118,"taxonomyTypeDesc":119},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[121,122,123],"model","model hierarchy","model hierarchy skill",{"skillNo":125,"name":126,"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":127,"categories":128,"keywords":130,"publishedAt":37},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[129],{"categoryNo":116,"categoryName":117,"taxonomyType":118,"taxonomyTypeDesc":119},[131,132,133],"MCP","zoom","zoom mcp",{"skillNo":135,"name":136,"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":137,"categories":138,"keywords":139,"publishedAt":37},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[140,141,142,132],"sdk","zoom apps sdk","apps",{"skillNo":144,"name":145,"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":146,"categories":147,"keywords":148,"publishedAt":37},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[145],{"skillNo":150,"name":151,"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":152,"categories":153,"keywords":155,"publishedAt":37},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[154],{"categoryNo":116,"categoryName":117,"taxonomyType":118,"taxonomyTypeDesc":119},[151],{"skillNo":157,"name":158,"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":159,"categories":160,"keywords":161,"publishedAt":37},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[158]]