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

@saltpub/skills

v0.1.5

Published

The open agent skills ecosystem

Readme

@saltpub/skills

The CLI for the open agent skills ecosystem.

Supports OpenCode, Claude Code, Codex, Cursor, and 73 more.

Install a Skill

npx @saltpub/skills add vercel-labs/agent-skills

Use a Skill Without Installing

Generate a prompt for one skill, or start a supported coding agent interactively:

npx @saltpub/skills use vercel-labs/agent-skills@web-design-guidelines | claude
npx @saltpub/skills use vercel-labs/agent-skills --skill web-design-guidelines --agent claude-code

skills use resolves sources the same way as skills add, writes the selected skill files to a temporary directory, and prints only the generated prompt to stdout unless --agent is provided. With --agent, it starts one supported agent interactively with the generated prompt.

Source Formats

# GitHub shorthand (owner/repo)
npx @saltpub/skills add vercel-labs/agent-skills

# Full GitHub URL
npx @saltpub/skills add https://github.com/vercel-labs/agent-skills

# Direct path to a skill in a repo
npx @saltpub/skills add https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines

# GitLab URL
npx @saltpub/skills add https://gitlab.com/org/repo

# Self-hosted GitLab or another Git service
npx @saltpub/skills add https://gitlab.xxx.com/group/skill-a

# Any git URL
npx @saltpub/skills add [email protected]:vercel-labs/agent-skills.git

# Local path
npx @saltpub/skills add ./my-local-skills

For an unrecognized HTTP(S) host, skills add tries Well-Known discovery, a direct SKILL.md/archive download, the canonical .git clone URL, and finally the original URL. It reports failure only after every fallback has failed. For example, https://gitlab.xxx.com/group/skill-a is cloned from https://gitlab.xxx.com/group/skill-a.git. npx @saltpub/skills add https://gitlab.com/org/repo

npx @saltpub/skills config git-host add gitlab.xxx.com
npx @saltpub/skills config git-host list
npx @saltpub/skills config git-host remove gitlab.xxx.com

Configured hosts are stored in ~/.local/share/salt/skills/config.json under gitHosts. Hostnames may include a port for installations such as gitlab.xxx.com:8443.


### Private Repositories

Use the same command for public and private repositories. The CLI uses the authentication already configured for the repository URL:

