workers-best-practices

Analyse et rédige du code Cloudflare Workers en respectant les bonnes pratiques de production. Chargez-le lors de l'écriture de nouveaux Workers, de la révision de code Worker, de la configuration de wrangler.jsonc, ou de la vérification des anti-patrons courants des Workers (streaming, promesses flottantes, état global, secrets, liaisons, observabilité). Privilégie la récupération depuis la documentation Cloudflare plutôt que les connaissances pré-entraînées.

npx skills add https://github.com/cloudflare/skills --skill workers-best-practices

Your knowledge of Cloudflare Workers APIs, types, and configuration may be outdated. Prefer retrieval over pre-training when writing or reviewing Workers code.

Use the project's installed versions, generated types, and Wrangler compatibility settings as the baseline for existing code. Retrieve relevant Cloudflare documentation to verify API, configuration, runtime behavior, and limit claims.

References

Read the sections relevant to the task:

ReferenceWhen to use it
Configuration and observabilityCompatibility dates, bindings, generated types, secrets, logs, and traces
Runtime patternsStreaming, promise lifetime, request state, service calls, security, and runtime tests
Platform API checksHandler signatures, platform classes, binding access, and serialization

For missing evidence, consult Workers best practices or find the affected product in the Cloudflare docs directory. Use the installed Wrangler schema for config fields. A newer type package does not supersede the project's configured target.

Keep Compatibility Dates Current

Use today's date for new Workers. Encourage periodic updates for existing Workers, reviewing compatibility changes and running relevant tests. Assess existing behavior against its configured date and flags; see compatibility guidance.

Enable Observability

Enable Workers Logs and Traces when creating or preparing a Worker for production. Set observability.enabled and observability.traces.enabled to true; the top-level setting alone does not enable traces. Use structured JSON logging and configure sampling for the workload. During reviews, flag missing logs or traces. See the configuration example.

Anti-Patterns to Flag

Anti-patternConsequence and preferred pattern
await response.text() or similar buffering on unbounded dataCan exhaust Worker memory; stream large or unbounded bodies.
Hardcoded secrets in source or configLeaks credentials through version control; use Wrangler secrets.
Math.random() for security-sensitive tokens or IDsPredictable values; use crypto.randomUUID() or crypto.getRandomValues().
Async work started without awaiting, returning, or attaching it to ctx.waitUntil()Work can be dropped and errors missed; tie it to the request or background-work lifetime.
Module-level mutable request stateLeaks data across requests and can cause I/O ownership errors; pass request state explicitly.
Cloudflare REST API calls for operations available through Worker bindingsAdds network and authentication overhead; use the available binding.
ctx.passThroughOnException() used as general error handlingCan conceal Worker failures by forwarding to the origin; use explicit error handling and structured error responses.
Hand-written Env that duplicates Wrangler bindingsCan drift from configuration; generate binding types with wrangler types.
Direct string comparison of secret valuesCan expose timing differences; use the Web Crypto comparison pattern.
Destructuring ctx methods, such as const { waitUntil } = ctxLoses the receiver; call ctx.waitUntil(...).
any on Env or handler parametersHides binding and handler contract errors; use the project's generated and platform types.
as unknown as T to force a platform type matchHides incompatibilities; fix the underlying contract.
implements used in place of extending a platform base classDoes not inherit runtime behavior, this.ctx, or this.env; use the appropriate base class.
Unbound env.X in a platform class methodBindings are available through this.env.X; see binding access patterns.
Applying one serialization rule across Queues, Workflow steps, storage, and WebSocketsCan reject valid payloads or accept unsupported ones; check the specific API and encoding.

Validation

Use the project's existing checks for affected Workers behavior: type-check binding or handler contract changes, and run relevant runtime tests for behavior changes. Preserve required repository checks; a narrow edit does not require a full Workers audit.

Scope

This skill covers Workers-specific best practices and code review. For related topics:

  • Durable Objects: load the durable-objects skill
  • Workflows: see Rules of Workflows
  • Wrangler CLI commands: load the wrangler skill

Plus de skills de Cloudflare

agents-sdk
Cloudflare
Construisez des agents IA sur Cloudflare Workers en utilisant le SDK Agents. Chargez lors de la création d'agents avec état, de workflows durables, d'applications WebSocket en temps réel, de tâches planifiées, de serveurs MCP ou d'applications de chat. Couvre la classe Agent, la gestion d'état, le RPC appelable, l'intégration Workflows et les hooks React.
building-ai-agent-on-cloudflare
Cloudflare
| Construit des agents IA sur Cloudflare en utilisant le SDK Agents avec gestion d'état, WebSockets en temps réel, tâches planifiées, intégration d'outils et capacités de chat. Génère du code d'agent prêt pour la production déployé sur Workers. À utiliser quand : l'utilisateur veut "construire un agent", "agent IA", "agent de chat", "agent avec état", mentionne "Agents SDK", a besoin d'"IA en temps réel", "WebSocket IA", ou demande la "gestion d'état" d'un agent, des "tâches planifiées" ou "l'appel d'outils".
development
building-mcp-server-on-cloudflare
Cloudflare
Construit des serveurs MCP (Model Context Protocol) distants sur Cloudflare Workers avec outils, authentification OAuth et déploiement en production. Génère le code du serveur, configure les fournisseurs d'authentification et déploie sur Workers. À utiliser lorsque : l'utilisateur souhaite « construire un serveur MCP », « créer des outils MCP », « MCP distant », « déployer MCP », ajouter « OAuth à MCP », ou mentionne Model Context Protocol sur Cloudflare. Se déclenche également sur « authentification MCP » ou « déploiement MCP ».
development
cloudflare
Cloudflare
Compétence complète pour la plateforme Cloudflare couvrant Workers, Pages, stockage (KV, D1, R2), IA (Workers AI, Vectorize, Agents SDK), réseau (Tunnel, Spectrum), sécurité (WAF, DDoS) et infrastructure en tant que code (Terraform, Pulumi). À utiliser pour toute tâche de développement Cloudflare.
durable-objects
Cloudflare
Créer et examiner les Durable Objects Cloudflare. Utiliser lors de la construction de coordination avec état (salons de discussion, jeux multijoueurs, systèmes de réservation), de l'implémentation de méthodes RPC, du stockage SQLite, des alarmes, des WebSockets, ou de l'examen de code DO pour les bonnes pratiques. Couvre l'intégration Workers, la configuration wrangler, et les tests avec Vitest.
sandbox-sdk
Cloudflare
Construisez des applications sandboxées pour une exécution sécurisée de code. Chargez lors de la création d'exécution de code IA, d'interpréteurs de code, de systèmes CI/CD, d'environnements de développement interactifs ou d'exécution de code non fiable. Couvre le cycle de vie du Sandbox SDK, les commandes, les fichiers, l'interpréteur de code et les URL de prévisualisation.
web-perf
Cloudflare
Analyse les performances web à l'aide de Chrome DevTools MCP. Mesure les Core Web Vitals (FCP, LCP, TBT, CLS, Speed Index), identifie les ressources bloquant le rendu, les chaînes de dépendances réseau, les décalages de mise en page, les problèmes de cache et les lacunes d'accessibilité. À utiliser lorsqu'on vous demande d'auditer, profiler, déboguer ou optimiser les performances de chargement de page, les scores Lighthouse ou la vitesse du site.
wrangler
Cloudflare
Interface en ligne de commande Cloudflare Workers pour déployer, développer et gérer Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines et Secrets Store. Chargez avant d'exécuter les commandes wrangler pour garantir une syntaxe correcte et les bonnes pratiques.