Every skip names its blocker
No mystery “skipped” count on a red run.

When a run goes red, every task that never started gets its own row naming the failure that blocked it.
The cause is followed through a chain of skips to the failure at its root, so the footer’s skipped count always has names above it.
// what it prints
⊘ skipped app#build • blocked by lib#build
⊘ skipped web#build • blocked by lib#buildMore in Everyday use

The task picker
Type vx run with no task and pick one from a menu.

Framed output
Sixteen tasks in parallel, and no interleaved lines.

A summary you read at a glance
Every run ends with one block, and nothing prints below it.

Dev servers in the graph
A server is ready when it prints a line, not after sleep 5.

Ctrl-C leaves nothing running
No dev server still holding its port the next morning.

Watch mode
Every change takes the same path as vx run, and the key decides what re-runs.

Shell completions
Tab-complete every verb and flag in bash, zsh and fish.

Typo hints
A filter that matches nothing asks “Did you mean @acme/app?”.

vx upgrade
The release binary updates itself, digest checked.

Tasks that take the keyboard
A prompt, a REPL or a login flow gets the terminal to itself.

Help where you type
Every verb explains itself with vx help, and vx version says what you run.

Typos get an answer
A mistyped flag, verb or task gets the nearest real spelling.

Type the task, get the command
vx build answers with the vx run command that does what you meant.