inngest-steps

Implements durable workflow steps in TypeScript using Inngest step methods.

Updated Jul 28, 2026
One-click install
npx skills add https://github.com/dhanushreddy291/durable-workflow-on-neon-functions --skill inngest-steps-dhanushreddy291
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: inngest-steps
Source: https://github.com/dhanushreddy291/durable-workflow-on-neon-functions/tree/main/.agents/skills/inngest-steps
Command: npx skills add https://github.com/dhanushreddy291/durable-workflow-on-neon-functions --skill inngest-steps-dhanushreddy291

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires inngest.

What problem does it solve? Long-running background workflows break when serverless functions time out or crash mid-execution, losing progress and duplicating work. This Skill teaches how to build durable, checkpointed workflows with Inngest step methods so each step retries independently and survives process restarts. ## Core Features & Use Cases - Durable Delays and Scheduling: Use step.sleep and step.sleepUntil to pause workflows for hours or days without consuming compute, ideal for cart abandonment reminders or scheduled follow-ups. - Event and Signal Coordination: Use step.waitForEvent and step.waitForSignal to pause for human approvals, webhook callbacks, or async API completions with timeouts and expression-based matching. - Function Composition and Parallelism: Use step.invoke to call other functions and await typed results, step.sendEvent for fan-out, and Promise.all for parallel step execution. - Use Case: Build a multi-step onboarding flow that sends a welcome email, waits three days, waits for the user to complete a profile event with a 7-day timeout, then invokes a billing setup function. ## Quick Start Ask the AI to write an Inngest function that sends a welcome email, sleeps for 24 hours, then waits for a user approval event with a timeout using step methods.

Frequently Asked Questions about inngest-steps

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

FAQPage Schema
How do I add durable delays to an Inngest function?▼

Use step.sleep with a duration string like "24h" or "7d", or step.sleepUntil with a specific Date. Inngest holds the timer externally, so the pause consumes zero compute time and survives process restarts.

How do I wait for an external event in an Inngest workflow?▼

Use step.waitForEvent with the event name, a timeout, and an optional match or if expression to correlate events. Always check for a null return, which means the timeout elapsed before the event arrived.

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

step.waitForEvent matches events that multiple functions might consume, while step.waitForSignal provides exact 1:1 matching to a specific function run using a unique signal identifier. Use signals for precise task-completion callbacks.

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

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

What are the step limits in Inngest functions?▼

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

How do I run Inngest steps in parallel?▼

Create step.run promises without awaiting them, then use Promise.all to execute them concurrently. In v4, parallel execution is optimized by default; use group.parallel with Promise.race for true race semantics.