cloudflare/sandbox-migrate-to-next

Migrez les applications Cloudflare Sandbox de la version stable @cloudflare/sandbox vers @cloudflare/sandbox@next (aperçu SDK 1.0). Utilisez sandbox-next pour les applications déjà sur l'aperçu.

Qu'est-ce que sandbox-migrate-to-next ?

Cette compétence automatise la migration des applications Cloudflare Sandbox de la version stable actuelle vers l'aperçu SDK 1.0 (@next). Elle est conçue pour les développeurs qui souhaitent préparer leurs applications pour la prochaine version stable. La compétence guide l'utilisateur à travers un processus en cinq étapes : examen des règles strictes et de la carte de remplacement, audit du codebase, clarification avec l'utilisateur (déploiement, pont, image Python, sites flous), mise à niveau du paquet, de l'image et du code, puis validation. Les changements clés incluent la suppression de SANDBOX_TRANSPORT, la gestion des processus asynchrones avec sandbox.exec() retournant un handle, et l'utilisation de createTerminal. La compétence s'applique aux Workers et aux images Docker, et ne doit pas être utilisée pour les nouveaux projets (qui devraient commencer directement sur @next). Elle prend en charge Cloudflare Workers et Cloudflare Containers.

Compatible avec~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/cloudflare/skills/tree/main/skills/sandbox-migrate-to-next

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

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

Documentation

Migrer de stable vers l'aperçu SDK 1.0 Sandbox (@next)

Effectuez le portage. Suivez les étapes dans l'ordre. Les détails se trouvent dans la documentation—récupérez la page liée lorsqu'une étape a besoin de détails.

Guide humain : Migrer · Aperçu 1.0

Les nouveaux projets doivent démarrer sur @next (sandbox-next), pas cette compétence. Travail quotidien stable → sandbox-stable. Nettoyage d'API dépréciée sans passer à @next → Guide de dépréciation 2026 d'abord si nécessaire.

Les applications existantes doivent migrer quand vous le pouvez, afin d'être prêtes lorsque la version 1.0 deviendra la version stable. Ne forcez pas la bascule de production sans l'accord de l'utilisateur.

Privilégiez les types @next installés et le document de migration plutôt que la mémoire.

Flux de travail

  1. Examinez les règles strictes et la carte de remplacement
  2. Auditez le codebase ; listez les correspondances et les formes cibles
  3. Clarifiez avec l'utilisateur (bascule, pont, image Python, sites flous)
  4. Mettez à niveau le paquet, l'image et le code
  5. Validez

Arrêtez-vous après toute étape nécessitant une décision de l'utilisateur.

