agentsclimarketplace

Macos

Skill zoom/skills/skills/plugin-sdk/macos

Zoom Plugin SDK for native macOS companion applications using Swift or Objective-C to control an installed Zoom Workplace client over IPC. Use for Xcode integration, OAuth initialization, start/join flows, participant controls, audio/video settings, app or monitor sharing, recording, captions, and supported meeting UI operations on macOS.From its SKILL.md

Install
npx -y skills add zoom/skills --skill macos

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

4.6 KB, as published. Nobody here has run it

Zoom Plugin SDK for macOS

Use Swift or Objective-C to control Zoom Workplace from a separate native macOS application.

Start Here

  1. Read Lifecycle and Integration.
  2. Use Package and API Map to locate the authoritative header and sample for a feature.
  3. Use Capabilities to check whether the official client can do the requested operation.
  4. Implement the smallest auth and IPC connection baseline.
  5. Add start/join and meeting-state handling.
  6. Add one feature toolkit at a time.
  7. Use Common Issues when callbacks, linking, permissions, or client compatibility fail.

Baseline Requirements

  • A Zoom Marketplace General app with Plugin SDK enabled.
  • A user OAuth access token containing plugin_sdk:read:connection_meta.
  • Zoom Workplace 7.0.2 or later according to the public setup documentation.
  • Xcode 16.1 or later.
  • The complete signed dependency set from the package's PSDKLibs/ folder.

Package review baseline: zoom-plugin-sdk-macos-universal-7.1.0.595.

Minimal Lifecycle

Retain the listener for the full initialized lifetime:

import Cocoa
import ZoomToolSuite

final class PluginListener: NSObject, ZoomToolSuiteEventListenerProtocol {
    func onAuthResult(_ result: ZoomToolSuiteAuthResult) {
        // Continue only after .success.
    }

    func onIPCConnectStatusChanged(
        _ status: ZoomToolSuiteIPCConnectStatus,
        errorMessage: String?
    ) {
        // Enable controls only after .connected.
    }

    func onMeetingStatusChanged(_ status: ZoomToolSuiteMeetingStatus) {
        // Enable meeting toolkits only after .inMeeting.
    }
}

final class PluginController {
    private let listener = PluginListener()

    func initialize(accessToken: String) {
        let context = ZoomToolSuiteAuthContext()
        context.accessToken = accessToken
        context.domain = "https://zoom.us"
        ZoomToolSuiteAPI.initSDK(context, listener: listener)
    }

    func shutdown() {
        ZoomToolSuiteAPI.uninitSDK()
    }
}

Start or Join

let join = ZoomToolSuiteJoinMeetingParam()
join.displayName = "Display Name"
join.meetingNumber = 1234567890
join.password = ""

let submitted = ZoomToolSuiteAPI.PreMeeting.Launch.joinMeeting(param: join) { result in
    guard result.error_code == .success else {
        return
    }
}

submitted means the SDK accepted the call for processing. The completion result and subsequent meeting-status callbacks determine the actual outcome.

Implementation Guardrails

  • Wait for auth success and .connected IPC status before calling pre-meeting APIs.
  • Wait for .inMeeting before calling meeting feature APIs.
  • Use the relevant ZoomToolSuiteMeetingInstance for default meeting, green room, or breakout-room contexts.
  • Check host/co-host role and feature capability before privileged operations.
  • Keep UI updates on the AppKit main thread if callbacks arrive on another thread.
  • Do not embed client secrets in a distributed macOS app. Use PKCE/public-client behavior or a backend token exchange appropriate to the Marketplace app configuration.
  • Re-sign packaged frameworks and libraries with the application's signing identity.

Feature Routing

TaskAPI family
Start/join, settings window, URL navigationZoomToolSuiteAPI.PreMeeting.Launch
Status, properties, leave/end, statisticsZoomToolSuiteAPI.Meeting.MeetingAPI
Roster, roles, permissions, host controlsZoomToolSuiteAPI.Meeting.Participants
Mute, unmute, mute on entryZoomToolSuiteAPI.Meeting.Audio
Camera, pin, spotlight, avatarZoomToolSuiteAPI.Meeting.Video
Share application, monitor, camera, file, audio, frame, whiteboardZoomToolSuiteAPI.Meeting.Share
Recording, waiting room, chat/UI, captions, Q&A, webinarMatching ZoomToolSuiteAPI.Meeting.* namespace
Device selection and audio/video processing settingsZoomToolSuiteAPI.Setting.Audio and .Video

Sources

Keep looking

Skills are one crate of 618,477. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.