Anima webhooks events
'Use Figma webhooks to trigger automatic Anima code generation on design changes.From its SKILL.md
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill anima-webhooks-eventsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.9 KB, 856 tokens by cl100k_base, as published. Nobody here has run it
Anima Webhooks & Events
Overview
Anima doesn't have its own webhooks, but you can use Figma Webhooks (v2 API) to detect design changes and trigger Anima code generation automatically. This creates an event-driven design-to-code pipeline.
Instructions
Step 1: Register Figma Webhook
# Figma Webhooks API (requires team-level access)
curl -X POST "https://api.figma.com/v2/webhooks" \
-H "X-Figma-Token: ${FIGMA_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"event_type": "FILE_VERSION_UPDATE",
"team_id": "YOUR_TEAM_ID",
"endpoint": "https://your-server.com/webhooks/figma",
"passcode": "your-webhook-secret",
"description": "Trigger Anima code generation on design changes"
}'
Step 2: Webhook Handler
// src/webhooks/figma-handler.ts
import express from 'express';
import { Anima } from '@animaapp/anima-sdk';
const router = express.Router();
const anima = new Anima({ auth: { token: process.env.ANIMA_TOKEN! } });
interface FigmaWebhookEvent {
event_type: 'FILE_VERSION_UPDATE' | 'FILE_UPDATE' | 'FILE_DELETE';
file_key: string;
file_name: string;
triggered_by: { id: string; handle: string };
timestamp: string;
passcode: string;
}
router.post('/webhooks/figma', express.json(), async (req, res) => {
const event = req.body as FigmaWebhookEvent;
// Verify passcode
if (event.passcode !== process.env.FIGMA_WEBHOOK_SECRET) {
return res.status(401).json({ error: 'Invalid passcode' });
}
// Only process file version updates
if (event.event_type !== 'FILE_VERSION_UPDATE') {
return res.status(200).json({ skipped: true });
}
console.log(`Design changed: ${event.file_name} by ${event.triggered_by.handle}`);
// Trigger async generation — respond immediately
regenerateComponents(event.file_key).catch(console.error);
res.status(200).json({ accepted: true });
});
async function regenerateComponents(fileKey: string) {
const COMPONENT_NODES = ['1:2', '3:4', '5:6']; // Your component node IDs
for (const nodeId of COMPONENT_NODES) {
try {
const { files } = await anima.generateCode({
fileKey,
figmaToken: process.env.FIGMA_TOKEN!,
nodesId: [nodeId],
settings: { language: 'typescript', framework: 'react', styling: 'tailwind' },
});
console.log(`Regenerated node ${nodeId}: ${files.length} files`);
await new Promise(r => setTimeout(r, 6000)); // Rate limit
} catch (err) {
console.error(`Failed to regenerate ${nodeId}:`, err);
}
}
}
export default router;
Step 3: Figma Webhook Event Types
| Event Type | Trigger | Use Case |
|---|---|---|
FILE_VERSION_UPDATE | New version saved | Regenerate components |
FILE_UPDATE | File modified (real-time) | Too frequent — use version instead |
FILE_DELETE | File deleted | Clean up generated code |
FILE_COMMENT | Comment added | Notify design review channel |
Output
- Figma webhook registration for design change detection
- Event handler triggering Anima code generation on file updates
- Rate-limited async regeneration pipeline
Resources
Next Steps
For performance optimization, see anima-performance-tuning.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.