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

claude-spin-class

v1.0.0

Published

Learn while Claude thinks — customizable spinner verbs for Claude Code CLI

Readme

claude-spin-class

Learn while Claude thinks.

A small CLI that swaps the Claude Code spinner verbs for something worth reading — Spanish vocab, HTTP status codes, Oscar winners, periodic table elements, collective nouns, and more. Every time Claude is working, you're passively picking something up.

⠋ 403 → Forbidden: auth won't help
⠙ A shrewdness of apes
⠹ ¿Cuánto cuesta? (How much does it cost?)
⠸ ⌘⇧P → Command Palette

It just writes to ~/.claude/settings.json. That's the whole trick.

Example with claude-spin-class spanish


Install

npm install -g claude-spin-class

Or without installing:

npx claude-spin-class spanish

Requires Node ≥ 18 and Claude Code.

Usage

claude-spin-class <theme>             # set a theme
claude-spin-class random [category]  # pick something at random
claude-spin-class list [category]    # see what's available
claude-spin-class --help

The theme persists in ~/.claude/settings.json until you change it.

Themes

Tech

| Theme | Subtypes | Entries | |------------|-----------------------------------------------------------------|---------| | http | 1xx 2xx 3xx 4xx 5xx | 33 | | vscode | navigation editing search | 62 | | terminal | navigation history power | 54 | | regex | anchors character-classes quantifiers groups patterns | 51 | | bigo | concepts sorting searching data-structures | 44 |

Languages

| Theme | Subtypes | Entries | |--------------|-----------------------------------------------------------------|---------| | spanish | greetings verbs travel food sports numbers time | 175 | | french | greetings verbs travel food numbers time | 150 | | italian | greetings verbs travel food numbers time | 150 | | vietnamese | greetings numbers food travel phrases | 90 |

Trivia

| Theme | Subtypes | Entries | |---------------|------------------------------------------------------------|---------| | oscars | classics 1960s-70s 1980s-90s 2000s-10s 2020s | 97 | | elements | periods-1-3 period-4 period-5 period-6 period-7 | 118 | | capitals | africa americas asia europe oceania | 96 | | collectives | animals birds ocean people | 61 |

You can use a category name to get everything in it (claude-spin-class languages), or narrow to a subtype (claude-spin-class http:4xx). claude-spin-class all loads all 1,181 entries.

How it works

Claude Code reads spinnerVerbs from ~/.claude/settings.json and cycles through the strings while it's processing. This tool just manages that field.

// ~/.claude/settings.json
{
  "spinnerVerbs": {
    "mode": "replace",
    "verbs": [
      "400 → Bad Request: malformed syntax",
      "401 → Unauthorized: auth required",
      "403 → Forbidden: auth won't help"
    ]
  }
}

The tool always uses "mode": "replace" so your theme verbs are shown exclusively, rather than mixed in with Claude's defaults.

Contributing

Adding a theme is straightforward:

  1. Create a JSON file in themes/<category>/ — keys are subtype names, values are string arrays
  2. Add an entry to lib/catalog.js
  3. Run npm test to make sure everything's wired up correctly
  4. Open a PR
{
  "basics": ["Bonjour (Hello)", "Merci (Thank you)"],
  "numbers": ["Un (One)", "Deux (Two)"]
}

Ideas welcome — new languages, trivia categories, whatever seems fun to learn passively.

Development

npm test

No dependencies. Uses Node's built-in test runner. The suite validates catalog integrity (file exists, subtypes present, no empty arrays, all entries are strings) and core resolution logic. New themes get covered automatically.

CI/CD

Tests run automatically on every push to main and on all PRs, against Node 18, 20, and 22.

Releases are published to npm via npm Trusted Publishers (OIDC — no token stored in GitHub secrets). To publish a new version:

npm version patch   # or minor / major
git push --tags

The tag push triggers the publish workflow, which runs tests and then publishes with provenance.

License

MIT — see LICENSE.