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

clawhub-multi

v0.3.0

Published

Thin clawhub wrapper that supports multiple SkillHub registries from one machine with isolated per-registry tokens.

Downloads

489

Readme

clawhub-multi

A thin wrapper around clawhub that lets you talk to multiple SkillHub / ClawHub registries from the same machine without their tokens stomping on each other.

Why

The stock clawhub CLI stores one API token in a single config file, keyed only by the most recently used registry. The moment you clawhub login against a different registry, the previous token is overwritten.

clawhub-multi fixes that by deriving an independent config file per registry URL (SHA‑256 of the URL → ~/.clawhub-multi/<hash>.json). You can be logged into your company's private SkillHub, the public ClawHub, and a customer's instance simultaneously — pick which one each command targets via --registry or the CLAWHUB_MULTI_REGISTRY env var.

It also defaults --dir to ~/.claude/skills for install, so Claude Code users don't have to type that path every time.

Everything else is forwarded verbatim to clawhub. All subcommands (login, install, search, update, uninstall, list, whoami, inspect, publish, ...) work the same.

Install

# one-off
npx clawhub-multi install my-skill --registry https://your.skillhub.com --token <PAT>

# or globally
npm i -g clawhub-multi
clawhub-multi install my-skill --registry https://your.skillhub.com --token <PAT>

Usage

One-shot install (implicit login)

Pass --token on any command and the wrapper runs an implicit clawhub login first, then continues with your command. First install + login is a single line:

npx clawhub-multi install my-skill \
  --registry https://your.skillhub.com \
  --token <PAT>

Subsequent commands against the same registry don't need --token — it's already stored in ~/.clawhub-multi/<hash>.json:

npx clawhub-multi install another-skill --registry https://your.skillhub.com

Explicit login (if you prefer two steps)

npx clawhub-multi login --token <PAT> --registry https://your.skillhub.com
npx clawhub-multi install my-skill --registry https://your.skillhub.com

Reduce typing with env vars

export CLAWHUB_MULTI_REGISTRY=https://your.skillhub.com
# First time only:
CLAWHUB_MULTI_TOKEN=<PAT> npx clawhub-multi install my-skill
# After that:
npx clawhub-multi install another-skill
npx clawhub-multi search foo
npx clawhub-multi list

Pick an agent (default: claude)

--agent maps to a well-known skills directory without you having to remember the path:

| --agent | Skills dir | |---|---| | claude (default) | ~/.claude/skills | | codex | ~/.codex/skills |

# One-off
npx clawhub-multi install my-skill --agent codex --token <PAT>

# Persist via env
export CLAWHUB_MULTI_AGENT=codex
npx clawhub-multi install my-skill
npx clawhub-multi list                    # also targets codex dir

Any install, update, uninstall, or list call gets the right --dir injected automatically based on --agent.

Fully custom dir

If your agent isn't in the built-in list, pass --dir directly — it overrides --agent:

npx clawhub-multi install my-skill --dir ~/.my-custom-agent/skills

Switching between registries

# Company internal SkillHub
npx clawhub-multi install internal-tool --registry https://skillhub.acme.internal

# Public ClawHub
npx clawhub-multi install public-skill --registry https://clawhub.ai

# Both tokens persist independently. No re-login needed.

Env vars

| Variable | Purpose | |---|---| | CLAWHUB_MULTI_REGISTRY | Default registry URL when --registry is not on the command line. | | CLAWHUB_MULTI_TOKEN | Token for implicit login. Safer than passing --token on the command line (which leaks into shell history). | | CLAWHUB_MULTI_AGENT | Default agent for --dir resolution (claude or codex). Default: claude. |

All clawhub env vars (CLAWHUB_WORKDIR, CLAWHUB_SITE, ...) still work — only CLAWHUB_REGISTRY and CLAWHUB_CONFIG_PATH are managed by this wrapper.

Security note: putting --token <PAT> on the command line leaves the token in your shell history. For scripting, prefer CLAWHUB_MULTI_TOKEN from a secret store, or run login once and drop the flag from subsequent commands.

How it works

$ npx clawhub-multi install foo --registry https://example.com
            │
            ▼
   clawhub-multi (this package)
            │
            │  CLAWHUB_REGISTRY=https://example.com
            │  CLAWHUB_CONFIG_PATH=~/.clawhub-multi/<sha256(url)[:12]>.json
            │  injects --dir ~/.claude/skills if absent
            ▼
   spawns: clawhub install --dir ~/.claude/skills foo --registry https://example.com

Roughly 60 lines of code. Read bin/clawhub-multi.js.

License

MIT