bullmq-specialist
Helps your agent manage background tasks with BullMQ. It ensures asynchronous processes run reliably.
What it does
This specialist helps organize tasks that need to be done in the background of an application. It ensures these tasks run reliably, even if the application needs to restart.
When to use it
- ✓When you need to schedule tasks to run later.
- ✓When you have many tasks and need to process them in batches.
- ✓When you want to monitor the progress of tasks.
Example of what to ask your AI
“How do I set up a queue to send emails in the background?”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
It uses a system called BullMQ that manages a list of tasks (a queue) and workers that execute these tasks. You define how tasks should run, and the system handles the rest.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill bullmq-specialistOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/bullmq-specialist/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
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 }, }, ], });
Graceful Shutdown
Properly close workers without losing jobs
When to use: Deploying or restarting workers
const shutdown = async () => { console.log('Shutting down gracefully...');
// Stop accepting new jobs await worker.pause();
// Wait for current jobs to finish (with timeout) await worker.close();
// Close queue connection await queue.close();
process.exit(0); };
process.on('SIGTERM', shutdown); process.on('SIGINT', shutdown);
Bull Board Dashboard
Visual monitoring for BullMQ queues
When to use: Need visibility into queue status and job states
import { createBullBoard } from '@bull-board/api'; import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
…
FAQ
What are 'jobs'?
'Jobs' are the individual tasks you want the system to perform in the background.
What does 'idempotency' mean?
It means that running a task multiple times has the same effect as running it once. You need to ensure your tasks are idempotent.
Why is handling 'graceful shutdown' important?
To ensure no ongoing tasks are lost when the application restarts or shuts down.
Details
Original description by the author
BullMQ expert for Redis-backed job queues, background processing, and reliable async execution in Node.js/TypeScript applications.
Popularity
- GitHub stars
- 48k
- Ranking position
- #2469
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
api-connector-builder
Has your agent build new API connections following the existing pattern. Use when you need to add one more integration without creating a new way of doing things.
affaan-m/ECC
api-design
Helps your agent design REST APIs following best practices. It's useful for defining how APIs communicate, how errors are shown, and how to organize data.
affaan-m/ECC
backend-patterns
Helps your agent with server-side architecture patterns and database optimization. It's useful for building or reviewing code that runs on the server.
affaan-m/ECC