The official Inngest plugin for Claude Code. One install, and Claude Code knows how to build reliable durable functions, design event-driven workflows, configure flow control, and stream realtime updates with Inngest.
Beta: v0.1.0 is the first public beta. We’d love your feedback — open an issue, drop into our Discord, or ping @inngest on socials.
/plugin marketplace add inngest/inngest-claude-code-plugin
/plugin install inngest@inngest-claude-code-plugin
git clone https://github.com/inngest/inngest-claude-code-plugin.git
cd your-project/
claude --plugin-dir /path/to/inngest-claude-code-plugin
Install the plugin (above).
Start your Inngest dev server in your project:
npx inngest-cli@latest dev
Open Claude Code in your project and ask it something Inngest-shaped:
"Add a durable function that sends a welcome email when a user signs up,
retries on failure, and waits 24 hours before sending the second email."
Claude Code picks up the relevant skill (inngest-durable-functions,
inngest-steps, etc.), writes the function, registers it on your dev
server’s /api/inngest route, and triggers a test event through the MCP
server so you can watch it run.
| Skill | What it covers | When it triggers |
|---|---|---|
inngest-setup |
SDK install, client config, serve endpoints (Next.js, Express, Hono, Fastify), connect-as-worker, dev server | Adding Inngest to a TypeScript project |
inngest-durable-functions |
Function config, triggers, step execution, idempotency, cancellation, error handling, retries, observability | Building functions that survive crashes, retry, run on schedule |
inngest-steps |
step.run, step.sleep, step.waitForEvent, step.invoke, step.ai, parallel + loops |
Durable delays, human-in-the-loop, polling, memoization |
inngest-events |
Event schema, IDs for idempotency, fan-out patterns, system events | Designing event-driven workflows, decoupling services |
inngest-flow-control |
Concurrency, throttle, rate limit, debounce, priority, singleton, batching | Handling rate limits, deduping bursts, per-tenant fairness |
inngest-middleware |
Lifecycle, dependency injection, Sentry + encryption middleware, custom middleware | Cross-cutting concerns: logging, tracing, DI, encryption |
inngest-realtime |
v4 native realtime, channels, subscription tokens, useRealtime hook, SSE |
Streaming workflow updates to a UI in real time |
The plugin ships an .mcp.json that registers the local Inngest dev server’s MCP endpoint with Claude Code:
{
"mcpServers": {
"inngest-dev": {
"type": "http",
"url": "http://127.0.0.1:8288/mcp"
}
}
}
This lets the agent inspect runs, events, and function state on your local dev server while you’re working.
Port note: the URL is hardcoded to 8288, the dev server’s default. If 8288 is already in use, the dev server falls back to 8289+ — in that case, edit the url in .mcp.json to point at the active port. Run lsof -i :8288 (or check the dev server’s startup output) to find which port it bound to.
"I'm getting Stripe webhooks. Wrap the handler in an Inngest function that
retries on failure and dedupes on event ID."
→ Plugin generates the serve endpoint, the function with id set as the idempotency key, and the step.run blocks for each side effect.
"This function calls OpenAI on every event. Add concurrency: max 5 in
flight per user, throttle the org to 100/min."
→ Plugin writes the concurrency and throttle config keyed by user/org.
"Run this LLM agent as an Inngest function and stream its tokens to a
React component."
→ Plugin sets up a typed channel, publishes from inside step.run, mints a subscription token via a server action, and writes the client component using the useRealtime hook.
The skills in this plugin are mirrored from inngest/inngest-skills — that’s where they’re authored and where skills.sh users install them. This plugin pulls them in via scripts/sync-skills.sh so the Claude Code experience stays in lockstep with the skills.sh experience.
Inside eval/ is a prompt catalog and runner you can use to verify the plugin is actually steering Claude Code on real Inngest-shaped tasks.
cd eval/runner
./run.sh
See eval/README.md for prompt format, judge config, and how to add your own.
This is v0.1.0. We’re shipping early to learn from real usage:
#claude-code-plugin channel.See ROADMAP.md for the v0.x → v1.0 plan: more skills, slash commands, agents, migrators between SDK majors, and the path to the official Anthropic plugin marketplace.
Apache 2.0. See LICENSE.