npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mutates/cli

v3.0.0

Published

AST mutation CLI for AI agents. `mutates` is a thin client over `@mutates/core`; a per-project daemon owns a single `ts-morph` `Project`, mints opaque `@nN` node refs, applies structural edits in memory, and saves with mtime+size conflict detection.

Downloads

552

Readme

@mutates/cli

AST mutation CLI for AI agents. mutates is a thin client over @mutates/core; a per-project daemon owns a single ts-morph Project, mints opaque @nN node refs, applies structural edits in memory, and saves with mtime+size conflict detection.

Install

npm i -g @mutates/cli

This puts a mutates binary on your PATH. No project-local install is required; the CLI operates against the current working directory by default, or against an explicit project root via --root <path>.

The loop: snapshot → act → save

Every interaction follows the same three steps. Snapshots mint refs; acts (mutation ops) invalidate those refs; saving flushes to disk if no on-disk file has changed since the daemon loaded it.

# 1. Snapshot a file to discover its top-level shape and mint refs.
mutates snapshot src/app.ts

#    Output (text mode):
#      @n1  ImportDeclaration  from 'fastify'
#      @n2  ClassDeclaration   AppController  [exported]
#      @n3  FunctionDeclaration bootstrap     [exported, async]

# 2. Act. Pass the structure payload as JSON.
mutates add-methods --target @n2 \
  --json '{"name":"ping","returnType":"string","statements":["return \"pong\";"]}'

# 3. Inspect what changed.
mutates diff

# 4. Save (or `--dry-run` first to preview the write set).
mutates save

Every command honours --json for machine-readable output. Errors land on stderr as JSON { code, message, details }; the exit code maps to the error category (STALE_REF → 5, STALE_FILE → 6, etc.). See mutates schema and mutates skills get core for the full surface.

Sessions

A daemon spawns automatically on the first command for a given root and shuts itself down after 10 minutes of idle (MUTATES_IDLE_TIMEOUT=<ms> to override). Explicit lifecycle commands exist too:

mutates open                      # eager spawn
mutates sessions list             # daemons for cwd
mutates sessions list --all       # every live daemon on this host
mutates close --all               # stop everything

Staleness

  • STALE_REF — a ref was invalidated by a mutation; re-snapshot the file and try again.
  • STALE_FILE — a file on disk changed since the daemon loaded it; run mutates reload <file> (which drops in-memory edits for that file) or close the session and start over.

Discovering ops

mutates schema returns the JSON Schema for every generated operation — add-classes, edit-methods, remove-decorators, … — covering every exported add* / edit* / remove* / get* function on @mutates/core.

mutates schema                    # full manifest, every op
mutates schema add-classes        # one op's payload shape
mutates --help                    # tree of commands

Agent guide

mutates skills get core returns a single Markdown document that walks an agent through the snapshot → act → save loop, common patterns, and the full troubleshooting tree for STALE_REF / STALE_FILE. It is the canonical starting point when wiring mutates into a new agent runtime.

mutates skills list
mutates skills get core

Multi-session

Multiple project roots run independent daemons. Every command except open, close --all, sessions list, and skills * accepts --session <id> to target a specific session; the default is the session bound to the project root resolved from --root / cwd (Req 10.1, 10.2).

License

Apache-2.0. See LICENSE.