zoom
$
npx mdskill add sonichi/sutando/zoomManifest-loaded skill that contributes three Zoom inline tools into the agent's runtime tool table. Picked up at startup by `loadSkillManifestTools()` in `src/inline-tools.ts` and merged into `inlineTools` + `ownerOnlyTools`, so the tools reach both the web voice agent and the phone agent for owner callers.
SKILL.md
.github/skills/zoomView on GitHub ↗
--- name: zoom description: "Zoom meeting control for Sutando's voice and phone agents — contributes the summon (join + screen share), dismiss (leave meeting), and join_zoom (join with computer audio, no share) inline tools." when_to_use: "Loaded automatically at agent startup as a manifest skill — its tools fire when the user says 'summon', 'share my screen', 'start zoom', 'join the zoom', 'dismiss', 'leave zoom', etc. Not directly slash-invoked." --- # Zoom Manifest-loaded skill that contributes three Zoom inline tools into the agent's runtime tool table. Picked up at startup by `loadSkillManifestTools()` in `src/inline-tools.ts` and merged into `inlineTools` + `ownerOnlyTools`, so the tools reach both the web voice agent and the phone agent for owner callers. ## Tools - **`summon`** — opens Zoom (via the `zoommtg://` deeplink), joins the meeting, retries the Join click, and starts screen sharing so the user can see and control the Mac remotely. Optionally dials in via the phone server for voice. Use for "summon", "share my screen", "start zoom", "let me see your screen". - **`dismiss`** — leaves the current Zoom meeting (stops screen share, opens the leave dialog, confirms; force-kills Zoom if windows linger). Use for "dismiss", "leave zoom", "end meeting", "hang up zoom". - **`join_zoom`** — joins a Zoom meeting via the desktop app with computer audio, no screen share. Use for "join the zoom", "join meeting", or when the user provides a meeting ID. ## Configuration - **`ZOOM_DEFAULT_SHARE_SCREEN`** (non-secret, in `manifest.json` `config`) — `"true"` by default. Set to `"false"` in the host environment to make `summon` skip screen sharing unless the caller explicitly passes `shareScreen: true`. - **`ZOOM_PERSONAL_MEETING_ID`**, **`ZOOM_PERSONAL_PASSCODE`** (secrets — host `.env` only, never in the manifest) — the personal-room defaults used when `summon` / `join_zoom` are called without an explicit meeting ID. ## Notes - Extracted from `src/meeting-tools.ts` in issue #786. - Converted from a static hard-import into core to a manifest-loaded skill in issue #976, so core no longer has a compile-time dependency on `skills/zoom/tools.ts` and the skill is genuinely optional. - `skills/discord-voice` intentionally overrides `dismiss` with a Discord-specific implementation (SIGTERM self instead of Zoom AppleScript); its dedupe-by-name loop keeps the override and drops this skill's `dismiss`.
More from sonichi/sutando
- agent-registryLocal Agent Registry — a standalone, dependency-free service that tracks running Claude Code (and other) agent instances. Agents self-register on startup and heartbeat while alive; the Electron overlay and Sutando dashboard read the live list. Use when you need to know which coding agents are running, where, and since when.
- bot2bot-postPost a coordination message from this bot to the shared bot2bot channel, @-mentioning the other Sutando node.
- claude-codexBash wrapper around the local Codex CLI for non-interactive runs from inside Sutando (bridges, cron, scripts). For interactive code review or task hand-off from this Claude Code session, prefer the official `/codex:*` plugin commands; this skill is the file-bridge-compatible path that `discord-bridge.py` invokes for team-tier sandboxed delegation.
- claude-geminiUse the local Gemini CLI from Claude Code with the user's existing Gemini authentication or API configuration. Use for large-context repo scans, multimodal analysis, second-opinion planning, or structured Gemini runs in the current workspace.
- claude-routerChoose between the local Codex CLI and Gemini CLI from Claude Code. Use for automatic model selection when the user wants the best local delegate for code review, repo-wide analysis, planning, or implementation.
- cross-node-syncRsync-over-ssh sync between Sutando nodes (Mac Studio and MacBook) for shared memory + notes. Optional — core runs fine without it; enables automatic cross-bot learning and note propagation by running from the proactive-loop cron on each pass.
- deal-finderScan configured sources (Craigslist now; eBay + Facebook Marketplace planned) for used-item listings matching the owner's criteria. Currently configured for a Mac mini search (M2+, 16GB+, 512GB+, ≤$500, near 94566). Notify owner via SMS + Telegram on a match.
- electron-overlay-dimmingReusable pattern for focus-based auto-dimming of Electron overlay windows — when the app loses focus, all overlay windows fade to a low opacity; when an overlay regains focus, they return to their configured opacity. Use when building always-on-top Electron overlays that should recede while the user works in other apps.
- gemini-ttsRender text to mp3 via Google Gemini Flash TTS. Free-tier eligible (1500 req/day). Use for video narration, demo voiceovers, audio notes. Parallels openai-tts; default for make-viral-video.
- macos-toolsmacOS native integrations: screen capture, calendar, reminders, contacts, email (Mail.app), Spotlight search. Use when the user asks about their screen, schedule, to-do list, contacts, or wants to send email on macOS.