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

jd-skills

v0.1.4

Published

CLI for the agent skills ecosystem (JD fork of vercel-labs/skills)

Readme

jd-skills

Forked from vercel-labs/skills (MIT)。 本项目是该上游 CLI 的京东内部 品牌化版本,所有功能 1:1 继承自上游。详见 package.json 中的 forkedFromupstreamLicense 字段。

AI 编程 agent 技能生态的命令行工具。

支持 OpenCodeClaude CodeCodexCursor67 种 agent。

安装一个 Skill

npx jd-skills add <owner>/<skills-repo>

不安装直接使用

为某个 skill 生成 prompt,或启动一个支持的 agent:

npx jd-skills use <owner>/<skills-repo>@<skill> | claude
npx jd-skills use <owner>/<skills-repo> --skill <skill> --agent claude-code

jd-skills usejd-skills add 解析 source 的方式完全相同:把选中的 skill 文件写到临时目录,默认只把生成的 prompt 打印到 stdout;如果带上 --agent,则用这个 prompt 启动一个 agent。

支持的 source 格式

# GitHub 简写(owner/repo)
npx jd-skills add <owner>/<skills-repo>

# 完整 GitHub URL
npx jd-skills add https://github.com/<owner>/<skills-repo>

# 仓库内具体 skill 的路径
npx jd-skills add https://github.com/<owner>/<skills-repo>/tree/main/skills/<skill>

# 公共 GitLab URL
npx jd-skills add https://gitlab.com/org/repo

# 京东内网 GitLab(推荐用 jd: 简写)
npx jd-skills add jd:<group>/<repo>
npx jd-skills add https://<host>/<group>/<repo>

# 任意 git URL
npx jd-skills add [email protected]:<owner>/<skills-repo>.git

# 本地路径
npx jd-skills add ./my-local-skills

命令行选项

| 选项 | 说明 | | --- | --- | | -g, --global | 安装到用户目录而非项目目录 | | -a, --agent <agents...> | 指定目标 agent(如 claude-codecodex),详见支持的 Agent | | -s, --skill <skills...> | 按名字指定 skill('*' 表示全部) | | -l, --list | 只列出仓库中的 skill,不实际安装 | | --copy | 复制文件而非符号链接 | | -y, --yes | 跳过所有确认提示 | | --all | 等价于 --skill '*' --agent '*' -y |

使用示例

# 列出仓库里所有 skill
npx jd-skills add <owner>/<skills-repo> --list

# 只安装指定的几个 skill
npx jd-skills add <owner>/<skills-repo> --skill frontend-design --skill skill-creator

# 安装名字带空格的 skill(必须加引号)
npx jd-skills add owner/repo --skill "Convex Best Practices"

# 安装到指定的 agent
npx jd-skills add <owner>/<skills-repo> -a claude-code -a opencode

# 非交互式安装(适合 CI/CD)
npx jd-skills add <owner>/<skills-repo> --skill frontend-design -g -a claude-code -y

# 把仓库里所有 skill 装到所有 agent
npx jd-skills add <owner>/<skills-repo> --all

# 把所有 skill 装到指定 agent
npx jd-skills add <owner>/<skills-repo> --skill '*' -a claude-code

# 把指定 skill 装到所有 agent
npx jd-skills add <owner>/<skills-repo> --agent '*' --skill frontend-design

安装范围

| 范围 | 选项 | 路径 | 适用场景 | | --- | --- | --- | --- | | 项目级 | (默认) | ./<agent>/skills/ | 跟着项目走,团队共享 | | 全局 | -g | ~/<agent>/skills/ | 跨项目可用 |

安装方式

交互式安装时可以选择:

| 方式 | 说明 | | --- | --- | | 符号链接(推荐) | 从各 agent 目录符号链接到同一份拷贝,源单一、便于更新 | | 复制 | 给每个 agent 复制独立副本,当 agent 不支持符号链接时使用 |

其他命令

| 命令 | 说明 | | --- | --- | | npx jd-skills use <source> | 不安装直接使用一个 skill | | npx jd-skills list | 列出已装的 skill(别名:ls) | | npx jd-skills find [query] | 交互式或按关键字搜索 skill | | npx jd-skills remove [skills] | 从 agent 中移除已装的 skill | | npx jd-skills update [skills] | 把已装的 skill 更新到最新版 | | npx jd-skills init [name] | 创建一个新的 SKILL.md 模板 |

