mcpField
W
webhook-transforms

webhook-transforms

github.com/garrytanData & databases31.3k237 installsUpdated today
Repository

About webhook-transforms

A skill for converting incoming webhook events into cited brain pages. It sanitizes input, extracts entities, and preserves failed payloads for retry rather than silently dropping events.

Key features

  1. 01Webhook payload transformation
  2. 02HTML and script sanitization
  3. 03Entity extraction and enrichment
  4. 04Dead-letter logging and one retry

Use cases

  1. 01Adding received SMS to a brain page
  2. 02Recording social mentions with entity links
  3. 03Routing completed meetings to ingestion

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/garrytan/gbrain --skill webhook-transforms

After installing, type/webhook-transformsin Claude Code to confirm it loaded.

Details

From the project README

Webhook Transforms

Contract

This skill guarantees:

  • External events are transformed into brain pages with proper citations
  • Raw payloads are preserved (dead-letter queue if transform fails)
  • Entity extraction runs on every transformed event
  • Input sanitization: no raw HTML/script passes to brain pages
  • Error handling: transform failure logs raw payload, retries once

Phases

  1. Define transform. Map event schema to brain page format:

    • Input: raw webhook payload (JSON)
    • Output: brain page content (markdown) + metadata (slug, type, citations)
    • Must sanitize: strip HTML tags, escape script content
  2. Register webhook URL. Provide the external service with the webhook endpoint.

  3. On event received:

    • Parse payload
    • Run transform function
    • Write brain page via gbrain put
    • Extract entities, run enrichment
    • Add timeline entries to mentioned entities
    • Sync: gbrain sync
  4. Error handling:

    • If transform throws: log raw payload to _dead-letter/{timestamp}.md
    • Surface error type to agent
    • Retry once
    • Don't lose events

Example Transforms

SMS Received
Input: {from: "+1555...", body: "Meeting moved to 3pm", timestamp: "..."}
Output: Timeline entry on sender's brain page + task update if action item detected
Meeting Completed
Input: {title: "Weekly sync", attendees: [...], transcript: "...", summary: "..."}
Output: Delegate to meeting-ingestion skill
Social Mention
Input: {platform: "twitter", author: "@handle", text: "...", url: "..."}
Output: Brain page in media/ + entity extraction + backlinks

Output Format

Event transformed and written to brain. Report: "Webhook: {event_type} from {source} → {brain_page_path}"

When it fails

Follow the agent operator protocol for any gbrain error code, exit code, [AGENT] block or notice block. Specific to this skill:

  • A transformed write returns write_pending (exit 10): the event is accepted; record the request id and poll it, never replay the event under a new id.
  • source_binding_required / insufficient_scope: the webhook's token cannot write that source; tell the user which grant the brain host's operator must add.
  • A malformed payload: reject it with the parse error and log it; do not write a partial page.

Anti-Patterns

  • Passing raw HTML/script to brain pages (XSS risk)
  • Silently dropping events when transform fails (use dead-letter queue)
  • Processing webhooks without entity extraction
  • Not sanitizing external input before brain writes

Comments

Markdown supported