Why does this task run? What did the run save? Where did the time go? vx answers each in one flag: affected reasons, run JSON, a Graphviz graph, run tags and its own stage table.
DX
DX
The default run output stays short. When you want the facts behind it,
each one is a flag away, and each prints something a script or an agent
can read.
flowchart LR
Q1[why does it run?] --> A[--affected --dry]
Q2[what did it save?] --> B[--summarize]
Q3[what depends on what?] --> C[--graph]
Q4[where did vx spend time?] --> D[VX_TIMING=1]
style A stroke:#c6f84e,stroke-width:2px
affected:packages/ui/src/index.tschanged (an input), via @demo/ui#build
3task(s) planned,3wouldrun.
predicted:~621mswall·~929mstotalexecution
Each kept task names the changed file, or the dependency chain that
reached it. The prediction comes from past runs. --dry=json gives the
same as JSON.
savedMs is the time the cache saved: here, a 16 ms run stood in for
1.2 s of work. Every task keeps how long it took when it really ran.
--tag k=v labels the run, and the label is kept in run history, so a
nightly run is easy to tell from a pull request.
Most vx runs are started by coding agents now. So every verb speaks JSON with a shipped schema, a failure keeps its log and the files it names, the run history is a SQLite file, and the docs and a skill come as plain markdown.
vx docs <query> searches the CLI, config and cache reference that ships inside vx. No network, no site: the sections that match print whole, with their URL.
Turborepo, Nx and other product names are trademarks of their owners. vx is not affiliated with or endorsed by them.