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

@slothworks/atlas

v0.9.1

Published

A local docs-state console for agentic development.

Readme

atlas

A local docs-state console for agentic development.

One shared frontmatter schema for markdown documentation across every slothworks repository, plus a small toolchain over it: a CLI (validation in CI), an MCP server (agents), and a local web UI (humans). Files stay where they are and remain the source of truth; atlas only reads them, enriches them with git history, and writes frontmatter back.

Status: core, CLI, MCP and web console implemented; the post-v1 backlog is reconciled — see the follow-ups doc for what remains.

Install

Published to npm as a public package, installed once globally:

bun install -g @slothworks/atlas

atlas init       # sets up this repository, or atlas on this machine
atlas upgrade    # checks the CLAUDE.md blocks, the skill and MCP, offers a fix
atlas start      # starts the console on :4321 and opens the browser
atlas stop       # stops it
atlas serve      # runs the console in the foreground, without a browser
atlas validate   # runs in each repository's PR gate
atlas migrate    # rewrites frontmatter that a renamed field value broke
atlas mcp        # stdio MCP server, launched by the agent, not by hand

If the shell answers command not found: atlas, the install worked and the command is in ~/.bun/bin, but that directory is not in your PATH. It happens when bun itself came from Homebrew: the official bun installer adds the line to your shell profile and Homebrew does not. Add it once, then open a new terminal:

echo 'export PATH="$HOME/.bun/bin:$PATH"' >> ~/.zshrc

One instance, fixed port. atlas start on an already-running console just opens the browser.

Configuration

Per-machine, at ~/.config/atlas/config.json (never in this repo). atlas init --global writes it for you; here is what it contains:

{
  "roots": ["~/Projects/slothworks"],
  "port": 4321
}

Each connected repository carries its own docs/atlas.json marker, committed — see §6 of the design spec.

Develop from a checkout

bun install

bun run start      # builds the client, starts the console, opens a browser
bun run stop       # stops the console
bun run restart
bun run check      # tests, both typechecks, client build — run before committing

bun run stop reads ~/.local/share/atlas/daemon.json, which the running server writes, and stops only the process recorded there. Anything else holding the port is reported, not killed: the port tells you something is listening, not whose process it is.

Against this repository's own documents:

bun run validate
bun run migrate

Against any other repository, and for the parts with no script:

bun packages/cli/src/bin.ts serve [--port <n>]
bun packages/cli/src/bin.ts init [--repo <path>] [--global] [--yes] [--name <name>]
bun packages/cli/src/bin.ts validate --repo <path>
bun packages/cli/src/bin.ts migrate --repo <path> [--apply]
bun packages/cli/src/bin.ts mcp

atlas migrate is the command someone adopting the schema in another repository needs: it rewrites documents whose frontmatter still carries a renamed field value (today, status: idea to status: backlog) to the current schema. It reports what it would change and writes nothing unless --apply is given, and it is otherwise not discoverable — there is no prompt for it anywhere else.

Development, with hot reload:

bun run dev        # client on :5173, proxying /api to :4321

The API server is separate in this mode — start it with bun run start in another terminal.

Releasing

The workspace has four packages, but only one is published. bun run build:npm bundles the CLI, the MCP server, core and the web server half into a single file under dist/npm, next to the built client, and writes a manifest with no workspace:* references, which npm cannot resolve.

.github/workflows/publish.yml does that on every push to main. The version in packages/cli/package.json is the release version: bump it to release. If that version is already on npm, the job says so and stops, so a merge that changes only docs stays green.

Auth is npm trusted publishing over OIDC, so there is no token in the repository and no secret to rotate. The trusted publisher is registered on npmjs.com against this repository and publish.yml.

Next steps

  1. Backfill ergaily and split its ADRs into docs/decisions/. atlas migrate is the first step of that, not the whole thing.
  2. Point ergaily's Stop hook and skills at the atlas MCP server.
  3. Pay back the web package's remaining test debt — the server half (routes, watcher, reconciliation) is now covered; the views still have none by decision. See docs/ideas/web-test-coverage.md.
  4. Publish 0.1.0 to npm by hand, then register the trusted publisher on the package page. npm only accepts one for a package that already exists, so the first release cannot come from CI. Every release after that does.