Agent Native

inngest-brownfield-audit

This skill audits existing TypeScript or JavaScript codebases to identify where Inngest can be introduced for durability and reliability.

by InngestOfficial publisherNot reviewed

Identity proven by GitHub's verified organisation badge (inngest)

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
License
Apache-2.0 (permissive)
Pin
e9ee0b6pinned Oct 9, 2026
Context cost
about 2,400 tokenswhen the skill loads
GitHub stars
1on inngest/inngest-claude-code-plugin
Scripts
None found

What it does

“Use when analyzing an existing TypeScript or JavaScript codebase to decide where and how to introduce Inngest. Covers repository discovery, framework and package detection, finding durability gaps in HTTP handlers, webhooks, cron jobs, queues, long-running jobs, AI agents, polling loops, and side-effect-heavy code, then producing and implementing an incremental integration plan.”
The author's description, from SKILL.md

Generated summary from the skill's own text

This skill audits existing TypeScript or JavaScript codebases to identify where Inngest can be introduced for durability and reliability. It maps project structure, detects framework and dependencies, finds fragile background work like fire-and-forget promises and unprotected webhooks, classifies opportunities by severity, and produces a prioritized incremental integration plan that preserves current behavior.

When to use it

  • Analyzing a brownfield codebase for reliability gaps in background tasks
  • Migrating existing queues, cron jobs, or webhooks to durable execution
  • Adding durability to AI agent workflows across multiple steps
  • Making side effects reliable without rewriting the entire application

When not to

  • Starting a new project from scratch without existing code
  • Projects not using TypeScript or JavaScript
  • Replacing a working system that already uses a production message queue

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add inngest/inngest-claude-code-plugin --skill inngest-brownfield-audit

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install inngest/inngest-claude-code-plugin inngest-brownfield-audit@e9ee0b6f2ded326a56d5fb64681fc06cd0f9d758

Installs the commit we checked (e9ee0b6).

Copy by hand

Download the folder at e9ee0b6 and put it in .claude/skills/inngest-brownfield-audit for Claude Code and in .agents/skills/inngest-brownfield-audit for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at e9ee0b6

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "inngest-brownfield-audit" by Inngest.

Source, pinned to commit e9ee0b6f2ded326a56d5fb64681fc06cd0f9d758:
https://github.com/inngest/inngest-claude-code-plugin/tree/e9ee0b6f2ded326a56d5fb64681fc06cd0f9d758/skills/inngest-brownfield-audit

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/inngest-brownfield-audit/ for Claude Code and .agents/skills/inngest-brownfield-audit/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/inngest/inngest-brownfield-audit

SKILL.md at the pin

---
name: inngest-brownfield-audit
description: Use when analyzing an existing TypeScript or JavaScript codebase to decide where and how to introduce Inngest. Covers repository discovery, framework and package detection, finding durability gaps in HTTP handlers, webhooks, cron jobs, queues, long-running jobs, AI agents, polling loops, and side-effect-heavy code, then producing and implementing an incremental integration plan.
---

# Inngest Brownfield Audit

Use this skill when asked to inspect an existing codebase, add
Inngest "where it makes sense", migrate fragile background work, or find
durability gaps before making changes.

This is an agent-first workflow. Do the audit from evidence in the repo, name
the specific files and call sites that drove each conclusion, and make small
integration moves that preserve current behavior.

## When to Trigger

Use this skill for requests like:

- "Audit this repo for Inngest opportunities"
- "Add Inngest to this codebase"
- "Make our webhooks / cron jobs / background tasks reliable"
- "Find places where work can be lost on deploy or process crash"
- "Replace fragile polling, delayed jobs, or fire-and-forget promises"
- "Make this AI workflow / agent durable"

If the user is starting from scratch instead of a brownfield repo, use
`inngest-setup`, `inngest-durable-functions`, `inngest-events`,
`inngest-steps`, and, for AI workflows, the agent patterns in this skill.

