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

motd-tool

v1.0.3

Published

Tiny CLI that prints a random message of the day in your terminal.

Readme

motd-tool

Tiny CLI that prints a random message of the day in your terminal.

xmotd is built for developers who live in the shell and want something lighter than a dashboard, but more personal than a static prompt.

Why people install it

  • xmotd prints a random line from your own local message library
  • xmotd init shows one message automatically on the first terminal session of each day
  • xmotd add, remove, list, import, and export keep the message library simple
  • It is local-first, fast, and dependency-light at runtime

Quick look

$ xmotd
Stay hungry, stay foolish.
$ xmotd add "Code is poetry"
Added: Code is poetry
$ xmotd list
1. Stay hungry, stay foolish.
2. Code is poetry
$ xmotd remove 2
Removed #2: Code is poetry

Install

Install from npm:

npm install -g motd-tool

Install from Homebrew:

brew install AlucPro/tap/motd-tool

The Homebrew formula downloads the release tarball from GitHub Releases.

For local development, this repository uses pnpm and TypeScript:

pnpm install
pnpm check

Usage

Print a random message:

xmotd

Add a message:

xmotd add "Ship small, ship often"

Remove a message by index or exact text:

xmotd remove 2
xmotd remove "Ship small, ship often"

List all messages:

xmotd list

Import messages from .txt or .json:

xmotd import ./messages.txt
xmotd import ./messages.json

Export your current library:

xmotd export ./backup.json
xmotd export ./backup.txt

Enable once-per-day automatic output in your shell:

xmotd init

Preview the shell hook:

xmotd hook

See where files are stored:

xmotd paths

Default behavior

After installation, xmotd starts with one built-in message:

Stay hungry, stay foolish.

Every manual xmotd run selects a random message from your local library.

The automatic shell hook uses a separate state file so the message only appears once per local calendar day.

Message storage

xmotd stores data in standard XDG-style locations:

  • Config: ~/.config/motd-tool/messages.json
  • State: ~/.local/state/motd-tool/state.json

You can override these with XDG_CONFIG_HOME and XDG_STATE_HOME.

Release workflow

Project maintainers can use:

pnpm release:check

pnpm release:check runs build and tests, then updates the Homebrew formula SHA based on the npm tarball.

Release flow:

  1. Update package.json version
  2. Commit the release changes
  3. Push main
  4. Create and push a matching tag such as v1.0.1
git add .
git commit -m "release: v1.0.1"
git push origin main
git tag v1.0.1
git push origin v1.0.1

When the tag lands on GitHub, the Release workflow will:

  • build and test the project
  • publish motd-tool to npm with NPM_TOKEN
  • rebuild the Homebrew formula with the new npm tarball SHA
  • point the Homebrew formula at the matching GitHub Release asset
  • push Formula/motd-tool.rb to AlucPro/homebrew-tap with HOMEBREW_TAP_TOKEN
  • create a GitHub Release with the packaged tarball

GitHub Actions included in this repo:

  • CI: install, build, test, and pack on pushes and pull requests
  • Release: publish to npm, update the Homebrew tap, and attach the package tarball when a v* tag is pushed

Contributing

Issues and pull requests are welcome.

The easiest way to contribute is to improve the default message set, shell support, and installation experience.

License

MIT