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

@skill-router/cli

v0.4.19

Published

SKILLROUTER CLI (sr) — buy CLI skills once; your agent calls them instantly. Pair with `sr connect`, browse with `sr catalog`, call purchased skills directly.

Downloads

1,277

Readme

@skill-router/cli

sr — the SKILLROUTER command line. Membership unlocks the catalog; your agent calls each skill locally.

npm i -g @skill-router/cli

sr connect                 # pair this machine — approve in your browser, key auto-saved
sr catalog                 # skills + contracts
sr account                 # membership status
sr ensure boss-web-cli     # install one authorized execution component on demand
sr xiaohongshu search "agent tools"   # call a membership-included skill directly
sr update                  # diff-only CLI/MCP/runtime + skills/sitedata update; never waits for site login
  • Credentials live in ~/.skillrouter/credentials.json, shared with @skill-router/mcp — log in once, every surface works.
  • Manuals are agent-readable; there is nothing for you to learn. Point your agent at https://skillrouter.org/SKILL.md.
  • Self-hosted/dev: SKILLROUTER_BASE=http://localhost:9000/api/sr sr catalog.

On-demand adapters

sr <site> <command> first checks the local runtime. If the exact site and command are in the public index but its execution component is missing, the CLI downloads the authorized bundle, verifies SHA-256 plus the ZIP/manifest structure, installs it once under a bundle lock, and then continues the original argv. Already installed components run locally without a catalog or membership request, including offline and after membership expiry.

sr ensure boss-web-cli --check --json  # authorize/validate only; no install
sr ensure boss-web-cli --json          # idempotent first install
SR_AUTO_ENSURE=0 sr boss search ...    # rollback switch: keep legacy missing-plugin behavior

execution.bundle and execution.runtime_plugin come from the catalog contract. The CLI never derives a download from a prompt, manual URL, or site-name suffix. sr setup --bundle <path> remains available for offline/development bundles; pre-downloading every adapter is no longer onboarding.

Skill discovery across agent harnesses

sr snapshot reads the skills already present on this machine, and sr integrate wires SkillRouter into Codex and Claude Code. A synchronous UserPromptSubmit hook checks every request before the model starts; a Stop hook can show one relevant optional Skill after a successful run without adding sales copy to the assistant answer.

sr snapshot                # JSON: skills found, name collisions, invalid ones, catalog matches
sr snapshot --format hook  # compact projection injected at session start
sr recommendations status  # recommendation settings and per-skill cooldowns
sr recommendations snooze xiaohongshu-web-cli  # wait three days
sr recommendations disable xiaohongshu-web-cli # never suggest this Skill
sr recommendations off     # disable every recommendation (use `on` to restore)
sr integrate --dry-run     # show exactly what would be written — nothing is touched
sr integrate               # router-only by default; asks for confirmation first
sr integrate --native-stubs # compatibility: also expose one native stub per entitled product
sr integrate --router-only # safely migrate back; modified legacy manuals are preserved
sr integrate verify        # health check; non-zero exit if something is broken
sr integrate remove        # undo — removes only what SkillRouter added

sr integrate adds only marked SkillRouter entries and preserves every existing setting:

  1. Claude Code hooks in ~/.claude/settings.json: SessionStart warms the local index; UserPromptSubmit selects a usable Skill for every request; Stop displays an eligible recommendation only after a successful response.
  2. Codex hooks in ~/.codex/hooks.json: the same per-request and post-run behavior.
  3. One small router Skill linked into both ~/.agents/skills and ~/.claude/skills.

That is the default router_only mode. Product skills stay in the local SkillRouter index and their execution component installs on first use, so the native skill roots do not grow with the catalog. --native-stubs explicitly enables the previous per-product bridge for compatibility. The selected mode is persisted in ~/.skillrouter/integrations.json, and sr update follows it. Manifests created before the mode field existed keep their native stubs until an explicit --router-only migration.

Settings files are backed up to ~/.skillrouter/backup/. sr integrate remove removes only entries and links whose identity/content still matches what SkillRouter installed.

Scanning only ever reads the name and description from each SKILL.md. Skill bodies are never read at startup and skill scripts are never executed.

What leaves your machine

One anonymous catalog request is cached for 15 minutes. A signed-in account also makes an authenticated entitlement request cached for 60 seconds; the cache is keyed by a one-way key fingerprint so account switches cannot inherit another account's purchases. Matching stays on your machine: project paths, source code, local skill names, and user prompts are never sent to SkillRouter. For manual sr snapshot diagnostics, pass --no-available to skip that fetch entirely; local skills keep working with no network at all. If SkillRouter is unreachable, the last successful catalog is reused and the snapshot is marked incomplete — your local skills are never affected.

If entitlement status is unavailable or stale, local and previously confirmed owned Skills keep working, but membership recommendations are suppressed. A shown recommendation starts a 72-hour per-Skill cooldown. Nothing is ever bought automatically.

L3 community feedback

When the warm discovery index has no executable local or entitled cloud match for an explicit web task, the Router can direct the agent to a browser capability it already has. SkillRouter does not install or remotely control that browser capability. Writes still require confirmation, and login, CAPTCHA, risk control, payments, credentials, and other red-zone workflows are never explored.

After a task is actually completed, the agent may enqueue one report with exactly four top-level fields: domain, a parameter-free task, outcome: completed, and a structural fingerprint. It never includes a full URL, page text, inputs, output, DOM, selector values, screenshots, cookies, credentials, or API keys. Sending is best effort and never changes the task result.

sr feedback status
sr feedback off
sr feedback on
sr feedback enqueue '<four-field-json>'

Feedback is independent from the default-off sr signal health ping. A supporting integrated client shows one single-line disclosure once; there is no per-task prompt. Public explanation: https://skillrouter.org/us/community-exploration.

sr manual <skill>

Looks the skill up in the catalog (by its skill id, legacy handle, or title). Connected members and accounts with historical entitlements download the full guide into the private ordinary cache ~/.skillrouter/manuals/<skill>/{SKILL.md,meta.json}. The CLI verifies the endpoint SHA-256 before an atomic write; this directory is never added to native skill roots. The Router reads it only after a request selects that product. Old ~/.skillrouter/skills/<skill>/SKILL.md files remain a read-only fallback and are never overwritten by sr manual. Everyone else gets the public product-page URL. Unreleased skills (status: coming) are not downloadable even for members. Pass --print to emit the verified Markdown body after caching it; the default JSON response returns the readable body and metadata paths.

Compatibility notes

The webnav runner keeps two legacy output columns, charged_points and free_trial, for schema compatibility. They are always 0 / false; use member: true as the access signal.