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

@deerteam/deerskillhub

v0.1.1

Published

Manage and install skills for AI coding agents

Readme

SkillHub CLI

SkillHub CLI is the official command-line tool for SkillHub, designed for searching, installing, managing, and publishing Agent skill packages.

📦 Installation

# Install globally via npm
npm install -g @deerteam/deerskillhub

# Or run directly with npx
npx @deerteam/deerskillhub@latest version

# Or install globally via Bun
bun add -g @deerteam/deerskillhub

🚀 Quick Start

# Login
deerskillhub login --token sk_xxx

# Search skills
deerskillhub search pdf

# Install skill to Agent directory
deerskillhub install pdf-parser --agent codex

# List installed skills
deerskillhub list

# Publish skill
deerskillhub publish ./my-skill --namespace myspace

🌐 Registry Configuration

The active registry is resolved in the following priority order:

  1. --registry <url> command-line argument
  2. DEERSKILLHUB_REGISTRY environment variable
  3. registry in ~/.deerskillhub/config.json
  4. Default value https://skill.xfyun.cn
# Temporarily use another registry
deerskillhub search pdf --registry https://skillhub.example.com

# Set via environment variable (Linux/macOS)
export DEERSKILLHUB_REGISTRY=https://skillhub.example.com

Windows PowerShell:

$env:DEERSKILLHUB_REGISTRY="https://skillhub.example.com"

Windows CMD:

set DEERSKILLHUB_REGISTRY=https://skillhub.example.com

🔐 Authentication

Token resolution priority:

  1. --token <token> command-line argument
  2. DEERSKILLHUB_TOKEN environment variable
  3. Token stored in ~/.deerskillhub/credentials.json (per registry)

Login

# Login with API token
deerskillhub login --token sk_xxx

# Login to specific registry
deerskillhub login --token sk_xxx --registry https://skillhub.example.com

login validates the token, stores it in ~/.deerskillhub/credentials.json, and writes the registry to ~/.deerskillhub/config.json.

Check Current Identity

deerskillhub whoami

# Check specific registry
deerskillhub whoami --registry https://skillhub.example.com

# Temporarily use different token
deerskillhub whoami --token sk_other

Logout

deerskillhub logout

# Logout from specific registry
deerskillhub logout --registry https://skillhub.example.com

Logout only removes the token for the specified registry, preserving registry configuration and installation records.

🔍 Search

# Keyword search
deerskillhub search pdf

# List all skills (empty query)
deerskillhub search "" --limit 50

# JSON output
deerskillhub search pdf --json

Output format: namespace/slug version summary

📥 Install Skills

# Install to auto-detected Agent directory
deerskillhub install pdf-parser

# Specify namespace (default: global)
deerskillhub install pdf-parser --namespace myspace

# Specify version
deerskillhub install pdf-parser --version 1.2.0

# Install to specific Agent
deerskillhub install pdf-parser --agent codex

# Install to multiple Agents
deerskillhub install pdf-parser --agent codex --agent claude-code

# Install to custom directory
deerskillhub install pdf-parser --dir ~/.claude/skills

# Force overwrite existing installation
deerskillhub install pdf-parser --force

Install Target Resolution

The CLI determines the installation location using the following logic:

  1. If --dir is specified: Install to that directory, agent marked as custom
  2. If --agent is specified: Install to the corresponding Agent's skills directory
  3. If neither is specified: Auto-scan current directory to detect existing Agent config directories
    • 1 Agent detected → Install directly
    • Multiple Agents detected → Interactive selection (TTY mode) or error (non-interactive mode)
    • No Agent detected → Fallback to <cwd>/.agents/skills/

--dir and --agent cannot be used together.

Install Paths

Each Agent has both project-level and user-level skills directories:

| Agent | Project-level Path | User-level Path | |-------|-------------------|-----------------| | claude-code | <project>/.claude/skills/ | ~/.claude/skills/ | | codex | <project>/.codex/skills/ | ~/.codex/skills/ | | cursor | <project>/.cursor/skills/ | ~/.cursor/skills/ | | github-copilot | <project>/.github-copilot/skills/ | ~/.github-copilot/skills/ | | gemini-cli | <project>/.gemini-cli/skills/ | ~/.gemini-cli/skills/ | | windsurf | <project>/.windsurf/skills/ | ~/.windsurf/skills/ | | kiro-cli | <project>/.kiro-cli/skills/ | ~/.kiro-cli/skills/ | | roo | <project>/.roo/skills/ | ~/.roo/skills/ | | trae | <project>/.trae/skills/ | ~/.trae/skills/ | | trae-cn | <project>/.trae-cn/skills/ | ~/.trae-cn/skills/ | | openhands | <project>/.openhands/skills/ | ~/.openhands/skills/ | | openclaw | <project>/.openclaw/skills/ | ~/.openclaw/skills/ | | opencode | <project>/.opencode/skills/ | ~/.opencode/skills/ | | kilo | <project>/.kilo/skills/ | ~/.kilo/skills/ |

For Agents not in the list, use --dir to specify the installation path.

File Structure After Installation

.codex/skills/pdf-parser/
├── ...                          # Extracted skill package files
└── .deerskillhub/
    └── metadata.json            # Installation metadata

metadata.json example:

