← ClaudeAtlas

webhook-safety-reviewlisted

Review incoming webhook handlers for the four failures that cost money — unverified signatures, missing idempotency, work done before acknowledging, and errors that make the sender retry forever. Use when adding or changing a webhook, integrating Stripe/GitHub/Slack, or after a duplicate charge or missed event.
sriptcollector/toolbay-skills · ★ 0 · Code & Development · score 72
Install: claude install-skill sriptcollector/toolbay-skills
# Webhook Safety Review ## Install Save this file as `~/.claude/skills/webhook-safety-review/SKILL.md`, or `.claude/skills/webhook-safety-review/SKILL.md` to scope it to one repo. Claude Code auto-discovers it. Invoke with `/webhook-safety-review` or by asking "is my Stripe webhook safe?". ## Why this exists A webhook handler is an unauthenticated public endpoint that a stranger can call, which reacts to it by granting entitlements or moving money. Almost every serious bug in one falls into four buckets, and all four are invisible in normal testing because your own test events are well-behaved. Rank findings by money and access, not by tidiness. ## Step 1 — Find every handler ``` rg --files -g '**/webhook*' -g '**/webhooks/**' -g '**/hooks/**' rg -ln "stripe|github|slack|shopify|twilio|resend|clerk|paddle" -g '**/route.ts' -g '**/*.py' -g '**/*.go' ``` For each, note the sender and what it causes: creating an order, granting a licence, sending mail, updating a subscription. That consequence sets the severity of everything below. ## Step 2 — Signature verification, before anything else The single highest-severity check. Confirm, with file and line: 1. **A signature is verified at all.** No verification means anyone who learns the URL can post a fake `payment_succeeded` and grant themselves goods. 2. **It runs BEFORE the body is parsed or acted on.** Verifying after you have already created a record is decoration. 3. **It uses the RAW body.** Frameworks that au