[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F8XHBZXDYV11GRQ468PVF7":3,"skill-same:01M6F8XHBZXDYV11GRQ468PVF7":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},"01M6F8XHBZXDYV11GRQ468PVF7","cohere-core-workflow-b",null,"Build tool-use agents and function calling with Cohere API v2.\nUse when implementing multi-step agents, function calling,\nor building autonomous tool-using workflows with Cohere.\nTrigger with phrases like \"cohere tool use\", \"cohere agents\",\n\"cohere function calling\", \"cohere multi-step\".","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\u002Fcohere-core-workflow-b\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","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],"workflow","cohere core workflow b","cohere","core","write","nlp","workflows","trigger","io","calling","use","autonomous","edit","read","function calling","tool","Bash","api","saas","code","2026-11-10 10:12:30",false,"---\nname: cohere-core-workflow-b\ndescription: |\n  Build tool-use agents and function calling with Cohere API v2.\n  Use when implementing multi-step agents, function calling,\n  or building autonomous tool-using workflows with Cohere.\n  Trigger with phrases like \"cohere tool use\", \"cohere agents\",\n  \"cohere function calling\", \"cohere multi-step\".\nallowed-tools: Read, Write, Edit, Bash(npm:*), Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, ai, nlp, cohere]\ncompatible-with: claude-code\n---\n\n# Cohere Tool Use & Agents (Core Workflow B)\n\n## Overview\nBuild multi-step tool-using agents with Cohere's Chat API v2. The model decides which tools to call, you execute them, and feed results back in a loop until the task is complete.\n\n## Prerequisites\n- Completed `cohere-install-auth` setup\n- Understanding of `cohere-core-workflow-a` (RAG)\n- Command R7B or newer model (required for tool use)\n\n## Instructions\n\n### Step 1: Define Tools\n\n```typescript\nimport { CohereClientV2 } from 'cohere-ai';\n\nconst cohere = new CohereClientV2();\n\n\u002F\u002F Define tools the model can call\nconst tools = [\n  {\n    type: 'function' as const,\n    function: {\n      name: 'get_weather',\n      description: 'Get current weather for a city',\n      parameters: {\n        type: 'object' as const,\n        properties: {\n          city: { type: 'string', description: 'City name' },\n          unit: { type: 'string', enum: ['celsius', 'fahrenheit'], description: 'Temperature unit' },\n        },\n        required: ['city'],\n      },\n    },\n  },\n  {\n    type: 'function' as const,\n    function: {\n      name: 'search_database',\n      description: 'Search internal database for records',\n      parameters: {\n        type: 'object' as const,\n        properties: {\n          query: { type: 'string', description: 'Search query' },\n          limit: { type: 'number', description: 'Max results' },\n        },\n        required: ['query'],\n      },\n    },\n  },\n];\n```\n\n### Step 2: Implement Tool Executors\n\n```typescript\n\u002F\u002F Map tool names to actual implementations\nconst toolExecutors: Record\u003Cstring, (args: any) => Promise\u003Cstring>> = {\n  get_weather: async ({ city, unit = 'celsius' }) => {\n    \u002F\u002F Replace with real weather API call\n    return JSON.stringify({\n      city,\n      temperature: unit === 'celsius' ? 22 : 72,\n      unit,\n      condition: 'partly cloudy',\n    });\n  },\n\n  search_database: async ({ query, limit = 5 }) => {\n    \u002F\u002F Replace with real database query\n    return JSON.stringify({\n      results: [\n        { id: 1, title: `Result for: ${query}`, relevance: 0.95 },\n      ],\n      total: 1,\n    });\n  },\n};\n```\n\n### Step 3: Single-Step Tool Use\n\n```typescript\nasync function singleStepToolUse(userMessage: string) {\n  \u002F\u002F 1. Send message with tools\n  const response = await cohere.chat({\n    model: 'command-a-03-2025',\n    messages: [{ role: 'user', content: userMessage }],\n    tools,\n  });\n\n  \u002F\u002F 2. Check if model wants to call tools\n  if (response.finishReason === 'TOOL_CALL') {\n    const toolCalls = response.message?.toolCalls ?? [];\n\n    \u002F\u002F 3. Execute each tool call\n    const toolResults = await Promise.all(\n      toolCalls.map(async (tc) => {\n        const executor = toolExecutors[tc.function.name];\n        const args = JSON.parse(tc.function.arguments);\n        const result = await executor(args);\n        return {\n          call: tc,\n          outputs: [{ result }],\n        };\n      })\n    );\n\n    \u002F\u002F 4. Send tool results back for final answer\n    const finalResponse = await cohere.chat({\n      model: 'command-a-03-2025',\n      messages: [\n        { role: 'user', content: userMessage },\n        { role: 'assistant', toolCalls },\n        { role: 'tool', toolCallId: toolCalls[0].id, content: toolResults[0].outputs[0].result },\n      ],\n      tools,\n    });\n\n    return finalResponse.message?.content?.[0]?.text ?? '';\n  }\n\n  \u002F\u002F No tool call — direct response\n  return response.message?.content?.[0]?.text ?? '';\n}\n```\n\n### Step 4: Multi-Step Agent Loop\n\n```typescript\nasync function agentLoop(userMessage: string, maxSteps = 5) {\n  const messages: any[] = [{ role: 'user', content: userMessage }];\n\n  for (let step = 0; step \u003C maxSteps; step++) {\n    const response = await cohere.chat({\n      model: 'command-a-03-2025',\n      messages,\n      tools,\n    });\n\n    \u002F\u002F If model is done (no tool calls), return the answer\n    if (response.finishReason !== 'TOOL_CALL') {\n      return response.message?.content?.[0]?.text ?? '';\n    }\n\n    \u002F\u002F Model wants to call tools\n    const toolCalls = response.message?.toolCalls ?? [];\n    messages.push({ role: 'assistant', toolCalls });\n\n    \u002F\u002F Execute tools (parallel if multiple)\n    for (const tc of toolCalls) {\n      const executor = toolExecutors[tc.function.name];\n      if (!executor) {\n        messages.push({ role: 'tool', toolCallId: tc.id, content: `Error: Unknown tool ${tc.function.name}` });\n        continue;\n      }\n\n      try {\n        const args = JSON.parse(tc.function.arguments);\n        const result = await executor(args);\n        messages.push({ role: 'tool', toolCallId: tc.id, content: result });\n      } catch (err) {\n        messages.push({ role: 'tool', toolCallId: tc.id, content: `Error: ${(err as Error).message}` });\n      }\n    }\n\n    console.log(`Step ${step + 1}: executed ${toolCalls.length} tool(s)`);\n  }\n\n  return 'Agent reached max steps without completing.';\n}\n\n\u002F\u002F Usage\nconst answer = await agentLoop(\"What's the weather in Tokyo and search for 'Tokyo events'?\");\nconsole.log(answer);\n```\n\n### Step 5: Force Tool Use\n\n```typescript\n\u002F\u002F Force the model to use at least one tool\nconst response = await cohere.chat({\n  model: 'command-a-03-2025',\n  messages: [{ role: 'user', content: 'Look up the weather in Paris' }],\n  tools,\n  toolChoice: 'REQUIRED', \u002F\u002F REQUIRED = must use tool, NONE = cannot use tools\n});\n\n\u002F\u002F toolChoice options:\n\u002F\u002F - omitted: model decides freely\n\u002F\u002F - 'REQUIRED': must call at least one tool\n\u002F\u002F - 'NONE': cannot call any tools (text-only response)\n```\n\n### Step 6: Streaming Tool Use\n\n```typescript\nasync function streamWithTools(userMessage: string) {\n  const stream = await cohere.chatStream({\n    model: 'command-a-03-2025',\n    messages: [{ role: 'user', content: userMessage }],\n    tools,\n  });\n\n  const toolCalls: any[] = [];\n\n  for await (const event of stream) {\n    switch (event.type) {\n      case 'tool-call-start':\n        console.log(`Tool call: ${event.delta?.message?.toolCalls?.function?.name}`);\n        break;\n      case 'tool-call-delta':\n        \u002F\u002F Streaming tool arguments\n        break;\n      case 'content-delta':\n        process.stdout.write(event.delta?.message?.content?.text ?? '');\n        break;\n    }\n  }\n}\n```\n\n## Output\n- Single-step tool calls with automatic execution\n- Multi-step agent loop handling sequential reasoning\n- Parallel tool execution for independent calls\n- Streaming with tool-call events\n\n## Error Handling\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `tool not found` | Mismatched tool name | Verify `tools` array matches executors |\n| `invalid arguments` | Schema mismatch | Check tool parameter types |\n| Infinite loop | Model keeps calling tools | Set `maxSteps` limit |\n| `TOOL_CALL` with no toolCalls | Edge case | Check `response.message?.toolCalls` length |\n\n## Resources\n- [Tool Use Quickstart](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Ftool-use-quickstart)\n- [Multi-Step Tool Use](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Fmulti-step-tool-use)\n- [Tool Use Streaming](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Ftool-use-streaming)\n- [Tool Use Citations](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Ftool-use-citations)\n\n## Next Steps\nFor common errors, see `cohere-common-errors`.\n\n","# Cohere Tool Use & Agents (Core Workflow B)\n\n## Overview\nBuild multi-step tool-using agents with Cohere's Chat API v2. The model decides which tools to call, you execute them, and feed results back in a loop until the task is complete.\n\n## Prerequisites\n- Completed `cohere-install-auth` setup\n- Understanding of `cohere-core-workflow-a` (RAG)\n- Command R7B or newer model (required for tool use)\n\n## Instructions\n\n### Step 1: Define Tools\n\n```typescript\nimport { CohereClientV2 } from 'cohere-ai';\n\nconst cohere = new CohereClientV2();\n\n\u002F\u002F Define tools the model can call\nconst tools = [\n  {\n    type: 'function' as const,\n    function: {\n      name: 'get_weather',\n      description: 'Get current weather for a city',\n      parameters: {\n        type: 'object' as const,\n        properties: {\n          city: { type: 'string', description: 'City name' },\n          unit: { type: 'string', enum: ['celsius', 'fahrenheit'], description: 'Temperature unit' },\n        },\n        required: ['city'],\n      },\n    },\n  },\n  {\n    type: 'function' as const,\n    function: {\n      name: 'search_database',\n      description: 'Search internal database for records',\n      parameters: {\n        type: 'object' as const,\n        properties: {\n          query: { type: 'string', description: 'Search query' },\n          limit: { type: 'number', description: 'Max results' },\n        },\n        required: ['query'],\n      },\n    },\n  },\n];\n```\n\n### Step 2: Implement Tool Executors\n\n```typescript\n\u002F\u002F Map tool names to actual implementations\nconst toolExecutors: Record\u003Cstring, (args: any) => Promise\u003Cstring>> = {\n  get_weather: async ({ city, unit = 'celsius' }) => {\n    \u002F\u002F Replace with real weather API call\n    return JSON.stringify({\n      city,\n      temperature: unit === 'celsius' ? 22 : 72,\n      unit,\n      condition: 'partly cloudy',\n    });\n  },\n\n  search_database: async ({ query, limit = 5 }) => {\n    \u002F\u002F Replace with real database query\n    return JSON.stringify({\n      results: [\n        { id: 1, title: `Result for: ${query}`, relevance: 0.95 },\n      ],\n      total: 1,\n    });\n  },\n};\n```\n\n### Step 3: Single-Step Tool Use\n\n```typescript\nasync function singleStepToolUse(userMessage: string) {\n  \u002F\u002F 1. Send message with tools\n  const response = await cohere.chat({\n    model: 'command-a-03-2025',\n    messages: [{ role: 'user', content: userMessage }],\n    tools,\n  });\n\n  \u002F\u002F 2. Check if model wants to call tools\n  if (response.finishReason === 'TOOL_CALL') {\n    const toolCalls = response.message?.toolCalls ?? [];\n\n    \u002F\u002F 3. Execute each tool call\n    const toolResults = await Promise.all(\n      toolCalls.map(async (tc) => {\n        const executor = toolExecutors[tc.function.name];\n        const args = JSON.parse(tc.function.arguments);\n        const result = await executor(args);\n        return {\n          call: tc,\n          outputs: [{ result }],\n        };\n      })\n    );\n\n    \u002F\u002F 4. Send tool results back for final answer\n    const finalResponse = await cohere.chat({\n      model: 'command-a-03-2025',\n      messages: [\n        { role: 'user', content: userMessage },\n        { role: 'assistant', toolCalls },\n        { role: 'tool', toolCallId: toolCalls[0].id, content: toolResults[0].outputs[0].result },\n      ],\n      tools,\n    });\n\n    return finalResponse.message?.content?.[0]?.text ?? '';\n  }\n\n  \u002F\u002F No tool call — direct response\n  return response.message?.content?.[0]?.text ?? '';\n}\n```\n\n### Step 4: Multi-Step Agent Loop\n\n```typescript\nasync function agentLoop(userMessage: string, maxSteps = 5) {\n  const messages: any[] = [{ role: 'user', content: userMessage }];\n\n  for (let step = 0; step \u003C maxSteps; step++) {\n    const response = await cohere.chat({\n      model: 'command-a-03-2025',\n      messages,\n      tools,\n    });\n\n    \u002F\u002F If model is done (no tool calls), return the answer\n    if (response.finishReason !== 'TOOL_CALL') {\n      return response.message?.content?.[0]?.text ?? '';\n    }\n\n    \u002F\u002F Model wants to call tools\n    const toolCalls = response.message?.toolCalls ?? [];\n    messages.push({ role: 'assistant', toolCalls });\n\n    \u002F\u002F Execute tools (parallel if multiple)\n    for (const tc of toolCalls) {\n      const executor = toolExecutors[tc.function.name];\n      if (!executor) {\n        messages.push({ role: 'tool', toolCallId: tc.id, content: `Error: Unknown tool ${tc.function.name}` });\n        continue;\n      }\n\n      try {\n        const args = JSON.parse(tc.function.arguments);\n        const result = await executor(args);\n        messages.push({ role: 'tool', toolCallId: tc.id, content: result });\n      } catch (err) {\n        messages.push({ role: 'tool', toolCallId: tc.id, content: `Error: ${(err as Error).message}` });\n      }\n    }\n\n    console.log(`Step ${step + 1}: executed ${toolCalls.length} tool(s)`);\n  }\n\n  return 'Agent reached max steps without completing.';\n}\n\n\u002F\u002F Usage\nconst answer = await agentLoop(\"What's the weather in Tokyo and search for 'Tokyo events'?\");\nconsole.log(answer);\n```\n\n### Step 5: Force Tool Use\n\n```typescript\n\u002F\u002F Force the model to use at least one tool\nconst response = await cohere.chat({\n  model: 'command-a-03-2025',\n  messages: [{ role: 'user', content: 'Look up the weather in Paris' }],\n  tools,\n  toolChoice: 'REQUIRED', \u002F\u002F REQUIRED = must use tool, NONE = cannot use tools\n});\n\n\u002F\u002F toolChoice options:\n\u002F\u002F - omitted: model decides freely\n\u002F\u002F - 'REQUIRED': must call at least one tool\n\u002F\u002F - 'NONE': cannot call any tools (text-only response)\n```\n\n### Step 6: Streaming Tool Use\n\n```typescript\nasync function streamWithTools(userMessage: string) {\n  const stream = await cohere.chatStream({\n    model: 'command-a-03-2025',\n    messages: [{ role: 'user', content: userMessage }],\n    tools,\n  });\n\n  const toolCalls: any[] = [];\n\n  for await (const event of stream) {\n    switch (event.type) {\n      case 'tool-call-start':\n        console.log(`Tool call: ${event.delta?.message?.toolCalls?.function?.name}`);\n        break;\n      case 'tool-call-delta':\n        \u002F\u002F Streaming tool arguments\n        break;\n      case 'content-delta':\n        process.stdout.write(event.delta?.message?.content?.text ?? '');\n        break;\n    }\n  }\n}\n```\n\n## Output\n- Single-step tool calls with automatic execution\n- Multi-step agent loop handling sequential reasoning\n- Parallel tool execution for independent calls\n- Streaming with tool-call events\n\n## Error Handling\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `tool not found` | Mismatched tool name | Verify `tools` array matches executors |\n| `invalid arguments` | Schema mismatch | Check tool parameter types |\n| Infinite loop | Model keeps calling tools | Set `maxSteps` limit |\n| `TOOL_CALL` with no toolCalls | Edge case | Check `response.message?.toolCalls` length |\n\n## Resources\n- [Tool Use Quickstart](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Ftool-use-quickstart)\n- [Multi-Step Tool Use](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Fmulti-step-tool-use)\n- [Tool Use Streaming](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Ftool-use-streaming)\n- [Tool Use Citations](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Ftool-use-citations)\n\n## Next Steps\nFor common errors, see `cohere-common-errors`.\n\n",{"name":5,"tags":54,"author":56,"license":15,"version":57,"description":58,"allowed-tools":59,"compatible-with":60},[47,55,34,31],"ai","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Build tool-use agents and function calling with Cohere API v2.\nUse when implementing multi-step agents, function calling,\nor building autonomous tool-using workflows with Cohere.\nTrigger with phrases like \"cohere tool use\", \"cohere agents\",\n\"cohere function calling\", \"cohere multi-step\".\n","Read, Write, Edit, Bash(npm:*), Grep","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fcohere-core-workflow-b",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 cohere-core-workflow-b",{"tool":76,"command":77},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill cohere-core-workflow-b",{"tool":79,"command":80},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill cohere-core-workflow-b","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fcohere-core-workflow-b\u002FSKILL.md",true,[],[85,95,105,114,120,127],{"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":91,"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":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[92,93,94],"model","model hierarchy","model hierarchy skill",{"skillNo":96,"name":97,"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":98,"categories":99,"keywords":101,"publishedAt":49},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[100],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[102,103,104],"MCP","zoom","zoom mcp",{"skillNo":106,"name":107,"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":108,"categories":109,"keywords":110,"publishedAt":49},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[111,112,113,103],"sdk","zoom apps sdk","apps",{"skillNo":115,"name":116,"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":117,"categories":118,"keywords":119,"publishedAt":49},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[116],{"skillNo":121,"name":122,"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":123,"categories":124,"keywords":126,"publishedAt":49},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[125],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[122],{"skillNo":128,"name":129,"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":130,"categories":131,"keywords":132,"publishedAt":49},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[129]]