跳转到内容

cnb-rs skill preview

cnb-rs skill preview <REPO>[@<REF>] <SKILL>

不下载、不写盘、不动 lockfile —— 仅把指定 skill 的 SKILL.md 内容打到 stdout,便于安装前 review。

参数

  • <REPO>:CNB 三段路径 owner/group/repo 或完整 URL;支持 @<ref> 后缀
  • <SKILL>:要预览的 skill name(必填,对应仓库内 skills/<NAME>/SKILL.md

preview 一次只看一个 skill;要看多个用 shell loop。

行为:4 步流程

  1. source 解析:复用 installSkillSource::parse,支持 @ref 后缀和 URL 形式
  2. ref 解析:复用 ref_resolver(显式 @ref > 最新 release tag > 默认分支 HEAD)
  3. 拉 SKILL.md:单次 HTTP 走 client.get_raw_text(repo, "<ref>/skills/<SKILL>/SKILL.md")不递归 references/ / scripts/
  4. 输出:内容到 stdout,末尾自动补 \n(如果上游缺)

关键设计

stdout / stderr 严格分离

  • stdout:100% 是 SKILL.md 原文(含 frontmatter),无任何前后缀
  • stderr:进度行(📦 source / 🔖 ref / 📄 path / ─── SKILL.md (N bytes) ───

这让如下管道完全干净:

bash
cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills cnb-rs-api > /tmp/skill.md
cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills cnb-rs-api | less
cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills cnb-rs-api | grep '^description:'

不注入 frontmatter

install / update 会在 SKILL.md 的 metadata 块注入 cnb-host / cnb-repo / cnb-ref / cnb-path 4 个键。preview 不做:输出与上游仓库字节一致,方便你审阅作者真实写的内容。

不递归附属文件

preview 不拉 references/ / scripts/ / assets/ 等附属目录。要看完整目录请用:

bash
$ cnb-rs skill install <REPO> <SKILL> --dir /tmp/preview --copy
$ tree /tmp/preview/.agents/skills/<SKILL>/

之后用 cnb-rs skill remove <SKILL> --dir /tmp/preview 干净卸载。

输出示例

$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills cnb-rs
📦 source: wwvo/cnb-rs/cnb-rs-skills (host=cnb.cool, repo=wwvo/cnb-rs/cnb-rs-skills)        ← stderr
🔖 ref:    main stderr
📄 path:   skills/cnb-rs/SKILL.md stderr
─── SKILL.md (10264 bytes) ───                                                              ← stderr

--- stdout
name: cnb-rs stdout
description: Use the unofficial cnb-rs CLI ... stdout
allowed-tools: Bash(cnb-rs:) Bash(jq:) Read stdout
license: Apache-2.0 stdout
...

指定 ref

bash
# 看 v0.1.0 tag
$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills@v0.1.0 cnb-rs

# 看某个具体 commit sha
$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills@a1b2c3d cnb-rs

错误示例

缺参数

$ cnb-rs skill preview
error: the following required arguments were not provided:
  <REPO>
  <SKILL>
$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills
error: the following required arguments were not provided:
  <SKILL>

Skill 名错误(远端 404)

$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills nonexistent
📦 source: wwvo/cnb-rs/cnb-rs-skills (host=cnb.cool, repo=wwvo/cnb-rs/cnb-rs-skills)
🔖 ref:    main
📄 path:   skills/nonexistent/SKILL.md
错误: SKILL.md 失败:wwvo/cnb-rs/cnb-rs-skills 'skills/nonexistent/SKILL.md' (ref=main)

提示:skill 名是否正确?skill 必须在仓库的 skills/<NAME>/SKILL.md 路径下。

仓库不存在

错误来自 cnb-api 层,会被 anyhow 包装后冒到 stderr;exit 1。

退出码

  • 0:内容成功 print 到 stdout
  • 1:网络 / 404 / 解析失败
  • 2:clap 参数错(缺 REPO 或 SKILL)

示例

bash
# 预览 main 分支
$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills cnb-rs

# 预览特定 tag
$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills@v0.1.0 cnb-rs-api

# 重定向到文件(stderr 走终端,stdout 写盘)
$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills cnb-rs > /tmp/cnb-rs-skill.md

# 配合 less 翻阅
$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills cnb-rs-issue | less

# 只看 frontmatter(前 N 行)
$ cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills cnb-rs | head -10

# diff 两个 ref 的内容
$ diff <(cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills@v0.1.0 cnb-rs) \
       <(cnb-rs skill preview wwvo/cnb-rs/cnb-rs-skills@main cnb-rs)

另请参阅

Released under the MIT License.