{
  "registry": "https://skill.xfyun.cn",
  "namespace": "global",
  "slug": "pdf-parser",
  "version": "1.0.0",
  "agent": "codex",
  "installedAt": "2026-04-28T06:00:00.000Z"
}

📋 Local Management

List Installed Skills

# List all installed skills
deerskillhub list

# Filter by Agent
deerskillhub list --agent codex

# Filter by multiple Agents
deerskillhub list --agent codex --agent claude-code

# Filter by directory
deerskillhub list --dir ~/.codex/skills

# JSON output
deerskillhub list --json

Remove Skills

# Remove all local installation targets
deerskillhub remove pdf-parser

# Remove only specific Agent's installation
deerskillhub remove pdf-parser --agent codex

# Remove all targets (skip interactive confirmation)
deerskillhub remove pdf-parser --all

# Remove remote skill (requires authentication, prompts for confirmation)
deerskillhub remove pdf-parser --remote --namespace myspace

# Skip remote deletion confirmation
deerskillhub remove pdf-parser --remote --hard --namespace myspace

Parameter exclusivity rules:

  • --all cannot be used with --agent
  • --remote cannot be used with --agent or --all
  • Remote deletion in non-interactive environments requires --hard

Rebuild Local Inventory

deerskillhub doctor

doctor performs the following operations:

  1. Scans <cwd>/.<agent>/skills/<slug>/.deerskillhub/metadata.json
  2. Groups by registry + namespace + slug
  3. Backs up old inventory.json (if exists)
  4. Writes new inventory.json

If the same skill has version conflicts across different targets, that skill will be skipped and reported.

🚢 Publishing

# Publish directory (auto-packaged as zip)
deerskillhub publish ./my-skill --namespace myspace

# Publish existing zip file
deerskillhub publish ./my-skill.zip --namespace myspace

# Specify visibility
deerskillhub publish ./my-skill --namespace myspace --visibility private

Visibility options:

  • public (default) — Visible to everyone
  • namespace-only — Visible to namespace members only
  • private — Visible to yourself only

After successful publication, the skill detail page URL will be displayed.

⬆️ Self-Update

# Check for new version
deerskillhub update --check

# Execute update
deerskillhub update

Update mechanism:

  • Installed via npm globally: Auto-executes npm install -g @deerteam/deerskillhub@latest
  • Installed via Bun globally: Auto-executes bun add -g @deerteam/deerskillhub@latest
  • Run via npx: Prompts manual update command
  • Unknown installation method: Prompts manual update

🔧 Environment Variables

| Variable | Description | Priority | |----------|-------------|----------| | DEERSKILLHUB_REGISTRY | Default registry URL | Lower than --registry parameter | | DEERSKILLHUB_TOKEN | API token | Lower than --token parameter, higher than stored token |

📂 Local File Structure

~/.deerskillhub/
├── config.json           # User configuration (registry, defaultAgent, etc.)
├── credentials.json      # API tokens (stored per registry, permissions 0600)
└── inventory.json        # Installed skills inventory

📖 Command Reference

| Command | Description | |---------|-------------| | deerskillhub help [command] | Display help information | | deerskillhub version [--json] | Display CLI version | | deerskillhub login --token <token> [--registry <url>] [--json] | Save token and registry configuration | | deerskillhub logout [--registry <url>] [--json] | Remove token for specified registry | | deerskillhub whoami [--registry <url>] [--token <token>] [--json] | Validate current token and display user information | | deerskillhub search <query> [--registry <url>] [--limit <n>] [--json] | Search published skills | | deerskillhub install <slug> [--namespace <slug>] [--version <v>] [--agent <profile>] [--dir <path>] [--force] [--registry <url>] [--token <token>] [--json] | Install a skill | | deerskillhub list [--agent <profile>] [--dir <path>] [--registry <url>] [--json] | List installed skills | | deerskillhub remove <slug> [--agent <profile>] [--all] [--remote] [--hard] [--namespace <slug>] [--registry <url>] [--token <token>] [--json] | Remove a skill | | deerskillhub doctor [--json] | Scan project directory and rebuild local inventory | | deerskillhub publish <path> [--namespace <slug>] [--visibility <v>] [--registry <url>] [--token <token>] [--json] | Publish a skill | | deerskillhub update [--check] [--json] | Check or execute CLI self-update |

🔒 Security Notes

  • Tokens are stored only in user directory ~/.deerskillhub/credentials.json
  • On Linux/macOS, credential file permissions are automatically set to 0600
  • Tokens are never written to any project-local files
  • Remote delete operations require explicit confirmation or --hard parameter
  • remove command validates path safety to prevent deletion of non-skill directories

🐛 Troubleshooting

Authentication Failure

# Verify token validity
deerskillhub whoami

# Re-login
deerskillhub login --token sk_xxx

Network Error

# Check if registry is accessible
curl https://skill.xfyun.cn/api/cli/v1/skills/search?q=test&limit=1

# Use alternative registry
deerskillhub search test --registry https://skillhub.example.com

Installation Directory Conflict

# Use --force to overwrite
deerskillhub install pdf-parser --force

# Or remove first then install
deerskillhub remove pdf-parser
deerskillhub install pdf-parser

Corrupted Inventory

# Rebuild inventory
deerskillhub doctor

📚 Documentation

📄 License

Apache-2.0

Copyright 2026 iFlytek Co., Ltd.