Synaptic SkillsSynapticSkills
MarketplaceSkill GraphCriar SkillMCP ServerPlataformaEnterprise
v0.1.0-beta
Voltar ao Marketplace
AutomationMédioAuto-Sync

Webhook Manager

porTHIAGONOMA·THIAGONOMA· v1.2.0 · atualizado em 2026-04-12T22:48:48.713Z
83
Score

Implementa endpoints de webhook seguros com validação HMAC-SHA256 timing-safe, prevenção de replay attacks, idempotência e processamento assíncrono via queue para alto volume.

webhookhmacsecurityidempotencyqueueintegrationsevents
Linguagens
TypeScriptJavaScript
780Stars
56Forks
11.2KUsos
Fork

Documento do Skill

SKILL.mdwebhook-manager/workflow
Passo-a-passo detalhado do skill, referenciando as fases cognitivas:
1
SENSE — Identificar provider e configuração
Verificar documentação: qual header tem a assinatura? (`X-Hub-Signature-256` no GitHub, `Stripe-Signature` no Stripe)
Configurar secret no dashboard do provider e armazenar em `WEBHOOK_SECRET`
2
RECOMMEND — Implementar handler com validação HMAC
```typescript
// webhook.ts — Next.js App Router
import { createHmac, timingSafeEqual } from 'crypto';
export async function POST(req: Request) {
const rawBody = await req.text(); // CRÍTICO: raw body, não JSON parsed
const signature = req.headers.get('x-hub-signature-256') ?? '';
// Validação HMAC timing-safe
const expected = createHmac('sha256', process.env.WEBHOOK_SECRET!)
.update(rawBody).digest('hex');
const expectedHeader = `sha256=${expected}`;
if (!timingSafeEqual(Buffer.from(signature), Buffer.from(expectedHeader))) {
return new Response('Unauthorized', { status: 401 });
}
// Anti-replay: verificar timestamp
const payload = JSON.parse(rawBody);
const eventTime = payload.timestamp ?? Date.now() / 1000;
if (Math.abs(Date.now() / 1000 - eventTime) > 300) {
return new Response('Request too old', { status: 400 });
}
// Idempotência: verificar se já processado
const eventId = payload.id ?? req.headers.get('x-event-id');
const alreadyProcessed = await redis.get(`webhook:processed:${eventId}`);
if (alreadyProcessed) {
return new Response('Already processed', { status: 200 });
}
// Enqueue para processamento assíncrono (retornar 200 rápido)
await queue.add('webhook', { eventId, type: payload.type, payload });
await redis.setex(`webhook:processed:${eventId}`, 86400, '1');
return new Response('OK', { status: 200 });
}
```
3
RECOMMEND — Worker assíncrono
```typescript
// webhook-worker.ts
queue.process('webhook', async (job) => {
const { eventId, type, payload } = job.data;
try {
await processWebhookEvent(type, payload);
} catch (err) {
// BullMQ retenta automaticamente com exponential backoff
throw err; // job.attemptsMade controla o número de retentativas
}
});
```
4
EVALUATE — Testes
```typescript
it('rejects invalid signature', async () => {
const res = await POST(mockRequest({ signature: 'sha256=invalid' }));
expect(res.status).toBe(401);
});
it('handles duplicate event idempotently', async () => {
await POST(mockRequest({ id: 'evt_123' }));
const res = await POST(mockRequest({ id: 'evt_123' })); // replay
expect(res.status).toBe(200); // não processa de novo, mas retorna 200
});
```
5
REFLECT — Documentar e rotacionar secret
Documentar endpoint no README: URL, eventos suportados, como testar localmente
Configurar rotação de secret a cada 90 dias com janela de dual-validation
Reportar telemetria via mcp-skillschain

Telemetria de Agentes

Execuções
0
total
Taxa de Sucesso
0%
últimos 30d
Latência Média
0.0s
p50
Alucinação
0.0%
detecção
Tokens Entrada
0
avg 0/exec
Tokens Saída
0
avg 0/exec

Uso por Plataforma

Skills Relacionados

Depende deAuthenticate Service
24%
Hebbian Synapse
Composite0.240
w = 0.3·α + 0.5·β + 0.2·γ
85
Compõe comSend Email
21%
Hebbian Synapse
Composite0.210
w = 0.3·α + 0.5·β + 0.2·γ
87
Compõe comSlack Notifier
21%
Hebbian Synapse
Composite0.210
w = 0.3·α + 0.5·β + 0.2·γ
82
Co-executed ←Slack Notifier
27%
Hebbian Synapse
Composite0.273
w = 0.3·α + 0.5·β + 0.2·γ
82
Co-executed ←Authenticate Service
12%
Hebbian Synapse
Composite0.115
w = 0.3·α + 0.5·β + 0.2·γ
85
Co-executed ←REST API Builder
26%
Hebbian Synapse
Composite0.262
w = 0.3·α + 0.5·β + 0.2·γ
90

Árvore do Skill

Webhook Manager
webhook-manager
Fases Cognitivas6
1.SENSE: Percepção
2.CONTEXTUALIZE: Contextualização
3.HYPOTHESIZE: Hipótese
4.RECOMMEND: Recomendação
5.EVALUATE: Avaliação
6.REFLECT: Reflexão
Triggers15
manage webhooksconfigurar webhookwebhook endpointcriar webhook handlerwebhook integrationwebhook securityhmac validationsignature verificationwebhook receivergithub webhookstripe webhookslack webhookwebhook idempotencyprocessar eventos webhookreplay attack prevention

Avaliar este Skill

Score Breakdown

⭐Avaliação Humana0%
🤖Sucesso de Agentes0%
🕐Atualidade100%
🔗Saúde de Dependências100%
🕸️Centralidade no Grafo0%
🛡️Segurança50%
CompositeScore = α·Humano + β·Agente + γ·Recência + δ·Deps + ε·Centralidade + ζ·Segurança

Instalação

$ synaptic mcp download webhook-manager
$ synaptic skills detail webhook-manager
$ synaptic skills live webhook-manager

Links

GitHub Repository