Warp Fork
Fork a warp route using the local HTTP registry.
Instructions:
Check if
http://localhost:3333is running. If not, run the start-http-registry SKILL. If that fails, useAskUserQuestionto prompt the user for an alternate registry URL to use instead ofhttp://localhost:3333.First, use
AskUserQuestionto prompt the user for the warp route ID:- Question: "Which warp route would you like to fork?"
- Header: "Warp Route"
- Options: Provide 2-3 common examples if known, otherwise use generic placeholders. Note that the fork may fail if the warp routes are invalid. Re-prompt the user!
Run the command in the background:
pnpm -C typescript/cli exec tsx cli.ts warp fork --registry $REGISTRY --warpRouteId $WARP_ROUTE_ID- Use the registry URL from step 0 for $REGISTRY (
http://localhost:3333by default, or user-provided if the local registry failed) - Use
run_in_background: trueso it doesn't block the conversation.
- Use the registry URL from step 0 for $REGISTRY (
After starting, report the task/shell ID and the fork registry server port back to the user.
Remind the user they can stop it later with
KillShellusing that ID
Prerequisites:
- The http-registry server must be running on port 3333. If not, start it first with
/start-http-registry. - Forking is per-protocol: EVM chains need Foundry
anvilonPATH; Sealevel chains need a locally-installedsurfpoolbinary (>= 1.5.0) onPATH— there is no Docker fallback in the CLI. Install the pinned, checksum-verifiedsurfpoolrelease the way CI does — see theInstall surfpoolstep in.github/workflows/test-cli-e2e.yml(a pinnedv1.5.0release tarball verified against its SHA-256); do not pipe the mutablerun.surfpool.runinstaller to a shell. If the binary is missing,warp forkaborts with a "surfpool 1.5.0+ is required" error before forking.
Related skills:
/warp-simulate-safe-txs— EVM fork → replay a Safe batch → check./warp-simulate-svm-txs— Sealevel fork → replay SVM/Squads governance txs → check.
Example output:
Started warp fork for
EZETH/ethereum-megaethin background (shell ID:shell_abc123). To stop it later, I can use KillShell with that ID.