jd-skills list

列出所有已装的 skill,类似 npm ls

# 列出所有已装的 skill(项目级 + 全局)
npx jd-skills list

# 只列出全局 skill
npx jd-skills ls -g

# 按 agent 过滤
npx jd-skills ls -a claude-code -a cursor

jd-skills find

交互式或按关键字搜索 skill。

# 交互式搜索(fzf 风格)
npx jd-skills find

# 按关键字搜索
npx jd-skills find typescript

find 命令会同时搜两个源:

  • 上游社区仓库skills.sh)—— 始终可用
  • 企业内部技能市场(通过 JD_SKILL_API_URL env var 配置)—— 仅在配置后且可达时启用

京东源不可达时会静默跳过,不影响上游结果。详情参见下方"京东源"章节。

jd-skills update

# 更新所有 skill(交互式选择范围)
npx jd-skills update

# 更新单个 skill
npx jd-skills update my-skill

# 更新多个指定 skill
npx jd-skills update frontend-design web-design-guidelines

# 只更新全局或项目级
npx jd-skills update -g
npx jd-skills update -p

# 非交互式(在项目目录里默认项目级,否则全局)
npx jd-skills update -y

| 选项 | 说明 | | --- | --- | | -g, --global | 只更新全局 skill | | -p, --project | 只更新项目级 skill | | -y, --yes | 跳过范围选择(项目目录里默认项目级,否则全局) | | [skills...] | 指定要更新的 skill 名字,默认更新全部 |

jd-skills init

# 在当前目录创建 SKILL.md
npx jd-skills init

# 在子目录创建新的 skill
npx jd-skills init my-skill

jd-skills remove

从 agent 中移除已装的 skill。

# 交互式选择(从已装 skill 里挑)
npx jd-skills remove

# 按名字删
npx jd-skills remove web-design-guidelines

# 一次删多个
npx jd-skills remove frontend-design web-design-guidelines

# 从全局范围删
npx jd-skills remove --global web-design-guidelines

# 只从指定 agent 删
npx jd-skills remove --agent claude-code cursor my-skill

# 不确认地全部删除
npx jd-skills remove --all

# 删除某个 agent 下的所有 skill
npx jd-skills remove --skill '*' -a cursor

# 把某个 skill 从所有 agent 中删除
npx jd-skills remove my-skill --agent '*'

# 用 'rm' 别名
npx jd-skills rm my-skill

| 选项 | 说明 | | --- | --- | | -g, --global | 从全局范围(~/)删,而非项目级 | | -a, --agent | 指定要删除的 agent('*' 表示全部) | | -s, --skill | 指定要删的 skill('*' 表示全部) | | -y, --yes | 跳过确认提示 | | --all | 等价于 --skill '*' --agent '*' -y |

Intranet marketplace integration (opt-in)

jd-skills ships clean — no hardcoded references to any specific company's internal infrastructure. On a public network or when no intranet is configured, the CLI works against the upstream skills.sh registry only.

For users on a corporate intranet (e.g. JD-internal users), the CLI can be configured to discover and authenticate with an internal marketplace + GitLab instance via environment variables. The integration is auto-detected: when the configured API endpoint is reachable, the find command will offer a one-time login prompt; when it's not reachable, the CLI silently degrades to upstream-only.

See docs/jd-internal.md for the full integration guide (env vars, npm setup, login flow, troubleshooting). The public npm tarball does NOT include this file — it lives only in the source repository.

什么是 Agent Skill?

Agent skill 是一组可复用的指令集,用来扩展你的 AI 编程 agent 的能力。skill 定义在 SKILL.md 文件中, frontmatter 里包含 namedescription 两个必填字段。

Skill 让 agent 能完成专门的任務,比如:

  • 根据 git 历史生成 release notes
  • 按团队规范创建 PR
  • 接入外部工具(Linear、Notion 等)

支持的 Agent

Skill 可以装到下列任何一种 agent:

| 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/ | | 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/ | | 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/ | | 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/ | | 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/ | | 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/ | | 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 用户:默认 agent 自动从 .kiro/skills/~/.kiro/skills/ 加载 skill, 无需配置。如果你用的是自定义 agent,在 .kiro/agents/<agent>.jsonresources 里加上 skill 路径:

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

CLI 会自动检测本机装了哪些 agent。如果一个都没检测到,会提示你选要装到哪些。

