[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F8HDY8GF80VS81Z09W7XTQ":3,"skill-same:01M6F8HDY8GF80VS81Z09W7XTQ":72},{"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":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":57,"updatedAt":58,"install":59,"resources":71},"01M6F8HDY8GF80VS81Z09W7XTQ","clerk-upgrade-migration",null,"Manage Clerk SDK version upgrades and handle breaking changes.\nUse when upgrading Clerk packages, migrating to new SDK versions,\nor handling deprecation warnings.\nTrigger with phrases like \"upgrade clerk\", \"clerk migration\",\n\"update clerk SDK\", \"clerk breaking changes\".","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\u002Fclerk-upgrade-migration\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"upgrade","clerk upgrade migration","clerk","migration","use","trigger","io","pnpm","manage","version","openclaw","upgrades","edit","write","read","Bash","saas","code","update","packages","2026-11-10 10:12:30",false,"---\nname: clerk-upgrade-migration\ndescription: |\n  Manage Clerk SDK version upgrades and handle breaking changes.\n  Use when upgrading Clerk packages, migrating to new SDK versions,\n  or handling deprecation warnings.\n  Trigger with phrases like \"upgrade clerk\", \"clerk migration\",\n  \"update clerk SDK\", \"clerk breaking changes\".\nallowed-tools: Read, Write, Edit, Bash(npm:*), Bash(pnpm:*), Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\ntags: [saas, clerk, migration]\n\n---\n# Clerk Upgrade & Migration\n\n## Current State\n!`npm list @clerk\u002Fnextjs @clerk\u002Fclerk-react @clerk\u002Fexpress 2>\u002Fdev\u002Fnull | grep clerk || echo 'No Clerk packages found'`\n\n## Overview\nSafely upgrade Clerk SDK versions and handle breaking changes. Covers version checking, upgrade procedures, common migration patterns, and rollback planning.\n\n## Prerequisites\n- Current Clerk integration working\n- Git repository with clean working state\n- Test environment available for validation\n\n## Instructions\n\n### Step 1: Check Current Version and Available Updates\n```bash\n# Check installed version\nnpm list @clerk\u002Fnextjs\n\n# Check latest available\nnpm view @clerk\u002Fnextjs version\n\n# Check all Clerk packages and their versions\nnpm outdated | grep clerk\n```\n\n### Step 2: Review Breaking Changes\n```bash\n# View changelog for the target version\nnpx open-cli https:\u002F\u002Fclerk.com\u002Fchangelog\n\n# Check GitHub releases for migration notes\nnpx open-cli https:\u002F\u002Fgithub.com\u002Fclerk\u002Fjavascript\u002Freleases\n```\n\nKey version milestones to watch for:\n- **v5 to v6**: `auth()` became async (must `await auth()`)\n- **v5 to v6**: `authMiddleware` renamed to `clerkMiddleware`\n- **v5 to v6**: Import paths changed to `@clerk\u002Fnextjs\u002Fserver`\n\n### Step 3: Upgrade Process\n```bash\n# Create upgrade branch\ngit checkout -b chore\u002Fupgrade-clerk\n\n# Upgrade all Clerk packages together (they must version-match)\nnpm install @clerk\u002Fnextjs@latest @clerk\u002Fthemes@latest\n\n# If using other Clerk packages:\n# npm install @clerk\u002Fclerk-react@latest @clerk\u002Fexpress@latest @clerk\u002Fbackend@latest\n\n# Verify no version mismatches\nnpm list | grep clerk\n```\n\n### Step 4: Handle Common Migration Patterns\n\n**v5 to v6: `auth()` is now async**\n```typescript\n\u002F\u002F BEFORE (v5): auth() was synchronous\n\u002F\u002F const { userId } = auth()\n\n\u002F\u002F AFTER (v6): auth() returns a Promise\nconst { userId } = await auth()\n```\n\nFind all affected files:\n```bash\n# Search for synchronous auth() calls that need await\ngrep -rn \"const.*= auth()\" --include=\"*.ts\" --include=\"*.tsx\" | grep -v \"await\"\n```\n\n**v5 to v6: Middleware migration**\n```typescript\n\u002F\u002F BEFORE (v5):\n\u002F\u002F import { authMiddleware } from '@clerk\u002Fnextjs'\n\u002F\u002F export default authMiddleware({ publicRoutes: ['\u002F'] })\n\n\u002F\u002F AFTER (v6):\nimport { clerkMiddleware, createRouteMatcher } from '@clerk\u002Fnextjs\u002Fserver'\n\nconst isPublicRoute = createRouteMatcher(['\u002F'])\n\nexport default clerkMiddleware(async (auth, req) => {\n  if (!isPublicRoute(req)) {\n    await auth.protect()\n  }\n})\n```\n\n**v5 to v6: Import path changes**\n```typescript\n\u002F\u002F BEFORE:\n\u002F\u002F import { auth, currentUser } from '@clerk\u002Fnextjs'\n\n\u002F\u002F AFTER:\nimport { auth, currentUser } from '@clerk\u002Fnextjs\u002Fserver'\n```\n\nFix import paths across codebase:\n```bash\n# Find files using old import path\ngrep -rn \"from '@clerk\u002Fnextjs'\" --include=\"*.ts\" --include=\"*.tsx\" | grep -v \"node_modules\" | grep -v \"\u002Fserver\"\n```\n\n### Step 5: Update Type Definitions\n```typescript\n\u002F\u002F If using custom type extensions, update them\n\u002F\u002F BEFORE:\n\u002F\u002F declare module '@clerk\u002Fnextjs' { ... }\n\n\u002F\u002F AFTER:\ndeclare module '@clerk\u002Fnextjs\u002Fserver' {\n  interface AuthObject {\n    \u002F\u002F Custom session claims type\n    sessionClaims?: {\n      metadata?: {\n        role?: string\n      }\n    }\n  }\n}\n```\n\n### Step 6: Test Upgrade\n```bash\n# Build to catch type errors\nnpm run build\n\n# Run tests\nnpm test\n\n# Start dev server and test manually\nnpm run dev\n\n# Test critical flows:\n# 1. Sign in with email\u002Fpassword\n# 2. Sign in with OAuth\n# 3. Protected route access\n# 4. API route authentication\n# 5. Webhook endpoint\n# 6. Sign out\n```\n\n### Step 7: Rollback Plan\n```bash\n# If upgrade fails, rollback to previous version\ngit stash  # Save any manual changes\n\n# Install previous version\nnpm install @clerk\u002Fnextjs@5.x.x  # Replace with your previous version\n\n# Or restore from git\ngit checkout main -- package.json package-lock.json\nnpm install\n\n# Verify rollback works\nnpm run build && npm test\n```\n\n## Output\n- Clerk SDK upgraded to latest version\n- Breaking changes migrated (async auth, new middleware, import paths)\n- Type definitions updated\n- All tests passing\n- Rollback procedure documented\n\n## Error Handling\n| Error | Cause | Solution |\n|-------|-------|----------|\n| Type errors after upgrade | API signature changes | Add `await` to `auth()`, update imports |\n| `authMiddleware is not exported` | Renamed in v6 | Use `clerkMiddleware` from `@clerk\u002Fnextjs\u002Fserver` |\n| `auth() returns Promise` | Now async in v6 | Add `await` to all `auth()` calls |\n| Import not found | Path changed | Use `@clerk\u002Fnextjs\u002Fserver` for server-side imports |\n| Version mismatch | Clerk packages on different versions | Update all `@clerk\u002F*` packages together |\n\n## Examples\n\n### Automated Migration Script\n```bash\n#!\u002Fbin\u002Fbash\n# scripts\u002Fmigrate-clerk-v6.sh\nset -euo pipefail\n\necho \"=== Clerk v5 to v6 Migration ===\"\n\n# 1. Fix auth() calls (add await)\necho \"Adding await to auth() calls...\"\nfind . -name \"*.ts\" -o -name \"*.tsx\" | xargs grep -l \"const.*= auth()\" 2>\u002Fdev\u002Fnull | while read file; do\n  sed -i 's\u002Fconst \\(.*\\) = auth()\u002Fconst \\1 = await auth()\u002Fg' \"$file\"\n  echo \"  Fixed: $file\"\ndone\n\n# 2. Fix import paths\necho \"Updating import paths...\"\nfind . -name \"*.ts\" -o -name \"*.tsx\" | xargs grep -l \"from '@clerk\u002Fnextjs'\" 2>\u002Fdev\u002Fnull | while read file; do\n  if grep -q \"auth\\|currentUser\\|clerkClient\" \"$file\"; then\n    sed -i \"s\u002Ffrom '@clerk\\\u002Fnextjs'\u002Ffrom '@clerk\\\u002Fnextjs\\\u002Fserver'\u002Fg\" \"$file\"\n    echo \"  Fixed: $file\"\n  fi\ndone\n\necho \"Done. Run 'npm run build' to check for remaining issues.\"\n```\n\n## Resources\n- [Clerk Changelog](https:\u002F\u002Fclerk.com\u002Fchangelog)\n- [Clerk Upgrade Guides](https:\u002F\u002Fclerk.com\u002Fdocs\u002Fupgrade-guides)\n- [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fclerk\u002Fjavascript\u002Freleases)\n\n## Next Steps\nAfter upgrade, review `clerk-ci-integration` for CI\u002FCD updates.\n\n","# Clerk Upgrade & Migration\n\n## Current State\n!`npm list @clerk\u002Fnextjs @clerk\u002Fclerk-react @clerk\u002Fexpress 2>\u002Fdev\u002Fnull | grep clerk || echo 'No Clerk packages found'`\n\n## Overview\nSafely upgrade Clerk SDK versions and handle breaking changes. Covers version checking, upgrade procedures, common migration patterns, and rollback planning.\n\n## Prerequisites\n- Current Clerk integration working\n- Git repository with clean working state\n- Test environment available for validation\n\n## Instructions\n\n### Step 1: Check Current Version and Available Updates\n```bash\n# Check installed version\nnpm list @clerk\u002Fnextjs\n\n# Check latest available\nnpm view @clerk\u002Fnextjs version\n\n# Check all Clerk packages and their versions\nnpm outdated | grep clerk\n```\n\n### Step 2: Review Breaking Changes\n```bash\n# View changelog for the target version\nnpx open-cli https:\u002F\u002Fclerk.com\u002Fchangelog\n\n# Check GitHub releases for migration notes\nnpx open-cli https:\u002F\u002Fgithub.com\u002Fclerk\u002Fjavascript\u002Freleases\n```\n\nKey version milestones to watch for:\n- **v5 to v6**: `auth()` became async (must `await auth()`)\n- **v5 to v6**: `authMiddleware` renamed to `clerkMiddleware`\n- **v5 to v6**: Import paths changed to `@clerk\u002Fnextjs\u002Fserver`\n\n### Step 3: Upgrade Process\n```bash\n# Create upgrade branch\ngit checkout -b chore\u002Fupgrade-clerk\n\n# Upgrade all Clerk packages together (they must version-match)\nnpm install @clerk\u002Fnextjs@latest @clerk\u002Fthemes@latest\n\n# If using other Clerk packages:\n# npm install @clerk\u002Fclerk-react@latest @clerk\u002Fexpress@latest @clerk\u002Fbackend@latest\n\n# Verify no version mismatches\nnpm list | grep clerk\n```\n\n### Step 4: Handle Common Migration Patterns\n\n**v5 to v6: `auth()` is now async**\n```typescript\n\u002F\u002F BEFORE (v5): auth() was synchronous\n\u002F\u002F const { userId } = auth()\n\n\u002F\u002F AFTER (v6): auth() returns a Promise\nconst { userId } = await auth()\n```\n\nFind all affected files:\n```bash\n# Search for synchronous auth() calls that need await\ngrep -rn \"const.*= auth()\" --include=\"*.ts\" --include=\"*.tsx\" | grep -v \"await\"\n```\n\n**v5 to v6: Middleware migration**\n```typescript\n\u002F\u002F BEFORE (v5):\n\u002F\u002F import { authMiddleware } from '@clerk\u002Fnextjs'\n\u002F\u002F export default authMiddleware({ publicRoutes: ['\u002F'] })\n\n\u002F\u002F AFTER (v6):\nimport { clerkMiddleware, createRouteMatcher } from '@clerk\u002Fnextjs\u002Fserver'\n\nconst isPublicRoute = createRouteMatcher(['\u002F'])\n\nexport default clerkMiddleware(async (auth, req) => {\n  if (!isPublicRoute(req)) {\n    await auth.protect()\n  }\n})\n```\n\n**v5 to v6: Import path changes**\n```typescript\n\u002F\u002F BEFORE:\n\u002F\u002F import { auth, currentUser } from '@clerk\u002Fnextjs'\n\n\u002F\u002F AFTER:\nimport { auth, currentUser } from '@clerk\u002Fnextjs\u002Fserver'\n```\n\nFix import paths across codebase:\n```bash\n# Find files using old import path\ngrep -rn \"from '@clerk\u002Fnextjs'\" --include=\"*.ts\" --include=\"*.tsx\" | grep -v \"node_modules\" | grep -v \"\u002Fserver\"\n```\n\n### Step 5: Update Type Definitions\n```typescript\n\u002F\u002F If using custom type extensions, update them\n\u002F\u002F BEFORE:\n\u002F\u002F declare module '@clerk\u002Fnextjs' { ... }\n\n\u002F\u002F AFTER:\ndeclare module '@clerk\u002Fnextjs\u002Fserver' {\n  interface AuthObject {\n    \u002F\u002F Custom session claims type\n    sessionClaims?: {\n      metadata?: {\n        role?: string\n      }\n    }\n  }\n}\n```\n\n### Step 6: Test Upgrade\n```bash\n# Build to catch type errors\nnpm run build\n\n# Run tests\nnpm test\n\n# Start dev server and test manually\nnpm run dev\n\n# Test critical flows:\n# 1. Sign in with email\u002Fpassword\n# 2. Sign in with OAuth\n# 3. Protected route access\n# 4. API route authentication\n# 5. Webhook endpoint\n# 6. Sign out\n```\n\n### Step 7: Rollback Plan\n```bash\n# If upgrade fails, rollback to previous version\ngit stash  # Save any manual changes\n\n# Install previous version\nnpm install @clerk\u002Fnextjs@5.x.x  # Replace with your previous version\n\n# Or restore from git\ngit checkout main -- package.json package-lock.json\nnpm install\n\n# Verify rollback works\nnpm run build && npm test\n```\n\n## Output\n- Clerk SDK upgraded to latest version\n- Breaking changes migrated (async auth, new middleware, import paths)\n- Type definitions updated\n- All tests passing\n- Rollback procedure documented\n\n## Error Handling\n| Error | Cause | Solution |\n|-------|-------|----------|\n| Type errors after upgrade | API signature changes | Add `await` to `auth()`, update imports |\n| `authMiddleware is not exported` | Renamed in v6 | Use `clerkMiddleware` from `@clerk\u002Fnextjs\u002Fserver` |\n| `auth() returns Promise` | Now async in v6 | Add `await` to all `auth()` calls |\n| Import not found | Path changed | Use `@clerk\u002Fnextjs\u002Fserver` for server-side imports |\n| Version mismatch | Clerk packages on different versions | Update all `@clerk\u002F*` packages together |\n\n## Examples\n\n### Automated Migration Script\n```bash\n#!\u002Fbin\u002Fbash\n# scripts\u002Fmigrate-clerk-v6.sh\nset -euo pipefail\n\necho \"=== Clerk v5 to v6 Migration ===\"\n\n# 1. Fix auth() calls (add await)\necho \"Adding await to auth() calls...\"\nfind . -name \"*.ts\" -o -name \"*.tsx\" | xargs grep -l \"const.*= auth()\" 2>\u002Fdev\u002Fnull | while read file; do\n  sed -i 's\u002Fconst \\(.*\\) = auth()\u002Fconst \\1 = await auth()\u002Fg' \"$file\"\n  echo \"  Fixed: $file\"\ndone\n\n# 2. Fix import paths\necho \"Updating import paths...\"\nfind . -name \"*.ts\" -o -name \"*.tsx\" | xargs grep -l \"from '@clerk\u002Fnextjs'\" 2>\u002Fdev\u002Fnull | while read file; do\n  if grep -q \"auth\\|currentUser\\|clerkClient\" \"$file\"; then\n    sed -i \"s\u002Ffrom '@clerk\\\u002Fnextjs'\u002Ffrom '@clerk\\\u002Fnextjs\\\u002Fserver'\u002Fg\" \"$file\"\n    echo \"  Fixed: $file\"\n  fi\ndone\n\necho \"Done. Run 'npm run build' to check for remaining issues.\"\n```\n\n## Resources\n- [Clerk Changelog](https:\u002F\u002Fclerk.com\u002Fchangelog)\n- [Clerk Upgrade Guides](https:\u002F\u002Fclerk.com\u002Fdocs\u002Fupgrade-guides)\n- [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fclerk\u002Fjavascript\u002Freleases)\n\n## Next Steps\nAfter upgrade, review `clerk-ci-integration` for CI\u002FCD updates.\n\n",{"name":5,"tags":44,"author":45,"license":15,"version":46,"description":47,"allowed-tools":48,"compatible-with":49},[35,21,22],"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Manage Clerk SDK version upgrades and handle breaking changes.\nUse when upgrading Clerk packages, migrating to new SDK versions,\nor handling deprecation warnings.\nTrigger with phrases like \"upgrade clerk\", \"clerk migration\",\n\"update clerk SDK\", \"clerk breaking changes\".\n","Read, Write, Edit, Bash(npm:*), Bash(pnpm:*), Grep","claude-code, codex, openclaw","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fclerk-upgrade-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":60,"prompt":69,"zipAvailable":70},[61,64,67],{"tool":62,"command":63},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill clerk-upgrade-migration",{"tool":65,"command":66},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill clerk-upgrade-migration",{"tool":26,"command":68},"pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill clerk-upgrade-migration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fclerk-upgrade-migration\u002FSKILL.md",true,[],[73,87,97,106,112,119],{"skillNo":74,"name":75,"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":76,"categories":77,"keywords":83,"publishedAt":39},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[84,85,86],"model","model hierarchy","model hierarchy skill",{"skillNo":88,"name":89,"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":90,"categories":91,"keywords":93,"publishedAt":39},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[92],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},[94,95,96],"MCP","zoom","zoom mcp",{"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":102,"publishedAt":39},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[103,104,105,95],"sdk","zoom apps sdk","apps",{"skillNo":107,"name":108,"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":109,"categories":110,"keywords":111,"publishedAt":39},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[108],{"skillNo":113,"name":114,"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":115,"categories":116,"keywords":118,"publishedAt":39},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[117],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},[114],{"skillNo":120,"name":121,"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":122,"categories":123,"keywords":124,"publishedAt":39},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[121]]