Communitygithub.com

conception-de-files-d-attente-de-taches

Concevoir un système de tâches d'arrière-plan robuste, choisir entre BullMQ / Sidekiq / RQ / Temporal / SQS, décider file d'attente ou workflow, gérer la concurrence et les limites de débit, construire des dead-letter queues et rendre les handlers idempotents.

Qu'est-ce que conception-de-files-d-attente-de-taches ?

Ce skill guide les développeurs dans la conception de systèmes de tâches d'arrière-plan (background jobs) en abordant les trois modes de défaillance critiques : perte de tâches, exécution dupliquée et renvois incontrôlés. Il couvre le choix entre les primitives appropriées (BullMQ, Sidekiq, SQS, Temporal) en fonction de la complexité du travail et des besoins d'isolation. Le skill détaille les patterns essentiels tels que l'idempotence via des clés métier stables et des contraintes uniques en base de données, la gestion des timeouts de visibilité pour éviter les exécutions doubles lors de crashs de worker, la classification des erreurs pour alimenter une Dead Letter Queue (DLQ) avec alertes et outils de rejeu, et l'implémentation de backoff avec jitter pour éviter les effets de troupeau. Il met en garde contre les anti-patterns courants comme l'utilisation unique de Redis pour l'idempotence, les timeouts trop courts, le backoff exponentiel sans jitter, la politique d'éviction LRU sur Redis, et l'absence d'outil de rejeu pour la DLQ. Le skill fournit également des conseils sur l'hygiène mémoire, l'arrêt gracieux, et la décision entre file d'attente simple et workflow temporel.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/curiositech/windags-skills/tree/HEAD/skills/background-job-queue-design

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Conception de files d'attente de tâches d'arrière-plan

Un système de tâches d'arrière-plan présente trois modes de défaillance contre lesquels vous devez vous prémunir dès le premier jour : tâches perdues, exécution dupliquée et renvois incontrôlés. Choisissez la mauvaise primitive et vous passerez l'année suivante à corriger ces trois problèmes. Le consensus récurrent de l'industrie, à travers les documentations de BullMQ, Sidekiq, SQS et Temporal, est que l'exactement-une-fois n'est pas une sémantique de livraison honnête — l'au-moins-une-fois est la seule sémantique réaliste. Concevez chaque handler pour être idempotent et arrêtez de courir après l'exactement-une-fois. (Caduh — Queues 101)

Allez directement au problème :

Quand utiliser

  • Lors de la conception d'un nouveau système de tâches d'arrière-plan en Node, Ruby, Python ou Go.
  • Lors de la migration de setTimeout / cron / files d'attente maison vers un courtier fiable.
  • Les plantages de worker entraînent la perte de tâches.
  • Les renvois en production provoquent des effets secondaires dupliqués.
  • Lors du choix entre BullMQ (Node + Redis), Sidekiq (Ruby + Redis), RQ / Celery / Dramatiq (Python), Asynq (Go + Redis), SQS (géré) ou Temporal (exécution durable).

Capacités de base

Choisir la primitive adaptée au travail

Vous avezUtilisezRaison
Tâches courtes avec effets secondaires (envoyer un email, redimensionner une image) sur NodeBullMQNatif Redis, DLQ mature, patterns de flux, ~5k tâches/s/noeud typique
Même chose sur RubySidekiq (Pro pour la fiabilité)Même forme ; super_fetch Pro ajoute une récupération fiable via LMOVE (Wiki Sidekiq)
Workflows multi-étapes avec fan-out vers API externes, durées d'heures à joursTemporalExécution durable ; rejoue à partir de l'historique des événements (Docs Temporal)
Natif AWS, fanout simple, ne veut pas gérer RedisSQS + LambdaAu-moins-une-fois géré ; timeout de visibilité + DLQ de première classe (AWS SQS DLQ)
Isolation multi-région et multi-tenantTemporal ou SQSUn seul Redis ne survivra pas proprement en multi-région
Besoin d'exactement-une-fois entre DB + email + paiementsAucun — concevez pour au-moins-une-fois + handlers idempotents"Exactement-une-fois" à l'intérieur du courtier ne s'étend pas entre les systèmes (Caduh)

Le critère caché : quelle est la complexité de l'histoire de récupération ? Une simple file d'attente BullMQ avec renvois est suffisante pour "envoyer un reçu." Un workflow d'achat en 12 étapes qui attend 24 heures un webhook est un workflow Temporal, pas 12 tâches de file d'attente chaînées.

