Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

bullmq-specialist

RedisをバックエンドとするジョブキューライブラリBullMQの専門スキルで、Node.js/TypeScriptアプリケーションにおけるバックグラウンド処理や信頼性の高い非同期実行の実装・設計をサポートします。

description の原文を見る

BullMQ expert for Redis-backed job queues, background processing, and reliable async execution in Node.js/TypeScript applications.

SKILL.md 本文

BullMQ Specialist

BullMQの専門家。Redisを使用したジョブキュー、バックグラウンド処理、Node.js/TypeScriptアプリケーションにおける信頼性の高い非同期実行を実現します。

Principles

  • ジョブはプロデューサー側からはファイア・アンド・フォーゲット - キューに配信を任せる
  • 常に明示的なジョブオプションを設定する - デフォルト値はユースケースに合致することはほぼない
  • べき等性はあなたの責任 - ジョブは複数回実行される可能性がある
  • バックオフ戦略はthundering herdを防止する - 線形より指数関数的なものが優れている
  • デッドレターキューは必須ではない - 失敗したジョブには行き先が必要
  • 並行処理制限は下流サービスを保護する - 保守的に始める
  • ジョブデータは小さくするべき - ペイロード全体ではなくIDを渡す
  • グレースフルシャットダウンは孤立したジョブを防止する - SIGTERMを適切に処理する

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

本番環境対応のBullMQキュー設定

使用時機: 新しいキュー実装を開始するときすべての場面で

import { Queue, Worker, QueueEvents } from 'bullmq';
import IORedis from 'ioredis';

// すべてのキュー用の共有接続
const connection = new IORedis(process.env.REDIS_URL, {
  maxRetriesPerRequest: null,  // BullMQに必須
  enableReadyCheck: false,
});

// 妥当なデフォルト値でキューを作成
const emailQueue = new Queue('emails', {
  connection,
  defaultJobOptions: {
    attempts: 3,
    backoff: {
      type: 'exponential',
      delay: 1000,
    },
    removeOnComplete: { count: 1000 },
    removeOnFail: { count: 5000 },
  },
});

// 並行処理制限のあるワーカー
const worker = new Worker('emails', async (job) => {
  await sendEmail(job.data);
}, {
  connection,
  concurrency: 5,
  limiter: {
    max: 100,
    duration: 60000,  // 1分間に100ジョブ
  },
});

// イベント処理
worker.on('failed', (job, err) => {
  console.error(`Job ${job?.id} failed:`, err);
});

Delayed and Scheduled Jobs

特定の時間またはディレイ後に実行されるジョブ

使用時機: 将来のタスク、リマインダー、またはタイムドアクション予約

// 遅延ジョブ - ディレイ後に1回実行
await queue.add('reminder', { userId: 123 }, {
  delay: 24 * 60 * 60 * 1000,  // 24時間
});

// リピートジョブ - スケジュール通りに実行
await queue.add('daily-digest', { type: 'summary' }, {
  repeat: {
    pattern: '0 9 * * *',  // 毎日午前9時
    tz: 'America/New_York',
  },
});

// リピートジョブを削除
await queue.removeRepeatable('daily-digest', {
  pattern: '0 9 * * *',
  tz: 'America/New_York',
});

Job Flows and Dependencies

親子関係を伴う複雑なマルチステップジョブ処理

使用時機: ジョブが他のジョブの完了に依存する場合

import { FlowProducer } from 'bullmq';

const flowProducer = new FlowProducer({ connection });

// 親はすべての子の完了を待つ
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

ジョブを失わずにワーカーを適切に閉じる

使用時機: ワーカーをデプロイまたは再起動するとき

const shutdown = async () => {
  console.log('Shutting down gracefully...');

  // 新しいジョブを受け付けない
  await worker.pause();

  // 現在のジョブが終了するまで待機 (タイムアウト付き)
  await worker.close();

  // キュー接続を閉じる
  await queue.close();

  process.exit(0);
};

process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);

Bull Board Dashboard

BullMQキューの視覚的監視

使用時機: キューステータスとジョブ状態を可視化する必要があるとき

import { createBullBoard } from '@bull-board/api';
import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
import { ExpressAdapter } from '@bull-board/express';

const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');

createBullBoard({
  queues: [
    new BullMQAdapter(emailQueue),
    new BullMQAdapter(orderQueue),
  ],
  serverAdapter,
});

app.use('/admin/queues', serverAdapter.getRouter());

Validation Checks

Redis connection missing maxRetriesPerRequest

重大度: ERROR

BullMQは適切な再接続処理のためにmaxRetriesPerRequest nullが必要です

メッセージ: BullMQキュー/ワーカーが Redis接続のmaxRetriesPerRequest: nullなしで作成されました。これはRedis接続の問題時にワーカーが停止する原因となります。

No stalled job event handler

重大度: WARNING

ワーカーはクラッシュしたワーカーを検出するためにstalled イベントを処理する必要があります

メッセージ: ワーカーが 'stalled' イベントハンドラーなしで作成されました。Stalledジョブはワーカークラッシュを示すため、監視される必要があります。

No failed job event handler

重大度: WARNING

ワーカーは監視とアラート通知のためにfailed イベントを処理する必要があります

メッセージ: ワーカーが 'failed' イベントハンドラーなしで作成されました。失敗したジョブはログ記録され、監視される必要があります。

No graceful shutdown handling

重大度: WARNING

