mcpField
A
async

async

github.com/thebeardedbearsasDevelopment107113 installsUpdated today
Repository

About async

A quick-reference skill for designing asynchronous background processing, especially when work could make an HTTP request or UI unresponsive. It outlines reliability invariants, framework options, and common failure patterns.

Key features

  1. 01Guidance on when to offload work
  2. 02Idempotency and deduplication
  3. 03Retries, backoff, and dead-letter queues
  4. 04Parallel competing consumers
  5. 05Lifecycle logs, metrics, and alerts
  6. 06Framework options for PHP and Node.js

Use cases

  1. 01Moving email and document generation to workers
  2. 02Handling slow third-party API calls
  3. 03Planning retry and dead-letter behavior
  4. 04Monitoring background task failures

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/thebeardedbearsas/claude-craft --skill async

After installing, type/asyncin Claude Code to confirm it loaded.

Bundled filesREFERENCE.md

Details

From the project README

Async-First — Quick Reference

Décharger les traitements > 200 ms vers des workers en arrière-plan, pour garder l'UI/API réactives.

Quand activer l'async

CasAsync ?
Envoi d'email transactionnel✅
Génération PDF / export CSV✅
Appel API tierce > 200 ms✅
Traitement batch nocturne✅
Lecture base de données triviale❌

Cinq invariants non-négociables

  1. HTTP < 200 ms. Toute opération qui dépasse ce seuil doit être déportée.
  2. Idempotence obligatoire. Un message peut être rejoué — concevoir comme tel (idempotency keys, dedupe).
  3. Retry + Dead Letter Queue. 3 tentatives, backoff exponentiel + jitter. Au-delà → DLQ + alerte.
  4. Competing consumers. 4-8 workers en parallèle pour absorber les pics.
  5. Lifecycle tracking. Logs structurés, métriques (latence, taux erreur, DLQ depth) et alertes.

Frameworks recommandés

StackFrameworkNotes
SymfonySymfony MessengerTransport AMQP, Redis, Doctrine ; supports Stamps
LaravelLaravel Queue (Horizon en prod)Backed by Redis ou SQS ; supervision native
PHP framework-agnosticEcotoneDDD, sagas, scheduler, messaging unifié
Node.jsBullMQ ou RabbitMQRedis-backed avec dashboard

Pattern minimal (Symfony Messenger)

// Message (immutable DTO)
final class SendWelcomeEmail
{
    public function __construct(public readonly string $userId) {}
}

// Handler
final class SendWelcomeEmailHandler
{
    public function __invoke(SendWelcomeEmail $message): void
    {
        // Idempotency check
        if ($this->emailLog->wasSent($message->userId, 'welcome')) {
            return;
        }
        $this->mailer->sendWelcome($message->userId);
        $this->emailLog->record($message->userId, 'welcome');
    }
}

// Dispatch (controller)
$this->bus->dispatch(new SendWelcomeEmail($user->id));

Anti-patterns critiques

  • ❌ Mettre une opération idempotente directement dans le handler sans clé d'idempotency (replay = double effet).
  • ❌ try { ... } catch (\Throwable) { /* swallow */ } dans un handler → le message est marqué traité alors qu'il a échoué.
  • ❌ Stocker la payload complète d'un email/PDF dans le message → préférer un ID + lookup, sinon RabbitMQ explose.
  • ❌ Pas de circuit breaker autour des appels tiers : un provider down fait monter la DLQ en flèche.

Pour aller plus loin

Détails complets, patterns Laravel/Ecotone, exemples de configuration, observabilité OpenTelemetry, lifecycle events, checklists par phase : voir @.claude/skills/async/REFERENCE.md.

Comments

Markdown supported