用途
release-code 用于将研究代码仓库准备为可公开发布的状态。它覆盖从安全审计、缺失资产生成,到打版本标签、创建 GitHub Release 的完整流程,主要面向机器学习与研究类项目。
主要能力
1. 发布背景确认
技能会先向用户确认以下信息:
- 论文信息:标题、作者、会议或期刊及年份、arXiv ID 或 URL(如有)
- 发布类型:完整代码发布 / 最小可复现包 / 匿名会议投稿
- 许可证:MIT / Apache-2.0 / CC-BY-4.0 / 其他(默认代码用 MIT,模型与数据用 CC-BY-4.0)
- 包含内容:训练代码、评估、预训练权重、数据集、Demo
- 版本标签:例如 v1.0.0(首次发布默认为 v1.0.0)
- 是否创建带发布说明的 GitHub Release
- 预训练权重情况:是否可用,以及托管位置(HuggingFace Hub / Google Drive / 项目页面)
2. 仓库审计
技能执行以下检查,并将结果汇总报告给用户:
- 安全扫描:密钥与凭据。使用 git 日志检查与常见密钥模式 grep,并在可用时优先使用 gitleaks、detect-secrets 等专用扫描器
- 大文件检查:查找超过 50M 且不应入库的文件
- 敏感文件模式:检查 .env、.pem、.key、secrets.yaml、credentials.json 等不应公开的文件
- 既有文件清点:检查 README.md、LICENSE、CITATION.cff、.gitignore、requirements.txt、pyproject.toml、setup.py 是否存在
- Git 状态:查看变更状态与最近提交
- 工具链与源码卫生门禁:在工具可用时运行 pre-commit、shellcheck、shfmt、actionlint、nbstripout、lychee、taplo、yamllint 等非破坏性检查,并明确报告被跳过(未安装)的工具
审计发现以三档清单呈现:
- BLOCKER:发布前必须修复(发现密钥、凭据、大体积二进制文件)
- WARNING:建议处理(缺少 README、无许可证、无 .gitignore、跳过可选的卫生门禁)
- OK:状态良好
技能会要求用户先修复阻断项再继续。失败的必需门禁被视为发布阻断项;缺失的可选工具视为跳过,除非项目策略要求。
3. 生成缺失文件
根据既有文件清点结果生成缺失文件;覆盖已存在文件前会先征询用户偏好。
- LICENSE:缺失时生成对应许可证文件,写入 {PROJECT_ROOT}/LICENSE
- CITATION.cff:从技能目录模板读取并填充占位符(标题、作者 YAML 列表、年份、会议/期刊、arXiv ID、GitHub 仓库、发布日期的 YYYY-MM-DD),写入 {PROJECT_ROOT}/CITATION.cff
- README.md:当 README 缺失或过于简略(少于 50 行)时,从模板生成并填充占位符,用户需提供的内容保留 [TODO: ...] 标记。不会覆盖内容充实的现有 README,而是指出缺失章节并提出追加
- .gitignore:缺失时生成 Python/ML 项目 .gitignore,覆盖 Python 产物、ML 输出(outputs/、wandb/、.ckpt、.pt、.pth、.pkl、runs/、lightning_logs/)、大数据目录与密钥文件等
4. 发布前清单复核
读取技能目录中的 checklist.md,按类别以精简清单呈现,每项标注状态(完成 / 需关注 / 缺失),覆盖仓库卫生、文档、安全、工具链门禁、可复现性、法律等类别。随后询问用户是继续打标签发布,还是先处理上述问题。
5. 提交与打标签
用户确认后:
- 仅暂存新增或修改的已跟踪文件(不包含未跟踪的 outputs 等),展示暂存差异统计
- 请用户确认暂存变更后提交,提交信息形如
chore: prepare code for public release ({VERSION}) - 创建带注释的标签,标签信息包含版本、论文标题、发表会议、论文链接与包含内容
- 询问是否推送提交与标签到 origin,确认后推送当前分支与标签
6. GitHub Release(可选)
若用户要求创建 GitHub Release:
- 检查 gh 是否可用
- 可用时起草发布说明并创建 Release,说明包含论文标题、会议、论文与项目页链接、包含内容、安装命令与 BibTeX 引用
- gh 不可用时,将发布说明以文本形式打印,供用户自行粘贴到 GitHub
7. 总结与后续建议
打印最终总结,包含生成/更新的文件、提交哈希、标签与推送状态、GitHub Release 链接,并列出建议的后续步骤,例如上传预训练权重、在论文 arXiv 页面添加仓库链接、发布消息、添加 Code 徽章等。
使用方式
该技能以技能目录形式安装,目录结构包含 SKILL.md、checklist.md 以及 templates/ 下的 README_ml_paper.md 与 CITATION.cff 模板。使用流程为:确认发布背景 → 仓库审计 → 生成缺失文件 → 发布前清单复核 → 提交与打标签 → 可选创建 GitHub Release → 输出总结。
技能强调以项目工具链门禁作为证据而非装饰,优先执行非破坏性检查;仅在用户请求或项目策略要求时才运行会修改文件的格式化/修复命令,并在之后审查差异。
匿名投稿处理
当用户说明这是用于匿名会议投稿时:
- 不创建公开 GitHub Release
- 不在任何提交文件中包含作者姓名
- 改用匿名 zip 包:通过 git archive 生成到临时路径
- 提交前检查 zip 内容是否含可识别作者的信息
- 提醒用户对提交信息、配置中的个人路径、代码注释中的邮箱地址等进行匿名化
常见模式
- HuggingFace Hub 模型上传:通过 huggingface_hub 的 HfApi.upload_folder 上传 checkpoints 目录到指定仓库
- 在 README 中添加 GitHub、arXiv、License 徽章
- 发布后提交到 paperswithcode.com 以将仓库与论文关联
适用场景与限制
适用场景:机器学习与研究代码仓库准备公开发布,包括开源清理、README/LICENSE/CITATION 补齐、打标签、创建 GitHub Release,以及匿名会议投稿的匿名打包。
限制与说明:技能的具体行为依赖所安装目录中的 SKILL.md、checklist.md 与模板文件;部分门禁工具(如 gitleaks、detect-secrets、shellcheck、lychee 等)为可选项,未安装时会被跳过并明确报告;关于收费、价格、平台支持范围等信息,资料未提供。