ワーカーはSIGTERM/SIGINTでグレースフルシャットダウンする必要があります

メッセージ: ワーカーファイルにグレースフルシャットダウン処理がありません。デプロイ時にジョブが孤立する可能性があります。

Awaiting queue.add in request handler

重大度: INFO

キュー追加はリクエストハンドラー内でファイア・アンド・フォーゲットである必要があります

メッセージ: queue.add がリクエストハンドラー内でawaitされています。高速レスポンスのためファイア・アンド・フォーゲットを検討してください。

Potentially large data in job payload

重大度: WARNING

ジョブデータは小さくするべき - 完全なオブジェクトではなくIDを渡す

メッセージ: ジョブが大きなインラインデータを持つようです。Redis メモリを低くするために完全なオブジェクトではなく IDを渡してください。

Job without timeout configuration

重大度: INFO

無限実行を防ぐためジョブにはタイムアウトが必要です

メッセージ: ジョブが明示的なタイムアウト設定なしで追加されました。スタックしたジョブを防ぐためタイムアウトを追加検討してください。

Retry without backoff strategy

重大度: WARNING

リトライはthundering herdを避けるため指数関数的バックオフを使用する必要があります

メッセージ: ジョブにリトライ試行がありますがバックオフ戦略がありません。thundering herdを防ぐため指数関数的バックオフを使用してください。

Repeatable job without explicit timezone

重大度: WARNING

リピートジョブはDST問題を避けるためタイムゾーンを指定する必要があります

メッセージ: リピートジョブに明示的なタイムゾーンがありません。サーバーローカル時間を使用するためDSTで時間がずれる可能性があります。

Potentially high worker concurrency

重大度: INFO

高い並行処理は下流サービスに過負荷をかける可能性があります

メッセージ: ワーカー並行処理が高いです。下流サービスがこの負荷を処理できることを確認してください (DB接続、API レート制限)。

Collaboration

Delegation Triggers

  • redis infrastructure|redis cluster|memory tuning -> redis-specialist (キューがRedis インフラを必要とする)
  • serverless queue|edge queue|no redis -> upstash-qstash (Redis管理なしでキューが必要)
  • complex workflow|saga|compensation|long-running -> temporal-craftsman (シンプルなジョブ以上のワークフロー オーケストレーションが必要)
  • event sourcing|CQRS|event streaming -> event-architect (イベント駆動アーキテクチャが必要)
  • deploy|kubernetes|scaling|infrastructure -> devops (キューがインフラを必要とする)
  • monitor|metrics|alerting|dashboard -> performance-hunter (キューが監視を必要とする)

Email Queue Stack

スキル: bullmq-specialist, email-systems, redis-specialist

ワークフロー:

1. メール要求受信 (API)
2. レート制限付きでジョブをキュー (bullmq-specialist)
3. ワーカーがバックオフで処理 (bullmq-specialist)
4. メールをプロバイダー経由で送信 (email-systems)
5. ステータスをRedisで追跡 (redis-specialist)

Background Processing Stack

スキル: bullmq-specialist, backend, devops

ワークフロー:

1. APIがリクエスト受信 (backend)
2. 長いタスクをバックグラウンドのためキュー (bullmq-specialist)
3. ワーカーが非同期処理 (bullmq-specialist)
4. 結果を保存/通知 (backend)
5. ワーカーを負荷ごとにスケール (devops)

AI Processing Pipeline

スキル: bullmq-specialist, ai-workflow-automation, performance-hunter

ワークフロー:

1. AI タスク送信 (ai-workflow-automation)
2. 依存関係のあるジョブフロー作成 (bullmq-specialist)
3. ワーカーがステージを処理 (bullmq-specialist)
4. パフォーマンス監視 (performance-hunter)
5. 結果を集約 (ai-workflow-automation)

Scheduled Tasks Stack

スキル: bullmq-specialist, backend, redis-specialist

ワークフロー:

1. リピートジョブ定義 (bullmq-specialist)
2. タイムゾーン付きCronパターン (bullmq-specialist)
3. ジョブがスケジュール通りに実行 (bullmq-specialist)
4. 状態がRedisで管理 (redis-specialist)
5. 結果を処理 (backend)

Related Skills

相性が良いスキル: redis-specialist, backend, nextjs-app-router, email-systems, ai-workflow-automation, performance-hunter

When to Use

  • ユーザーが以下を言及または示唆: bullmq
  • ユーザーが以下を言及または示唆: bull queue
  • ユーザーが以下を言及または示唆: redis queue
  • ユーザーが以下を言及または示唆: background job
  • ユーザーが以下を言及または示唆: job queue
  • ユーザーが以下を言及または示唆: delayed job
  • ユーザーが以下を言及または示唆: repeatable job
  • ユーザーが以下を言及または示唆: worker process
  • ユーザーが以下を言及または示唆: job scheduling
  • ユーザーが以下を言及または示唆: async processing

Limitations

  • このスキルは上記で説明されたスコープと明確に一致するタスクのときだけ使用してください。
  • 出力を環境固有の検証、テスト、または専門家レビューの代替として扱わないでください。
  • 必須入力、権限、安全基準、または成功基準が不足している場合は停止して明確にしてください。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
sickn33
リポジトリ
sickn33/antigravity-awesome-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/sickn33/antigravity-awesome-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: sickn33 · sickn33/antigravity-awesome-skills · ライセンス: MIT