inngest-steps

Implement durable workflow steps with Inngest step methods in TypeScript.

Updated Feb 27, 2026
One-click install
npx skills add https://github.com/firstaxel/neon --skill inngest-steps-firstaxel
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: inngest-steps
Source: https://github.com/firstaxel/neon/tree/main/.agents/skills/inngest-steps
Command: npx skills add https://github.com/firstaxel/neon --skill inngest-steps-firstaxel

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires inngest.

What problem does it solve? Long-running workflows break when processes restart, and coordinating delays, external events, and retries manually is error-prone. This Skill guides you through Inngest's step methods so each unit of work is independently retried, memoized, and survives crashes. ## Core Features & Use Cases - Durable execution with step.run: Wrap non-deterministic code (API calls, DB queries) in retriable steps that memoize results across re-executions. - Delays and event coordination: Use step.sleep, step.sleepUntil, step.waitForEvent, and step.waitForSignal for scheduled follow-ups, human approval gates, and webhook callbacks with timeouts. - Composition and parallelism: Fan out with step.sendEvent, call other functions with step.invoke, and run parallel work with Promise.all, including loop and chunking patterns. - Use Case: Build a cart abandonment flow that sends a welcome email, sleeps 24 hours, waits for a purchase event with a 7-day timeout, and invokes a follow-up function if the user never converts. ## Quick Start Use the inngest-steps skill to write an Inngest function that sends a welcome email, waits 24 hours, then waits for a purchase event with a timeout.

Frequently Asked Questions about inngest-steps

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

FAQPage Schema
How do I add a delay that survives restarts in an Inngest function?▼

Use step.sleep with a duration string like "24h" or "7d", or step.sleepUntil with a specific Date. The function pauses without consuming compute and resumes durably even if your process restarts.

What is the difference between step.waitForEvent and step.waitForSignal?▼

step.waitForEvent matches events by name and optional CEL expressions, suited when multiple functions may handle the same event. step.waitForSignal targets a unique signal string for exact 1:1 matching with a specific function run.

Why does my Inngest function log or run code multiple times?▼

Code outside steps re-executes every time a step completes because each step is a separate HTTP request. Move all non-deterministic logic like API calls, database queries, and logging inside step.run blocks.

Does step.waitForEvent catch events sent before the step runs?▼

No, waitForEvent only catches events sent after that step executes. Always set a timeout and check for a null return, which indicates the event never arrived within the window.

How do I call another Inngest function and get its result?▼

Use step.invoke with an imported function reference and a data payload; the result is fully typed. For cross-app calls, use referenceFunction with the appId and functionId, since string function IDs are no longer supported in v4.

What are the limits for steps in an Inngest function?▼

Each function supports a maximum of 1,000 steps, 4MB per step output, and 32MB total per function run. Step IDs can be reused in loops because Inngest handles counters automatically.