许可证分析
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/license-analysis-skillhub
技能介绍
依赖树中的隐性合规债务
现代软件项目很少只依赖几个直接库。当你打开 package.json 或 go.mod,看到的往往只是冰山一角。在成百上千的传递依赖中,一个不起眼的 LGPL 库或甚至完全没有声明许可证的包,都可能在你打包分发或发布 SaaS 服务时引爆合规危机。没有许可证等于“保留所有权利”,而强 Copyleft 协议的静态链接则会直接“感染”你的专有代码。这个技能就是为了在代码合入主干前,把这些隐藏在依赖图深处的许可证风险挖出来。
核心能力与工作流
该技能通过五个关键步骤构建完整的合规防线:
- 扫描完整依赖树:解析
package.json、requirements.txt等多种清单,不仅识别直接依赖,还深入解析可选、开发和对等依赖,捕捉所有传递依赖。 - 规范化与提取许可证:从包元数据、
LICENSE文件或 SPDX 标识符中提取协议,统一转换为标准 SPDX 名称。对无许可证、自定义协议或多协议声明进行明确标记。 - 兼容性矩阵评估:根据项目的分发模型(SaaS、二进制分发、开源库、内部工具)进行两两兼容性检查。例如,
Apache-2.0的专利授权与GPLv2冲突,而AGPL甚至会在网络交互时触发分发义务。 - Copyleft 传染风险标记:针对
GPL、AGPL、LGPL和MPL库,评估具体的使用模式(静态链接、动态链接、独立进程、网络交互)是否触发传染。 - 生成结构化合规报告:输出包含许可证清单、兼容性分析、风险等级标记、归属声明要求以及具体修复建议的报告,可直接用于法务审查或项目文档。
适用边界与注意点
虽然自动化扫描能覆盖绝大多数代码依赖,但仍需注意以下边界:
- 非代码资产:字体、图片等资源可能采用
CC-BY-SA或CC-BY-NC等知识共享协议,代码扫描工具通常无法覆盖。 - 代码片段来源:从 Stack Overflow 复制的实质性代码片段受
CC-BY-SA 4.0约束,AI 生成代码的版权归属也可能不清晰。 - 协议变更:依赖库可能在版本更新时更改协议(如
Elasticsearch从Apache-2.0转向SSPL),需锁定已知良好版本并持续监控。
使用场景
- 发布 npm 开源包前,需要确认全部传递依赖中不存在 GPL/AGPL 等会污染 MIT 项目的强 copyleft 库
- 闭源商业应用准备集成第三方图表库,需要判断 GPL-3.0 协议是否与专有分发模式冲突
- CI 流水线新增依赖时,需要自动标记无许可证声明的包并生成 THIRD-PARTY-NOTICES 文件
- SaaS 服务上线前,需要排查传递依赖中是否存在 AGPL 协议,避免网络交互触发分发义务
适合人员
- 开源库作者:发布包前需要确认全量依赖的许可证兼容性,避免下游使用者收到 copyleft 警告
- 商业应用工程师:为闭源软件引入第三方库时,需要判断 GPL/AGPL 是否要求整个项目开源
- 技术合规工程师:需要为项目生成可直接提交法务审查的许可证清单与合规分析报告
- 技术负责人:依赖升级后需要确认新引入包的许可证是否变更(如转向 SSPL 等限制性协议)