1. 基本信息
| 项目 | 内容 | 数据来源 |
|---|---|---|
| 名称 | cran-extrachecks(合集仓库 posit-dev/skills 内的 r-lib 子技能) | GitHub API |
| 作者/维护者 | Garrick Aden-Buie(@gadenbuie),Posit Software, PBC 工程师 | SKILL.md front matter + GitHub API |
| 来源链接 | https://github.com/posit-dev/skills/tree/main/r-lib/cran-extrachecks | — |
| 许可证 | MIT(技能自身 front matter 与仓库根 LICENSE 均为 MIT) | GitHub API |
| 合集仓库 Stars/Forks | 442 / 35(属 posit-dev/skills 整个合集,不代表本技能自身热度) | GitHub API |
| 最新版本 | 1.0(SKILL.md metadata 字段) | GitHub 仓库文件 |
| 安装方式 | /plugin marketplace add posit-dev/skills 或 npx skills add posit-dev/skills --skill cran-extrachecks 或手动复制目录 |
官方 README |
2. 功能介绍与亮点
cran-extrachecks 是一份系统化的 R 包 CRAN 提交检查清单,专门补齐 devtools::check() 不会报告、但 CRAN 人工审稿人一定会挑剔的“潜规则”:
- 文档强制项:所有导出函数必须有
@return(哪怕返回值为空也要写明),有意义返回值的函数需配@examples,并给出\dontrun{}/@examplesIf等具体用法边界 - DESCRIPTION 文案规范:Title 用标题大小写、去冗余短语(“A Toolkit for”等)、软件名加单引号、65 字符上限;Description 禁止以“This package”开头、需展开至 3–4 句、正确使用引号
- URL 与链接校验:强制 HTTPS、识别并放行“上线后才生效”的 CRAN 徽章类预期性死链、排查
.Rbuildignore导致的相对链接失效 - 管理性细节:
Authors@R版权持有人角色、Posit 系仓库的版权归属写法、LICENSE 年份更新、方法引用说明
亮点在于把这些散落在 CRAN 审稿邮件、R-pkg-devel 邮件列表、个人经验里的“潜规则”,整理成一份可直接执行的检查清单与前后对照示例,覆盖首次提交、重新提交、审稿回应等场景。
3. 适用场景
所属分类:工程效率与代码质量
适合已经写完 R 包、准备首次提交 CRAN 或响应 CRAN 审稿人反馈的开发者;也适合团队内做提交前自查,减少“文档漏了 @return”“URL 用了 http”这类因疏忽被打回的往返周期。使用群体集中在 R 包开发者与维护者,尤其是首次提交、缺乏 CRAN 提交经验的作者。
4. 跨 Agent 兼容性
- Claude Code:支持。官方 README 将本仓库定位为 Claude Skills 集合,提供
/plugin marketplace add与手动复制两种直接安装方式 - Codex:支持。仓库推荐的通用安装器
npx skills add(vercel-labs/skills)在其 Supported Agents 列表中登记了codex目标(.agents/skills/或~/.codex/skills/) - OpenClaw:支持。同一安装器登记了
openclaw目标(skills/或~/.openclaw/skills/) - Hermes Agent:支持。同一安装器登记了
hermes-agent目标(.hermes/skills/)
四个生态均通过同一份 SKILL.md 按各自目录约定复制安装,判断依据为官方 README 的安装说明与安装器自身的 Supported Agents 文档。
5. 推荐理由
CRAN 的隐性规则从不写在官方文档里,而是分散在审稿人邮件与社区经验中,新手作者极易因为一句 Description 文案或漏写的 @return 被打回重投,浪费数天等待周期。这份技能把这些经验固化成结构化检查清单,且已有真实使用者验证其效果——一位 R 包作者在仓库 issue 中反馈“用过之后效果很好,比我自己之前摸索的方法管用得多”,并顺带指出了一处 S3 泛型函数误报的边界情况,说明该技能已在真实提交场景中被验证过,而不只是停留在文档层面的设想。
6. 评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 受欢迎程度 | 7 | 官方 Posit 出品;一位真实第三方 R 包作者在 issue 中主动反馈实际使用效果良好并指出具体边界问题,属自身可验证的独立使用证据;另被第三方策展的 R 生态 Agent 技能列表收录 |
| 可用性 | 8 | 单文件、纯文档类,复制即可用,无需任何 API key 或额外部署;步骤与检查清单完整;最近一次针对该技能本身的实质性提交距今约 5 个月,仓库整体仍持续有更新 |
| 安全性 | 9 | 见下方检查清单 |
安全检查清单:
| 序号 | 检查项 | 结果 |
|---|---|---|
| ① | shell 命令及权限范围 | 不直接执行 shell,仅指导调用用户本地已安装的 R 工具链命令(devtools、usethis、urlchecker 等),权限范围等同用户自己手动运行这些命令 |
| ② | 运行时联网外发 | 检查清单中包含 urlchecker::url_check() 一步,会对包自身 DESCRIPTION/README 中的 URL 发起有效性校验请求;用途透明(自查死链),非数据外发 |
| ③ | API key/凭据 | 不需要 |
| ④ | 可疑指令 | 无,通篇为文档规范与检查清单,未见 prompt injection 或隐蔽外发迹象 |
| ⑤ | 作者/组织信誉 | Garrick Aden-Buie 为 Posit Software, PBC 在职工程师,GitHub 账号自 2013 年注册、千余关注者,信誉良好 |
| ⑥ | License | MIT,明确 |
| ⑦ | 最近维护时间 | 该子目录自身最近一次实质提交约 5 个月前,仓库整体近期仍有提交,非弃置项目 |
综合评分:8.0(三项均值)
7. 跟同类 Skills 相比的优势
CRAN 提交检查这个细分方向上,另有个人开发者 Cory McCartan 维护的 cran-submit 技能可作对比:
| 维度 | cran-extrachecks(本技能) | cran-submit(CoryMcCartan/agent-skills) |
|---|---|---|
| 定位 | 纯检查清单,罗列规则与前后对照示例,由 Agent 参照执行 | 更自动化的六阶段提交流程,允许 Agent 直接执行 shell/curl/git 命令主动跑检查、修复问题 |
| 执行权限 | 不声明 shell 执行权限 | SKILL.md 显式声明 allowed-tools: shell(curl) shell(git) shell(Rscript) ...,执行面更广 |
| 出品方 | Posit Software, PBC 官方仓库 | 个人维护,独立仓库 |
| License | MIT | 技能自身标注 CC-BY-4.0,仓库层面未设置 License |
两者可以互补使用:cran-extrachecks 偏“规则参考手册”,适合希望 Agent 按清单逐条核对、自己掌控每一步修改的开发者;cran-submit 偏“自动化流程”,适合愿意让 Agent 主动执行命令、跑完整提交流程的场景。
8. 用户评价
在 posit-dev/skills 仓库 issue #63 中,R 包作者 Cory McCartan 反馈:“Have been trying out the CRAN submission skill and it has done great; much better than my earlier attempt to do something similar”,并具体指出该技能会把带 @export 但无完整 Roxygen 文档的 S3 泛型函数误判为需要 @return/@examples,建议补充这一例外说明。该反馈来自真实使用后的具体技术细节,而非泛泛好评。
9. 其他补充
posit-dev/skills 仓库同时维护 R 包开发相关的姊妹技能(如通用的 r-package-development、生命周期管理 lifecycle、异步计算 mirai 等),cran-extrachecks 专注于 CRAN 提交这一个细分环节,可与前述技能配合使用而不重复。
10. 安装使用方式
- Claude Code 插件市场:
/plugin marketplace add posit-dev/skills,再通过 UI 安装r-lib分类,或执行/plugin install r-lib@posit-dev-skills - 通用安装器(支持 Claude Code / Codex / OpenClaw / Hermes Agent 等):
npx skills add posit-dev/skills --skill cran-extrachecks - 手动安装:克隆仓库后执行
cp -r r-lib/cran-extrachecks ~/.config/claude-code/skills/(或对应 Agent 的 skills 目录)
安装后无需重启,Claude 会在检测到“准备 CRAN 提交”“CRAN 审稿反馈”等相关任务时自动触发;也可在对话中直接要求“帮我检查这个包是否符合 CRAN 提交要求”手动唤起。
11. 注意事项
- 仅覆盖 R 包场景,不适用于 Python、JavaScript 等其他语言的包发布
- 清单本身会随 CRAN 政策变化而需要更新,作者已在 issue 中收到“S3 泛型函数误报”的反馈,使用时若遇到检查项与实际 CRAN 规则不符,建议对照最新 CRAN 官方政策人工复核
- 技能不会自动执行
urlchecker::url_check()等命令,需用户本地已安装对应 R 包(devtools、usethis、urlchecker)