Idempotence

La propriété obligatoire. La documentation de chaque file d'attente populaire commence par cela. De la page BullMQ sur les tâches idempotentes : "cela ne devrait pas faire de différence pour l'état final du système qu'une tâche se termine avec succès à sa première tentative, ou qu'elle échoue initialement et réussisse lors d'un renvoi." (BullMQ idempotent-jobs)

Patterns pratiques :

// 1. Clé d'idempotence dérivée de l'événement métier, pas de la file d'attente.
//    Utilisez l'event_id amont si vous en avez un (Stripe event.id, id du hook Shopify).
const job = await queue.add(
  'send-receipt',
  { orderId, amount },
  {
    jobId: `send-receipt:${orderId}`,   // BullMQ déduplique par jobId dans la file d'attente.
    attempts: 5,
    backoff: { type: 'exponential', delay: 1000 },
    removeOnComplete: { age: 3600, count: 1000 },
    removeOnFail:     { age: 86400 },
  }
);

// 2. Dans le handler, dédupliquez également au niveau du site d'effet secondaire.
async function processSendReceipt(job) {
  const { orderId, amount } = job.data;
  // Si déjà envoyé, ne rien faire.
  const sent = await db.queryOne(
    'INSERT INTO email_sends (idempotency_key, order_id) VALUES ($1, $2) ON CONFLICT DO NOTHING RETURNING id',
    [`send-receipt:${orderId}`, orderId]
  );
  if (!sent) return { skipped: 'already-sent' };
  await emailProvider.send({ to: ..., subject: ..., body: render(amount) });
}

Le jobId déduplique les ajouts tant qu'un doublon est encore dans la file d'attente. La contrainte unique en base de données déduplique en cas de plantage de worker, renvois et rejeux. Les deux sont nécessaires ; jobId seul est insuffisant car BullMQ supprime les tâches terminées et la fenêtre de déduplication disparaît.

Récupération fiable et timeout de visibilité

Lorsqu'un worker récupère une tâche et plante, que se passe-t-il ?

SystèmeComportement par défautRécupération
BullMQLa tâche a un lockDuration (défaut 30s). Le vérificateur de tâches bloquées remet en file d'attente après expiration (BullMQ production)Les workers DOIVENT prolonger le verrou ou terminer dans le lockDuration ; sinon elle s'exécute deux fois
Sidekiq OSSLe pop n'est pas atomique ; si le worker plante entre le pop et le process, la tâche est perduePassez à Sidekiq Pro super_fetch (Redis 6.2+ LMOVE vers une file de travail privée)
Sidekiq Pro super_fetchLMOVE vers une liste de travail par processus. Le heartbeat expire à 60s ; une vérification des orphelins balaie et ré-ajoute (Wiki Sidekiq)Intégré
SQSTimeout de visibilité (défaut 30s, max 12h). Le message réapparaît après timeout si non suppriméDéfinissez le timeout > p99 du temps de handler ; prolongez avec ChangeMessageVisibility pour les longues tâches
TemporalLes activités ont des politiques de heartbeat + renvois. L'historique du workflow survit à la mort du workerRejeu à partir de l'historique ; vous n'y pensez pas

Le piège : lockDuration / timeout de visibilité plus court que le p99 du temps de handler → la tâche s'exécute deux fois. Plus long que le temps de récupération acceptable → le travail planté attend trop longtemps. Mesurez d'abord votre p99, définissez le timeout à ~3x celui-ci, et faites en sorte que le handler effectue un heartbeat / prolonge le verrou pour les tâches vraiment longues.

Classification des erreurs et DLQ

Toutes les erreurs ne doivent pas être renvoyées indéfiniment. D'après la documentation SQS : "Définissez le nombre maximum de réceptions... et la politique de redrive pour envoyer les messages vers la DLQ une fois le seuil dépassé." (AWS SQS DLQ)

// Classez avant de lancer une exception. Les erreurs permanentes ne doivent PAS être renvoyées.
class PermanentError extends Error { constructor(m: string) { super(m); this.name = 'PermanentError'; } }
class TransientError extends Error { constructor(m: string) { super(m); this.name = 'TransientError'; } }

async function process(job) {
  try {
    const user = await db.user(job.data.userId);
    if (!user) throw new PermanentError('user-not-found');   // → DLQ dès la première tentative
    if (user.suspended) throw new PermanentError('user-suspended');
    await externalApi.call(user);
  } catch (e) {
    if (e instanceof PermanentError) {
      // Déplacer immédiatement vers la DLQ — les renvois n'aideront pas.
      job.discard();    // BullMQ : empêche le renvoi
      throw e;
    }
    throw e;            // Réseau/timeout → renvoi selon la politique de tentatives
  }
}