创建 Skill

Skill 是包含 SKILL.md 文件的目录,frontmatter 是 YAML 格式:

---
name: my-skill
description: 这个 skill 是干什么的、什么时候用
---

# My Skill

Agent 在激活这个 skill 后要遵循的指令。

## 何时使用

描述这个 skill 的适用场景。

## 步骤

1. 第一步做什么
2. 然后做什么

必填字段

  • name:唯一标识(小写、允许连字符)
  • description:简短说明这个 skill 是干什么的

可选字段

  • metadata.internal:设为 true 可以在常规发现中隐藏该 skill。内部 skill 仅在设置 INSTALL_INTERNAL_SKILLS=1 时才可见和可装。用于还在开发中的 skill 或仅供内部工具用的 skill。
---
name: my-internal-skill
description: 默认不显示的内部 skill
metadata:
  internal: true
---

Skill 发现路径

CLI 在仓库里会按下列位置搜索 skill。每个 skill 容器目录会被遍历一层 (扁平布局 skills/<name>/SKILL.md)或两层(分类布局 skills/<category>/<name>/SKILL.md)。 浅层发现的 SKILL.md 会覆盖深层同名 skill。用 --full-depth 还能发现这些容器目录 之外的 SKILL.md(比如 examples/tests/ 下的)。

  • 根目录(如果包含 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/
  • .forge/skills/
  • .goose/skills/
  • .hermes/skills/
  • .inferencesh/skills/
  • .jazz/skills/
  • .junie/skills/
  • .iflow/skills/
  • .kilocode/skills/
  • .kiro/skills/
  • .kode/skills/
  • .lingma/skills/
  • .mcpjam/skills/
  • .vibe/skills/
  • .moxby/skills/
  • .mux/skills/
  • .openhands/skills/
  • .ona/skills/
  • .pi/skills/
  • .qoder/skills/
  • .qwen/skills/
  • .reasonix/skills/
  • .rovodev/skills/
  • .roo/skills/
  • .tabnine/agent/skills/
  • .terramind/skills/
  • .tinycloud/skills/
  • .trae/skills/
  • .windsurf/skills/
  • .zencoder/skills/
  • .neovate/skills/
  • .pochi/skills/
  • .adal/skills/

插件清单发现

如果存在 .claude-plugin/marketplace.json.claude-plugin/plugin.json,里面声明的 skill 也会被发现:

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

这与 Claude Code 插件市场 生态兼容。 清单里声明的 skill 路径按声明的深度搜索,不受上面说的"depth-2 分类遍历"限制。

如果在标准位置都找不到 skill,会做一次递归搜索。

兼容性

由于所有 skill 都遵循统一的 Agent Skills 规范,通常跨 agent 兼容。 不过部分特性是 agent 特有的:

| 特性 | OpenCode | OpenHands | Claude Code | Cline | CodeBuddy | Codex | Command Code | Kiro CLI | Cursor | Antigravity | Roo Code | Github Copilot | Amp | OpenClaw | Neovate | Pi | Qoder | Zencoder | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 基础 skill | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | | allowed-tools | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | | | context: fork | 不支持 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | | | Hooks | 不支持 | 不支持 | 支持 | 支持 | 不支持 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | |

故障排查

"No skills found"

确保仓库里有合法的 SKILL.md 文件,且 frontmatter 里同时包含 namedescription

Skill 在 agent 里没加载

  • 确认 skill 装到了正确的路径
  • 查 agent 文档里关于 skill 加载的要求
  • 确认 SKILL.md 的 frontmatter 是合法 YAML

权限错误

确保对目标目录有写权限。

环境变量

| 变量名 | 说明 | | --- | --- | | INSTALL_INTERNAL_SKILLS | 设为 1true 以显示和安装 internal: true 的 skill | | DISABLE_TELEMETRY | 设为禁用匿名使用统计 | | DO_NOT_TRACK | 另一种禁用统计的方式 |

# 安装内部 skill
INSTALL_INTERNAL_SKILLS=1 npx jd-skills add <owner>/<skills-repo> --list

遥测

本 CLI 默认收集匿名使用数据用于改进工具,不收集任何个人信息

在 CI 环境下会自动禁用遥测。

相关链接

许可协议

MIT —— 继承自上游 vercel-labs/skills 项目。第三方依赖的许可声明 保留在 ThirdPartyNoticeText.txt