@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
Maintainers
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 behaviorexecution.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 addedsr integrate adds only marked SkillRouter entries and preserves every existing setting:
- Claude Code hooks in
~/.claude/settings.json:SessionStartwarms the local index;UserPromptSubmitselects a usable Skill for every request;Stopdisplays an eligible recommendation only after a successful response. - Codex hooks in
~/.codex/hooks.json: the same per-request and post-run behavior. - One small router Skill linked into both
~/.agents/skillsand~/.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.
