/webhook-transforms
Generic framework for converting external events (SMS, meetings, social mentions) into brain-ingestible signals. Define a transform function, register a webhook URL, and incoming events get processed through the brain pipeline.
$ npx -y skills add garrytan/gbrain --skill webhook-transforms --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/webhook-transforms
Context preview
The summary Claude sees to decide when to auto-load this skill.
Generic framework for converting external events (SMS, meetings, social mentions) into brain-ingestible signals. Define a transform function, register a webhook URL, and incoming events get processed through the brain pipeline.
SKILL.md
webhook-transforms.SKILL.mdname: webhook-transforms
version: 1.0.0
description: |
Generic framework for converting external events (SMS, meetings, social mentions)
into brain-ingestible signals. Define a transform function, register a webhook URL,
and incoming events get processed through the brain pipeline.
triggers:
- "set up webhook"
- "process webhook event"
- "transform this event"
tools:
- put_page
- add_timeline_entry
- search
mutating: true
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 detectedMeeting Completed
Input: {title: "Weekly sync", attendees: [...], transcript: "...", summary: "..."}
Output: Delegate to meeting-ingestion skillSocial Mention
Input: {platform: "twitter", author: "@handle", text: "...", url: "..."}
Output: Brain page in media/ + entity extraction + backlinksOutput Format
Event transformed and written to brain. Report: "Webhook: {event_type} from {source} → {brain_page_path}"
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
Read more
name: webhook-transforms version: 1.0.0 description: | Generic framework for converting external events (SMS, meetings, social mentions) into brain-ingestible signals. Define a transform function, register a webhook URL, and incoming events get processed through the brain pipeline. triggers: - "set up webhook" - "process webhook event" - "transform this event" tools: - put_page - add_timeline_entry - search mutating: true
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 detectedMeeting Completed
Input: {title: "Weekly sync", attendees: [...], transcript: "...", summary: "..."}
Output: Delegate to meeting-ingestion skillSocial Mention
Input: {platform: "twitter", author: "@handle", text: "...", url: "..."}
Output: Brain page in media/ + entity extraction + backlinksOutput Format
Event transformed and written to brain. Report: "Webhook: {event_type} from {source} → {brain_page_path}"
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
Search gives you raw pages. GBrain gives you the answer. It's the brain layer your AI agent has been missing — the only one that does synthesis, graph traversal, and gap analysis in one box.
Repo: garrytan/gbrain
Other skills on gbrain.
- /voice-persona-mars
Route to Mars (introspective thought partner / demo showman voice persona). Used when the operator wants depth, meaning, or impressive social demos rather than logistics. Mars handles SOLO mode (philosophy, presence, patterns) and DEMO mode (tool-driven showmanship)
Open skill - /voice-persona-venus
Route to Venus (sharp executive-assistant voice persona). Used for logistics — calendar, tasks, recent messages, brain lookups — at sub-second phone-call latency. The default voice persona unless DEFAULT_PERSONA=mars is set.
Open skill - /voice-post-call
Post-call handling for a voice session — turn the transcript into a brain page, post the summary to the operator's messaging surface, archive the audio. Belt-and-suspenders: fires both from a tool the voice persona can call mid-call AND from the automatic call-end handler in
Open skill - /retrieval-reflex
When/what to retrieve — open the brain page for a salient entity before answering from memory.
Open skill - /academic-verify
Verify a research claim or academic citation by tracing it through publication → methodology → raw data → independent replication. Routes through perplexity-research for the actual web lookup, then formats results as a citation-checked brain page. Use when a
Open skill - /archive-crawler
Universal archivist for personal file archives (Dropbox/B2/Gmail-takeout/local-mount/hard-drive-dump). Filters for high-value content (the user's own writing, ideas, relationships) and surfaces it interactively. REFUSES TO RUN without an explicit gbrain.yml
Open skill