```bash
# GitHub shorthand or HTTPS (Git credential helper, GitHub CLI, then SSH fallback)
npx @saltpub/skills add acme/private-skills

# SSH on GitHub, GitLab, or another Git host
npx @saltpub/skills add [email protected]:acme/private-skills.git
npx @saltpub/skills add ssh://[email protected]/acme/private-skills.git

# HTTPS on any Git host (uses your configured Git credential helper)
npx @saltpub/skills add https://git.example.com/acme/private-skills.git
# GitHub shorthand or HTTPS (Git credential helper, GitHub CLI, then SSH fallback)
npx @saltpub/skills add acme/private-skills

# SSH on GitHub, GitLab, or another Git host
npx @saltpub/skills add [email protected]:acme/private-skills.git
npx @saltpub/skills add ssh://[email protected]/acme/private-skills.git

# HTTPS on any Git host (uses your configured Git credential helper)
npx @saltpub/skills add https://git.example.com/acme/private-skills.git

For GitHub HTTPS and shorthand sources, skills first uses normal Git credentials. If that fails and GitHub CLI is authenticated, it tries gh repo clone, followed by SSH. It does not execute gh auth token or copy the stored GitHub CLI credential into the Node.js process.

For GitHub tree lookups, skills first tries the API anonymously, then an explicitly supplied environment token, then gh api. GitHub CLI applies its own stored authentication and returns only the API response; the credential is never printed to or read by skills. If API access still fails, update checks fall back to an authenticated Git clone.

GITHUB_TOKEN or GH_TOKEN can be set explicitly for GitHub API access, including private repository downloads and update checks. They are optional for installs when Git, GitHub CLI, or SSH authentication is already configured.

Options

Examples

# List skills in a repository
npx @saltpub/skills add vercel-labs/agent-skills --list

# Install specific skills
npx @saltpub/skills add vercel-labs/agent-skills --skill frontend-design --skill skill-creator

# Install a skill with spaces in the name (must be quoted)
npx @saltpub/skills add owner/repo --skill "Convex Best Practices"

# Install to specific agents
npx @saltpub/skills add vercel-labs/agent-skills -a claude-code -a opencode

# Non-interactive installation (CI/CD friendly)
npx @saltpub/skills add vercel-labs/agent-skills --skill frontend-design -g -a claude-code -y

# Install all skills from a repo to all agents
npx @saltpub/skills add vercel-labs/agent-skills --all

# Install all skills to specific agents
npx @saltpub/skills add vercel-labs/agent-skills --skill '*' -a claude-code

# Install specific skills to all agents
npx @saltpub/skills add vercel-labs/agent-skills --agent '*' --skill frontend-design

# Install from a direct SKILL.md or archive download URL
npx @saltpub/skills add https://example.com/download/my-skill

npx @saltpub/skills add vercel-labs/agent-skills --skill '*' -a claude-code

Install specific skills to all agents

npx @saltpub/skills add vercel-labs/agent-skills --agent '*' --skill frontend-design

Install from a direct SKILL.md or archive download URL

npx @saltpub/skills add https://example.com/download/my-skill


Direct download URLs are tried after well-known discovery. They may point to a single valid `SKILL.md` file or a `.zip`, `.tar`, `.tar.gz`, or `.tgz` archive; the URL does not need to include a file extension. Downloads are limited to 10 MiB, extracted content to 25 MiB, and archives to 1000 files by default. Override with `SKILLS_DOWNLOAD_MAX_BYTES`, `SKILLS_EXTRACT_MAX_BYTES`, and `SKILLS_EXTRACT_MAX_FILES` when you trust the source.

### Installation Scope

| Scope       | Flag      | Location            | Use Case                                      |
| ----------- | --------- | ------------------- | --------------------------------------------- |
| **Project** | (default) | `./<agent>/skills/` | Committed with your project, shared with team |
| **Global**  | `-g`      | `~/<agent>/skills/` | Available across all projects                 |

### Installation Methods
### Local management Web console

Run the temporary, loopback-only console from the CLI:

```bash
npx @saltpub/skills web
npx @saltpub/skills web --no-open

The server binds to 127.0.0.1 on a random available port, prints a one-time URL/token, runs in the foreground, and stops with Ctrl+C. It does not expose a configurable port or LAN endpoint. The console discovers projects only through configured roots containing skills-lock.json; unregistered .agents/skills directories are ignored. It shows copy/link state, missing link targets, source updates, and project/Skill relationships without deleting an entire project directory. npx @saltpub/skills web --no-open


The server binds to `127.0.0.1` on a random available port, prints a one-time URL/token, runs in the foreground, and stops with Ctrl+C. It does not expose a configurable port or LAN endpoint. The console discovers projects only through configured roots containing `skills-lock.json`; unregistered `.agents/skills` directories are ignored. It shows copy/link state, missing link targets, source updates, and project/Skill relationships without deleting an entire project directory.

Management data is kept separately from project locks:

- All platforms: `~/.local/share/salt/skills/config.json`, `~/.local/share/salt/skills/registry.json`, and `~/.local/share/salt/skills/sources/` by default (or the directory selected by `XDG_DATA_HOME`).

### Local package distribution

The package can be published to npm or distributed as a local npm tarball:

