The gap

What npm doesn't do
for you.

Every time you release, you're manually handling things npm never promised to handle.

xnpm wraps that whole workflow into safe, repeatable commands. It does not replace npm. It makes npm workflows automation-ready.

For code agents — 2.30.0

A stable contract for
agents and the developers overseeing them.

Code agents are good at commands, but bad at guessing release state. xnpm gives them a stable contract: discover the graph, resolve intent, return JSON plans, avoid hidden prompts, execute in dependency order, journal local changes, and report what happened.

Full contract — what an agent can run alone vs. what needs your --yes: Agents.


Before vs after

What a real multi-package
release looks like.

Without xnpm

# package 1 of 4 cd core && npm run build npm test && npm version minor npm publish # package 2 of 4 cd ../utils npm install @scope/core@latest npm run build && npm test npm version minor && npm publish # ... repeat for api, cli ... git add . && git commit && git push
  • One missed package
  • Wrong dependency order
  • Forgotten test run
  • Leaked .env in publish
  • Broken downstream consumer

With xnpm

$ xnpm --full-flow ✓ Found 4 packages ✓ Dependency graph resolved ✓ Installed in order ✓ Built in order ✓ Tests passed ✓ No sensitive files detected ✓ Published: core, utils, api, cli ✓ Git pushed Done. Exit 0.
One command. Correct order. Every time.

Next direction — not yet shipped

Real release work isn't
one command. It's a chain.

Releasing upstream usually means installing/updating downstream consumers, building and testing them, releasing downstream if needed, writing version-tagged feedback, and pushing the final repo state. xnpm should eventually understand that chain instead of only running the command in front of it — remembering the last release, knowing the previous release for each package, and recommending the next step. None of this is available today; it's the direction, not a feature list.