Zoom
Find, create, reschedule, and cancel the user's Zoom meetings through per-user OAuth.
Install
npx skills add yc-software/qm --skill zoom -g -a claude-code -y- Repository
- yc-software/qm15.6k
- Category
- Engineering
- Updated
- 3d ago
- License
- MIT
- Context cost
- Mediumabout 1,657 tokens
- Runs scripts
- No, instructions only
What it does
Find, create, reschedule, and cancel the user's Zoom meetings through per-user OAuth.
Zoom
Use this skill when the user asks for a Zoom meeting or link, wants to know what Zoom meetings they have coming up, or wants to move or cancel one.
This is an OAuth connector. The resolved user's Zoom token already lives on your computer as an environment variable (the way a logged-in CLI's cached credential would):
$VAULT_TOKEN_API_ZOOM_US, forapi.zoom.us
Pass it as -H "Authorization: Bearer $VAULT_TOKEN_API_ZOOM_US". Never ask the user for a
token, log it, or use another principal's credential.
Per-user connector tokens are present in the user's own DM and personal scheduled tasks, and in a shared room or channel automation only when the user has opened their connections there. If the variable is empty in a shared room, ask them to DM you instead of telling them to reconnect; empty in their DM means they haven't connected Zoom, point them to the Connectors page.
Zoom error codes: 124 (invalid access token) means they need to reconnect Zoom. 4711
("does not contain scopes") means their token lacks that scope, if the org's Zoom app
already has it they reconnect, otherwise an admin adds it to the app first. 3001 means the
meeting does not exist or is not theirs.
Writes require approval
Creating, updating, or deleting a meeting is a write. Show the exact topic, start time with
timezone, and duration (or which meeting changes and how) and ask for approval before
running it. Reads need no approval. In a shared channel, don't post the passcode or full
join_url unless everyone there may join.
Never share start_url. It embeds a host token that lets anyone start the meeting as
the user. Responses that carry it go through jq below so it never reaches your output.
Find meetings
Who the user is, and their default timezone:
curl -sS 'https://api.zoom.us/v2/users/me' \
-H "Authorization: Bearer $VAULT_TOKEN_API_ZOOM_US" | jq '{id, email, timezone, code, message}'
