[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FGDBRSCNDJ9JWPEJRHJM8P":3,"skill-same:01M6FGDBRSCNDJ9JWPEJRHJM8P":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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6FGDBRSCNDJ9JWPEJRHJM8P","cloudflare-workers-migration",null,"Migrate to Cloudflare Workers from AWS Lambda, Vercel, Express, and Node.js. Use when porting existing applications to the edge, adapting serverless functions, or resolving Node.js API compatibility issues.","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-migration\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"cloudflare","cloudflare workers migration","workers","migration","cloudflare workers","applications","api","migrate","js","node","use","vercel","lambda","aws","edge","functions","compatibility","aws lambda","express","issues","2026-11-10 10:12:30",false,"---\nname: cloudflare-workers-migration\ndescription: Migrate to Cloudflare Workers from AWS Lambda, Vercel, Express, and Node.js. Use when porting existing applications to the edge, adapting serverless functions, or resolving Node.js API compatibility issues.\nmetadata:\n  version: \"1.0.0\"\nlicense: MIT\n---\n\n# Workers Migration Guide\n\nMigrate existing applications to Cloudflare Workers from various platforms.\n\n## Migration Decision Tree\n\n```\nWhat are you migrating from?\n├── AWS Lambda\n│   └── Node.js handler? → Lambda adapter pattern\n│   └── Python? → Consider Python Workers\n│   └── Container\u002Fcustom runtime? → May need rewrite\n├── Vercel\u002FNext.js\n│   └── API routes? → Minimal changes with adapter\n│   └── Full Next.js app? → Use OpenNext adapter\n│   └── Middleware? → Direct Workers equivalent\n├── Express\u002FNode.js\n│   └── Simple API? → Hono (similar API)\n│   └── Complex middleware? → Gradual migration\n│   └── Heavy node: usage? → Compatibility layer\n└── Other Edge (Deno Deploy, Fastly)\n    └── Standard Web APIs? → Minimal changes\n    └── Platform-specific? → Targeted rewrites\n```\n\n## Platform Comparison\n\n| Feature | Workers | Lambda | Vercel | Express |\n|---------|---------|--------|--------|---------|\n| **Cold Start** | ~0ms | 100-500ms | 10-100ms | N\u002FA |\n| **CPU Limit** | 50ms\u002F10ms | 15 min | 10s | None |\n| **Memory** | 128MB | 10GB | 1GB | System |\n| **Max Response** | 6MB (stream unlimited) | 6MB | 4.5MB | None |\n| **Global Edge** | 300+ PoPs | Regional | ~20 PoPs | Manual |\n| **Node.js APIs** | Partial | Full | Full | Full |\n\n## Top 10 Migration Errors\n\n| Error | From | Cause | Solution |\n|-------|------|-------|----------|\n| `fs is not defined` | Lambda\u002FExpress | File system access | Use KV\u002FR2 for storage |\n| `Buffer is not defined` | Node.js | Node.js globals | Import from `node:buffer` |\n| `process.env undefined` | All | Env access pattern | Use `env` parameter |\n| `setTimeout not returning` | Lambda | Async patterns | Use `ctx.waitUntil()` |\n| `require() not found` | Express | CommonJS | Convert to ESM imports |\n| `Exceeded CPU time` | All | Long computation | Chunk or use DO |\n| `body already consumed` | Express | Request body | Clone before read |\n| `Headers not iterable` | Lambda | Headers API | Use Headers constructor |\n| `crypto.randomBytes` | Node.js | Node crypto | Use `crypto.getRandomValues` |\n| `Cannot find module` | All | Missing polyfill | Check Workers compatibility |\n\n## Quick Migration Patterns\n\n### AWS Lambda Handler\n\n```typescript\n\u002F\u002F Before: AWS Lambda\nexport const handler = async (event, context) => {\n  const body = JSON.parse(event.body);\n  return {\n    statusCode: 200,\n    body: JSON.stringify({ message: 'Hello' }),\n  };\n};\n\n\u002F\u002F After: Cloudflare Workers\nexport default {\n  async fetch(request: Request, env: Env): Promise\u003CResponse> {\n    const body = await request.json();\n    return Response.json({ message: 'Hello' });\n  },\n};\n```\n\n### Express Middleware\n\n```typescript\n\u002F\u002F Before: Express\napp.use((req, res, next) => {\n  if (!req.headers.authorization) {\n    return res.status(401).json({ error: 'Unauthorized' });\n  }\n  next();\n});\n\n\u002F\u002F After: Hono Middleware\napp.use('*', async (c, next) => {\n  if (!c.req.header('Authorization')) {\n    return c.json({ error: 'Unauthorized' }, 401);\n  }\n  await next();\n});\n```\n\n### Environment Variables\n\n```typescript\n\u002F\u002F Before: Node.js\nconst apiKey = process.env.API_KEY;\n\n\u002F\u002F After: Workers\nexport default {\n  async fetch(request: Request, env: Env): Promise\u003CResponse> {\n    const apiKey = env.API_KEY;\n    \u002F\u002F ...\n  },\n};\n```\n\n## Node.js Compatibility\n\nWorkers support many Node.js APIs via compatibility flags:\n\n```jsonc\n\u002F\u002F wrangler.jsonc\n{\n  \"compatibility_flags\": [\"nodejs_compat_v2\"],\n  \"compatibility_date\": \"2024-12-01\"\n}\n```\n\n**Supported with nodejs_compat_v2:**\n- `crypto` (most methods)\n- `buffer` (Buffer class)\n- `util` (promisify, types)\n- `stream` (Readable, Writable)\n- `events` (EventEmitter)\n- `path` (all methods)\n- `string_decoder`\n- `assert`\n\n**Not Supported (need alternatives):**\n- `fs` → Use R2\u002FKV\n- `child_process` → Not possible\n- `cluster` → Not applicable\n- `dgram` → Not supported\n- `net` → Use fetch\u002FWebSocket\n- `tls` → Handled by platform\n\n## When to Load References\n\n| Reference | Load When |\n|-----------|-----------|\n| `references\u002Flambda-migration.md` | Migrating AWS Lambda functions |\n| `references\u002Fvercel-migration.md` | Migrating from Vercel\u002FNext.js |\n| `references\u002Fexpress-migration.md` | Migrating Express\u002FNode.js apps |\n| `references\u002Fnode-compatibility.md` | Node.js API compatibility issues |\n\n## Migration Checklist\n\n1. **Analyze Dependencies**: Check for unsupported Node.js APIs\n2. **Convert to ESM**: Replace require() with import\n3. **Update Env Access**: Use env parameter instead of process.env\n4. **Replace File System**: Use R2\u002FKV for storage\n5. **Handle Async**: Use ctx.waitUntil() for background tasks\n6. **Test Locally**: Verify with wrangler dev\n7. **Performance Test**: Ensure CPU limits aren't exceeded\n\n## See Also\n\n- `workers-runtime-apis` - Available APIs in Workers\n- `workers-performance` - Optimization techniques\n- `cloudflare-worker-base` - Basic Workers setup\n","# Workers Migration Guide\n\nMigrate existing applications to Cloudflare Workers from various platforms.\n\n## Migration Decision Tree\n\n```\nWhat are you migrating from?\n├── AWS Lambda\n│   └── Node.js handler? → Lambda adapter pattern\n│   └── Python? → Consider Python Workers\n│   └── Container\u002Fcustom runtime? → May need rewrite\n├── Vercel\u002FNext.js\n│   └── API routes? → Minimal changes with adapter\n│   └── Full Next.js app? → Use OpenNext adapter\n│   └── Middleware? → Direct Workers equivalent\n├── Express\u002FNode.js\n│   └── Simple API? → Hono (similar API)\n│   └── Complex middleware? → Gradual migration\n│   └── Heavy node: usage? → Compatibility layer\n└── Other Edge (Deno Deploy, Fastly)\n    └── Standard Web APIs? → Minimal changes\n    └── Platform-specific? → Targeted rewrites\n```\n\n## Platform Comparison\n\n| Feature | Workers | Lambda | Vercel | Express |\n|---------|---------|--------|--------|---------|\n| **Cold Start** | ~0ms | 100-500ms | 10-100ms | N\u002FA |\n| **CPU Limit** | 50ms\u002F10ms | 15 min | 10s | None |\n| **Memory** | 128MB | 10GB | 1GB | System |\n| **Max Response** | 6MB (stream unlimited) | 6MB | 4.5MB | None |\n| **Global Edge** | 300+ PoPs | Regional | ~20 PoPs | Manual |\n| **Node.js APIs** | Partial | Full | Full | Full |\n\n## Top 10 Migration Errors\n\n| Error | From | Cause | Solution |\n|-------|------|-------|----------|\n| `fs is not defined` | Lambda\u002FExpress | File system access | Use KV\u002FR2 for storage |\n| `Buffer is not defined` | Node.js | Node.js globals | Import from `node:buffer` |\n| `process.env undefined` | All | Env access pattern | Use `env` parameter |\n| `setTimeout not returning` | Lambda | Async patterns | Use `ctx.waitUntil()` |\n| `require() not found` | Express | CommonJS | Convert to ESM imports |\n| `Exceeded CPU time` | All | Long computation | Chunk or use DO |\n| `body already consumed` | Express | Request body | Clone before read |\n| `Headers not iterable` | Lambda | Headers API | Use Headers constructor |\n| `crypto.randomBytes` | Node.js | Node crypto | Use `crypto.getRandomValues` |\n| `Cannot find module` | All | Missing polyfill | Check Workers compatibility |\n\n## Quick Migration Patterns\n\n### AWS Lambda Handler\n\n```typescript\n\u002F\u002F Before: AWS Lambda\nexport const handler = async (event, context) => {\n  const body = JSON.parse(event.body);\n  return {\n    statusCode: 200,\n    body: JSON.stringify({ message: 'Hello' }),\n  };\n};\n\n\u002F\u002F After: Cloudflare Workers\nexport default {\n  async fetch(request: Request, env: Env): Promise\u003CResponse> {\n    const body = await request.json();\n    return Response.json({ message: 'Hello' });\n  },\n};\n```\n\n### Express Middleware\n\n```typescript\n\u002F\u002F Before: Express\napp.use((req, res, next) => {\n  if (!req.headers.authorization) {\n    return res.status(401).json({ error: 'Unauthorized' });\n  }\n  next();\n});\n\n\u002F\u002F After: Hono Middleware\napp.use('*', async (c, next) => {\n  if (!c.req.header('Authorization')) {\n    return c.json({ error: 'Unauthorized' }, 401);\n  }\n  await next();\n});\n```\n\n### Environment Variables\n\n```typescript\n\u002F\u002F Before: Node.js\nconst apiKey = process.env.API_KEY;\n\n\u002F\u002F After: Workers\nexport default {\n  async fetch(request: Request, env: Env): Promise\u003CResponse> {\n    const apiKey = env.API_KEY;\n    \u002F\u002F ...\n  },\n};\n```\n\n## Node.js Compatibility\n\nWorkers support many Node.js APIs via compatibility flags:\n\n```jsonc\n\u002F\u002F wrangler.jsonc\n{\n  \"compatibility_flags\": [\"nodejs_compat_v2\"],\n  \"compatibility_date\": \"2024-12-01\"\n}\n```\n\n**Supported with nodejs_compat_v2:**\n- `crypto` (most methods)\n- `buffer` (Buffer class)\n- `util` (promisify, types)\n- `stream` (Readable, Writable)\n- `events` (EventEmitter)\n- `path` (all methods)\n- `string_decoder`\n- `assert`\n\n**Not Supported (need alternatives):**\n- `fs` → Use R2\u002FKV\n- `child_process` → Not possible\n- `cluster` → Not applicable\n- `dgram` → Not supported\n- `net` → Use fetch\u002FWebSocket\n- `tls` → Handled by platform\n\n## When to Load References\n\n| Reference | Load When |\n|-----------|-----------|\n| `references\u002Flambda-migration.md` | Migrating AWS Lambda functions |\n| `references\u002Fvercel-migration.md` | Migrating from Vercel\u002FNext.js |\n| `references\u002Fexpress-migration.md` | Migrating Express\u002FNode.js apps |\n| `references\u002Fnode-compatibility.md` | Node.js API compatibility issues |\n\n## Migration Checklist\n\n1. **Analyze Dependencies**: Check for unsupported Node.js APIs\n2. **Convert to ESM**: Replace require() with import\n3. **Update Env Access**: Use env parameter instead of process.env\n4. **Replace File System**: Use R2\u002FKV for storage\n5. **Handle Async**: Use ctx.waitUntil() for background tasks\n6. **Test Locally**: Verify with wrangler dev\n7. **Performance Test**: Ensure CPU limits aren't exceeded\n\n## See Also\n\n- `workers-runtime-apis` - Available APIs in Workers\n- `workers-performance` - Optimization techniques\n- `cloudflare-worker-base` - Basic Workers setup\n",{"name":5,"license":15,"metadata":44,"description":7},{"version":45},"1.0.0","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration",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":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill cloudflare-workers-migration",{"tool":61,"command":62},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill cloudflare-workers-migration",{"tool":64,"command":65},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill cloudflare-workers-migration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002FSKILL.md",true,[69,75,79,83,87,93,97,101,105],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fexpress-migration.md","REFERENCE","参考文档",13366,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002Freferences\u002Fexpress-migration.md",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Flambda-migration.md",11721,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002Freferences\u002Flambda-migration.md",{"path":80,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fnode-compatibility.md",11360,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002Freferences\u002Fnode-compatibility.md",{"path":84,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fvercel-migration.md",12059,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002Freferences\u002Fvercel-migration.md",{"path":88,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":91,"sourceHtmlUrl":92},"scripts\u002Fanalyze-migration.sh","SCRIPT","脚本",13955,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002Fscripts\u002Fanalyze-migration.sh",{"path":94,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":95,"sourceHtmlUrl":96},"templates\u002Fexpress-adapter.ts",12056,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002Ftemplates\u002Fexpress-adapter.ts",{"path":98,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":99,"sourceHtmlUrl":100},"templates\u002Flambda-adapter.ts",10603,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002Ftemplates\u002Flambda-adapter.ts",{"path":102,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":103,"sourceHtmlUrl":104},"templates\u002Fnode-compat.ts",12948,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002Ftemplates\u002Fnode-compat.ts",{"path":106,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":107,"sourceHtmlUrl":108},"templates\u002Fvercel-adapter.ts",12903,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsecondsky\u002Fclaude-skills\u002Fcloudflare-workers-migration\u002Ftemplates\u002Fvercel-adapter.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":39},"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":39},"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":39},"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":39},"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":39},"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":39},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[158]]