instrument-data-to-all…
Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D…
Reference skill for Zoom webhooks. Use after routing to an event-driven workflow when implementing subscriptions, signature verification, delivery handling, retries, or event-type selection.
Claude Code
$ npx -y skills add anthropics/knowledge-work-plugins --skill webhooks --agent claude-code
Codex
$ npx skills add anthropics/knowledge-work-plugins --skill webhooks -a codex -y
Cursor
$ npx skills add anthropics/knowledge-work-plugins --skill webhooks -a cursor -y
Gemini CLI
$ npx skills add anthropics/knowledge-work-plugins --skill webhooks -a gemini-cli -y
GitHub Copilot
$ npx skills add anthropics/knowledge-work-plugins --skill webhooks -a github-copilot -y
OpenCode
$ npx skills add anthropics/knowledge-work-plugins --skill webhooks -a opencode -y
Windsurf
$ npx skills add anthropics/knowledge-work-plugins --skill webhooks -a windsurf -y
name: setup-zoom-webhooks description: Reference skill for Zoom webhooks. Use after routing to an event-driven workflow when implementing subscriptions, signature verification, delivery handling, retries, or event-type selection. triggers: - "zoom webhook" - "webhook signature" - "x-zm-signature" - "event subscription" - "recording completed webhook"
Background reference for Zoom event delivery over HTTP. Prefer workflow skills first, then use this file for verification, subscription, and delivery details.
> **Need help with authentication?** See the **[zoom-oauth](../oauth/SKILL.md)** skill for OAuth setup.
// Express.js webhook handler
const crypto = require('crypto');
// Capture raw body for signature verification (avoid re-serializing JSON).
app.use(require('express').json({
verify: (req, _res, buf) => { req.rawBody = buf; }
}));
app.post('/webhook', (req, res) => {
// Verify webhook signature
const signature = req.headers['x-zm-signature'];
const timestamp = req.headers['x-zm-request-timestamp'];
const body = req.rawBody ? req.rawBody.toString('utf8') : JSON.stringify(req.body);
const payload = `v0:${timestamp}:${body}`;
const hash = crypto.createHmac('sha256', WEBHOOK_SECRET)
.update(payload).digest('hex');
if (signature !== `v0=${hash}`) {
return res.status(401).send('Invalid signature');
}
// Handle event
const { event, payload } = req.body;
console.log(`Received: ${event}`);
res.status(200).send();
});| Event | Description | |-------|-------------| | `meeting.started` | Meeting has started | | `meeting.ended` | Meeting has ended | | `meeting.participant_joined` | Participant joined meeting | | `recording.completed` | Cloud recording ready | | `user.created` | New user added |
| Type | Repository | Stars | |------|------------|-------| | Node.js | [webhook-sample](https://github.com/zoom/webhook-sample) | 34 | | PostgreSQL | [webhook-to-postgres](https://github.com/zoom/webhook-to-postgres) | 5 | | Go/Fiber | [Go-Webhooks](https://github.com/zoom/Go-Webhooks) | - | | Header Auth | [zoom-webhook-verification-headers](https://github.com/zoom/zoom-webhook-verification-headers) | - |
| Language | Repository | Description | |----------|------------|-------------| | Laravel | [binary-cats/laravel-webhooks](https://github.com/binary-cats/laravel-webhooks) | Laravel webhook handler | | AWS Lambda | [splunk/zoom-webhook-to-hec](https://github.com/splunk/zoom-webhook-to-hec) | Serverless to Splunk HEC | | Node.js | [Will4950/zoom-webhook-listener](https://github.com/Will4950/zoom-webhook-listener) | Webhook forwarder | | Express+Redis | [ojusave/eventSubscriptionPlayground](https://github.com/ojusave/eventSubscriptionPlayground) | Socket.io + Redis |
| Language | Repository | |----------|------------| | Node.js | [Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-NodeJS](https://github.com/tanchunsiong/Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-NodeJS) | | C# | [Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-ASP.NET-Core-C-](https://github.com/tanchunsiong/Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-ASP.NET-Core-C-) | | Java | [Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Java-Spring-Boot](https://github.com/tanchunsiong/Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Java-Spring-Boot) | | Python | [Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Python](https://github.com/tanchunsiong/Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Python) | | PHP | [Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-PHP](https://github.com/tanchunsiong/Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-PHP) |
**Full list**: See [general/references/community-repos.md](../general/references/community-repos.md)
Plugins that turn Claude into a specialist for your role, team, and company. Built for Claude Cowork, also compatible with Claude Code.
Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D…
Run nf-core bioinformatics pipelines (rnaseq, sarek, atacseq) on sequencing data. Use when analyzing RNA-seq, WGS/WES, or…
This skill should be used when scientists need help with research problem selection, project ideation, troubleshooting stuck…
Deep learning for single-cell analysis using scvi-tools. This skill should be used when users need (1) data integration and batch…
Performs quality control on single-cell RNA-seq data (.h5ad or .h5 files) using scverse best practices with MAD-based filtering…
Set up your bio-research environment and explore available tools. Use when first getting oriented with the plugin, checking which…
Turn repeatable outputs of a one-person company into compounding assets. Use when Codex needs to explain asset-compounding…
dontbesilent 商业工具箱的技能调度台,根据当前问题和反馈选择下一步,在对话中直接执行、澄清、组合或对照尝试 Skill。用户不知道从哪里开始、需要调整处理方法、第一次使用…
Help define company values and culture for a minimalist business. Use when someone is setting up their company culture, preparing…