cloudflare/sandbox-migrate-to-next

Migrar aplicativos Cloudflare Sandbox da versão estável @cloudflare/sandbox para @cloudflare/sandbox@next (prévia do SDK 1.0). Use sandbox-next para aplicativos já na prévia.

O que é sandbox-migrate-to-next?

Esta habilidade automatiza a migração de aplicativos Cloudflare Sandbox da versão estável (`@cloudflare/sandbox`) para a prévia do SDK 1.0 (`@cloudflare/sandbox@next`). Ela fornece um fluxo de trabalho passo a passo que cobre auditoria de código, substituição de APIs obsoletas (como `setTransport`, sessões nomeadas e `exec` com string), atualização de pacotes e imagens Docker, e validação pós-migração. A habilidade enfatiza regras rígidas, como a incompatibilidade entre os protocolos de controle estável e `@next`, a necessidade de rollout imediato de containers na produção, e que `await exec` agora retorna um handle de processo, não o resultado final do comando. Inclui um mapa detalhado de substituições, trechos de código para comandos, terminais e interpretadores, e uma seção de validação com verificações de tipo, testes de fumaça e busca por APIs removidas. É ideal para desenvolvedores que precisam preparar seus aplicativos Sandbox para a versão estável futura do SDK 1.0, garantindo que a migração seja feita corretamente e sem quebras em produção.

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

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Migrar estável → Prévia do SDK 1.0 do Sandbox (@next)

Realize a migração. Siga as etapas em ordem. A profundidade está na documentação — acesse a página vinculada quando uma etapa precisar de detalhes.

Guia humano: Migrar · Prévia 1.0

Novos projetos devem começar em @next (sandbox-next), não esta habilidade. Trabalho estável do dia a dia → sandbox-stable. Limpeza de APIs obsoletas sem migrar para @next → guia de descontinuação 2026 primeiro, se necessário.

Os aplicativos existentes devem migrar quando possível, para que estejam prontos quando a versão 1.0 se tornar a versão estável. Não force a migração em produção sem a concordância do usuário.

Prefira os tipos @next instalados e o documento de migração em vez da memória.

Fluxo de trabalho

  1. Revise as regras rígidas e o mapa de substituições
  2. Audite o código; liste ocorrências e formatos alvo
  3. Esclareça com o usuário (migração, bridge, imagem Python, sites pouco claros)
  4. Atualize pacote, imagem e código
  5. Valide

Pare após qualquer etapa que precise de uma decisão do usuário.

Regras rígidas

  • O pacote Worker e a imagem do container devem estar na mesma linha @next.
  • A migração de produção usa rollout imediato do container. Os protocolos de controle estável e @next são incompatíveis em ambos os sentidos; rollout gradual deixa uma janela mista quebrada. Trabalho em andamento no container pode parar.
  • Após a migração, await sandbox.exec(...) significa processo iniciado, não comando finalizado.
  • Argv é como está (sem shell implícito). A sintaxe de shell precisa de um binário de shell explícito.
  • Handles de processo não têm stdin → terminais para entrada interativa.
  • O timeout / AbortSignal da observação cancelam apenas a espera, não o processo.
  • Nenhum loop de repetição único para todos os erros.
  • Não invente APIs (gitCheckout no core, stdin de processo, auxiliar de conclusão de execução de string).
  • Bridge auto-implementada permanece na estável (ainda não faz parte da linha de prévia).

Mapa de substituições

Estável@next
SANDBOX_TRANSPORT / transport / setTransportRemover — apenas RPC
await sandbox.exec("cmd") → resultado em bufferawait sandbox.exec(argv) → handle, depois output / esperas
execStream / startProcessMesmo handle: logs, waitFor*, kill
Sessões padrão/nomeadasRemovidas — cwd/env por lançamento, ou um script de shell
sandbox.terminal(request) / terminal de sessãocreateTerminal + terminal.connect(request)
xterm sessionIdterminalId
Métodos de interpretador em SandboxwithInterpreter → sandbox.interpreter.*
gitCheckoutgit via exec com argv
Sinais de kill em stringApenas numéricos
Arquivos, montagens, backups, portas, túneis, proxyToSandboxPrincipalmente inalterados (ignore partes de sessão/transporte em páginas estáveis)

Profundidade: Migrar · após a migração, dia a dia → sandbox-next

Auditoria

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

Também: exec( com string, cd seguido de exec, createCodeContext / runCode puro em Sandbox.

Esclarecer (perguntar quando necessário)

  • OK migrar produção com --containers-rollout=immediate (processos/terminais/streams ativos podem parar)?
  • Bridge auto-implementada? Deixar na estável.
  • Interpretador Python → variante de imagem -python?
  • Locais de chamada não cobertos pelo mapa?

Atualização

Pacote e imagem

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

Mesma tag de pré-lançamento no Worker e na imagem quando não estiver usando next flutuante.

Código por área

Aplique as substituições do mapa. Para cada área, implemente a partir da documentação — não dos hábitos estáveis:

ÁreaDocumentação
Comandos / handles / esperasProcessos · API de Processos
cwd / env / segredosAmbiente · Tráfego de saída
Remover sessõesMigrar · Ciclo de vida
TerminaisTerminais
InterpretadorInterpretador
ErrosErros
Job durável entre requisiçõesExecução de processo — tempo de vida / durabilidade

Comandos (formato):

// Antes (estável)
const result = await sandbox.exec("npm test");

// Depois (@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; padrão 15

Terminais (formato):

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

Interpretador (formato):

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

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

Git (formato):

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

Remova as configurações de transporte completamente. Remova as APIs de sessão. Isole usuários com IDs de sandbox separados.

Migração de deploy

Primeiro em staging/branch. Produção é um deploy do Worker + imagem correspondentes:

npx wrangler deploy --containers-rollout=immediate

Deixe rollout_active_grace_period no padrão 0 (ou defina 0 se foi aumentado). Após a migração, IDs de processo/terminal pré-deploy são inválidos. Detalhes: Migrar · Rollouts de container

Validação

  1. Lockfile + Dockerfile na mesma linha @next
  2. Verificação de tipos contra @next
  3. Teste de fumaça com argv exec + output({ encoding: "utf8" })
  4. Teste de fumaça com processo longo / terminal / interpretador se usado
  5. Erros diferenciados: indisponível / RPC interrompido / obsoleto / espera local
  6. Nenhum segredo ativo no ambiente do sandbox
  7. Grep novamente por APIs removidas
  8. Produção usou --containers-rollout=immediate

Em seguida, o trabalho do dia a dia usa sandbox-next.

Bandeiras vermelhas — pare e corrija

  • Misturar Worker @next com imagem estável (ou vice-versa)
  • Rollout gradual de container para esta migração
  • Tratar await exec como conclusão de comando
  • Assumir que cd / exportações persistem entre chamadas exec
  • Um wrapper de repetição para todos os erros
  • Inventar gitCheckout, stdin de processo ou APIs não documentadas
  • Manter IDs de processo/terminal pré-migração após o deploy
  • Forçar migração de produção sem concordância do usuário
  • Colocar segredos ativos em setEnvVars / env de lançamento

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.

Habilidades Relacionadas