instrument-data-to-all…
Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when…
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.
$ npx -y skills add anthropics/knowledge-work-plugins --skill webhooks --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/webhooksContext preview
The summary Claude sees to decide when to auto-load this skill.
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.
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.
Repo: anthropics/knowledge-work-plugins
Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when…
Run nf-core bioinformatics pipelines (rnaseq, sarek, atacseq) on sequencing data. Use when analyzing RNA-seq, WGS/WES, or ATAC-seq data—either local FASTQs or…
This skill should be used when scientists need help with research problem selection, project ideation, troubleshooting stuck projects, or strategic scientific…
Deep learning for single-cell analysis using scvi-tools. This skill should be used when users need (1) data integration and batch correction with scVI/scANVI,…
Performs quality control on single-cell RNA-seq data (.h5ad or .h5 files) using scverse best practices with MAD-based filtering and comprehensive…
Set up your bio-research environment and explore available tools. Use when first getting oriented with the plugin, checking which literature, drug-discovery,…