Agent skill · software engineering · vercel
internal-dev-workbench
Spin up a portless + tmux dev session for the Workflow SDK that gives each git worktree isolated `<branch>.<name>.localhost` URLs for the Next.js workbench and the observability UI, plus a Claude statusline that surfaces those URLs. Use only when the user asks for a "portless dev session", a "tmux dev layout for workflow", "worktree-isolated dev URLs", or wants to wire workflow dev URLs into the Claude statusline. Do not activate for the generic "start the dev server" / "run pnpm dev" task.
Why this skill is useful
Adds a comprehensive tmux session setup script that automates the creation of isolated development environments for the Workflow SDK, which the AI cannot generate from existing knowledge.
What it needs
Requires portless, tmux installed locally. About 6k tokens when loaded. Last updated 2026-08-07. 2,290 stars on the source repository.
What this skill does
internal-dev-workbench Bootstraps an opinionated 3-pane tmux session for end-to-end Workflow SDK development. Each pane is launched through portless so URLs are stable and worktree-scoped (e.g. https://<branch>.turbopack.localhost), letting multiple worktrees run concurrently without port conflicts. A companion statusline script surfaces the active URLs in Claude Code's prompt. This is opt-in contributor tooling. The repo's standard dev path (pnpm dev from a workbench, no portless) is unaffected. Prerequisites tmux installed portless installed globally (npm i -g portless or via Homebrew). Verify with portless --version. Repo bootstrapped: pnpm install && pnpm build. The first run on a fresh worktree must complete both before any dev server can start (the workbench apps depend on built workspace packages; without pnpm build you get MODULENOTFOUND for workflow). WORKFLOWPUBLICMANIFEST=1 is required on the dev server when running e2e tests against it (otherwise /.well-known/workflow/v1/manifest.json is gated). Layout With main-vertical, the dev server takes the left column; the right column stacks the observability UI on top of a scratchpad shell: Setup The session name must match the worktree's portless prefix (the basename of the current branch) so the statusline and any other tooling that derives the prefix from the branch can locate it. Always run tmux ls first to confirm there's no pre-existing session with that name; never kill an existing one. Pane indices in tmux depend on pane-base-index (0 by default, 1 with the common dotfile override). To stay correct under either, capture each pane's ID at split time with -P -F '#{paneid}' and use those IDs as targets: Once both servers are ready, portless list shows the routes. With portless run, each linked worktree gets a unique branch-prefixed subdomain (e.g. stepflow-test.turbopack.localhost), so multiple worktrees coexist without changing config. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills vercel/internal-dev-workbench