bunx skills add vznjs/vx
One skill teaches any coding agent the CLI: run tasks, read failures and history, ask why.
vx runvx last --failedvx last --statsvx whyvx docs
vx runs and caches your task graph correctly, and a plugin can fill every stage after that.
// 1008 cases · 6 tools · one neutral suite
Every test in vx, Turborepo, Nx, Vite Task, Nix and moon, parsed into one suite: each case runs sandboxed against each tool and counts only outcomes.
// your ci, your servers
Each is a plugin and a server you deploy on Bun, Docker or Cloudflare Workers, with no account and no paid tier.
@vzn/vx-dte + @vzn/vx-dte-serverOne run spread over the workers your own CI starts, through a relay that stores nothing.
@vzn/vx-cache + @vzn/vx-cache-serverCI writes and everyone reads, from one bucket on Bun, Docker with S3, or Workers with R2.
@vzn/vx-history + @vzn/vx-history-serverTask timings from every CI run, so each run starts the critical path first.
// ai first
bunx skills add vznjs/vxOne skill teaches any coding agent the CLI: run tasks, read failures and history, ask why.
vx runvx last --failedvx last --statsvx whyvx docsvx whyA re-run names its cause, down to the file that changed.
$ vx why @demo/web#build
verdict cache key changed: upstream @demo/ui#build
root cause:
@demo/web#build ← @demo/ui#build ← file packages/ui/src/index.tsHow vx why works →--format jsonEvery report verb prints JSON with a published schema, and failures keep their full log.
vx showvx infovx lastvx why--dry=json// extensibility is king
Every plugin below is a separate package on core’s public plugin API, and yours can be too.
@vzn/vx-migrateKeep Turbo’s or Nx’s remote cache while you move to native config.
@vzn/vx-otelEvery run and task in any OpenTelemetry backend.
@vzn/vx-ciGitHub job summary and Checks.
@vzn/vx-lockfileEach task keyed on its own dependency closure: pnpm, bun, npm, yarn.
@vzn/vx-reapiFor a Bazel REAPI server you already run: NativeLink, BuildBuddy.
definePlugin()Fill any of the 15 stages: where tasks run, where the cache lives, who watches, what the terminal draws, which commands exist.
// 9,603 tasks · 1,601 projects · 30 levels · identical commands, identical concurrency
Time each tool adds over the ideal run; lower is better.
Benchmark workload: a synthetic monorepo of 1,601 projects and 9,603 tasks in 30 dependency levels, five core libraries a quarter of the projects use; build 300 ms, test and typecheck 150 ms, lint 75 ms, publish 30 ms; real repos with uneven task times will differ.
Measured: vx 0.0.0 @ c2adbdd66 on 2026-11-12, Turborepo 2.11.10 on 2026-11-12, Nx 24.0.2 on 2026-11-12, Vite Task 1.4.0 on 2026-11-12; linux x64, 4 cores (AMD EPYC 9V45 96-Core Processor), 16 GB.
// shipping every day
Turborepo, Nx and Vite Task undo your commit on a cache hit
A sandboxed task reads what it depends on, and nothing beside it
DTE workers that fit the work, and a footer that says how full they ran
// three commands
bunx @vzn/vx init # installs vx, writes .vx/workspace.ts and an empty vx.config.ts
vx lock # after you declare a task in vx.config.ts
vx run build # runs it and stores what it writes
vx run build # again: up-to-date, from the cacheComing from Turbo or Nx: the same vx init writes the native vx config from it.
// one run, after you edit app
app builds after what it uses.ui and api build at once.app; only app runs.// what you can count on
A task’s cache key covers every file, setting and env var it declares.
Caching in depth →A sandboxed task cannot read a workspace file it did not declare.
Sandboxing →Plugins decide where tasks run, where the cache lives and who watches.
Writing a plugin →MIT, no paywall, no cloud, no account.
Migrate →// 113 features, a page each

An undeclared read or write fails the task and names the path.

Ask why a task re-ran, and get the input that changed.

A module you deleted never comes back from the cache.

--affected follows task edges from the change, and nothing else runs.

A server is ready when it prints a line, not after sleep 5.

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

Spread one run over your own CI’s machines.

An installable skill teaches an agent to run, debug and query vx.