## Audit Loop

1. **Map the project shape.**
   - Read `package.json`, workspace files, app/router structure, server entry
     points, deployment config, and test scripts.
   - Identify framework: Next.js App Router, Next.js Pages Router, Express,
     Hono, Fastify, Remix, SvelteKit, Astro, NestJS, worker-only service, or
     other.
   - Detect package manager and TypeScript conventions before adding files.

2. **Find existing Inngest usage.**
   - Search for `inngest`, `createFunction`, `serve(`, `/api/inngest`,
     `INNGEST_`, `step.run`, `step.sleep`, `step.waitForEvent`,
     `step.sendEvent`, `step.invoke`, `step.ai`, `inngest.send`, and
     `@inngest/realtime`.
   - If Inngest exists, inspect version, client config, serve endpoint,
     registered functions, event naming, env vars, and v3/v4 API shape before
     changing anything.

3. **Find durability gaps.**
   - Search for fire-and-forget work: `void someAsync()`, un-awaited promises,
     `.then(` chains, `setTimeout`, `setInterval`, detached jobs after HTTP
     response, and background work in route handlers.
   - Search for cron and schedulers: `cron`, `node-cron`, `agenda`, `bull`,
     `bullmq`, `bee-queue`, `qstash`, `sqs`, `temporal`, `trigger.dev`,
     deployment cron config, and scheduled API routes.
   - Search for webhooks and at-least-once producers: Stripe, Clerk, GitHub,
     Slack, Shopify, HubSpot, Linear, Svix, and generic `webhook`.
   - Search for long-running work: PDF generation, exports, video/image
     processing, embeddings, bulk email, imports, ETL, sync jobs, polling loops,
     retries, and external API calls.
   - Search for AI agent shapes: tool loops, LLM calls, streaming tokens,
     human approval, multi-step reasoning, vector search, eval loops, and
     provider calls that need rate limits or retry-safe state.

4. **Classify each candidate.**
   - **P0:** user-visible loss, duplicate charge/email/action, timeout, missed
     webhook, or crash-prone workflow.
   - **P1:** fragile but recoverable background work, manual retry burden,
     noisy 429s, or poor observability.
   - **P2:** cleanup, ergonomics, or future migration opportunity.
   - For each candidate, record: file, current trigger, side effects,
     idempotency key, failure mode, recommended Inngest primitive, migration
     size, and confidence.

5. **Choose the smallest safe integration.**
   - Prefer one vertical slice over a wide rewrite.
   - Keep existing domain functions and data models where possible.
   - Add an Inngest client and serve endpoint only once.
   - Move side effects into `step.run` one boundary at a time.
   - Make event IDs and database writes idempotent before adding retries.
   - Add tests around existing behavior and the new event/function boundary.

## Useful Discovery Commands

Run commands that fit the repo. Prefer `rg`; keep output focused.

```bash
rg -n "inngest|createFunction|step\\.|serve\\(|/api/inngest|INNGEST_" .
rg -n "setTimeout|setInterval|Promise\\.all|void [a-zA-Z0-9_]+\\(|\\.then\\(" .
rg -n "cron|node-cron|schedule|bull|bullmq|bee-queue|agenda|qstash|sqs" .
rg -n "webhook|stripe|svix|clerk|github|shopify|slack|hubspot|linear" .
rg -n "retry|backoff|poll|status|timeout|429|rate limit|rate-limit" .
rg -n "openai|anthropic|ai\\.|generateText|streamText|tool|agent|embedding" .
```

When the repo is large, narrow searches to app source directories and exclude
generated/vendor folders.

## Brownfield Decision Matrix

