{"id":"373595de-7329-4e80-9369-35425f7b55df","shortId":"pPVpw2","kind":"skill","title":"inngest","tagline":"Inngest expert for serverless-first background jobs, event-driven","description":"# Inngest Integration\n\nInngest expert for serverless-first background jobs, event-driven workflows,\nand durable execution without managing queues or workers.\n\n## Principles\n\n- Events are the primitive - everything triggers from events, not queues\n- Steps are your checkpoints - each step result is durably stored\n- Sleep is not a hack - Inngest sleeps are real, not blocking threads\n- Retries are automatic - but you control the policy\n- Functions are just HTTP handlers - deploy anywhere that serves HTTP\n- Concurrency is a first-class concern - protect downstream services\n- Idempotency keys prevent duplicates - use them for critical operations\n- Fan-out is built-in - one event can trigger many functions\n\n## Capabilities\n\n- inngest-functions\n- event-driven-workflows\n- step-functions\n- serverless-background-jobs\n- durable-sleep\n- fan-out-patterns\n- concurrency-control\n- scheduled-functions\n\n## Scope\n\n- redis-queues -> bullmq-specialist\n- workflow-orchestration -> temporal-craftsman\n- message-streaming -> event-architect\n- infrastructure -> infra-architect\n\n## Tooling\n\n### Core\n\n- inngest\n- inngest-cli\n\n### Frameworks\n\n- nextjs\n- express\n- hono\n- remix\n- sveltekit\n\n### Deployment\n\n- vercel\n- cloudflare-workers\n- netlify\n- railway\n- fly-io\n\n### Patterns\n\n- step-functions\n- event-fan-out\n- scheduled-cron\n- webhook-handling\n\n## Patterns\n\n### Basic Function Setup\n\nInngest function with typed events in Next.js\n\n**When to use**: Starting with Inngest in any Next.js project\n\n// lib/inngest/client.ts\nimport { Inngest } from 'inngest';\n\nexport const inngest = new Inngest({\n  id: 'my-app',\n  schemas: new EventSchemas().fromRecord<Events>(),\n});\n\n// Define your events with types\ntype Events = {\n  'user/signed.up': { data: { userId: string; email: string } };\n  'order/placed': { data: { orderId: string; total: number } };\n};\n\n// lib/inngest/functions.ts\nimport { inngest } from './client';\n\nexport const sendWelcomeEmail = inngest.createFunction(\n  { id: 'send-welcome-email' },\n  { event: 'user/signed.up' },\n  async ({ event, step }) => {\n    // Step 1: Get user details\n    const user = await step.run('get-user', async () => {\n      return await db.users.findUnique({ where: { id: event.data.userId } });\n    });\n\n    // Step 2: Send welcome email\n    await step.run('send-email', async () => {\n      await resend.emails.send({\n        to: user.email,\n        subject: 'Welcome!',\n        template: 'welcome',\n      });\n    });\n\n    // Step 3: Wait 24 hours, then send tips\n    await step.sleep('wait-for-tips', '24h');\n\n    await step.run('send-tips', async () => {\n      await resend.emails.send({\n        to: user.email,\n        subject: 'Getting Started Tips',\n        template: 'tips',\n      });\n    });\n  }\n);\n\n// app/api/inngest/route.ts (Next.js App Router)\nimport { serve } from 'inngest/next';\nimport { inngest } from '@/lib/inngest/client';\nimport { sendWelcomeEmail } from '@/lib/inngest/functions';\n\nexport const { GET, POST, PUT } = serve({\n  client: inngest,\n  functions: [sendWelcomeEmail],\n});\n\n### Multi-Step Workflow\n\nComplex workflow with parallel steps and error handling\n\n**When to use**: Processing that involves multiple services or long waits\n\nexport const processOrder = inngest.createFunction(\n  {\n    id: 'process-order',\n    retries: 3,\n    concurrency: { limit: 10 },  // Max 10 orders processing at once\n  },\n  { event: 'order/placed' },\n  async ({ event, step }) => {\n    const { orderId } = event.data;\n\n    // Parallel steps - both run simultaneously\n    const [inventory, payment] = await Promise.all([\n      step.run('check-inventory', () => checkInventory(orderId)),\n      step.run('validate-payment', () => validatePayment(orderId)),\n    ]);\n\n    if (!inventory.available) {\n      // Send event instead of direct call (fan-out pattern)\n      await step.sendEvent('notify-backorder', {\n        name: 'order/backordered',\n        data: { orderId, items: inventory.missing },\n      });\n      return { status: 'backordered' };\n    }\n\n    // Process payment\n    const charge = await step.run('charge-payment', async () => {\n      return await stripe.charges.create({\n        amount: event.data.total,\n        customer: payment.customerId,\n      });\n    });\n\n    // Ship order\n    await step.run('ship-order', () => fulfillment.ship(orderId));\n\n    return { status: 'completed', chargeId: charge.id };\n  }\n);\n\n### Scheduled/Cron Functions\n\nFunctions that run on a schedule\n\n**When to use**: Recurring tasks like daily reports or cleanup jobs\n\nexport const dailyDigest = inngest.createFunction(\n  { id: 'daily-digest' },\n  { cron: '0 9 * * *' },  // Every day at 9am UTC\n  async ({ step }) => {\n    // Get all users who want digests\n    const users = await step.run('get-users', async () => {\n      return await db.users.findMany({\n        where: { digestEnabled: true },\n      });\n    });\n\n    // Send to each user (creates child events)\n    await step.sendEvent(\n      'send-digests',\n      users.map(user => ({\n        name: 'digest/send',\n        data: { userId: user.id },\n      }))\n    );\n\n    return { sent: users.length };\n  }\n);\n\n// Separate function handles individual digest sending\nexport const sendDigest = inngest.createFunction(\n  { id: 'send-digest', concurrency: { limit: 50 } },\n  { event: 'digest/send' },\n  async ({ event, step }) => {\n    // ... send individual digest\n  }\n);\n\n### Webhook Handler with Idempotency\n\nSafely process webhooks with deduplication\n\n**When to use**: Handling Stripe, GitHub, or other webhooks\n\nexport const handleStripeWebhook = inngest.createFunction(\n  {\n    id: 'stripe-webhook',\n    // Deduplicate by Stripe event ID\n    idempotency: 'event.data.stripeEventId',\n  },\n  { event: 'stripe/webhook.received' },\n  async ({ event, step }) => {\n    const { type, data } = event.data;\n\n    switch (type) {\n      case 'checkout.session.completed':\n        await step.run('fulfill-order', async () => {\n          await fulfillOrder(data.session.id);\n        });\n        break;\n\n      case 'customer.subscription.deleted':\n        await step.run('cancel-subscription', async () => {\n          await cancelSubscription(data.subscription.id);\n        });\n        break;\n    }\n  }\n);\n\n### AI Pipeline with Long Processing\n\nMulti-step AI processing with chunked work\n\n**When to use**: AI workflows that may take minutes to complete\n\nexport const processDocument = inngest.createFunction(\n  {\n    id: 'process-document',\n    retries: 2,\n    concurrency: { limit: 5 },  // Limit API usage\n  },\n  { event: 'document/uploaded' },\n  async ({ event, step }) => {\n    // Step 1: Extract text (may take a while)\n    const text = await step.run('extract-text', async () => {\n      return await extractTextFromPDF(event.data.fileUrl);\n    });\n\n    // Step 2: Chunk for embedding\n    const chunks = await step.run('chunk-text', async () => {\n      return chunkText(text, { maxTokens: 500 });\n    });\n\n    // Step 3: Generate embeddings (API rate limited)\n    const embeddings = await step.run('generate-embeddings', async () => {\n      return await openai.embeddings.create({\n        model: 'text-embedding-3-small',\n        input: chunks,\n      });\n    });\n\n    // Step 4: Store in vector DB\n    await step.run('store-vectors', async () => {\n      await vectorDb.upsert({\n        vectors: embeddings.data.map((e, i) => ({\n          id: `${event.data.documentId}-${i}`,\n          values: e.embedding,\n          metadata: { chunk: chunks[i] },\n        })),\n      });\n    });\n\n    return { chunks: chunks.length, status: 'indexed' };\n  }\n);\n\n## Validation Checks\n\n### Inngest serve handler present\n\nSeverity: CRITICAL\n\nMessage: Inngest requires a serve handler to receive events\n\nFix action: Create app/api/inngest/route.ts with serve() export\n\n### Functions registered with serve\n\nSeverity: ERROR\n\nMessage: Ensure all Inngest functions are registered in the serve() call\n\nFix action: Add function to the functions array in serve()\n\n### Step.run has descriptive name\n\nSeverity: WARNING\n\nMessage: Step names should be kebab-case and descriptive\n\nFix action: Use descriptive step names like 'fetch-user' or 'send-email'\n\n### waitForEvent has timeout\n\nSeverity: ERROR\n\nMessage: waitForEvent should have a timeout to prevent infinite waits\n\nFix action: Add timeout option: { timeout: '24h' }\n\n### Function has concurrency limit\n\nSeverity: WARNING\n\nMessage: Consider adding concurrency limits to protect downstream services\n\nFix action: Add concurrency: { limit: 10 } to function config\n\n### Event types defined\n\nSeverity: WARNING\n\nMessage: Inngest client should define event schemas for type safety\n\nFix action: Add schemas: new EventSchemas().fromRecord<Events>()\n\n### Function has unique ID\n\nSeverity: CRITICAL\n\nMessage: Every Inngest function must have a unique ID\n\nFix action: Add id: 'my-function-name' to function config\n\n### Sleep uses duration string\n\nSeverity: WARNING\n\nMessage: step.sleep should use duration strings like '1h' or '30m', not milliseconds\n\nFix action: Use duration string: step.sleep('wait', '1h')\n\n### Retry policy configured\n\nSeverity: WARNING\n\nMessage: Consider configuring retry policy for failure handling\n\nFix action: Add retries: 3 or retries: { attempts: 3, backoff: { ... } }\n\n### Idempotency key for payment functions\n\nSeverity: ERROR\n\nMessage: Payment-related functions should use idempotency keys\n\nFix action: Add idempotency: 'event.data.orderId' to function config\n\n## Collaboration\n\n### Delegation Triggers\n\n- redis|queue infrastructure|bullmq -> bullmq-specialist (Need Redis-based queue with existing infrastructure)\n- saga|compensation|rollback|long-running workflow -> temporal-craftsman (Need complex workflow orchestration with compensation)\n- event sourcing|event store|cqrs -> event-architect (Need event sourcing patterns)\n- vercel|deploy|production -> vercel-deployment (Need deployment configuration)\n- database|schema|data model -> supabase-backend (Need database for event data)\n- api|endpoint|route -> backend (Need API to trigger events)\n\n### Vercel Background Jobs\n\nSkills: inngest, nextjs-app-router, vercel-deployment\n\nWorkflow:\n\n```\n1. Define Inngest functions (inngest)\n2. Set up serve handler in Next.js (nextjs-app-router)\n3. Configure function timeouts (vercel-deployment)\n4. Deploy and test (vercel-deployment)\n```\n\n### AI Pipeline\n\nSkills: inngest, ai-agents-architect, supabase-backend\n\nWorkflow:\n\n```\n1. Design AI workflow steps (ai-agents-architect)\n2. Implement with Inngest durability (inngest)\n3. Store results in database (supabase-backend)\n4. Handle retries for API failures (inngest)\n```\n\n### Webhook Processing\n\nSkills: inngest, stripe-integration, backend\n\nWorkflow:\n\n```\n1. Receive webhook (backend)\n2. Send to Inngest with idempotency (inngest)\n3. Process payment logic (stripe-integration)\n4. Update application state (backend)\n```\n\n### Email Automation\n\nSkills: inngest, email-systems, supabase-backend\n\nWorkflow:\n\n```\n1. Trigger event from user action (inngest)\n2. Schedule drip emails with step.sleep (inngest)\n3. Send emails with retry (email-systems)\n4. Track email status (supabase-backend)\n```\n\n### Scheduled Tasks\n\nSkills: inngest, backend, analytics-architecture\n\nWorkflow:\n\n```\n1. Define cron triggers (inngest)\n2. Implement processing logic (backend)\n3. Aggregate and report data (analytics-architecture)\n4. Handle failures with alerting (inngest)\n```\n\n## Related Skills\n\nWorks well with: `nextjs-app-router`, `vercel-deployment`, `supabase-backend`, `email-systems`, `ai-agents-architect`, `stripe-integration`\n\n## When to Use\n- User mentions or implies: inngest\n- User mentions or implies: serverless background job\n- User mentions or implies: event-driven workflow\n- User mentions or implies: step function\n- User mentions or implies: durable execution\n- User mentions or implies: vercel background job\n- User mentions or implies: scheduled function\n- User mentions or implies: fan out\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["inngest","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity-skills"],"capabilities":["skill","source-sickn33","skill-inngest","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/inngest","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 37911 github stars · SKILL.md body (12,164 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:51:13.477Z","embedding":null,"createdAt":"2026-04-18T20:35:35.768Z","updatedAt":"2026-05-18T18:51:13.477Z","lastSeenAt":"2026-05-18T18:51:13.477Z","tsv":"'/client':267 '/lib/inngest/client':362 '/lib/inngest/functions':366 '0':534 '1':283,724,1156,1198,1237,1271,1309 '10':412,414,942 '1h':1007,1019 '2':302,711,744,1161,1207,1241,1278,1314 '24':323 '24h':334,921 '3':321,409,762,783,1037,1041,1172,1213,1248,1285,1319 '30m':1009 '4':788,1179,1221,1255,1293,1327 '5':714 '50':601 '500':760 '9':535 '9am':539 'action':837,861,887,916,938,962,984,1013,1034,1060,1276 'ad':930 'add':862,917,939,963,985,1035,1061 'agent':1192,1205,1353 'aggreg':1320 'ai':678,686,694,1186,1191,1200,1204,1352 'ai-agents-architect':1190,1203,1351 'alert':1331 'amount':488 'analyt':1306,1325 'analytics-architectur':1305,1324 'anywher':82 'api':716,765,1134,1139,1225 'app':239,353,1150,1170,1340 'app/api/inngest/route.ts':351,839 'applic':1257 'architect':164,168,1108,1193,1206,1354 'architectur':1307,1326 'array':867 'ask':1445 'async':279,294,311,340,421,484,541,556,604,645,661,673,720,738,755,775,798 'attempt':1040 'autom':1261 'automat':70 'await':289,296,306,312,328,335,341,435,461,479,486,494,551,558,570,656,662,668,674,733,740,750,770,777,793,799 'backend':1128,1137,1196,1220,1235,1240,1259,1269,1299,1304,1318,1347 'background':8,21,131,1144,1371,1398 'backoff':1042 'backord':465,474 'base':1080 'basic':206 'block':66 'boundari':1453 'break':665,677 'built':110 'built-in':109 'bullmq':151,1073,1075 'bullmq-specialist':150,1074 'call':456,859 'cancel':671 'cancel-subscript':670 'cancelsubscript':675 'capabl':118 'case':654,666,883 'charg':478,482 'charge-pay':481 'charge.id':505 'chargeid':504 'check':439,820 'check-inventori':438 'checkinventori':441 'checkout.session.completed':655 'checkpoint':49 'child':568 'chunk':689,745,749,753,786,811,812,815 'chunk-text':752 'chunks.length':816 'chunktext':757 'clarif':1447 'class':91 'cleanup':523 'clear':1420 'cli':174 'client':373,953 'cloudflar':184 'cloudflare-work':183 'collabor':1067 'compens':1086,1100 'complet':503,701 'complex':381,1096 'concern':92 'concurr':86,141,410,599,712,924,931,940 'concurrency-control':140 'config':945,993,1066 'configur':1022,1027,1121,1173 'consid':929,1026 'const':232,269,287,368,401,424,432,477,526,549,592,629,648,703,731,748,768 'control':73,142 'core':170 'cqrs':1105 'craftsman':158,1094 'creat':567,838 'criteria':1456 'critic':103,826,973 'cron':201,533,1311 'custom':490 'customer.subscription.deleted':667 'daili':520,531 'daily-digest':530 'dailydigest':527 'data':252,258,468,579,650,1124,1133,1323 'data.session.id':664 'data.subscription.id':676 'databas':1122,1130,1217 'day':537 'db':792 'db.users.findmany':559 'db.users.findunique':297 'dedupl':618,636 'defin':244,948,955,1157,1310 'deleg':1068 'deploy':81,181,1114,1118,1120,1154,1178,1180,1185,1344 'describ':1424 'descript':872,885,889 'design':1199 'detail':286 'digest':532,548,574,589,598,609 'digest/send':578,603 'digesten':561 'direct':455 'document':709 'document/uploaded':719 'downstream':94,935 'drip':1280 'driven':12,25,124,1379 'duplic':99 'durabl':28,54,134,1211,1391 'durable-sleep':133 'durat':996,1004,1015 'e':803 'e.embedding':809 'email':255,276,305,310,899,1260,1265,1281,1287,1291,1295,1349 'email-system':1264,1290,1348 'embed':747,764,769,774,782 'embeddings.data.map':802 'endpoint':1135 'ensur':850 'environ':1436 'environment-specif':1435 'error':387,848,904,1049 'event':11,24,36,43,113,123,163,196,213,246,250,277,280,419,422,452,569,602,605,639,643,646,718,721,835,946,956,1101,1103,1107,1110,1132,1142,1273,1378 'event-architect':162,1106 'event-driven':10,23,1377 'event-driven-workflow':122 'event-fan-out':195 'event.data':426,651 'event.data.documentid':806 'event.data.fileurl':742 'event.data.orderid':1063 'event.data.stripeeventid':642 'event.data.total':489 'event.data.userid':300 'eventschema':242,966 'everi':536,975 'everyth':40 'execut':29,1392 'exist':1083 'expert':3,16,1441 'export':231,268,367,400,525,591,628,702,842 'express':177 'extract':725,736 'extract-text':735 'extracttextfrompdf':741 'failur':1031,1226,1329 'fan':106,137,197,458,1410 'fan-out':105,457 'fan-out-pattern':136 'fetch':894 'fetch-us':893 'first':7,20,90 'first-class':89 'fix':836,860,886,915,937,961,983,1012,1033,1059 'fli':189 'fly-io':188 'framework':175 'fromrecord':243,967 'fulfil':659 'fulfill-ord':658 'fulfillment.ship':499 'fulfillord':663 'function':76,117,121,128,145,194,207,210,375,507,508,586,843,853,863,866,922,944,968,977,989,992,1047,1054,1065,1159,1174,1386,1405 'generat':763,773 'generate-embed':772 'get':284,292,346,369,543,554 'get-us':291,553 'github':624 'hack':60 'handl':204,388,587,622,1032,1222,1328 'handler':80,611,823,832,1165 'handlestripewebhook':630 'hono':178 'hour':324 'http':79,85 'id':236,272,299,404,529,595,632,640,706,805,971,982,986 'idempot':96,613,641,1043,1057,1062,1246 'implement':1208,1315 'impli':1364,1369,1376,1384,1390,1396,1403,1409 'import':227,264,355,359,363 'index':818 'individu':588,608 'infinit':913 'infra':167 'infra-architect':166 'infrastructur':165,1072,1084 'inngest':1,2,13,15,61,120,171,173,209,221,228,230,233,235,265,360,374,821,828,852,952,976,1147,1158,1160,1189,1210,1212,1227,1231,1244,1247,1263,1277,1284,1303,1313,1332,1365 'inngest-c':172 'inngest-funct':119 'inngest.createfunction':271,403,528,594,631,705 'inngest/next':358 'input':785,1450 'instead':453 'integr':14,1234,1254,1357 'inventori':433,440 'inventory.available':450 'inventory.missing':471 'involv':394 'io':190 'item':470 'job':9,22,132,524,1145,1372,1399 'kebab':882 'kebab-cas':881 'key':97,1044,1058 'lib/inngest/client.ts':226 'lib/inngest/functions.ts':263 'like':519,892,1006 'limit':411,600,713,715,767,925,932,941,1412 'logic':1251,1317 'long':398,681,1089 'long-run':1088 'manag':31 'mani':116 'match':1421 'max':413 'maxtoken':759 'may':697,727 'mention':1362,1367,1374,1382,1388,1394,1401,1407 'messag':160,827,849,876,905,928,951,974,1000,1025,1050 'message-stream':159 'metadata':810 'millisecond':1011 'minut':699 'miss':1458 'model':779,1125 'multi':378,684 'multi-step':377,683 'multipl':395 'must':978 'my-app':237 'my-function-nam':987 'name':466,577,873,878,891,990 'need':1077,1095,1109,1119,1129,1138 'netlifi':186 'new':234,241,965 'next.js':215,224,352,1167 'nextj':176,1149,1169,1339 'nextjs-app-rout':1148,1168,1338 'notifi':464 'notify-backord':463 'number':262 'one':112 'openai.embeddings.create':778 'oper':104 'option':919 'orchestr':155,1098 'order':407,415,493,498,660 'order/backordered':467 'order/placed':257,420 'orderid':259,425,442,448,469,500 'output':1430 'parallel':384,427 'pattern':139,191,205,460,1112 'payment':434,446,476,483,1046,1052,1250 'payment-rel':1051 'payment.customerid':491 'permiss':1451 'pipelin':679,1187 'polici':75,1021,1029 'post':370 'present':824 'prevent':98,912 'primit':39 'principl':35 'process':392,406,416,475,615,682,687,708,1229,1249,1316 'process-docu':707 'process-ord':405 'processdocu':704 'processord':402 'product':1115 'project':225 'promise.all':436 'protect':93,934 'put':371 'queue':32,45,149,1071,1081 'railway':187 'rate':766 'real':64 'receiv':834,1238 'recur':517 'redi':148,1070,1079 'redis-bas':1078 'redis-queu':147 'regist':844,855 'relat':1053,1333 'remix':179 'report':521,1322 'requir':829,1449 'resend.emails.send':313,342 'result':52,1215 'retri':68,408,710,1020,1028,1036,1039,1223,1289 'return':295,472,485,501,557,582,739,756,776,814 'review':1442 'rollback':1087 'rout':1136 'router':354,1151,1171,1341 'run':430,510,1090 'safe':614 'safeti':960,1452 'saga':1085 'schedul':144,200,513,1279,1300,1404 'scheduled-cron':199 'scheduled-funct':143 'scheduled/cron':506 'schema':240,957,964,1123 'scope':146,1423 'send':274,303,309,326,338,451,563,573,590,597,607,898,1242,1286 'send-digest':572,596 'send-email':308,897 'send-tip':337 'send-welcome-email':273 'senddigest':593 'sendwelcomeemail':270,364,376 'sent':583 'separ':585 'serv':84,356,372,822,831,841,846,858,869,1164 'serverless':6,19,130,1370 'serverless-background-job':129 'serverless-first':5,18 'servic':95,396,936 'set':1162 'setup':208 'sever':825,847,874,903,926,949,972,998,1023,1048 'ship':492,497 'ship-ord':496 'simultan':431 'skill':1146,1188,1230,1262,1302,1334,1415 'skill-inngest' 'sleep':56,62,135,994 'small':784 'sourc':1102,1111 'source-sickn33' 'specialist':152,1076 'specif':1437 'start':219,347 'state':1258 'status':473,502,817,1296 'step':46,51,127,193,281,282,301,320,379,385,423,428,542,606,647,685,722,723,743,761,787,877,890,1202,1385 'step-funct':126,192 'step.run':290,307,336,437,443,480,495,552,657,669,734,751,771,794,870 'step.sendevent':462,571 'step.sleep':329,1001,1017,1283 'stop':1443 'store':55,789,796,1104,1214 'store-vector':795 'stream':161 'string':254,256,260,997,1005,1016 'stripe':623,634,638,1233,1253,1356 'stripe-integr':1232,1252,1355 'stripe-webhook':633 'stripe.charges.create':487 'stripe/webhook.received':644 'subject':316,345 'subscript':672 'substitut':1433 'success':1455 'supabas':1127,1195,1219,1268,1298,1346 'supabase-backend':1126,1194,1218,1267,1297,1345 'sveltekit':180 'switch':652 'system':1266,1292,1350 'take':698,728 'task':518,1301,1419 'templat':318,349 'tempor':157,1093 'temporal-craftsman':156,1092 'test':1182,1439 'text':726,732,737,754,758,781 'text-embed':780 'thread':67 'timeout':902,910,918,920,1175 'tip':327,333,339,348,350 'tool':169 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'total':261 'track':1294 'treat':1428 'trigger':41,115,1069,1141,1272,1312 'true':562 'type':212,248,249,649,653,947,959 'uniqu':970,981 'updat':1256 'usag':717 'use':100,218,391,516,621,693,888,995,1003,1014,1056,1360,1413 'user':285,288,293,545,550,555,566,576,895,1275,1361,1366,1373,1381,1387,1393,1400,1406 'user.email':315,344 'user.id':581 'user/signed.up':251,278 'userid':253,580 'users.length':584 'users.map':575 'utc':540 'valid':445,819,1438 'validate-pay':444 'validatepay':447 'valu':808 'vector':791,797,801 'vectordb.upsert':800 'vercel':182,1113,1117,1143,1153,1177,1184,1343,1397 'vercel-deploy':1116,1152,1176,1183,1342 'wait':322,331,399,914,1018 'wait-for-tip':330 'waitforev':900,906 'want':547 'warn':875,927,950,999,1024 'webhook':203,610,616,627,635,1228,1239 'webhook-handl':202 'welcom':275,304,317,319 'well':1336 'without':30 'work':690,1335 'worker':34,185 'workflow':26,125,154,380,382,695,1091,1097,1155,1197,1201,1236,1270,1308,1380 'workflow-orchestr':153","prices":[{"id":"21f1efd6-011d-4171-94ef-8d41eea0a7b6","listingId":"373595de-7329-4e80-9369-35425f7b55df","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:35:35.768Z"}],"sources":[{"listingId":"373595de-7329-4e80-9369-35425f7b55df","source":"github","sourceId":"sickn33/antigravity-awesome-skills/inngest","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/inngest","isPrimary":false,"firstSeenAt":"2026-04-18T21:39:09.188Z","lastSeenAt":"2026-05-18T18:51:13.477Z"},{"listingId":"373595de-7329-4e80-9369-35425f7b55df","source":"skills_sh","sourceId":"sickn33/antigravity-awesome-skills/inngest","sourceUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/inngest","isPrimary":true,"firstSeenAt":"2026-04-18T20:35:35.768Z","lastSeenAt":"2026-05-07T22:40:42.391Z"}],"details":{"listingId":"373595de-7329-4e80-9369-35425f7b55df","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"inngest","github":{"repo":"sickn33/antigravity-awesome-skills","stars":37911,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-05-18T08:24:49Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"fe3d09a1c23a2bcf04a8aff9c1a6cd1901946cf1","skill_md_path":"skills/inngest/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/inngest"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"inngest","description":"Inngest expert for serverless-first background jobs, event-driven"},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/inngest"},"updatedAt":"2026-05-18T18:51:13.477Z"}}