What problem does it solve? Building reliable asynchronous processing with BullMQ is error-prone: jobs can be non-idempotent, payloads can leak PII, retries can loop forever, and producers can become coupled to consumers. This Skill provides concrete patterns and review heuristics for designing safe, idempotent, tenant-aware BullMQ queues in a NestJS modulith where the API enqueues jobs and a separate worker app processes them. ## Core Features & Use Cases - Producer/Consumer Architecture Guidance: Enforces the split between @iwana/api (enqueue only) and @iwana/worker (process only) with concrete @nestjs/bullmq code patterns. - Idempotency & Retry Rules: Defines mandatory idempotency for financial, provisioning, and audit flows, plus criteria for retries, backoff, and dead-letter queues. - Payload & Tenant Safety: Establishes rules for minimal, secure payloads without PII or secrets, and explicit tenant context propagation. - Use Case: When implementing a tenant provisioning flow, use this Skill to define the queue contract, set jobId-based deduplication, configure exponential backoff retries, and review the worker processor for boundary violations. ## Quick Start Ask the assistant to design or review a BullMQ job flow for a NestJS service, for example to create an idempotent tenant provisioning queue with safe payloads and retry strategy.