```bash
pnpm type-check
pnpm test -- --run --maxWorkers=1
pnpm build
npm pack
npm install -g .\\@saltpub/skills-<version>.tgz

Before sharing a tarball, install it in a clean temporary npm prefix and smoke-test skills --help, skills web --no-open, and a fixture skills add ... --link flow.

Other Commands

| Command | Description | | ---------------------------- | --------------------------------------------- | | npx @saltpub/skills use <source> | Use one skill without installing | | npx @saltpub/skills list | List installed skills (alias: ls) | | npx @saltpub/skills find [query] | Search for skills interactively or by keyword | | npx @saltpub/skills remove [skills] | Remove installed skills from agents | | npx @saltpub/skills update [skills] | Update installed skills to latest versions | | npx @saltpub/skills init [name] | Create a new SKILL.md template |

skills list

List all installed skills. Similar to npm ls.

# List all installed skills (project and global)
npx @saltpub/skills list

# List only global skills
npx @saltpub/skills ls -g

# Filter by specific agents
npx @saltpub/skills ls -a claude-code -a cursor

skills find

Search for skills interactively or by keyword.

# Interactive search (fzf-style)
npx @saltpub/skills find

# Search by keyword
npx @saltpub/skills find typescript

# Search across every repository owned by an organization or user
npx @saltpub/skills find react --owner vercel

skills update

# Update all skills (interactive scope prompt)
npx @saltpub/skills update

# Update a single skill by name
npx @saltpub/skills update my-skill

# Update multiple specific skills
npx @saltpub/skills update frontend-design web-design-guidelines

# Update only global or project skills
npx @saltpub/skills update -g
npx @saltpub/skills update -p

# Non-interactive (auto-detects scope: project if in a project, else global)
npx @saltpub/skills update -y

| -g, --global | Only update global skills | | -p, --project | Only update project skills | | -y, --yes | Skip scope prompt (auto-detect: project if in a project dir, else global) | | [skills...] | Update specific skills by name instead of all |

skills init

# Create SKILL.md in current directory
npx @saltpub/skills init

# Create a new skill in a subdirectory
npx @saltpub/skills init my-skill

skills remove

Remove installed skills from agents.

# Remove interactively (select from installed skills)
npx @saltpub/skills remove

# Remove specific skill by name
npx @saltpub/skills remove web-design-guidelines

# Remove multiple skills
npx @saltpub/skills remove frontend-design web-design-guidelines

# Remove from global scope
npx @saltpub/skills remove --global web-design-guidelines

# Remove from specific agents only
npx @saltpub/skills remove --agent claude-code cursor my-skill

# Remove all installed skills without confirmation
npx @saltpub/skills remove --all

# Remove all skills from a specific agent
npx @saltpub/skills remove --skill '*' -a cursor

# Remove a specific skill from all agents
npx @saltpub/skills remove my-skill --agent '*'

# Use 'rm' alias
npx @saltpub/skills rm my-skill

Agent skills are reusable instruction sets that extend your coding agent's capabilities. They're defined in SKILL.md files with YAML frontmatter containing a name and description.

Skills let agents perform specialized tasks like:

  • Generating release notes from git history
  • Creating PRs following your team's conventions
  • Integrating with external tools (Linear, Notion, etc.)

Discover skills at skills.sh

Supported Agents

Skills can be installed to any of these agents:

| Agent | --agent | Project Path | Global Path | |-------|-----------|--------------|-------------| | AiderDesk | aider-desk | .aider-desk/skills/ | ~/.aider-desk/skills/ | | Amp, Replit, Universal | amp, replit, universal | .agents/skills/ | ~/.config/agents/skills/ | | Antigravity | antigravity | .agents/skills/ | ~/.gemini/antigravity/skills/ | | Antigravity CLI | antigravity-cli | .agents/skills/ | ~/.gemini/antigravity-cli/skills/ | | AstrBot | astrbot | data/skills/ | ~/.astrbot/data/skills/ | | Autohand Code CLI | autohand-code | .autohand/skills/ | ~/.autohand/skills/ | | Augment | augment | .augment/skills/ | ~/.augment/skills/ | | IBM Bob | bob | .bob/skills/ | ~/.bob/skills/ | | Claude Code | claude-code | .claude/skills/ | ~/.claude/skills/ | | OpenClaw | openclaw | skills/ | ~/.openclaw/skills/ | | Cline, Dexto, Kimi Code CLI, Loaf, Warp, Zed | cline, dexto, kimi-code-cli, loaf, warp, zed | .agents/skills/ | ~/.agents/skills/ | | CodeArts Agent | codearts-agent | .codeartsdoer/skills/ | ~/.codeartsdoer/skills/ | | CodeBuddy | codebuddy | .codebuddy/skills/ | ~/.codebuddy/skills/ | | Codemaker | codemaker | .codemaker/skills/ | ~/.codemaker/skills/ | | Code Studio | codestudio | .codestudio/skills/ | ~/.codestudio/skills/ | | Codex | codex | .agents/skills/ | ~/.codex/skills/ | | Command Code | command-code | .commandcode/skills/ | ~/.commandcode/skills/ | | Continue | continue | .continue/skills/ | ~/.continue/skills/ | | Cortex Code | cortex | .cortex/skills/ | ~/.snowflake/cortex/skills/ | | Crush | crush | .crush/skills/ | ~/.config/crush/skills/ | | Cursor | cursor | .agents/skills/ | ~/.cursor/skills/ | | Deep Agents | deepagents | .agents/skills/ | ~/.deepagents/agent/skills/ | | Devin for Terminal | devin | .devin/skills/ | ~/.config/devin/skills/ | | Droid | droid | .factory/skills/ | ~/.factory/skills/ | | Eve | eve | agent/skills/ | N/A (project-only) | | Firebender | firebender | .agents/skills/ | ~/.firebender/skills/ | | ForgeCode | forgecode | .forge/skills/ | ~/.forge/skills/ | | Gemini CLI | gemini-cli | .agents/skills/ | ~/.gemini/skills/ | | GitHub Copilot | github-copilot | .agents/skills/ | ~/.copilot/skills/ | | Goose | goose | .goose/skills/ | ~/.config/goose/skills/ | | Grok Build | grok | .grok/skills/ | ~/.grok/skills/ | | Hermes Agent | hermes-agent | .hermes/skills/ | ~/.hermes/skills/ | | inference.sh | inference-sh | .inferencesh/skills/ | ~/.inferencesh/skills/ | | Jazz | jazz | .jazz/skills/ | ~/.jazz/skills/ | | Junie | junie | .junie/skills/ | ~/.junie/skills/ | | iFlow CLI | iflow-cli | .iflow/skills/ | ~/.iflow/skills/ | | Kilo Code | kilo | .kilocode/skills/ | ~/.kilocode/skills/ | | Kimchi | kimchi | .kimchi/skills/ | ~/.config/kimchi/harness/skills/ | | Kiro CLI | kiro-cli | .kiro/skills/ | ~/.kiro/skills/ | | Kode | kode | .kode/skills/ | ~/.kode/skills/ | | Lingma | lingma | .lingma/skills/ | ~/.lingma/skills/ | | MCPJam | mcpjam | .mcpjam/skills/ | ~/.mcpjam/skills/ | | MiniMax Code | minimax-code | .minimax/skills/ | ~/.minimax/skills/ | | Mistral Vibe | mistral-vibe | .vibe/skills/ | ~/.vibe/skills/ | | Moxby | moxby | .moxby/skills/ | ~/.moxby/skills/ | | Mux | mux | .mux/skills/ | ~/.mux/skills/ | | OpenCode | opencode | .agents/skills/ | ~/.config/opencode/skills/ | | OpenHands | openhands | .openhands/skills/ | ~/.openhands/skills/ | | Ona | ona | .ona/skills/ | ~/.ona/skills/ | | Pi | pi | .pi/skills/ | ~/.pi/agent/skills/ | | Posit Assistant | posit-assistant | .posit/assistant/skills/ | ~/.posit/assistant/skills/ | | Qoder | qoder | .qoder/skills/ | ~/.qoder/skills/ | | Qoder CN | qoder-cn | .qoder/skills/ | ~/.qoder-cn/skills/ | | Qwen Code | qwen-code | .qwen/skills/ | ~/.qwen/skills/ | | Reasonix | reasonix | .reasonix/skills/ | ~/.reasonix/skills/ | | Rovo Dev | rovodev | .rovodev/skills/ | ~/.rovodev/skills/ | | Roo Code | roo | .roo/skills/ | ~/.roo/skills/ | | Tabnine CLI | tabnine-cli | .tabnine/agent/skills/ | ~/.tabnine/agent/skills/ | | Terramind | terramind | .terramind/skills/ | ~/.terramind/skills/ | | Tinycloud | tinycloud | .tinycloud/skills/ | ~/.tinycloud/skills/ | | Trae | trae | .trae/skills/ | ~/.trae/skills/ | | Trae CN | trae-cn | .trae/skills/ | ~/.trae-cn/skills/ | | Windsurf | windsurf | .windsurf/skills/ | ~/.codeium/windsurf/skills/ | | ZCode | zcode | .zcode/skills/ | ~/.zcode/skills/ | | Zencoder, Zenflow | zencoder, zenflow | .zencoder/skills/ | ~/.zencoder/skills/ | | Neovate | neovate | .neovate/skills/ | ~/.neovate/skills/ | | Pochi | pochi | .pochi/skills/ | ~/.pochi/skills/ | | PromptScript | promptscript | .agents/skills/ | N/A (project-only) | | AdaL | adal | .adal/skills/ | ~/.adal/skills/ |

[!NOTE] Kiro CLI users: The default agent automatically loads skills from .kiro/skills/ and ~/.kiro/skills/ — no configuration needed. If you use a custom agent, add skills to its resources in .kiro/agents/<agent>.json:

{
  "resources": ["skill://.kiro/skills/**/SKILL.md"]
}

The CLI automatically detects which coding agents you have installed. If none are detected, you'll be prompted to select which agents to install to.

Creating Skills

Skills are directories containing a SKILL.md file with YAML frontmatter:

---
name: my-skill
description: What this skill does and when to use it
---

# My Skill

Instructions for the agent to follow when this skill is activated.

## When to Use

Describe the scenarios where this skill should be used.

## Steps

1. First, do this
2. Then, do that

Required Fields

  • name: Unique identifier (lowercase, hyphens allowed)
  • description: Brief explanation of what the skill does

Optional Fields

  • metadata.internal: Set to true to hide the skill from normal discovery. Internal skills are only visible and installable when INSTALL_INTERNAL_SKILLS=1 is set. Useful for work-in-progress skills or skills meant only for internal tooling.
---
name: my-internal-skill
description: An internal skill not shown by default
metadata:
  internal: true
---

Skill Discovery

The CLI searches for skills in these locations within a repository. Each skill container directory is walked up to three levels deep, covering flat layouts (skills/<name>/SKILL.md) and catalog layouts with one or two category levels (skills/<category>/<name>/SKILL.md or skills/<category>/<category>/<name>/SKILL.md). A SKILL.md discovered at a shallower level shadows anything nested below it. Use --full-depth to also discover SKILL.md files outside these container directories (e.g. under examples/ or tests/).

  • Root directory (if it contains SKILL.md)
  • skills/
  • skills/.curated/
  • skills/.experimental/
  • skills/.system/
  • .aider-desk/skills/
  • .agents/skills/
  • data/skills/
  • .autohand/skills/
  • .augment/skills/
  • .bob/skills/
  • .claude/skills/
  • .codeartsdoer/skills/
  • .codebuddy/skills/
  • .codemaker/skills/
  • .codestudio/skills/
  • .commandcode/skills/
  • .continue/skills/
  • .cortex/skills/
  • .crush/skills/
  • .devin/skills/
  • .factory/skills/
  • agent/skills/
  • .forge/skills/
  • .goose/skills/
  • .grok/skills/
  • .hermes/skills/
  • .inferencesh/skills/
  • .jazz/skills/
  • .junie/skills/
  • .iflow/skills/
  • .kilocode/skills/
  • .kimchi/skills/
  • .kiro/skills/
  • .kode/skills/
  • .lingma/skills/
  • .mcpjam/skills/
  • .minimax/skills/
  • .vibe/skills/
  • .moxby/skills/
  • .mux/skills/
  • .openhands/skills/
  • .ona/skills/
  • .pi/skills/
  • .posit/assistant/skills/
  • .qoder/skills/
  • .qwen/skills/
  • .reasonix/skills/
  • .rovodev/skills/
  • .roo/skills/
  • .tabnine/agent/skills/
  • .terramind/skills/
  • .tinycloud/skills/
  • .trae/skills/
  • .windsurf/skills/
  • .zcode/skills/
  • .zencoder/skills/
  • .neovate/skills/
  • .pochi/skills/
  • .adal/skills/

Plugin Manifest Discovery

If .claude-plugin/marketplace.json or .claude-plugin/plugin.json exists, skills declared in those files are also discovered:

// .claude-plugin/marketplace.json
{
  "metadata": { "pluginRoot": "./plugins" },
  "plugins": [
    {
      "name": "my-plugin",
      "source": "my-plugin",
      "skills": ["./skills/review", "./skills/test"]
    }
  ]
}

This enables compatibility with the Claude Code plugin marketplace ecosystem. Skill paths declared in a manifest are searched at their declared depth and are not subject to the bounded depth-3 catalog walk described above.

If no skills are found in standard locations, a recursive search is performed.

Compatibility

Skills are generally compatible across agents since they follow a shared Agent Skills specification. However, some features may be agent-specific:

| Feature | OpenCode | OpenHands | Claude Code | Cline | CodeBuddy | Codex | Command Code | Kiro CLI | Cursor | Antigravity | Roo Code | Github Copilot | Amp | OpenClaw | Neovate | Pi | Qoder | Zencoder | | --------------- | -------- | --------- | ----------- | ----- | --------- | ----- | ------------ | -------- | ------ | ----------- | -------- | -------------- | --- | -------- | ------- | --- | ----- | -------- | | Basic skills | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | | allowed-tools | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | | context: fork | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | | Hooks | No | No | Yes | Yes | No | No | No | Yes | No | No | No | No | No | No | No | No | No | No |

Troubleshooting

"No skills found"

Ensure the repository contains valid SKILL.md files with both name and description in the frontmatter.

Skill not loading in agent

  • Verify the skill was installed to the correct path
  • Check the agent's documentation for skill loading requirements
  • Ensure the SKILL.md frontmatter is valid YAML

Permission errors

Ensure you have write access to the target directory.

Environment Variables

| Variable | Description | | ------------------------- | -------------------------------------------------------------------------- | | INSTALL_INTERNAL_SKILLS | Set to 1 or true to show and install skills marked as internal: true | | DISABLE_TELEMETRY | Set to disable anonymous usage telemetry | | DO_NOT_TRACK | Alternative way to disable telemetry | | GITHUB_TOKEN | Optional explicit token for authenticated GitHub API requests | | GH_TOKEN | Fallback explicit token for authenticated GitHub API requests |

# Install internal skills
INSTALL_INTERNAL_SKILLS=1 npx @saltpub/skills add vercel-labs/agent-skills --list

Telemetry

This CLI collects anonymous usage data to help improve the tool. No personal information is collected.

GitHub repository and skill identifiers are sent only for repositories that GitHub positively confirms are public. Other remote source types may include source and skill identifiers in install telemetry because their visibility cannot be checked through GitHub. Security-audit requests remain limited to confirmed-public GitHub repositories. Set DISABLE_TELEMETRY=1 or DO_NOT_TRACK=1 to disable both entirely.

Related Links

License

This project is licensed under the MIT License.