openai4s-skills)把 OpenAI4S 自带的 Skill 库复制到本机——装进 Claude Code、装进 OpenAI4S 数据 目录,或装进命令行指定的任意目录。
npm 发布版 @pku-yuangroup/openai4s-skills@0.2.0 包含 603 个 Skill:42 个精选 + 561 个固定版本
bioSkills。以下命令固定使用该包版本:
npx @pku-yuangroup/openai4s-skills@0.2.0 list
npx @pku-yuangroup/openai4s-skills@0.2.0 install --all # v0.2.0:42 个精选 Skill
npx @pku-yuangroup/openai4s-skills@0.2.0 install --collection bioskills # v0.2.0:561 个固定版第三方配方
npx @pku-yuangroup/openai4s-skills@0.2.0 install alphafold2 boltz --target claude
npx @pku-yuangroup/openai4s-skills@0.2.0 installed
npx @pku-yuangroup/openai4s-skills@0.2.0 uninstall --all
npx @pku-yuangroup/openai4s-skills <command> 使用 npm 的最新发布版。若要使用当前仓库目录
(604 个 Skill:43 个精选 + 561 个 bioSkills),使用跟随默认分支的 GitHub 写法:
npx github:PKU-YuanGroup/OpenAI4S install --all # 43 个精选 Skill
npx github:PKU-YuanGroup/OpenAI4S install --collection bioskills # 561 个固定版第三方配方
| 文件 | 职责 |
|---|---|
cli.mjs |
参数解析与四个子命令。唯一带 shebang 的文件,也是根 package.json 中 bin 的指向。--quiet 去掉的是过程噪音,永远不是答案——列表本身、以及 --dry-run 给出的计划,都是这条命令的交付物而非闲话。 |
catalog.mjs |
发现与 frontmatter。它复述 Python loader 的规则——目录含 SKILL.md 即为一个 Skill,含 COLLECTION.json 则为一个集合、成员在其下一层——因此两侧都没有硬编码目录名。请求的名字会同时在「frontmatter 声明名」和「目录名」两个命名空间里查找,两者相撞时目录名胜出:只有目录名保证唯一,所以你在磁盘上看得见的目录名必须选中它自己那个目录,而不是碰巧把它当作 frontmatter 名字的另一个条目。 |
source.mjs |
Skill 树的来源:已经含有 skills/ 的 checkout,或 codeload.github.com 上的源码 tarball,按 ref 缓存。 |
targz.mjs |
零依赖的 gzip + POSIX tar 读取器,包含那段防止远程归档写出解压根目录的路径校验。 |
install.mjs |
目标目录、复制、.openai4s-skills.json 清单,以及卸载。 |
selftest.mjs |
关卡。覆盖解压安全性、针对本仓库真实目录树的发现,以及安装/覆盖/卸载的判定。 |
check_package.mjs |
第二道关卡,刻意独立:npm pack 产出的包里还带着 CLI 与那些 Skill 吗?一条不再匹配的 files glob 会发布出一个能跑却无物可装的命令。 |
三条拒绝承载了这个命令的大部分价值,因为每一条都对应着安装器悄悄毁掉别人成果 的一种方式:
--force 可以
强行覆盖,并会说明它覆盖了哪些文件。uninstall 只删清单里的文件并清理由此变空
的目录;你新增的文件会阻止删除,而不是被一并扫掉。.. 片段、盘符与 NUL 字节
一律拒绝;符号链接或硬链接成员会中止解压而不是被跳过——静默跳过等于汇报了一棵
它并没有产出的完整目录树。一次安装会记录它的字节从哪来。对于下载,那就是请求的 ref、URL,以及实际收到的
tarball 的 SHA-256——不是 commit SHA,因为把分支解析成 commit 是第二次请求,而
这里没有任何代码拿它的答案去核对解开的那份归档。想要构造上就可复现的安装,请用
--ref <commit-sha>。
对 OpenAI4S 用户来说这个命令基本是多余的:本检出源码构建的 wheel 已经带上了全部 604 个 Skill,
而 openai4s/skills_loader/loader.py 让自带 Skill 优先于 <data_dir>/user-skills
中的同名者。它存在的理由是反方向——把这些配方送到不是 OpenAI4S 的 agent 面前。