| Existing shape | Inngest fit | Primary primitives |
|---|---|---|
| HTTP handler does slow side effects before responding | Emit event, return fast | `inngest.send`, event trigger, `step.run` |
| Webhook must acknowledge quickly but process reliably | Verify signature, emit idempotent event | Event ID, `step.run`, retries |
| Cron job loses progress midway | Cron-triggered durable function | Cron trigger, page-level `step.run`, flow control |
| Polling loop waits for external async work | Durable wait or durable poll | `step.waitForEvent`, `step.sleep`, `step.run` |
| Large fan-out exceeds request/serverless limits | Split orchestration and item work | `step.sendEvent`, per-item function, concurrency |
| External API hits 429s | Move limits to function config | `throttle`, `rateLimit`, `concurrency` |
| Human review can take days | Persist the wait in Inngest | `step.waitForEvent`, timeout, realtime |
| AI agent/tool loop needs retry-safe progress | One step per tool/model boundary | `step.ai`, `step.run`, `step.sleep`, realtime |
| Existing queue only hides fragile work | Replace queue boundary gradually | Event trigger, idempotency, function-level retries |

## Integration Plan Format

Before editing, summarize findings in this compact shape:

```text
Inngest audit:
- Existing Inngest: none / partial / healthy / risky
- Framework: <framework and evidence>
- Best first slice: <file + workflow>
- Why: <loss/timeout/retry/idempotency failure>
- Proposed primitives: <event, steps, flow control, waits, realtime>
- Idempotency key: <source of truth>
- Files likely touched: <short list>
- Tests/checks: <commands or focused cases>
```

Then implement unless the user asked for audit-only.

## Existing Inngest Checklist

If Inngest is already present, verify:

- A single shared client is exported from a stable module.
- The app `id` is a stable slug and is not derived from deploy-specific data.
- v4 local development uses `INNGEST_DEV=1`; production uses
  `INNGEST_SIGNING_KEY`.
- Serve endpoint path is discoverable, usually `/api/inngest`.
- The serve handler registers all functions that should sync.
- Side effects and non-deterministic work are inside steps.
- Step IDs are stable and descriptive.
- Event names follow `domain/noun.verb`.
- Events that may be replayed use deterministic IDs.
- Webhook handlers verify signatures before emitting events.
- Flow control is configured where external APIs have limits.
- Realtime uses v4 native `inngest/realtime`, not the v3
  `@inngest/realtime` package.

## Durable Agent Patterns

Use Inngest when an AI or agent workflow needs durable progress across model
calls, tool calls, waits, approvals, or streaming UI updates.

Good candidates:

- Multi-step agent that calls tools or external APIs.
- LLM workflow that may exceed one HTTP request lifetime.
- Human-in-the-loop review, approval, correction, or escalation.
- Agent that must pause for an external event or scheduled follow-up.
- Bulk AI work that needs provider-level rate limits and cost protection.
- User-visible agent progress that should stream from durable execution.

Recommended shape:

1. HTTP/UI request stores the user intent and emits an event with a stable
   `id`.
2. Inngest function loads state inside `step.run`.
3. Each model call, tool call, vector search, and external side effect lives in
   its own `step.ai` or `step.run` boundary.
4. Human pauses use `step.waitForEvent` or `step.waitForSignal` with a timeout.
5. Progress updates use `step.realtime.publish` between steps, or
   `inngest.realtime.publish` inside an existing `step.run`.
6. Provider rate limits use `concurrency`, `throttle`, or `rateLimit`, not
   ad hoc in-process throttlers.

Avoid:

- Keeping agent state only in memory.
- Retrying whole agent loops after a single tool failure.
- Charging for repeated successful model calls because the result was not
  memoized.
- Using `setTimeout` or a cron poller for follow-ups and approvals.
- Streaming progress from a process-local WebSocket server when the workflow
  itself is durable elsewhere.

## Implementation Guardrails

- Do not replace working queues, crons, or webhooks blindly. First preserve
  behavior with a thin Inngest slice.
- Do not create duplicate clients or serve endpoints if the repo already has
  them.
- Do not put database writes, API calls, random IDs, timestamps, or LLM calls
  outside steps in the new function.
- Do not hide missing idempotency behind retries. Retries require idempotent
  side effects.
