SPDX 许可头审计与规范化
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/audit-and-normalize-spdx-license-headers-before-releasing-or-open-sourcing-a-repository
技能介绍
问题:顶层 LICENSE 不够用
在仓库根目录放一个 LICENSE 文件,然后默认所有源码都被覆盖,这在文件级许可判定上并不严谨:审查者或下游使用者无法确定某个具体文件适用哪份许可。混用多种许可的项目、包含第三方代码的仓库,这个问题更突出。REUSE 规范的做法是要求每个文件都带 SPDX-License-Identifier 头,并在仓库根部用 LICENSES/ 目录存放所引用许可证的全文。
核心能力与关键步骤
这个技能封装了 FSFE 维护的 REUSE 工具,在发布或开源前做一次标准化的许可审计。工作流大致是:
- 扫描合规性:遍历仓库文件,标记缺失 SPDX 头、或声明与
LICENSES/目录不一致的位置 - 补全与验证:为缺失声明的文件插入标准 SPDX 头;已有的头会与规范格式比对
- 拉取许可证文本:把 SPDX 头引用的许可证全文放进
LICENSES/目录 - 输出补救清单或 SPDX 导出:给维护者一份具体的待办列表,或生成 SPDX 格式的许可清单
适用边界与注意点
- 需要 Python 3.10+;
libmagic与 VCS 工具是可选项,前者用于更精确的文件类型识别 - 这是标准化审计,不替代法务审查:它不判断许可证间的兼容性,也不评估某个依赖的许可是否允许商用
- 许可证文本拉取依赖网络,离线环境需要提前准备缓存
- 对已打 SPDX 头的第三方仓库,同样可以跑一遍 lint 做核对
使用场景
- 准备把内部项目开源,需要逐文件确认 SPDX 许可声明并补齐缺失的头信息
- 发布仓库前做许可检查,确保 LICENSES/ 目录收录了所有被引用许可证的全文
- 接手许可声明混乱的历史项目,需要生成具体的补救清单逐项修复 SPDX 头
- 需要向法务或下游使用者提供仓库的 SPDX 许可清单导出,用于合规审计
适合人员
- 准备将商业代码开源的后端工程师,需要在发布前确认每个文件都有合规的 SPDX 许可声明
- 负责开源合规审查的法务顾问,需要快速定位仓库中缺失 SPDX 头或声明不一致的文件
- 维护多许可证混合项目的开源负责人,需要在合并第三方代码前验证许可声明的一致性
- 用 REUSE 规范管理仓库的 DevOps 工程师,需要定期跑许可审计并生成 SPDX 导出