jd-skills
v0.1.4
Published
CLI for the agent skills ecosystem (JD fork of vercel-labs/skills)
Maintainers
Keywords
Readme
jd-skills
Forked from vercel-labs/skills (MIT)。 本项目是该上游 CLI 的京东内部 品牌化版本,所有功能 1:1 继承自上游。详见
package.json中的forkedFrom和upstreamLicense字段。
AI 编程 agent 技能生态的命令行工具。
支持 OpenCode、Claude Code、Codex、Cursor 等 67 种 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-codejd-skills use 与 jd-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-code、codex),详见支持的 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 cursorjd-skills find
交互式或按关键字搜索 skill。
# 交互式搜索(fzf 风格)
npx jd-skills find
# 按关键字搜索
npx jd-skills find typescriptfind 命令会同时搜两个源:
- 上游社区仓库(skills.sh)—— 始终可用
- 企业内部技能市场(通过
JD_SKILL_API_URLenv 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-skilljd-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 里包含 name 和 description 两个必填字段。
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>.json的resources里加上 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 里同时包含 name 和 description。
Skill 在 agent 里没加载
- 确认 skill 装到了正确的路径
- 查 agent 文档里关于 skill 加载的要求
- 确认
SKILL.md的 frontmatter 是合法 YAML
权限错误
确保对目标目录有写权限。
环境变量
| 变量名 | 说明 |
| --- | --- |
| INSTALL_INTERNAL_SKILLS | 设为 1 或 true 以显示和安装 internal: true 的 skill |
| DISABLE_TELEMETRY | 设为禁用匿名使用统计 |
| DO_NOT_TRACK | 另一种禁用统计的方式 |
# 安装内部 skill
INSTALL_INTERNAL_SKILLS=1 npx jd-skills add <owner>/<skills-repo> --list遥测
本 CLI 默认收集匿名使用数据用于改进工具,不收集任何个人信息。
在 CI 环境下会自动禁用遥测。
相关链接
- Agent Skills 规范
- 上游 skills.sh 目录 —— 社区 skill 注册中心
- 上游仓库 —— 本 fork 的来源
- 上游 skills 仓库 —— 社区维护的 skill 集
- Amp Skills 文档
- Antigravity Skills 文档
- Factory AI / Droid Skills 文档
- Claude Code Skills 文档
- OpenClaw Skills 文档
- Cline Skills 文档
- CodeBuddy Skills 文档
- Codex Skills 文档
- Command Code Skills 文档
- Crush Skills 文档
- Cursor Skills 文档
- Firebender Skills 文档
- Gemini CLI Skills 文档
- GitHub Copilot Agent Skills
- iFlow CLI Skills 文档
- Kimi Code CLI Skills 文档
- Kiro CLI Skills 文档
- Kode Skills 文档
- OpenCode Skills 文档
- Qwen Code Skills 文档
- OpenHands Skills 文档
- Pi Skills 文档
- Qoder Skills 文档
- Replit Skills 文档
- Roo Code Skills 文档
- Trae Skills 文档
许可协议
MIT —— 继承自上游 vercel-labs/skills 项目。第三方依赖的许可声明
保留在 ThirdPartyNoticeText.txt。
