
Bullmq Specialist
Stand up Redis-backed BullMQ queues, workers, and failure handling when you need reliable background jobs in Node.js or TypeScript.
Overview
BullMQ Specialist is an agent skill for the Build phase that guides Redis-backed job queues, workers, and reliable async execution in Node.js/TypeScript apps.
Install
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill bullmq-specialistWhat is this skill?
- Eight production principles: idempotency, explicit job options, exponential backoff, dead-letter handling, concurrency l
- Covers queues, delayed and repeatable jobs, priorities, rate limiting, job events, worker patterns, flow producers, and
- Documents scope boundaries—points Redis infra, serverless queues (Upstash QStash), Temporal, event sourcing, and email d
- Stacks on bullmq + ioredis with hosting notes for Upstash, Redis Cloud, ElastiCache, and Railway
- Eight documented production principles for queue design
- Ten named capability areas from scheduling through job dependencies
Adoption & trust: 1.2k installs on skills.sh; 40.1k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need background jobs in Node but default queue settings, retries, and shutdown behavior will drop work or hammer downstream services under load.
Who is it for?
Indie SaaS or API builders adding workers, cron-like repeatables, or flow chains on BullMQ with ioredis and a managed Redis host.
Skip if: Teams wanting serverless-only queues without Redis, full workflow orchestration (Temporal), or pure infrastructure Redis tuning without application queue patterns.
When should I use this skill?
You are implementing or reviewing BullMQ queues, workers, delayed/repeatable jobs, or Redis-backed async execution in Node.js/TypeScript.
What do I get? / Deliverables
You get a BullMQ-shaped plan—explicit job options, backoff, DLQ, concurrency limits, and small payloads—ready to implement against Redis with clear boundaries to other queue/orchestration tools.
- Queue and worker design with explicit job options, backoff, and dead-letter handling
- Concurrency and rate-limit guidance aligned to downstream service capacity
- Scope notes when to escalate to Redis, QStash, Temporal, or event-architect skills
Recommended Skills
Journey fit
Background job design and worker patterns belong in Build when you wire async execution into the product backend. BullMQ is a server-side queue integration—canonical shelf is backend, not frontend or launch tooling.
How it compares
Opinionated BullMQ application patterns—not a generic Redis admin skill or a hosted QStash serverless queue guide.
Common Questions / FAQ
Who is bullmq-specialist for?
Solo and indie builders shipping Node.js/TypeScript backends who need dependable background processing with BullMQ on Redis.
When should I use bullmq-specialist?
During Build when you design queues, workers, retries, and job flows; also when hardening ship-ready async paths before scaling traffic.
Is bullmq-specialist safe to install?
Source is documented as Apache 2.0 from vibeship-spawner-skills; review the Security Audits panel on this Prism page before installing in your environment.
SKILL.md
READMESKILL.md - Bullmq Specialist
# BullMQ Specialist BullMQ expert for Redis-backed job queues, background processing, and reliable async execution in Node.js/TypeScript applications. ## Principles - Jobs are fire-and-forget from the producer side - let the queue handle delivery - Always set explicit job options - defaults rarely match your use case - Idempotency is your responsibility - jobs may run more than once - Backoff strategies prevent thundering herds - exponential beats linear - Dead letter queues are not optional - failed jobs need a home - Concurrency limits protect downstream services - start conservative - Job data should be small - pass IDs, not payloads - Graceful shutdown prevents orphaned jobs - handle SIGTERM properly ## Capabilities - bullmq-queues - job-scheduling - delayed-jobs - repeatable-jobs - job-priorities - rate-limiting-jobs - job-events - worker-patterns - flow-producers - job-dependencies ## Scope - redis-infrastructure -> redis-specialist - serverless-queues -> upstash-qstash - workflow-orchestration -> temporal-craftsman - event-sourcing -> event-architect - email-delivery -> email-systems ## Tooling ### Core - bullmq - ioredis ### Hosting - upstash - redis-cloud - elasticache - railway ### Monitoring - bull-board - arena - bullmq-pro ### Patterns - delayed-jobs - repeatable-jobs - job-flows - rate-limiting - sandboxed-processors ## Patterns ### Basic Queue Setup Production-ready BullMQ queue with proper configuration **When to use**: Starting any new queue implementation import { Queue, Worker, QueueEvents } from 'bullmq'; import IORedis from 'ioredis'; // Shared connection for all queues const connection = new IORedis(process.env.REDIS_URL, { maxRetriesPerRequest: null, // Required for BullMQ enableReadyCheck: false, }); // Create queue with sensible defaults const emailQueue = new Queue('emails', { connection, defaultJobOptions: { attempts: 3, backoff: { type: 'exponential', delay: 1000, }, removeOnComplete: { count: 1000 }, removeOnFail: { count: 5000 }, }, }); // Worker with concurrency limit const worker = new Worker('emails', async (job) => { await sendEmail(job.data); }, { connection, concurrency: 5, limiter: { max: 100, duration: 60000, // 100 jobs per minute }, }); // Handle events worker.on('failed', (job, err) => { console.error(`Job ${job?.id} failed:`, err); }); ### Delayed and Scheduled Jobs Jobs that run at specific times or after delays **When to use**: Scheduling future tasks, reminders, or timed actions // Delayed job - runs once after delay await queue.add('reminder', { userId: 123 }, { delay: 24 * 60 * 60 * 1000, // 24 hours }); // Repeatable job - runs on schedule await queue.add('daily-digest', { type: 'summary' }, { repeat: { pattern: '0 9 * * *', // Every day at 9am tz: 'America/New_York', }, }); // Remove repeatable job await queue.removeRepeatable('daily-digest', { pattern: '0 9 * * *', tz: 'America/New_York', }); ### Job Flows and Dependencies Complex multi-step job processing with parent-child relationships **When to use**: Jobs depend on other jobs completing first import { FlowProducer } from 'bullmq'; const flowProducer = new FlowProducer({ connection }); // Parent waits for all children to complete await flowProducer.add({ name: 'process-order', queueName: 'orders', data: { orderId: 123 }, children: [ { name: 'validate-inventory', queueName: 'inventory', data: { orderId: 123 }, }, { name: 'charge-payment', queueName: 'payments', data: { orderId: 123 }, }, { name: 'notify-warehouse', queueName: 'notifications', data: { orderId: 123 }, },