Post

Trigger.dev
Trigger.dev@triggerdotdev·
GitHub sends a webhook. 60 seconds later, Claude has reviewed your PR diff, labeled your issue, and posted a deploy summary to Slack. Built with @HookDeck + @triggerdotdev + @AnthropicAI
Trigger.dev tweet media
English
2
4
22
2.1K
Trigger.dev
Trigger.dev@triggerdotdev·
GitHub → Hookdeck (HMAC verification, payload reshape, retries) → Trigger REST API→ durable task container → Claude + GitHub API + Slack No custom webhook server. No Express route parsing 𝚇-𝙷𝚞𝚋-𝚂𝚒𝚐𝚗𝚊𝚝𝚞𝚛𝚎-𝟸𝟻𝟼. No retry logic
English
1
0
2
344
Trigger.dev
Trigger.dev@triggerdotdev·
Three tasks, each in its own container: 𝚑𝚊𝚗𝚍𝚕𝚎-𝚙𝚛: fetches the diff, calls Claude, posts a single review comment (HTML anchor 𝚊𝚒-𝚛𝚎𝚟𝚒𝚎𝚠-𝚜𝚞𝚖𝚖𝚊𝚛𝚢 prevents duplicates on re-runs) 𝚑𝚊𝚗𝚍𝚕𝚎-𝚒𝚜𝚜𝚞𝚎: Claude classifies, parses JSON labels, applies via GitHub API 𝚑𝚊𝚗𝚍𝚕𝚎-𝚙𝚞𝚜𝚑: Claude summarizes commits, posts to Slack
Trigger.dev tweet media
English
1
0
0
220
Trigger.dev
Trigger.dev@triggerdotdev·
The idempotency pattern is the interesting part. A Hookdeck transform extracts GitHub's 𝚇-𝙶𝚒𝚝𝙷𝚞𝚋-𝙳𝚎𝚕𝚒𝚟𝚎𝚛𝚢 header into the payload. That becomes the idempotency key. Hookdeck retries the delivery? Same key. No duplicate task runs. No duplicate PR comments. Zero application code for dedup.
English
1
0
1
89
Trigger.dev
Trigger.dev@triggerdotdev·
Two routing architectures: One Hookdeck connection → router task dispatches child tasks via 𝚝𝚊𝚜𝚔𝚜.𝚝𝚛𝚒𝚐𝚐𝚎𝚛() with 𝚒𝚍𝚎𝚖𝚙𝚘𝚝𝚎𝚗𝚌𝚢𝙺𝚎𝚢: ${𝚍𝚎𝚕𝚒𝚟𝚎𝚛𝚢𝙸𝚍}-${𝚝𝚊𝚜𝚔𝙸𝚍}. Simple. Or: three connections filtering on 𝚇-𝙶𝚒𝚝𝙷𝚞𝚋-𝙴𝚟𝚎𝚗𝚝 header → tasks directly. Per-event retry policies, independent pause/replay, separate delivery metrics.
English
1
0
1
212
Trigger.dev
Trigger.dev@triggerdotdev·
@HookDeck wrote the full walkthrough: both routing patterns, deployment scripts, the Hookdeck transform code, everything. Fork it and have AI-powered GitHub automation running in ~15 minutes: hookdeck.com/webhooks/platf…
English
0
0
2
241
Paylaş