What problem does it solve? Event-driven systems fail silently when events are duplicated, misnamed, or lack the context consumers need. This Skill provides the conventions and patterns for designing robust Inngest events so downstream functions process them exactly once and with full context. ## Core Features & Use Cases - Event Schema Design: Defines the required name and data fields plus optional id, ts, and v fields, with object-action naming conventions like billing/invoice.paid. - Idempotency and Deduplication: Shows how to set event IDs to prevent duplicate processing within Inngest's 24-hour dedupe window, critical for at-least-once sources like Stripe webhooks. - Fan-Out and System Events: Implements one-trigger-many-handlers patterns, delayed delivery via the ts parameter, and handlers for system events like inngest/function.failed. - Use Case: When a user signs up, send a single user/signup.completed event that fans out to send a welcome email, create a Stripe trial subscription, and sync the contact to a CRM, each as an independent function. ## Quick Start Ask the AI to design an Inngest event schema with an idempotency ID and fan-out handlers for a user signup flow in TypeScript.