[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FKEMHBFC21WMR830W6EXGZ":3,"skill-same:01M6FKEMHBFC21WMR830W6EXGZ":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6FKEMHBFC21WMR830W6EXGZ","client-view",null,"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\u002Fzoom\u002Fskills\u002Fclient-view\u002FSKILL.md",[],[18,19,20],"view","client","client view","2026-11-10 10:12:30",false,"# Zoom Meeting SDK Web - Client View\n\nFull-page Zoom meeting experience embedded in your web application. Client View provides the familiar Zoom interface with minimal customization needed.\n\n## Overview\n\nClient View uses the `ZoomMtg` global singleton to render a full-page meeting experience identical to the Zoom Web Client.\n\n| Aspect | Details |\n|--------|---------|\n| **API Object** | `ZoomMtg` (global singleton) |\n| **API Style** | Callback-based |\n| **UI** | Full-page takeover |\n| **Password param** | `passWord` (capital W) |\n| **Events** | `inMeetingServiceListener()` |\n| **Best For** | Quick integration, standard Zoom UI |\n\n## Installation\n\n### NPM\n\n```bash\nnpm install @zoom\u002Fmeetingsdk --save\n```\n\n```javascript\nimport { ZoomMtg } from '@zoom\u002Fmeetingsdk';\n```\n\n### CDN\n\n```html\n\u003Cscript src=\"https:\u002F\u002Fsource.zoom.us\u002F{VERSION}\u002Flib\u002Fvendor\u002Freact.min.js\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Fsource.zoom.us\u002F{VERSION}\u002Flib\u002Fvendor\u002Freact-dom.min.js\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Fsource.zoom.us\u002F{VERSION}\u002Flib\u002Fvendor\u002Fredux.min.js\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Fsource.zoom.us\u002F{VERSION}\u002Flib\u002Fvendor\u002Fredux-thunk.min.js\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Fsource.zoom.us\u002F{VERSION}\u002Flib\u002Fvendor\u002Flodash.min.js\">\u003C\u002Fscript>\n\u003Cscript src=\"https:\u002F\u002Fsource.zoom.us\u002Fzoom-meeting-{VERSION}.min.js\">\u003C\u002Fscript>\n```\n\n## Complete Initialization Flow\n\n```javascript\n\u002F\u002F Step 1: Check browser compatibility\nconsole.log('Requirements:', ZoomMtg.checkSystemRequirements());\n\n\u002F\u002F Step 2: Set CDN path (optional - for China or custom hosting)\n\u002F\u002F ZoomMtg.setZoomJSLib('https:\u002F\u002Fsource.zoom.us\u002F{VERSION}\u002Flib', '\u002Fav');\n\n\u002F\u002F Step 3: Preload WebAssembly modules\nZoomMtg.preLoadWasm();\nZoomMtg.prepareWebSDK();\n\n\u002F\u002F Step 4: Load language resources\nZoomMtg.i18n.load('en-US');\nZoomMtg.i18n.onLoad(() => {\n  \n  \u002F\u002F Step 5: Initialize SDK\n  ZoomMtg.init({\n    leaveUrl: '\u002Fmeeting-ended',\n    patchJsMedia: true,\n    disableCORP: !window.crossOriginIsolated,\n    success: () => {\n      console.log('SDK initialized');\n      \n      \u002F\u002F Step 6: Join meeting\n      const joinPayload = {\n        signature: signature,\n        meetingNumber: meetingNumber,\n        userName: userName,\n        passWord: passWord,\n        success: (res) => {\n          console.log('Joined meeting');\n\n          \u002F\u002F Step 7: Post-join operations\n          ZoomMtg.getAttendeeslist({});\n          ZoomMtg.getCurrentUser({\n            success: (res) => console.log('Current user:', res.result.currentUser)\n          });\n        },\n        error: (err) => console.error('Join failed:', err)\n      };\n\n      \u002F\u002F IMPORTANT: only include optional fields when they have real values\n      \u002F\u002F Passing undefined for some optional fields can cause runtime join errors\n      if (userEmail) joinPayload.userEmail = userEmail;\n      if (tk) joinPayload.tk = tk;\n      if (zak) joinPayload.zak = zak;\n\n      ZoomMtg.join(joinPayload);\n    },\n    error: (err) => console.error('Init failed:', err)\n  });\n});\n```\n\n## ZoomMtg.init() - All Options\n\n### Required\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `leaveUrl` | `string` | URL to redirect after leaving meeting |\n\n### UI Customization\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `showMeetingHeader` | `boolean` | `true` | Show meeting number and topic |\n| `disableInvite` | `boolean` | `false` | Hide invite button |\n| `disableCallOut` | `boolean` | `false` | Hide call out option |\n| `disableRecord` | `boolean` | `false` | Hide record button |\n| `disableJoinAudio` | `boolean` | `false` | Hide join audio option |\n| `disablePreview` | `boolean` | `false` | Skip audio\u002Fvideo preview |\n| `audioPanelAlwaysOpen` | `boolean` | `false` | Keep audio panel open |\n| `showPureSharingContent` | `boolean` | `false` | Prevent overlays on shared content |\n| `videoHeader` | `boolean` | `true` | Show video tile header |\n| `isLockBottom` | `boolean` | `true` | Show\u002Fhide footer |\n| `videoDrag` | `boolean` | `true` | Enable drag video tiles |\n| `sharingMode` | `string` | `'both'` | `'both'` or `'fit'` |\n| `screenShare` | `boolean` | `true` | Enable browser URL sharing |\n| `hideShareAudioOption` | `boolean` | `false` | Hide \"Share tab audio\" checkbox |\n| `disablePictureInPicture` | `boolean` | `false` | Disable PiP mode |\n| `disableZoomLogo` | `boolean` | `false` | Remove Zoom logo (deprecated) |\n| `defaultView` | `string` | `'speaker'` | `'gallery'`, `'speaker'`, `'multiSpeaker'` |\n\n### Feature Toggles\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `isSupportAV` | `boolean` | `true` | Enable audio\u002Fvideo |\n| `isSupportChat` | `boolean` | `true` | Enable in-meeting chat |\n| `isSupportQA` | `boolean` | `true` | Enable webinar Q&A |\n| `isSupportCC` | `boolean` | `true` | Enable closed captions |\n| `isSupportPolling` | `boolean` | `true` | Enable polling |\n| `isSupportBreakout` | `boolean` | `true` | Enable breakout rooms |\n| `isSupportNonverbal` | `boolean` | `true` | Enable nonverbal feedback |\n| `isSupportSimulive` | `boolean` | `false` | Enable Simulive |\n| `disableVoIP` | `boolean` | `false` | Disable VoIP |\n| `disableReport` | `boolean` | `false` | Disable report feature |\n\n### Video Quality\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `enableHD` | `boolean` | `true` (≥2.8.0) | Enable 720p video |\n| `enableFullHD` | `boolean` | `false` | Enable 1080p for webinar attendees |\n\n### Advanced\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `debug` | `boolean` | `false` | Enable debug logging |\n| `patchJsMedia` | `boolean` | `false` | Auto-apply media fixes |\n| `disableCORP` | `boolean` | `false` | Disable web isolation |\n| `helper` | `string` | `''` | Path to helper.html |\n| `externalLinkPage` | `string` | - | Page for external links |\n| `webEndpoint` | `string` | - | For ZFG environments |\n| `leaveOnPageUnload` | `boolean` | `false` | Auto cleanup on page close |\n| `isShowJoiningErrorDialog` | `boolean` | `true` | Show error dialog on join failure |\n| `meetingInfo` | `Array\u003Cstring>` | `[...]` | Meeting info to display |\n| `inviteUrlFormat` | `string` | `''` | Custom invite URL format |\n| `loginWindow` | `object` | `{width: 400, height: 380}` | Login popup size |\n\n### Callbacks\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `success` | `Function` | Called on successful init |\n| `error` | `Function` | Called on init failure |\n\n## ZoomMtg.join() - All Options\n\n### Required\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `signature` | `string` | SDK JWT from backend (v5.0+: must include appKey prefix) |\n| `meetingNumber` | `string \\| number` | Meeting or webinar number |\n| `userName` | `string` | Display name |\n| `passWord` | `string` | Meeting password (capital W!) |\n\n### Authentication\n\n| Parameter | Type | When Required | Description |\n|-----------|------|---------------|-------------|\n| `zak` | `string` | Starting as host | Host's Zoom Access Key |\n| `tk` | `string` | Registration required | Registrant token |\n| `userEmail` | `string` | Webinars | User email |\n| `obfToken` | `string` | March 2026+ | App Privilege Token |\n\n### Optional\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `customerKey` | `string` | Custom ID (max 36 chars) |\n| `recordingToken` | `string` | Local recording permission |\n\n### Callbacks\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `success` | `Function` | Called on successful join |\n| `error` | `Function` | Called on join failure |\n\n## Event Listeners\n\n### User Events\n\n```javascript\nZoomMtg.inMeetingServiceListener('onUserJoin', (data) => {\n  console.log('User joined:', data);\n  \u002F\u002F { userId, userName, ... }\n});\n\nZoomMtg.inMeetingServiceListener('onUserLeave', (data) => {\n  console.log('User left:', data);\n  \u002F\u002F Reason codes:\n  \u002F\u002F 0: OTHER\n  \u002F\u002F 1: HOST_ENDED_MEETING\n  \u002F\u002F 2: SELF_LEAVE_FROM_IN_MEETING\n  \u002F\u002F 3: SELF_LEAVE_FROM_WAITING_ROOM\n  \u002F\u002F 4: SELF_LEAVE_FROM_WAITING_FOR_HOST_START\n  \u002F\u002F 5: MEETING_TRANSFER\n  \u002F\u002F 6: KICK_OUT_FROM_MEETING\n  \u002F\u002F 7: KICK_OUT_FROM_WAITING_ROOM\n  \u002F\u002F 8: LEAVE_FROM_DISCLAIMER\n});\n\nZoomMtg.inMeetingServiceListener('onUserUpdate', (data) => {\n  console.log('User updated:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onUserIsInWaitingRoom', (data) => {\n  console.log('User in waiting room:', data);\n});\n```\n\n### Meeting Status\n\n```javascript\nZoomMtg.inMeetingServiceListener('onMeetingStatus', (data) => {\n  \u002F\u002F status: 1=connecting, 2=connected, 3=disconnected, 4=reconnecting\n  console.log('Status:', data.status);\n});\n```\n\n### Audio\u002FVideo Events\n\n```javascript\nZoomMtg.inMeetingServiceListener('onActiveSpeaker', (data) => {\n  \u002F\u002F [{userId, userName}]\n  console.log('Active speaker:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onNetworkQualityChange', (data) => {\n  \u002F\u002F {level: 0-5, userId, type: 'uplink'}\n  \u002F\u002F 0-1=bad, 2=normal, 3-5=good\n  console.log('Network quality:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onAudioQos', (data) => {\n  console.log('Audio QoS:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onVideoQos', (data) => {\n  console.log('Video QoS:', data);\n});\n```\n\n### Chat & Communication\n\n```javascript\nZoomMtg.inMeetingServiceListener('onReceiveChatMsg', (data) => {\n  console.log('Chat message:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onReceiveTranscriptionMsg', (data) => {\n  console.log('Transcription:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onReceiveTranslateMsg', (data) => {\n  console.log('Translation:', data);\n});\n```\n\n### Recording & Sharing\n\n```javascript\nZoomMtg.inMeetingServiceListener('onRecordingChange', (data) => {\n  console.log('Recording status:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onShareContentChange', (data) => {\n  console.log('Share content:', data);\n});\n\nZoomMtg.inMeetingServiceListener('receiveSharingChannelReady', (data) => {\n  console.log('Sharing channel ready:', data);\n});\n```\n\n### Breakout Rooms\n\n```javascript\nZoomMtg.inMeetingServiceListener('onRoomStatusChange', (data) => {\n  \u002F\u002F status: 2=InProgress, 3=Closing, 4=Closed\n  console.log('Breakout room status:', data);\n});\n```\n\n### Other Events\n\n```javascript\nZoomMtg.inMeetingServiceListener('onJoinSpeed', (data) => {\n  console.log('Join metrics:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onVbStatusChange', (data) => {\n  console.log('Virtual background status:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onFocusModeStatusChange', (data) => {\n  console.log('Focus mode:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onPictureInPicture', (data) => {\n  console.log('PiP status:', data);\n});\n\nZoomMtg.inMeetingServiceListener('onClaimStatus', (data) => {\n  console.log('Host claim status:', data);\n});\n```\n\n## Common Methods\n\n### Meeting Info\n\n```javascript\n\u002F\u002F Get current user\nZoomMtg.getCurrentUser({\n  success: (res) => console.log(res.result.currentUser)\n});\n\n\u002F\u002F Get all attendees\nZoomMtg.getAttendeeslist({});\n\n\u002F\u002F Get meeting info\nZoomMtg.getCurrentMeetingInfo({\n  success: (res) => console.log(res)\n});\n\n\u002F\u002F Get SDK version\nZoomMtg.getWebSDKVersion({\n  success: (version) => console.log(version)\n});\n```\n\n### Audio\u002FVideo Control\n\n```javascript\n\u002F\u002F Mute\u002Funmute specific user\nZoomMtg.mute({ userId, mute: true });\n\n\u002F\u002F Mute\u002Funmute all\nZoomMtg.muteAll({ muteAll: true });\n\n\u002F\u002F Stop incoming audio\nZoomMtg.stopIncomingAudio({ stop: true });\n\n\u002F\u002F Mirror video\nZoomMtg.mirrorVideo({ mirror: true });\n```\n\n### Chat\n\n```javascript\n\u002F\u002F Send chat message\nZoomMtg.sendChat({\n  message: 'Hello!',\n  userId: 0  \u002F\u002F 0 = everyone\n});\n```\n\n### Meeting Control\n\n```javascript\n\u002F\u002F Leave meeting\nZoomMtg.leaveMeeting({});\n\n\u002F\u002F End meeting (host only)\nZoomMtg.endMeeting({});\n\n\u002F\u002F Lock meeting\nZoomMtg.lockMeeting({ lock: true });\n```\n\n### Host Controls\n\n```javascript\n\u002F\u002F Make host\nZoomMtg.makeHost({ userId });\n\n\u002F\u002F Make co-host\nZoomMtg.makeCoHost({ userId });\n\n\u002F\u002F Remove co-host\nZoomMtg.withdrawCoHost({ userId });\n\n\u002F\u002F Remove participant\nZoomMtg.expel({ userId });\n\n\u002F\u002F Put on hold\nZoomMtg.putOnHold({ userId, bHold: true });\n\n\u002F\u002F Claim host with host key\nZoomMtg.claimHostWithHostKey({ hostKey: '123456' });\n\n\u002F\u002F Reclaim host\nZoomMtg.reclaimHost({});\n\n\u002F\u002F Admit all from waiting room\nZoomMtg.admitAll({});\n```\n\n### Raise Hand\n\n```javascript\n\u002F\u002F Raise hand\nZoomMtg.raiseHand({ userId });\n\n\u002F\u002F Lower hand\nZoomMtg.lowerHand({ oderId });\n\n\u002F\u002F Lower all hands\nZoomMtg.lowerAllHands({});\n```\n\n### Spotlight & Pin\n\n```javascript\n\u002F\u002F Spotlight video\nZoomMtg.operateSpotlight({ oderId, action: 'add' }); \u002F\u002F or 'remove'\n\n\u002F\u002F Pin video\nZoomMtg.operatePin({ oderId, action: 'add' }); \u002F\u002F or 'remove'\n\n\u002F\u002F Allow multi-pin\nZoomMtg.allowMultiPin({ allow: true });\n```\n\n### Screen Share\n\n```javascript\n\u002F\u002F Start screen share\nZoomMtg.startScreenShare({});\n\n\u002F\u002F Share specific source (Electron)\nZoomMtg.shareSource({ source });\n```\n\n### Recording\n\n```javascript\n\u002F\u002F Start\u002Fstop recording\nZoomMtg.record({ record: true }); \u002F\u002F or false\n\n\u002F\u002F Show\u002Fhide record button\nZoomMtg.showRecordFunction({ show: true });\n```\n\n### Breakout Rooms\n\n```javascript\n\u002F\u002F Create breakout room\nZoomMtg.createBreakoutRoom({\n  rooms: [{ name: 'Room 1' }, { name: 'Room 2' }]\n});\n\n\u002F\u002F Open breakout rooms\nZoomMtg.openBreakoutRooms({});\n\n\u002F\u002F Close breakout rooms\nZoomMtg.closeBreakoutRooms({});\n\n\u002F\u002F Join breakout room\nZoomMtg.joinBreakoutRoom({ roomId });\n\n\u002F\u002F Leave breakout room\nZoomMtg.leaveBreakoutRoom({});\n\n\u002F\u002F Move user to breakout room\nZoomMtg.moveUserToBreakoutRoom({ oderId, roomId });\n\n\u002F\u002F Get breakout room status\nZoomMtg.getBreakoutRoomStatus({\n  success: (res) => console.log(res)\n});\n```\n\n### Virtual Background\n\n```javascript\n\u002F\u002F Check support\nZoomMtg.isSupportVirtualBackground({\n  success: (data) => console.log(data.result.isSupport)\n});\n\n\u002F\u002F Set virtual background\nZoomMtg.setVirtualBackground({ imageUrl: '...' });\n\n\u002F\u002F Get VB status\nZoomMtg.getVirtualBackgroundStatus({\n  success: (data) => console.log(data)\n});\n\n\u002F\u002F Lock virtual background (host)\nZoomMtg.lockVirtualBackground({ lock: true });\n```\n\n### UI Control\n\n```javascript\n\u002F\u002F Show\u002Fhide meeting header\nZoomMtg.showMeetingHeader({ show: true });\n\n\u002F\u002F Show\u002Fhide invite button\nZoomMtg.showInviteFunction({ show: true });\n\n\u002F\u002F Show\u002Fhide join audio button\nZoomMtg.showJoinAudioFunction({ show: true });\n\n\u002F\u002F Show\u002Fhide callout button\nZoomMtg.showCalloutFunction({ show: true });\n\n\u002F\u002F Re-render with new options\nZoomMtg.reRender({ lang: 'de-DE' });\n```\n\n### Language\n\n```javascript\n\u002F\u002F Load language\nZoomMtg.i18n.load('de-DE');\n\n\u002F\u002F Reload language\nZoomMtg.i18n.reload('de-DE');\n\n\u002F\u002F Get current language\nZoomMtg.i18n.getCurrentLang();\n\n\u002F\u002F Get all translations\nZoomMtg.i18n.getAll();\n```\n\n## Rate Limits\n\n| Method | Limit |\n|--------|-------|\n| `join()` | 10 seconds |\n| `callOut()` | 10 seconds |\n| `mute()` | 1 second |\n| `muteAll()` | 5 seconds |\n\n## DOM Elements\n\nThe SDK automatically adds these elements:\n- `#zmmtg-root` - Main meeting container\n- `#aria-notify-area` - Accessibility announcements\n\nDo NOT manually create or remove these.\n\n### SPA (React\u002FNext) Overlay Gotcha\n\nIf you \"join\" but see a blank\u002Fblack area or your app shell instead of the meeting UI, the Zoom UI can be rendering **behind** your app layout. Ensure `#zmmtg-root` occupies the viewport and is above other fixed elements:\n\n```css\n#zmmtg-root {\n  position: fixed !important;\n  inset: 0 !important;\n  z-index: 9999 !important;\n}\n```\n\n### Join Payload Sanitization Gotcha\n\nIf `ZoomMtg.join()` succeeds partially but the screen turns black and console shows errors like `Cannot read properties of undefined (reading 'toString')`, sanitize optional fields before calling join.\n\nDo not pass optional keys with `undefined` values (`userEmail`, `tk`, `zak`, etc.). Build a payload and only attach those keys when they are non-empty strings.\n\nAlso prefer `defaultView: 'speaker'` during `ZoomMtg.init()` unless you have SharedArrayBuffer\u002Fgallery-view prerequisites fully configured.\n\n## Resources\n\n- [Main Web SDK Skill](..\u002FSKILL.md)\n- [Reference Index](references\u002FREADME.md)\n- [Error Codes](..\u002Ftroubleshooting\u002Ferror-codes.md)\n- [Common Issues](..\u002Ftroubleshooting\u002Fcommon-issues.md)\n- [SharedArrayBuffer Setup](..\u002Fconcepts\u002Fsharedarraybuffer.md)\n- [Official API Reference](https:\u002F\u002Fmarketplacefront.zoom.us\u002Fsdk\u002Fmeeting\u002Fweb\u002Findex.html)\n\n## Operations\n\n- [RUNBOOK.md](RUNBOOK.md) - 5-minute preflight and debugging checklist.\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fzoom\u002Fskills\u002Fclient-view",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":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill client-view",{"tool":40,"command":41},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill client-view",{"tool":43,"command":44},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill client-view","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fclient-view\u002FSKILL.md",true,[],[49,63,73,82,88,95],{"skillNo":50,"name":51,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":59,"publishedAt":21},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[54],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[60,61,62],"model","model hierarchy","model hierarchy skill",{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":69,"publishedAt":21},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[68],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[70,71,72],"MCP","zoom","zoom mcp",{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":21},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[79,80,81,71],"sdk","zoom apps sdk","apps",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":21},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[84],{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":21},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[93],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[90],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":21},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[97]]