agentsclimarketplace

Nestjs scheduling

Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/nestjs-scheduling

Distributed cron jobs and locking patterns. Use when implementing scheduled tasks or distributed locking patterns in NestJS. (triggers: **/*.service.ts, @Cron, CronExpression, ScheduleModule)From its SKILL.md

Install
npx -y skills add ComeOnOliver/skillshub --skill nestjs-scheduling

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

1.6 KB, 367 tokens by cl100k_base, as published. Nobody here has run it

Task Scheduling & Jobs

Priority: P1 (OPERATIONAL)

Background job processing and scheduled task patterns.

  • Problem: @Cron() runs on every instance. In K8s with 3 pods, your "Daily Report" runs 3 times.
  • Solution: Distributed Locking using Redis.
    • Pattern: Using a decorator to wrap the cron method.
    • Logic: SET resource_name my_random_value NX PX 30000 (Redis Atomic Set).

Cron Decorator Pattern

  • Implementation:

    @Cron(CronExpression.EVERY_MINUTE)
    @DistributedLock({ key: 'send_emails', ttl: 5000 })
    async handleCron() {
      // Only runs if lock acquired
    }
    
  • Tools: Use nestjs-redlock or custom Redis wrapper via redlock library.

Job Robustness

  • Isolation: Never perform heavy processing inside the Cron handler.
    • Pattern: Cron -> Push Job ID to Queue (BullMQ) -> Worker processes it.
    • Why: Cron schedulers can get blocked by the Event Loop; Workers are scalable.
  • Error Handling: Wrap ALL cron logic in try/catch. Uncaught exceptions in a Cron job can crash the entire Node process.

Anti-Patterns

  • No unguarded cron logic: Always wrap in try/catch; uncaught exceptions crash the entire Node process.
  • No direct cron processing: Push to BullMQ queue; workers are scalable, cron handlers are not.
  • No bare @Cron in multi-pod: Use distributed locking (redlock) to prevent duplicate concurrent runs.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.