inngest-events

Design Inngest event schemas, idempotency, and fan-out patterns for TypeScript workflows.

Updated Jun 22, 2026
One-click install
npx skills add https://github.com/aashahin/ai-skills --skill inngest-events-aashahin
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: inngest-events
Source: https://github.com/aashahin/ai-skills/tree/main/inngest-events
Command: npx skills add https://github.com/aashahin/ai-skills --skill inngest-events-aashahin

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires inngest.

What problem does it solve? Event-driven systems fail silently when events are duplicated, misnamed, or lack the context downstream consumers need. This Skill provides the conventions and patterns for designing robust Inngest events so your functions trigger reliably, deduplicate correctly, and scale across services. ## Core Features & Use Cases - Event Schema Design: Define payloads with the required name and data fields, plus optional id, ts, and v fields for deduplication, scheduling, and versioning. - Idempotency with Event IDs: Prevent duplicate processing of at-least-once deliveries (like Stripe webhooks) using unique IDs within the 24-hour dedupe window. - Fan-Out Patterns: Trigger multiple independent functions from a single event, and orchestrate results with step.sendEvent and step.waitForEvent. - System Event Handling: React to inngest/function.failed and other lifecycle events for alerting and auto-retry logic. - Use Case: A Stripe webhook fires invoice.paid. You send an Inngest event with id invoice-paid-{invoiceId} so retries never double-charge, then fan out to email, CRM sync, and analytics functions in parallel. ## Quick Start Ask the AI to design an Inngest event schema and fan-out workflow for a user signup flow with welcome email, trial creation, and CRM sync handlers.

Frequently Asked Questions about inngest-events

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I prevent duplicate Inngest events from webhooks?▼

Set a unique id field on each event, such as `invoice-paid-${invoiceId}`, specific to the event type and instance. Inngest deduplicates events with the same ID within a 24-hour window from first reception, which handles at-least-once delivery from sources like Stripe.

What naming convention should I use for Inngest events?▼

Use the object-action pattern: `domain/noun.verb` in past tense, like `billing/invoice.paid` or `user/profile.updated`. Use dots for hierarchy, add prefixes to group related events, and avoid underscores or vague names like `payment`.

How do I trigger multiple functions from one Inngest event?▼

Use the fan-out pattern: send one event and create multiple functions that each list that event in their triggers. Each function runs independently and in parallel, so one failure does not affect the others, and you can replay only failed functions.

Can I schedule an Inngest event for future delivery?▼

Yes, set the ts parameter to a future Unix timestamp in milliseconds when calling inngest.send. The event is delivered at that time, which is useful for trial reminders or delayed retries, and timestamps also maintain chronological ordering.

Does this Inngest guidance apply to Python or Go?▼

The skill content is focused on TypeScript. Core concepts like event schemas, idempotency, and fan-out apply across languages, but for Python or Go syntax you should refer to the official Inngest documentation.

How do I handle failed Inngest functions automatically?▼

Create a function triggered by the `inngest/function.failed` system event. Its event data includes function_id, run_id, and error details, which you can use to log failures, send alerts for critical functions, or schedule automatic retries.