CommunityProgramación y desarrollogithub.com

cloudflare/sandbox-migrate-to-next

Migra aplicaciones de Cloudflare Sandbox desde la versión estable a @cloudflare/sandbox@next (vista previa del SDK 1.0). Usa sandbox-next para aplicaciones que ya están en la vista previa.

¿Qué es sandbox-migrate-to-next?

Esta skill está diseñada para migrar aplicaciones existentes de Cloudflare Sandbox desde la versión estable (`@cloudflare/sandbox`) hacia la vista previa del SDK 1.0 (`@cloudflare/sandbox@next`). Es útil para desarrolladores que necesitan actualizar sus aplicaciones para aprovechar las nuevas APIs y comportamientos de la próxima versión estable. La skill admite entornos de Node.js con Workers y contenedores Docker. El proceso de migración sigue un flujo de trabajo estructurado: revisión de reglas estrictas, auditoría del código base, aclaración con el usuario sobre decisiones clave (como el corte de producción), actualización de paquetes, imágenes y código, y finalmente validación. Se proporciona un mapa de reemplazo detallado que cubre cambios importantes como la eliminación de `SANDBOX_TRANSPORT`, el cambio de `sandbox.exec("cmd")` a `sandbox.exec(argv)`, la migración de sesiones a configuraciones por lanzamiento, y la actualización de terminales e intérpretes. La skill también incluye reglas estrictas (por ejemplo, no mezclar versiones de Worker e imagen) y señales de alerta para detener la migración en caso de configuraciones incorrectas. El objetivo es preparar la aplicación para cuando la versión 1.0 se convierta en la estable, sin forzar cortes de producción sin el consentimiento del usuario.

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

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Migrar de estable a vista previa del SDK 1.0 de Sandbox (@next)

Realiza la migración. Sigue los pasos en orden. La profundidad está en los documentos—consulta la página enlazada cuando un paso necesite detalle.

Guía para humanos: Migrar · Vista previa 1.0

Los proyectos nuevos deben comenzar en @next (sandbox-next), no en esta skill. El trabajo estable del día a día → sandbox-stable. La limpieza de APIs obsoletas sin migrar a @next → guía de obsolescencia 2026 primero si es necesario.

Las aplicaciones existentes deben migrar cuando puedas, para que estés listo cuando la versión 1.0 se convierta en la estable. No fuerces el corte de producción sin el acuerdo del usuario.

Prefiere los tipos instalados de @next y el documento de migración antes que la memoria.

Flujo de trabajo

  1. Revisa las reglas estrictas y el mapa de reemplazo
  2. Audita el código base; lista las coincidencias y las formas destino
  3. Aclara con el usuario (corte, puente, imagen de Python, sitios poco claros)
  4. Actualiza paquete, imagen y código
  5. Valida

Detente después de cualquier paso que necesite una decisión del usuario.

Reglas estrictas

  • El paquete del Worker y la imagen del contenedor deben estar en la misma línea @next.
  • El corte de producción utiliza el despliegue inmediato del contenedor. Los protocolos de control de estable y @next son incompatibles en ambos sentidos; un despliegue gradual deja una ventana mixta rota. El trabajo de contenedores en curso puede detenerse.
  • Después del corte, await sandbox.exec(...) significa proceso iniciado, no comando finalizado.
  • Argv se pasa tal cual (sin shell implícito). La sintaxis de shell necesita un binario de shell explícito.
  • Los manejos de proceso no tienen stdin → terminales para entrada interactiva.
  • El timeout / AbortSignal de observación cancelan solo la espera, no el proceso.
  • No hay un bucle de reintento único para cada error.
  • No inventes APIs (gitCheckout en el núcleo, stdin de proceso, helper de finalización de string-exec).
  • El puente autodesplegado permanece en estable (aún no forma parte de la línea de vista previa).

Mapa de reemplazo