Règles strictes

  • Le paquet Worker et l'image conteneur doivent être sur la même ligne @next.
  • La bascule de production utilise un déploiement immédiat du conteneur. Les protocoles de contrôle stable et @next sont incompatibles dans les deux sens ; un déploiement progressif laisse une fenêtre de panachage cassée. Les travaux de conteneur en cours peuvent s'arrêter.
  • Après la bascule, await sandbox.exec(...) signifie processus démarré, pas commande terminée.
  • Argv est tel quel (pas de shell implicite). La syntaxe shell nécessite un binaire shell explicite.
  • Les handles de processus n'ont pas d'entrée standard → terminaux pour l'entrée interactive.
  • Le timeout / AbortSignal d'observation annulent l'attente seulement, pas le processus.
  • Pas de boucle de réessai unique pour chaque erreur.
  • N'inventez pas d'API (gitCheckout sur le noyau, entrée standard de processus, helper de complétion d'exécution de chaîne).
  • Le pont auto-déployé reste sur la version stable (pas encore inclus dans la ligne d'aperçu).

Carte de remplacement

Stable@next
SANDBOX_TRANSPORT / transport / setTransportSupprimer — RPC uniquement
await sandbox.exec("cmd") → résultat mis en mémoire tamponawait sandbox.exec(argv) → handle, puis output / attentes
execStream / startProcessMême handle : logs, waitFor*, kill
Sessions par défaut / nomméesDisparues — cwd/env par lancement, ou un script shell
sandbox.terminal(request) / terminal de sessioncreateTerminal + terminal.connect(request)
sessionId xtermterminalId
Méthodes d'interpréteur sur SandboxwithInterpreter → sandbox.interpreter.*
gitCheckoutargv git via exec
Signaux de kill par chaîneNumériques uniquement
Fichiers, montages, sauvegardes, ports, tunnels, proxyToSandboxPrincipalement inchangés (ignorez les parties session/transport sur les pages stables)

Détails : Migrer · après le portage, travail quotidien → sandbox-next

Audit

rg 'SANDBOX_TRANSPORT|transport:|setTransport|enableDefaultSession|createSession|getSession|deleteSession|execStream\(|startProcess\(|killProcess\(|sandbox\.terminal\(|sessionId|gitCheckout\(|SandboxTransport|ExecutionSession'

Aussi : exec( en chaîne, cd puis un exec ultérieur, createCodeContext / runCode nu sur Sandbox.

Clarifiez (demandez quand nécessaire)

  • OK pour basculer la production avec --containers-rollout=immediate (les processus/terminaux/flux en direct peuvent s'arrêter) ?
  • Pont auto-déployé ? Laissez sur stable.
  • Interpréteur Python → variante d'image -python ?
  • Sites d'appel non couverts par la carte ?

Mise à niveau

Paquet et image

npm install @cloudflare/sandbox@next
FROM cloudflare/sandbox:next
# Python : cloudflare/sandbox:next-python

Même tag de préversion sur le Worker et l'image lorsqu'ils ne sont pas sur next flottant.

Code par zone

Appliquez les remplacements de la carte. Pour chaque zone, implémentez à partir de la documentation—pas à partir des habitudes stables :

ZoneDoc
Commandes / handles / attentesProcessus · API Processus
cwd / env / secretsEnvironnement · Trafic sortant
Supprimer les sessionsMigrer · Cycle de vie
TerminauxTerminaux
InterpréteurInterpréteur
ErreursErreurs
Tâche durable entre requêtesExécution de processus — durée de vie / durabilité

Commandes (forme) :

// Avant (stable)
const result = await sandbox.exec("npm test");

// Après (@next)
const process = await sandbox.exec(["/bin/bash", "-lc", "npm test"]);
const result = await process.output({ encoding: "utf8" });
const server = await sandbox.exec(["/bin/bash", "-lc", "npm run dev"], {
  cwd: "/workspace/app",
});
await server.waitForPort(3000, { timeout: 60_000 });
await server.kill(); // numérique ; défaut 15

Terminaux (forme) :

const terminal = await sandbox.createTerminal({ command: ["bash"], cwd: "/workspace" });
const t = await sandbox.getTerminal(terminal.id);
if (!t) return new Response("terminal disparu", { status: 410 });
return t.connect(request, { cursor, cols, rows });

Interpréteur (forme) :

import { Sandbox as BaseSandbox } from "@cloudflare/sandbox";
import { withInterpreter } from "@cloudflare/sandbox/interpreter";

export class Sandbox extends BaseSandbox<Env> {
  interpreter = withInterpreter(this);
}

Git (forme) :

const clone = await sandbox.exec(
  ["git", "clone", "--depth", "1", "--", repoUrl, "/workspace/repo"],
  { cwd: "/workspace" },
);
const result = await clone.output({ encoding: "utf8" });

Supprimez complètement les paramètres de transport. Supprimez les API de session. Isolez les utilisateurs avec des ID de sandbox séparés.

Bascule de déploiement

D'abord un environnement de préproduction / branche. La production est un déploiement du Worker + image correspondants :

npx wrangler deploy --containers-rollout=immediate

Laissez rollout_active_grace_period à la valeur par défaut 0 (ou mettez 0 si elle a été augmentée). Après la bascule, les ID de processus/terminal pré-déploiement sont invalides. Détails : Migrer · Déploiements de conteneurs

Validez

  1. Fichier de verrouillage + Dockerfile sur la même ligne @next
  2. Vérification de types avec @next
  3. Test rapide argv exec + output({ encoding: "utf8" })
  4. Test rapide d'un processus long / terminal / interpréteur si utilisé
  5. Erreurs distinguées : indisponible / RPC interrompu / obsolète / attente locale
  6. Pas de secrets en direct dans l'environnement sandbox
  7. Cherchez à nouveau les API supprimées
  8. La production a utilisé --containers-rollout=immediate

Ensuite, le travail quotidien utilise sandbox-next.

Drapeaux rouges — arrêtez et corrigez

  • Mélanger un Worker @next avec une image stable (ou l'inverse)
  • Déploiement progressif de conteneur pour cette bascule
  • Considérer await exec comme une fin de commande
  • Supposer que cd / les exports persistent entre les appels exec
  • Un seul wrapper de réessai pour chaque erreur
  • Inventer gitCheckout, entrée standard de processus ou API non documentées
  • Conserver des ID de processus/terminal pré-bascule après le déploiement
  • Forcer la bascule de production sans l'accord de l'utilisateur
  • Mettre des secrets en direct dans setEnvVars / env de lancement

Individual skills in this repo

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

cloudflare/agents-sdk

Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, chat applications, voice agents, or browser automation. Covers Agent class, state management, callable RPC, Workflows, durable execution, queues, retries, observability, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.

cloudflare/building-ai-agent-on-cloudflare

Builds AI agents on Cloudflare using the Agents SDK with state management, real-time WebSockets, scheduled tasks, tool integration, and chat capabilities. Generates production-ready agent code deployed to Workers. Use when: user wants to "build an agent", "AI agent", "chat agent", "stateful agent", mentions "Agents SDK", needs "real-time AI", "WebSocket AI", or asks about agent "state management", "scheduled tasks", or "tool calling". Biases towards retrieval from Cloudflare docs over pre-trained knowledge.

cloudflare/building-mcp-server-on-cloudflare

Builds remote MCP (Model Context Protocol) servers on Cloudflare Workers with tools, OAuth authentication, and production deployment. Generates server code, configures auth providers, and deploys to Workers. Use when: user wants to "build MCP server", "create MCP tools", "remote MCP", "deploy MCP", add "OAuth to MCP", or mentions Model Context Protocol on Cloudflare. Also triggers on "MCP authentication" or "MCP deployment". Biases towards retrieval from Cloudflare docs over pre-trained knowledge.

cloudflare/cloudflare

Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), feature flags (Flagship), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.

cloudflare/cloudflare-email-service

Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing). Use when building email sending (Workers binding or REST API), email routing, Agents SDK email handling, or integrating email into any app — Workers, Node.js, Python, Go, etc. Also use for email deliverability, SPF/DKIM/DMARC, wrangler email setup, MCP email tools, or when a coding agent needs to send emails. Even for simple requests like "add email to my Worker" — this skill has critical config details.

cloudflare/cloudflare-one

Design, configure, troubleshoot, or review Cloudflare One Zero Trust and SASE deployments. Use cloudflare-one-migrations for migration planning from other vendors.

cloudflare/durable-objects

Create and review Cloudflare Durable Objects. Use when building stateful coordination (chat rooms, multiplayer games, booking systems), implementing RPC methods, SQLite storage, alarms, WebSockets, or reviewing DO code for best practices. Covers Workers integration, wrangler config, and testing with Vitest. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.

cloudflare/sandbox-next

Build or maintain Cloudflare Sandbox apps on @cloudflare/sandbox@next (SDK 1.0 preview). Use sandbox-migrate-to-next when porting a stable app.

cloudflare/sandbox-sdk

Build sandboxed applications for secure code execution. Load when building AI code execution, code interpreters, CI/CD systems, interactive dev environments, or executing untrusted code. Covers Sandbox SDK lifecycle, commands, files, code interpreter, and preview URLs. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.

cloudflare/sandbox-stable

Build or maintain Cloudflare Sandbox apps on the stable @cloudflare/sandbox package. Use sandbox-next for preview apps and sandbox-migrate-to-next for stable-to-preview migrations.

cloudflare/skills

Build, migrate, and deploy Next.js apps on Cloudflare Workers with vinext. Use when starting a Next.js project on Cloudflare, moving an existing app to Workers, choosing between vinext and OpenNext, or setting up vinext for Workers. For setup, migration, or deployment, install vinext's upstream skills with `npx skills add cloudflare/vinext` if missing, then read and follow the applicable skill and docs.

cloudflare/turnstile-spin

Set up, repair, or migrate to Cloudflare Turnstile bot verification in an existing frontend and backend, including server-side Siteverify.

cloudflare/web-perf

Analyzes web performance using Chrome DevTools MCP. Measures Core Web Vitals (LCP, INP, CLS) and supplementary metrics (FCP, TBT, Speed Index), identifies render-blocking resources, network dependency chains, layout shifts, caching issues, and accessibility gaps. Use when asked to audit, profile, debug, or optimize page load performance, Lighthouse scores, or site speed. Biases towards retrieval from current documentation over pre-trained knowledge.

cloudflare/workers-best-practices

Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge.

cloudflare/wrangler

Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.

Skills associés