{"id":"f1a3fdb0-587c-4bf5-ac36-aaf80464fb68","shortId":"Mb83k4","kind":"skill","title":"bullmq-specialist","tagline":"BullMQ expert for Redis-backed job queues, background processing,","description":"# BullMQ Specialist\n\nBullMQ expert for Redis-backed job queues, background processing, and\nreliable async execution in Node.js/TypeScript applications.\n\n## Principles\n\n- Jobs are fire-and-forget from the producer side - let the queue handle delivery\n- Always set explicit job options - defaults rarely match your use case\n- Idempotency is your responsibility - jobs may run more than once\n- Backoff strategies prevent thundering herds - exponential beats linear\n- Dead letter queues are not optional - failed jobs need a home\n- Concurrency limits protect downstream services - start conservative\n- Job data should be small - pass IDs, not payloads\n- Graceful shutdown prevents orphaned jobs - handle SIGTERM properly\n\n## Capabilities\n\n- bullmq-queues\n- job-scheduling\n- delayed-jobs\n- repeatable-jobs\n- job-priorities\n- rate-limiting-jobs\n- job-events\n- worker-patterns\n- flow-producers\n- job-dependencies\n\n## Scope\n\n- redis-infrastructure -> redis-specialist\n- serverless-queues -> upstash-qstash\n- workflow-orchestration -> temporal-craftsman\n- event-sourcing -> event-architect\n- email-delivery -> email-systems\n\n## Tooling\n\n### Core\n\n- bullmq\n- ioredis\n\n### Hosting\n\n- upstash\n- redis-cloud\n- elasticache\n- railway\n\n### Monitoring\n\n- bull-board\n- arena\n- bullmq-pro\n\n### Patterns\n\n- delayed-jobs\n- repeatable-jobs\n- job-flows\n- rate-limiting\n- sandboxed-processors\n\n## Patterns\n\n### Basic Queue Setup\n\nProduction-ready BullMQ queue with proper configuration\n\n**When to use**: Starting any new queue implementation\n\nimport { Queue, Worker, QueueEvents } from 'bullmq';\nimport IORedis from 'ioredis';\n\n// Shared connection for all queues\nconst connection = new IORedis(process.env.REDIS_URL, {\n  maxRetriesPerRequest: null,  // Required for BullMQ\n  enableReadyCheck: false,\n});\n\n// Create queue with sensible defaults\nconst emailQueue = new Queue('emails', {\n  connection,\n  defaultJobOptions: {\n    attempts: 3,\n    backoff: {\n      type: 'exponential',\n      delay: 1000,\n    },\n    removeOnComplete: { count: 1000 },\n    removeOnFail: { count: 5000 },\n  },\n});\n\n// Worker with concurrency limit\nconst worker = new Worker('emails', async (job) => {\n  await sendEmail(job.data);\n}, {\n  connection,\n  concurrency: 5,\n  limiter: {\n    max: 100,\n    duration: 60000,  // 100 jobs per minute\n  },\n});\n\n// Handle events\nworker.on('failed', (job, err) => {\n  console.error(`Job ${job?.id} failed:`, err);\n});\n\n### Delayed and Scheduled Jobs\n\nJobs that run at specific times or after delays\n\n**When to use**: Scheduling future tasks, reminders, or timed actions\n\n// Delayed job - runs once after delay\nawait queue.add('reminder', { userId: 123 }, {\n  delay: 24 * 60 * 60 * 1000,  // 24 hours\n});\n\n// Repeatable job - runs on schedule\nawait queue.add('daily-digest', { type: 'summary' }, {\n  repeat: {\n    pattern: '0 9 * * *',  // Every day at 9am\n    tz: 'America/New_York',\n  },\n});\n\n// Remove repeatable job\nawait queue.removeRepeatable('daily-digest', {\n  pattern: '0 9 * * *',\n  tz: 'America/New_York',\n});\n\n### Job Flows and Dependencies\n\nComplex multi-step job processing with parent-child relationships\n\n**When to use**: Jobs depend on other jobs completing first\n\nimport { FlowProducer } from 'bullmq';\n\nconst flowProducer = new FlowProducer({ connection });\n\n// Parent waits for all children to complete\nawait flowProducer.add({\n  name: 'process-order',\n  queueName: 'orders',\n  data: { orderId: 123 },\n  children: [\n    {\n      name: 'validate-inventory',\n      queueName: 'inventory',\n      data: { orderId: 123 },\n    },\n    {\n      name: 'charge-payment',\n      queueName: 'payments',\n      data: { orderId: 123 },\n    },\n    {\n      name: 'notify-warehouse',\n      queueName: 'notifications',\n      data: { orderId: 123 },\n    },\n  ],\n});\n\n### Graceful Shutdown\n\nProperly close workers without losing jobs\n\n**When to use**: Deploying or restarting workers\n\nconst shutdown = async () => {\n  console.log('Shutting down gracefully...');\n\n  // Stop accepting new jobs\n  await worker.pause();\n\n  // Wait for current jobs to finish (with timeout)\n  await worker.close();\n\n  // Close queue connection\n  await queue.close();\n\n  process.exit(0);\n};\n\nprocess.on('SIGTERM', shutdown);\nprocess.on('SIGINT', shutdown);\n\n### Bull Board Dashboard\n\nVisual monitoring for BullMQ queues\n\n**When to use**: Need visibility into queue status and job states\n\nimport { createBullBoard } from '@bull-board/api';\nimport { BullMQAdapter } from '@bull-board/api/bullMQAdapter';\nimport { ExpressAdapter } from '@bull-board/express';\n\nconst serverAdapter = new ExpressAdapter();\nserverAdapter.setBasePath('/admin/queues');\n\ncreateBullBoard({\n  queues: [\n    new BullMQAdapter(emailQueue),\n    new BullMQAdapter(orderQueue),\n  ],\n  serverAdapter,\n});\n\napp.use('/admin/queues', serverAdapter.getRouter());\n\n## Validation Checks\n\n### Redis connection missing maxRetriesPerRequest\n\nSeverity: ERROR\n\nBullMQ requires maxRetriesPerRequest null for proper reconnection handling\n\nMessage: BullMQ queue/worker created without maxRetriesPerRequest: null on Redis connection. This will cause workers to stop on Redis connection issues.\n\n### No stalled job event handler\n\nSeverity: WARNING\n\nWorkers should handle stalled events to detect crashed workers\n\nMessage: Worker created without 'stalled' event handler. Stalled jobs indicate worker crashes and should be monitored.\n\n### No failed job event handler\n\nSeverity: WARNING\n\nWorkers should handle failed events for monitoring and alerting\n\nMessage: Worker created without 'failed' event handler. Failed jobs should be logged and monitored.\n\n### No graceful shutdown handling\n\nSeverity: WARNING\n\nWorkers should gracefully shut down on SIGTERM/SIGINT\n\nMessage: Worker file without graceful shutdown handling. Jobs may be orphaned on deployment.\n\n### Awaiting queue.add in request handler\n\nSeverity: INFO\n\nQueue additions should be fire-and-forget in request handlers\n\nMessage: Queue.add awaited in request handler. Consider fire-and-forget for faster response.\n\n### Potentially large data in job payload\n\nSeverity: WARNING\n\nJob data should be small - pass IDs not full objects\n\nMessage: Job appears to have large inline data. Pass IDs instead of full objects to keep Redis memory low.\n\n### Job without timeout configuration\n\nSeverity: INFO\n\nJobs should have timeouts to prevent infinite execution\n\nMessage: Job added without explicit timeout. Consider adding timeout to prevent stuck jobs.\n\n### Retry without backoff strategy\n\nSeverity: WARNING\n\nRetries should use exponential backoff to avoid thundering herd\n\nMessage: Job has retry attempts but no backoff strategy. Use exponential backoff to prevent thundering herd.\n\n### Repeatable job without explicit timezone\n\nSeverity: WARNING\n\nRepeatable jobs should specify timezone to avoid DST issues\n\nMessage: Repeatable job without explicit timezone. Will use server local time which can drift with DST.\n\n### Potentially high worker concurrency\n\nSeverity: INFO\n\nHigh concurrency can overwhelm downstream services\n\nMessage: Worker concurrency is high. Ensure downstream services can handle this load (DB connections, API rate limits).\n\n## Collaboration\n\n### Delegation Triggers\n\n- redis infrastructure|redis cluster|memory tuning -> redis-specialist (Queue needs Redis infrastructure)\n- serverless queue|edge queue|no redis -> upstash-qstash (Need queues without managing Redis)\n- complex workflow|saga|compensation|long-running -> temporal-craftsman (Need workflow orchestration beyond simple jobs)\n- event sourcing|CQRS|event streaming -> event-architect (Need event-driven architecture)\n- deploy|kubernetes|scaling|infrastructure -> devops (Queue needs infrastructure)\n- monitor|metrics|alerting|dashboard -> performance-hunter (Queue needs monitoring)\n\n### Email Queue Stack\n\nSkills: bullmq-specialist, email-systems, redis-specialist\n\nWorkflow:\n\n```\n1. Email request received (API)\n2. Job queued with rate limiting (bullmq-specialist)\n3. Worker processes with backoff (bullmq-specialist)\n4. Email sent via provider (email-systems)\n5. Status tracked in Redis (redis-specialist)\n```\n\n### Background Processing Stack\n\nSkills: bullmq-specialist, backend, devops\n\nWorkflow:\n\n```\n1. API receives request (backend)\n2. Long task queued for background (bullmq-specialist)\n3. Worker processes async (bullmq-specialist)\n4. Result stored/notified (backend)\n5. Workers scaled per load (devops)\n```\n\n### AI Processing Pipeline\n\nSkills: bullmq-specialist, ai-workflow-automation, performance-hunter\n\nWorkflow:\n\n```\n1. AI task submitted (ai-workflow-automation)\n2. Job flow created with dependencies (bullmq-specialist)\n3. Workers process stages (bullmq-specialist)\n4. Performance monitored (performance-hunter)\n5. Results aggregated (ai-workflow-automation)\n```\n\n### Scheduled Tasks Stack\n\nSkills: bullmq-specialist, backend, redis-specialist\n\nWorkflow:\n\n```\n1. Repeatable jobs defined (bullmq-specialist)\n2. Cron patterns with timezone (bullmq-specialist)\n3. Jobs execute on schedule (bullmq-specialist)\n4. State managed in Redis (redis-specialist)\n5. Results handled (backend)\n```\n\n## Related Skills\n\nWorks well with: `redis-specialist`, `backend`, `nextjs-app-router`, `email-systems`, `ai-workflow-automation`, `performance-hunter`\n\n## When to Use\n- User mentions or implies: bullmq\n- User mentions or implies: bull queue\n- User mentions or implies: redis queue\n- User mentions or implies: background job\n- User mentions or implies: job queue\n- User mentions or implies: delayed job\n- User mentions or implies: repeatable job\n- User mentions or implies: worker process\n- User mentions or implies: job scheduling\n- User mentions or implies: async processing\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":["bullmq","specialist","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-bullmq-specialist","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/bullmq-specialist","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 (9,935 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:50:43.913Z","embedding":null,"createdAt":"2026-04-18T20:34:43.061Z","updatedAt":"2026-05-18T18:50:43.913Z","lastSeenAt":"2026-05-18T18:50:43.913Z","tsv":"'/admin/queues':576,587 '/api':556 '/api/bullmqadapter':563 '/express':570 '/typescript':33 '0':379,396,524 '1':992,1040,1086,1135 '100':305,308 '1000':279,282,362 '123':357,451,461,470,479 '2':997,1045,1094,1142 '24':359,363 '3':274,1006,1054,1103,1150 '4':1014,1061,1110,1158 '5':302,1022,1065,1116,1166 '5000':285 '60':360,361 '60000':307 '9':380,397 '9am':384 'accept':503 'action':346 'ad':798,803 'addit':721 'aggreg':1118 'ai':1071,1079,1087,1091,1120,1187 'ai-workflow-autom':1078,1090,1119,1186 'alert':672,970 'alway':51 'america/new_york':386,399 'api':898,996,1041 'app':1181 'app.use':586 'appear':765 'applic':34 'architect':171,954 'architectur':959 'arena':193 'ask':1288 'async':28,295,497,1057,1253 'attempt':273,828 'autom':1081,1093,1122,1189 'avoid':821,853 'await':297,353,370,390,441,506,516,521,713,733 'back':9,21 'backend':1037,1044,1064,1130,1169,1178 'background':12,24,1030,1050,1217 'backoff':72,275,811,819,831,835,1010 'basic':214 'beat':78 'beyond':944 'board':192,532,555,562,569 'boundari':1296 'bull':191,531,554,561,568,1205 'bull-board':190,553,560,567 'bullmq':2,4,14,16,117,180,195,220,238,258,428,537,597,606,983,1004,1012,1035,1052,1059,1076,1101,1108,1128,1140,1148,1156,1200 'bullmq-pro':194 'bullmq-queu':116 'bullmq-specialist':1,982,1003,1011,1034,1051,1058,1075,1100,1107,1127,1139,1147,1155 'bullmqadapt':558,580,583 'capabl':115 'case':61 'caus':617 'charg':464 'charge-pay':463 'check':590 'child':413 'children':438,452 'clarif':1290 'clear':1263 'close':483,518 'cloud':186 'cluster':907 'collabor':901 'compens':934 'complet':423,440 'complex':404,931 'concurr':91,288,301,875,879,886 'configur':224,785 'connect':244,249,271,300,433,520,592,614,623,897 'conserv':97 'consid':737,802 'console.error':318 'console.log':498 'const':248,266,290,429,495,571 'core':179 'count':281,284 'cqrs':949 'craftsman':165,940 'crash':639,652 'creat':261,608,643,675,1097 'createbullboard':551,577 'criteria':1299 'cron':1143 'current':510 'daili':373,393 'daily-digest':372,392 'dashboard':533,971 'data':99,449,459,468,477,747,754,770 'day':382 'db':896 'dead':80 'default':56,265 'defaultjobopt':272 'defin':1138 'delay':123,199,278,324,336,347,352,358,1229 'delayed-job':122,198 'deleg':902 'deliveri':50,174 'depend':146,403,419,1099 'deploy':491,712,960 'describ':1267 'detect':638 'devop':964,1038,1070 'digest':374,394 'downstream':94,882,890 'drift':869 'driven':958 'dst':854,871 'durat':306 'edg':919 'elasticach':187 'email':173,176,270,294,978,986,993,1015,1020,1184 'email-deliveri':172 'email-system':175,985,1019,1183 'emailqueu':267,581 'enablereadycheck':259 'ensur':889 'environ':1279 'environment-specif':1278 'err':317,323 'error':596 'event':137,167,170,313,628,636,646,660,668,678,947,950,953,957 'event-architect':169,952 'event-driven':956 'event-sourc':166 'everi':381 'execut':29,795,1152 'expert':5,17,1284 'explicit':53,800,843,860 'exponenti':77,277,818,834 'expressadapt':565,574 'fail':86,315,322,658,667,677,680 'fals':260 'faster':743 'file':702 'finish':513 'fire':39,725,739 'fire-and-forget':38,724,738 'first':424 'flow':142,206,401,1096 'flow-produc':141 'flowproduc':426,430,432 'flowproducer.add':442 'forget':41,727,741 'full':761,775 'futur':341 'grace':107,480,501,688,695,704 'handl':49,112,312,604,634,666,690,706,893,1168 'handler':629,647,661,679,717,730,736 'herd':76,823,839 'high':873,878,888 'home':90 'host':182 'hour':364 'hunter':974,1084,1115,1192 'id':104,321,759,772 'idempot':62 'implement':232 'impli':1199,1204,1210,1216,1222,1228,1234,1240,1246,1252 'import':233,239,425,550,557,564 'indic':650 'infinit':794 'info':719,787,877 'infrastructur':150,905,916,963,967 'inlin':769 'input':1293 'instead':773 'inventori':456,458 'ioredi':181,240,242,251 'issu':624,855 'job':10,22,36,54,66,87,98,111,120,124,127,129,134,136,145,200,203,205,296,309,316,319,320,327,328,348,366,389,400,408,418,422,487,505,511,548,627,649,659,681,707,749,753,764,782,788,797,808,825,841,848,858,946,998,1095,1137,1151,1218,1223,1230,1236,1247 'job-depend':144 'job-ev':135 'job-flow':204 'job-prior':128 'job-schedul':119 'job.data':299 'keep':778 'kubernet':961 'larg':746,768 'let':46 'letter':81 'limit':92,133,209,289,303,900,1002,1255 'linear':79 'load':895,1069 'local':865 'log':684 'long':936,1046 'long-run':935 'lose':486 'low':781 'manag':929,1160 'match':58,1264 'max':304 'maxretriesperrequest':254,594,599,610 'may':67,708 'memori':780,908 'mention':1197,1202,1208,1214,1220,1226,1232,1238,1244,1250 'messag':605,641,673,700,731,763,796,824,856,884 'metric':969 'minut':311 'miss':593,1301 'monitor':189,535,656,670,686,968,977,1112 'multi':406 'multi-step':405 'name':443,453,462,471 'need':88,542,914,926,941,955,966,976 'new':230,250,268,292,431,504,573,579,582 'nextj':1180 'nextjs-app-rout':1179 'node.js':32 'node.js/typescript':31 'notif':476 'notifi':473 'notify-warehous':472 'null':255,600,611 'object':762,776 'option':55,85 'orchestr':162,943 'order':446,448 'orderid':450,460,469,478 'orderqueu':584 'orphan':110,710 'output':1273 'overwhelm':881 'parent':412,434 'parent-child':411 'pass':103,758,771 'pattern':140,197,213,378,395,1144 'payload':106,750 'payment':465,467 'per':310,1068 'perform':973,1083,1111,1114,1191 'performance-hunt':972,1082,1113,1190 'permiss':1294 'pipelin':1073 'potenti':745,872 'prevent':74,109,793,806,837 'principl':35 'prioriti':130 'pro':196 'process':13,25,409,445,1008,1031,1056,1072,1105,1242,1254 'process-ord':444 'process.env.redis':252 'process.exit':523 'process.on':525,528 'processor':212 'produc':44,143 'product':218 'production-readi':217 'proper':114,223,482,602 'protect':93 'provid':1018 'qstash':159,925 'queu':999,1048 'queue':11,23,48,82,118,156,215,221,231,234,247,262,269,519,538,545,578,720,913,918,920,927,965,975,979,1206,1212,1224 'queue.add':354,371,714,732 'queue.close':522 'queue.removerepeatable':391 'queue/worker':607 'queueevent':236 'queuenam':447,457,466,475 'railway':188 'rare':57 'rate':132,208,899,1001 'rate-limit':207 'rate-limiting-job':131 'readi':219 'receiv':995,1042 'reconnect':603 'redi':8,20,149,152,185,591,613,622,779,904,906,911,915,922,930,989,1026,1028,1132,1162,1164,1176,1211 'redis-back':7,19 'redis-cloud':184 'redis-infrastructur':148 'redis-specialist':151,910,988,1027,1131,1163,1175 'relat':1170 'relationship':414 'reliabl':27 'remind':343,355 'remov':387 'removeoncomplet':280 'removeonfail':283 'repeat':126,202,365,377,388,840,847,857,1136,1235 'repeatable-job':125,201 'request':716,729,735,994,1043 'requir':256,598,1292 'respons':65,744 'restart':493 'result':1062,1117,1167 'retri':809,815,827 'review':1285 'router':1182 'run':68,330,349,367,937 'safeti':1295 'saga':933 'sandbox':211 'sandboxed-processor':210 'scale':962,1067 'schedul':121,326,340,369,1123,1154,1248 'scope':147,1266 'sendemail':298 'sensibl':264 'sent':1016 'server':864 'serveradapt':572,585 'serveradapter.getrouter':588 'serveradapter.setbasepath':575 'serverless':155,917 'serverless-queu':154 'servic':95,883,891 'set':52 'setup':216 'sever':595,630,662,691,718,751,786,813,845,876 'share':243 'shut':499,696 'shutdown':108,481,496,527,530,689,705 'side':45 'sigint':529 'sigterm':113,526 'sigterm/sigint':699 'simpl':945 'skill':981,1033,1074,1126,1171,1258 'skill-bullmq-specialist' 'small':102,757 'sourc':168,948 'source-sickn33' 'specialist':3,15,153,912,984,990,1005,1013,1029,1036,1053,1060,1077,1102,1109,1129,1133,1141,1149,1157,1165,1177 'specif':332,1280 'specifi':850 'stack':980,1032,1125 'stage':1106 'stall':626,635,645,648 'start':96,228 'state':549,1159 'status':546,1023 'step':407 'stop':502,620,1286 'stored/notified':1063 'strategi':73,812,832 'stream':951 'stuck':807 'submit':1089 'substitut':1276 'success':1298 'summari':376 'system':177,987,1021,1185 'task':342,1047,1088,1124,1262 'tempor':164,939 'temporal-craftsman':163,938 'test':1282 'thunder':75,822,838 'time':333,345,866 'timeout':515,784,791,801,804 'timezon':844,851,861,1146 'tool':178 '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' 'track':1024 'treat':1271 'trigger':903 'tune':909 'type':276,375 'tz':385,398 'upstash':158,183,924 'upstash-qstash':157,923 'url':253 'use':60,227,339,417,490,541,817,833,863,1195,1256 'user':1196,1201,1207,1213,1219,1225,1231,1237,1243,1249 'userid':356 'valid':455,589,1281 'validate-inventori':454 'via':1017 'visibl':543 'visual':534 'wait':435,508 'warehous':474 'warn':631,663,692,752,814,846 'well':1173 'without':485,609,644,676,703,783,799,810,842,859,928 'work':1172 'worker':139,235,286,291,293,484,494,618,632,640,642,651,664,674,693,701,874,885,1007,1055,1066,1104,1241 'worker-pattern':138 'worker.close':517 'worker.on':314 'worker.pause':507 'workflow':161,932,942,991,1039,1080,1085,1092,1121,1134,1188 'workflow-orchestr':160","prices":[{"id":"fc6be68c-d12b-45e9-b1cf-7a725388d03c","listingId":"f1a3fdb0-587c-4bf5-ac36-aaf80464fb68","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:34:43.061Z"}],"sources":[{"listingId":"f1a3fdb0-587c-4bf5-ac36-aaf80464fb68","source":"github","sourceId":"sickn33/antigravity-awesome-skills/bullmq-specialist","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/bullmq-specialist","isPrimary":false,"firstSeenAt":"2026-04-18T21:33:49.716Z","lastSeenAt":"2026-05-18T18:50:43.913Z"},{"listingId":"f1a3fdb0-587c-4bf5-ac36-aaf80464fb68","source":"skills_sh","sourceId":"sickn33/antigravity-awesome-skills/bullmq-specialist","sourceUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/bullmq-specialist","isPrimary":true,"firstSeenAt":"2026-04-18T20:34:43.061Z","lastSeenAt":"2026-05-07T22:40:38.773Z"}],"details":{"listingId":"f1a3fdb0-587c-4bf5-ac36-aaf80464fb68","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"bullmq-specialist","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":"a694a16a7148827fe82fc91ba0d8e1c4a7a95007","skill_md_path":"skills/bullmq-specialist/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/bullmq-specialist"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"bullmq-specialist","description":"BullMQ expert for Redis-backed job queues, background processing,"},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/bullmq-specialist"},"updatedAt":"2026-05-18T18:50:43.913Z"}}