Estable@next
SANDBOX_TRANSPORT / transport / setTransportEliminar — solo RPC
await sandbox.exec("cmd") → resultado almacenado en búferawait sandbox.exec(argv) → manejo, luego output / esperas
execStream / startProcessMismo manejo: logs, waitFor*, kill
Sesiones por defecto / nombradasDesaparecidas — cwd/env por lanzamiento, o un script de shell
sandbox.terminal(request) / sesión terminalcreateTerminal + terminal.connect(request)
sessionId de xtermterminalId
Métodos de intérprete en SandboxwithInterpreter → sandbox.interpreter.*
gitCheckoutargv git mediante exec
Señales de kill en stringSolo numéricas
Archivos, montajes, copias de seguridad, puertos, túneles, proxyToSandboxMayormente sin cambios (ignora partes de sesión/transporte en páginas estables)

Profundidad: Migrar · después de la migración, trabajo diario → sandbox-next

Auditar

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

También: string exec(, cd seguido de un exec, createCodeContext / runCode sin parámetros en Sandbox.

Aclarar (pregunta cuando sea necesario)

  • ¿Está bien cortar producción con --containers-rollout=immediate (los procesos/terminales/flujos en vivo pueden detenerse)?
  • ¿Puente autodesplegado? Déjalo en estable.
  • ¿Intérprete de Python → variante de imagen -python?
  • ¿Puntos de llamada no cubiertos por el mapa?

Actualizar

Paquete e imagen

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

Misma etiqueta de prerelease en el Worker y la imagen cuando no esté en next flotante.

Código por área

Aplica los reemplazos del mapa. Para cada área, implementa desde el documento—no desde los hábitos estables:

ÁreaDocumento
Comandos / manejos / esperasProcesos · API de procesos
cwd / env / secretosEntorno · Tráfico saliente
Eliminar sesionesMigrar · Ciclo de vida
TerminalesTerminales
IntérpreteIntérprete
ErroresErrores
Trabajo durable entre solicitudesEjecución de procesos — vida útil / durabilidad

Comandos (forma):

// Antes (estable)
const result = await sandbox.exec("npm test");

// Despué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érico; predeterminado 15

Terminales (forma):

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

Intérprete (forma):

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

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

Git (forma):

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

Elimina por completo los ajustes de transporte. Elimina las APIs de sesión. Aísla a los usuarios con IDs de sandbox separados.

Corte de despliegue

Primero staging/rama. La producción es un despliegue de Worker + imagen coincidentes:

npx wrangler deploy --containers-rollout=immediate

Deja rollout_active_grace_period en su valor predeterminado 0 (o establécelo en 0 si se incrementó). Después del corte, los IDs de procesos/terminales previos al despliegue son inválidos. Detalles: Migrar · Despliegues de contenedores

Validar

  1. Archivo de bloqueo + Dockerfile en la misma línea @next
  2. Verificación de tipos contra @next
  3. Prueba de argv exec + output({ encoding: "utf8" })
  4. Prueba de proceso largo / terminal / intérprete si se usa
  5. Errores distinguidos: no disponible / RPC interrumpido / obsoleto / espera local
  6. Sin secretos vivos en el entorno de sandbox
  7. Grep nuevamente para APIs eliminadas
  8. Producción usó --containers-rollout=immediate

Luego, el trabajo diario usa sandbox-next.

Señales de alerta — detente y corrige

  • Mezclar Worker @next con imagen estable (o viceversa)
  • Despliegue gradual de contenedores para este corte
  • Tratar await exec como finalización de comando
  • Asumir que cd / exportaciones persisten entre llamadas exec
  • Un envoltorio de reintento único para cada error
  • Inventar gitCheckout, stdin de proceso o APIs no documentadas
  • Mantener IDs de procesos/terminales previos al corte después del despliegue
  • Forzar el corte de producción sin el acuerdo del usuario
  • Poner secretos vivos en setEnvVars / env de lanzamiento

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 relacionados