La DLQ nécessite ensuite :

  • Une alerte sur le nombre croissant (pas seulement non nul — "la DLQ a 3 éléments pour toujours" est acceptable ; "la DLQ a augmenté de 100/min" est un incendie).
  • Un outil de rejeu (CLI ou interface d'administration) pour qu'un humain puisse corriger le bug amont, rejouer les tâches dead-letter et vider la DLQ.
  • Des tableaux de bord (voir grafana-dashboard-builder).

Backoff et jitter

Le backoff exponentiel seul ne suffit pas. Si 1000 tâches échouent toutes à 12:00:00 parce qu'un service aval a eu un défaut, le backoff exponentiel simple fera que les 1000 renvois auront lieu exactement à 12:00:01, 12:00:03, 12:00:07 — un troupeau piétinant qui pourrait maintenir le service aval hors service. Ajoutez du jitter complet :

// "Full jitter" style AWS : délai = random(0, exp_backoff)
const baseDelay = Math.min(2 ** attempt * 1000, 30_000);
const delay = Math.random() * baseDelay;

Pour la base de référence recommandée par BullMQ, le document going-to-production suggère des intervalles de renvoi entre 1s et 20s avec retryStrategy. (BullMQ production)

Concurrence et limiteur

La concurrence par worker exécute N tâches en parallèle à partir d'un seul processus. Plusieurs workers multiplient cela. Sans limiteur au niveau de la file d'attente, vous ne pouvez pas plafonner les appels agrégés vers un système aval :

// BullMQ — limite de débit globale sur tous les workers de cette file d'attente.
const queue = new Queue('outbound-emails', {
  connection,
  limiter: { max: 100, duration: 1000 }, // 100 emails/s sur toute la flotte
});

La bonne forme : plusieurs workers concurrents + un limiteur de file d'attente pour les limites contractuelles aval. Sidekiq a des limiteurs de débit équivalents ; SQS utilise la concurrence Lambda ou le taux par message.

Hygiène mémoire

L'écueil de production BullMQ le plus souligné : maxmemory-policy noeviction sur l'instance Redis. Toute autre politique (allkeys-lru, volatile-lru) supprimera silencieusement les tâches en file d'attente sous pression. (BullMQ production)

Aussi :

  • removeOnComplete agressif (ex. { age: 3600, count: 1000 }).
  • removeOnFail encore plus agressif une fois que vous êtes passé à un pattern DLQ.
  • Activez la persistance AOF de Redis — appendfsync everysec est le point idéal documenté pour BullMQ. (BullMQ production)
  • maxRetriesPerRequest: null sur le worker pour empêcher ioredis de lancer une exception lors de déconnexions transitoires. (BullMQ production)
  • Côté file d'attente : enableOfflineQueue: false pour que le producteur échoue rapidement au lieu de mettre en mémoire tampon.

Arrêt gracieux

process.on('SIGTERM', async () => {
  await worker.close();   // arrêter d'accepter ; terminer les tâches en cours.
  await connection.quit();
  process.exit(0);
});
process.on('SIGINT', async () => { /* même chose */ });

Le guide de production BullMQ note explicitement : fermez les workers avant d'arrêter le processus ; le timeout de blocage par défaut est d'environ 30s. (BullMQ production)

Décision file d'attente vs workflow

Un cadre utile tiré de la documentation de Temporal : "Contrairement aux files d'attente de messages qui déplacent des données entre les services, Temporal orchestre des processus entiers... sait où vous en êtes dans un workflow, ce qui est terminé, ce qui est en attente et ce qui doit être renvoyé." (Blog Temporal)

flowchart TD
  A[Tâche d'arrière-plan] --> B{Effet secondaire unique ou pipeline ?}
  B -->|Unique| C[BullMQ / Sidekiq / SQS]
  B -->|Multi-étapes| D{Les étapes durent des secondes ou des heures+ ?}
  D -->|Secondes| E[BullMQ flows / Sidekiq batches]
  D -->|Heures+ ou intervention humaine| F[Temporal / DBOS / Restate]
  C --> G{Besoin d'isolation multi-région ou multi-tenant ?}
  G -->|Oui| H[SQS ou Temporal — un cluster Redis unique ne suffira pas]
  G -->|Non| I[Utilisez avec cluster Redis + AOF + noeviction]

Anti-patterns

Idempotence via Redis SET-NX uniquement

Symptôme : Lors d'un défaut ou d'un redémarrage Redis, la même tâche s'exécute deux fois et crée des effets secondaires dupliqués (facturation, email, ticket). Diagnostic : Redis est un cache ; il peut être évincé, redémarré ou partitionné. La déduplication SET-NX qui vit uniquement dans Redis est au mieux une tentative. Correctif : Clé d'idempotence avec une contrainte unique en base de données sur l'enregistrement d'effet secondaire (ex. email_sends.idempotency_key). La transaction DB qui crée l'effet secondaire EST la primitive de déduplication.

lockDuration plus court que le p99 du handler

Symptôme : Entrées de journal de tâches bloquées ; même tâche traitée par deux workers. Les clients se plaignent. Diagnostic : La valeur par défaut de lockDuration est de 30s ; le handler prend parfois 45s ; le deuxième worker la récupère. Correctif : Mesurez le p99, définissez lockDuration à ~3x le p99, et appelez job.extendLock() dans les handlers longs. Ou divisez le travail.

Backoff exponentiel simple (sans jitter)

Symptôme : Un défaut aval devient une panne aval ; 10k tâches martèlent le service en récupération en parfaite synchronisation. Diagnostic : Sans jitter, les renvois sont corrélés. Correctif : Backoff avec jitter complet. Plafonnez le délai maximum pour limiter le temps jusqu'à l'échec dans la DLQ.

maxmemory-policy allkeys-lru sur Redis

Symptôme : La file d'attente perd mystérieusement des tâches sous charge. Pas d'erreurs. (BullMQ production) Diagnostic : Redis a évincé les clés de tâches pour libérer de l'espace. Correctif : CONFIG SET maxmemory-policy noeviction ET vérifiez-le au démarrage. Les workers doivent refuser de démarrer autrement.

Prétendre à l'exactement-une-fois entre les systèmes

Symptôme : Client facturé deux fois ; deux fois le même email envoyé. L'ingénieur est sûr que "le courtier est exactement-une-fois." Diagnostic : Même un courtier FIFO/exactement-une-fois n'étend pas sa garantie à votre DB + fournisseur d'email + Stripe + grand livre. Correctif : Traitez la file d'attente comme au-moins-une-fois. Idempotence à chaque frontière d'effet secondaire.

DLQ sans outil de rejeu

Symptôme : "Nous avons 3 200 tâches dans la DLQ. Nous ne savons pas ce qu'il y a dedans." La DLQ devient un cimetière non surveillé. Diagnostic : Construit la DLQ, n'a pas construit l'outil d'exploitation. Correctif : Rejeu par ID, rejeu par plage de temps, vidage avec confirmation. CLI ou interface d'administration. Testé.

Travail bloquant long sur la boucle d'événements

Symptôme : Le processus du worker BullMQ se bloque ; les heartbeats s'arrêtent ; le verrou expire ; la tâche se réexécute. Diagnostic : Travail lié au CPU dans le même processus que le heartbeat de la file d'attente ; la boucle d'événements bloque pendant > lockDuration. Correctif : Lancez un processus enfant ou un thread de travail pour le travail lié au CPU. Ou exécutez un processeur en bac à sable (BullMQ prend en charge le bac à sable par tâche).

Critères de qualité

  • Test : test de chaos — tuez un worker en cours de tâche ; vérifiez que la tâche se réexécute et que l'effet secondaire n'est pas dupliqué.
  • Test : test de tempête de renvois — faites échouer le système aval pendant 60s ; vérifiez que le backoff + jitter étale les renvois (pas de troupeau piétinant dans les métriques).
  • Chaque handler est idempotent et utilise une clé d'idempotence stable dérivée de l'événement métier.
  • Une contrainte unique au niveau DB sauvegarde toute déduplication dans Redis (jobId, SET-NX).
  • lockDuration / timeout de visibilité ≥ 3× la latence p99 mesurée du handler, ET les handlers longs prolongent le verrou.
  • Les erreurs permanentes (classe PermanentError ou équivalent) contournent le renvoi et vont directement dans la DLQ.
  • Alertes DLQ : alerter lorsque le taux de croissance > N par minute, pas seulement lorsque le nombre > 0.
  • L'outil de rejeu DLQ existe et est testé (ponctuel + par plage).
  • Redis : maxmemory-policy=noeviction, AOF activé (appendfsync everysec), vérifié au démarrage du worker. (BullMQ production)
  • removeOnComplete et removeOnFail configurés. La métrique du nombre de tâches est suivie dans le temps.

Références

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

curiositech/windags-skills

Expert in 2000s-era music visualization (Milkdrop, AVS, Geiss) and modern WebGL implementations. Specializes in Butterchurn integration, Web Audio API AnalyserNode FFT data, GLSL shaders for audio-reactive visuals, and psychedelic generative art. Activate on "Milkdrop", "music visualization", "WebGL visualizer", "Butterchurn", "audio reactive", "FFT visualization", "spectrum analyzer". NOT for simple bar charts/waveforms (use basic canvas), video editing, or non-audio visuals.

curiositech/windags-skills

Expert legal research agent for finding and scraping expungement data state by state. Knows authoritative sources, URL patterns, Firecrawl configuration, and 2026 legal landscape.

curiositech/windags-skills

Expert in 3D computer vision labeling tools, workflows, and AI-assisted annotation for LiDAR, point clouds, and sensor fusion. Covers SAM4D/Point-SAM, human-in-the-loop architectures, and vertical-specific training strategies. Activate on '3D labeling', 'point cloud annotation', 'LiDAR labeling', 'SAM 3D', 'SAM4D', 'sensor fusion annotation', '3D bounding box', 'semantic segmentation point cloud'. NOT for 2D image labeling (use clip-aware-embeddings), general ML training (use ml-engineer), video annotation without 3D (use computer-vision-pipeline), or VLM prompt engineering (use prompt-engineer).

curiositech/windags-skills

Implement WCAG 2.2 AA/AAA compliance with automated testing, keyboard navigation, screen reader support, and focus management. Activate on: accessibility audit, WCAG compliance, keyboard navigation, screen reader, aria attributes, axe-core, focus trap. NOT for: design-level accessibility review (use design-accessibility-auditor), color contrast only (use css-in-js-architect).

curiositech/windags-skills

Time-blind friendly planning, executive function support, and daily structure for ADHD brains. Specializes in realistic time estimation, dopamine-aware task design, and building systems that actually work for neurodivergent minds.

curiositech/windags-skills

Designs digital experiences for ADHD brains using neuroscience research and UX principles. Expert in reducing cognitive load, time blindness solutions, dopamine-driven engagement, and compassionate design patterns. Activate on 'ADHD design', 'cognitive load', 'accessibility', 'neurodivergent UX', 'time blindness', 'dopamine-driven', 'executive function'. NOT for general accessibility (WCAG only), neurotypical UX design, or simple UI styling without ADHD context.

curiositech/windags-skills

>- Apply crisis decision-making research to agent routing, uncertainty triage, and coordination failure analysis in time-pressured systems. Use when diagnosing handoff failures, analytical paralysis, or expert judgment under incomplete information. NOT for routine coding, simple CRUD design, or static single-agent tasks with complete information.

curiositech/windags-skills

Extend and modify the admin dashboard, developer portal, and operations console. Use when adding new admin tabs, metrics, monitoring features, or internal tools. Activates for dashboard development, analytics, user management, and internal tooling.

curiositech/windags-skills

Conversation patterns and interaction protocols for multi-agent systems. Covers request/response, pub/sub, blackboard, delegation chains, debate, critique, consensus, fan-out/fan-in, supervisor-worker, and peer negotiation. Deep analysis of AutoGen conversation patterns, CrewAI delegation, LangGraph state passing, and FIPA-ACL performatives. Teaches how to design what agents say to each other and in what order. Activate on: "agent conversation", "agent protocol", "multi-agent debate", "agent delegation", "supervisor worker pattern", "agent voting", "consensus protocol", "fan-out fan-in", "agent negotiation", "blackboard pattern", "agent dialogue", "conversation topology", "agent handoff". NOT for: wire format or serialization (use agent-interchange-formats), orchestration infrastructure (use agentic-infrastructure-2026), single agent behavior (use agentic-patterns).

curiositech/windags-skills

Meta-agent for creating new custom agents, skills, and MCP integrations. Expert in agent design, MCP development, skill architecture, and rapid prototyping. Activate on 'create agent', 'new skill', 'MCP server', 'custom tool', 'agent design'. NOT for using existing agents (invoke them directly), general coding (use language-specific skills), or infrastructure setup (use deployment-engineer).

curiositech/windags-skills

AI-powered calendar management and agent-based scheduling coordination. Covers calendar APIs (Google Calendar, CalDAV/iCal), AI scheduling assistants (Reclaim, Clockwise, Motion, Cal.com), building custom calendar agents with MCP, multi-calendar merging, timezone management, focus block protection, meeting fatigue detection, and agent-to-agent meeting negotiation protocols. Activate on: "calendar agent", "AI scheduling", "calendar coordination", "meeting scheduling", "calendar API", "focus time protection", "calendar optimization", "Google Calendar MCP", "Reclaim", "Clockwise", "Motion", "Cal.com", "smart scheduling", "calendar-aware agent", "timezone scheduling", "agent negotiation meetings". NOT for: manual calendar UI component design (use form-validation-architect), project management scheduling or Gantt charts (use project-management-guru-adhd), general time-tracking or pomodoro apps (use adhd-daily-planner for time-awareness), building the agent itself from scratch (use agent-creator).

curiositech/windags-skills

Build and adopt production AI agent infrastructure in 2026. Covers framework selection (LangGraph, CrewAI, AutoGen, MCP), orchestration patterns, evaluation, observability, memory systems, and tool use. Also covers the SOCIAL dimension: how to sell agent infrastructure internally, change management, measuring ROI, building trust in autonomous systems, and scaling adoption across teams. Activate on: "agent infrastructure", "agent framework comparison", "which agent framework", "sell AI tools internally", "agent adoption", "agent observability", "agent evaluation", "MCP architecture", "agentic mesh", "enterprise AI agents", "AI change management", "agent ROI". NOT for: building specific agents (use ai-engineer), designing agent behavior patterns (use agentic-patterns), prompt tuning (use prompt-engineer).

curiositech/windags-skills

Fundamental patterns for effective agentic behavior. Teaches decomposition, tool orchestration, error recovery, context management, quality self-assessment, and knowing when to stop. Model-agnostic principles that make any agent more effective regardless of domain. Activate on: "how should I structure this agent", "agentic workflow", "agent patterns", "multi-step task", "tool orchestration", "/agentic-patterns", "decompose this", "agent best practices", "chain of actions", "when should the agent stop", "agent loop design". NOT for: creating agent infrastructure (use agent-creator), building DAGs (use windags-architect), specific tool implementation.

curiositech/windags-skills

Automated discovery and matching of agent skills for dynamic task routing and capability assessment

curiositech/windags-skills

Cryptographic security for agentic systems — zero-trust agent networking, signed message envelopes (JWS/JWE), capability-based security (ocaps), Merkle tree audit trails, WASM sandboxing, and formal verification. Covers CLI dev tool security, mTLS between agents, permission boundaries (least privilege for AI agents), and supply chain security for skills/plugins. Activate on: "agent security", "zero trust agents", "secure agent communication", "capability-based security", "ocap", "signed messages between agents", "agent audit trail", "sandbox agent execution", "agent permissions", "mTLS agents", "cryptographic verification", "agent supply chain", "OWASP agentic", "prove agent did X", "tamper-proof agent logs". NOT for: application-level SAST scanning (use security-auditor), network firewall rules (use infrastructure), SOC2/HIPAA compliance (organizational), or prompt injection defense (use prompt-engineer).

curiositech/windags-skills

Data structures and serialization formats for agent-to-agent communication. Covers message envelopes, structured output schemas, capability declarations, task handoff payloads, error/retry signaling, and context windows as data structures. Deep comparison of A2A protocol, MCP, OpenAI function calling, and LangChain message types. Teaches when to use rigid schemas vs free-form with validation, typed vs untyped, streaming vs batch. Activate on: "agent message format", "agent communication schema", "agent-to-agent protocol", "A2A protocol", "MCP message format", "structured output for agents", "agent interop", "interchange format", "agent serialization", "task handoff format", "capability declaration". NOT for: what agents say to each other (use agent-conversation-protocols), orchestration topology (use multi-agent-coordination), building agent infrastructure (use agentic-infrastructure-2026).

curiositech/windags-skills

Logic-based agent programming language implementing BDI architecture for practical autonomous agent development

curiositech/windags-skills

>- Design AgentSpeak(L)-style BDI agents with context-guarded plans, selection functions, and intention stacks. Use for interruptible autonomy, agent policy, and multi-agent orchestration in dynamic environments. NOT for simple rule engines, static planners, or centralized workflows.

curiositech/windags-skills

Foundational concurrent computation model where actors communicate exclusively through asynchronous message passing

curiositech/windags-skills

license: Apache-2.0 NOT for unrelated tasks outside this domain.

Skills associés