- Do not hardcode secrets or dev-mode flags in source.
- Do not leave the app unable to sync: register new functions with the serve
  endpoint and run available type/tests.

## Verification

Pick checks that prove the integration path:

- Typecheck/build/lint the touched app.
- Run existing tests around the migrated handler or workflow.
- Add focused tests for "handler emits event and returns fast" and "function
  calls the same domain operations in step boundaries" where the repo supports
  it.
- If local runtime is available, start the app and Inngest dev server, confirm
  the function syncs, then send a sample event.
- If only static checks are available, explicitly state that runtime sync was
  not verified.

From inngest/inngest-claude-code-plugin at e9ee0b6, shown as plain text under its license: Apache-2.0 (permissive). The license text is in LICENSE.

View SKILL.md on GitHub at e9ee0b6

Files

1 file, 10 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at e9ee0b6
All 18 skills from Inngest

More from Inngest

  • inngest-agent-evals

    Builds production evaluation workflows for AI agents on Inngest using direct and deferred scoring, sessions for grouping related runs, step experiments for…

    Claude Code, Codex, Cursor +4 · about 2.6K tokens · pinned 6 days ago

  • inngest-agents

    Build durable AI agents and multi-step agentic workflows using Inngest and AgentKit.

    Claude Code, Codex, Cursor +4 · about 2.1K tokens · pinned 6 days ago

  • inngest-api-cli

    This skill routes the agent to use the Inngest CLI `inngest api` command for operational tasks like debugging runs, querying events, syncing apps, invoking…

    Claude Code, Codex, Cursor +4 · about 1.9K tokens · pinned 6 days ago

  • inngest-api

    This skill enables agents to interact with the Inngest REST API v2 for Cloud operations, raw HTTP requests, and API reference lookups.

    Claude Code, Codex, Cursor +4 · about 1.1K tokens · pinned 6 days ago

  • inngest-brownfield-audit

    This skill audits existing TypeScript or JavaScript codebases to identify where Inngest can improve reliability and durability.

    Claude Code, Codex, Cursor +4 · about 2.5K tokens · pinned 6 days ago

  • inngest-cli

    This skill enables installation and operation of the Inngest CLI for local development and testing with the Dev Server, which provides a browser UI at…

    Claude Code, Codex, Cursor +4 · about 3.4K tokens · pinned 6 days ago

All Backend and APIs skills
  • inngest-setup

    This skill sets up Inngest, a durable execution platform, in TypeScript projects for building retry-safe webhook handlers, background jobs, and scheduled tasks.

    by InngestOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.9K tokens · pinned 6 days ago

  • inngest-v3-v4-migration

    Upgrades TypeScript codebases from Inngest SDK v3 to v4 by detecting current usage patterns, moving triggers into createFunction options, replacing…

    by InngestOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.4K tokens · pinned 6 days ago

  • inngest-brownfield-audit

    This skill audits existing TypeScript or JavaScript codebases to identify where Inngest can be introduced for durability and reliability.

    by InngestOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.5K tokens · pinned 6 days ago

  • speech-engine

    This skill integrates ElevenLabs Speech Engine to add real-time voice conversations to custom agent runtimes.

    by ElevenLabsOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.4K tokens · pinned 6 days ago

  • databricks-apps-python

    Enables agents to build Python backends for Databricks Apps using FastAPI, Flask, Dash, Streamlit, Gradio, or Reflex.

    by DatabricksOfficial publisher

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 2.9K tokens · pinned 6 days ago

  • vercel-connect

    Vercel Connect lets applications obtain short-lived scoped credentials from third-party services like Slack, GitHub, and Linear without storing API keys in…

    by VercelOfficial publisher

    Claude Code, Codex, Cursor +3 · about 4.4K tokens · pinned 6 days ago

Open roles at Inngest

No open roles at Inngest on the Agent Native jobs board right now.

Browse the jobs board

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use