Oss license compliance
Skill findscripter/everything-skills/09-verticals/oss-license-compliance
类书式 AI Agent 技能大典 · 精选/中文化/互见成网的 500+ 开源技能,可作为 Claude Code 插件市场一键安装。A curated, cross-referenced encyclopedia of 500+ open-source agent skills.
npx -y skills add findscripter/everything-skills --skill oss-license-complianceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
当审查依赖清单/SBOM/单个库或准备开源出站代码、需判断 copyleft 义务与许可证兼容性时使用;做许可证家族分类、按部署模型映射义务并产出含风险分级与处置建议(遵守/替换/移除/法务复核/商业授权)的合规备忘录;不适用于安全漏洞或依赖版本升级审计(用 dependency-auditor),也不替代律师对争议性 copyleft 触发的最终裁决;触发词:开源许可证合规、license compliance、copyleft、GPL/AGPL/LGPL、SBOM 审查、open source review
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
9.7 KB, as published. Nobody here has run it
何时使用
- 审查一份依赖清单(
package.json、requirements.txt、go.mod、Gemfile、Cargo.toml、pom.xml、SPDX/CycloneDX SBOM、lockfile)的许可证合规性。 - 评估单个库是否可以引入并发布。
- 准备把团队自有代码开源(出站代码),需核对内嵌依赖与所选出站许可证是否兼容。
不该用的边界:
- 不做安全漏洞扫描、CVE 或依赖陈旧/版本升级审计——那是
dependency-auditor的职责。 - 本技能输出的是「一遍过」分类与处置建议,不替代律师裁决。凡判为强 copyleft 或许可证不明者,发布前必须经律师复核。
- 不要凭模型知识或网络搜索填补关键事实空缺(如某许可证最新文本、AGPL 网络触发在特定法域的可执行性);查不到就如实说明并停下,由人决定是否采纳低置信来源。
步骤
- 确定范围:依赖清单 / 单个库 / 出站代码三选一。清单→逐项分类并汇总义务;单库→分类该包并尽量遍历传递依赖;出站→核查直接+传递内嵌依赖、校验所选出站许可证兼容性、检查 LICENSE/NOTICE 文件。
- 确定部署模型(分类义务前最关键的输入,同一份清单在不同模型下义务不同):SaaS/托管服务、分发二进制、仅内部使用、嵌入式/固件。
- 逐包分类:读真实许可证文本,不要只信元数据(LICENSE 文件可能写错,头注释与 README 可能冲突,包管理器元数据可能过期)。分入六桶:宽松 / 弱 copyleft / 强 copyleft / 公有领域 / 非 OSI 源可见 / 其他·自定义·未知。
- 映射义务到部署模型:为每个包列出该模型触发的具体义务,并判定风险等级与处置建议。
- 标记失败模式:许可证未知、文件与头注释冲突、不兼容组合、伪装成开源的非 OSI 许可证、近期改过许可证的包。
- (出站时)出站检查:兼容性、LICENSE/NOTICE 完整性、第三方文本捆绑、无专有/机密/凭据/客户数据残留、项目名商标策略。
- 汇总备忘录:底线结论→顶部红旗→按严重度分组的逐包块→法域提示→出站检查→审批路由。
指令
部署模型 → 实质相关许可证:
| 部署 | 实质触发的许可证 |
|---|---|
| SaaS | AGPL(网络触发);任何 UI 中的宽松署名;若把 SSPL/BUSL/Elastic 重做成竞品服务 |
| 分发二进制 | GPL、LGPL、MPL、EPL(均在分发时触发);宽松署名 |
| 仅内部 | 多数 copyleft 不触发(无分发);署名仍是好习惯;外部用户经网络访问时 AGPL 仍触发 |
| 嵌入式/固件 | GPL 尤其难合规(源码披露+可复现构建+部分情形需安装信息),出货前规划 |
分类六桶(许可证家族):
- 宽松:MIT、BSD-2/3-Clause、Apache-2.0、ISC、Zlib、Unlicense。义务:署名、保留许可证文本;Apache-2.0 额外含专利授权 + NOTICE 要求。
- 弱 copyleft:LGPL-2.1/3.0、MPL-2.0、EPL-1.0/2.0、CDDL。文件级或库级源码披露;链接规则各异。
- 强 copyleft:GPL-2.0/3.0、AGPL-3.0、OSL、EUPL。广泛源码披露;AGPL 延伸至网络使用。
- 公有领域/奉献:CC0、Unlicense、WTFPL。通常无义务,但部分法域不承认公有领域奉献。
- 非 OSI 源可见:SSPL、BUSL、Commons Clause、Elastic License、Confluent Community、fair-source 系列。不是开源,限制商用/竞品用途,须读具体条款。
- 其他/自定义/未知:厂商专有、缺失许可证文件、文件与头注释冲突。停下——默认不当作宽松。
链接关系决定 copyleft 是否真正触发(严重度由此而定):
- 静态链接/共同编译 → 合并为一个二进制,强信号触发(LGPL「基于库的作品」、GPL 衍生作品)。
- 动态链接/共享库 → 运行时可分离;LGPL 明确允许(「使用库的作品」),GPL 立场有争议。
- 头文件包含/内联函数 → 视包含量可能构成衍生作品。
- 子进程/IPC → 经定义良好接口通信的独立进程,一般不构成衍生。
- 网络 API 调用 → 多数许可证不触发;但 AGPL 的网络交互条款使「经网络提供软件」即等同分发——微服务里 AGPL 组件藏在 API 后仍触发。
- 文件级 copyleft(MPL)→ 仅被修改的文件带 copyleft,检查有无 copyleft 文件被改。
关键:静态链接 LGPL 进专有产品 = 🔴Critical;动态链接 LGPL = 🟢Low。同一许可证,相反评级。「LGPL——弱 copyleft,链接规则各异」而不做链接分析,正是让工程师被起诉的答案。
严重度校准: 🔴Critical=触发型部署里的强 copyleft(分发二进制中的 GPL、SaaS 中的 AGPL),或与商业模式实质冲突的非 OSI 许可证,或许可证无法确定且该包是承重依赖;🟠High=团队尚未准备好的弱 copyleft 义务、所选许可证含糊的双授权、文件与头注释冲突;🟡Medium=未接入构建的宽松署名(缺 NOTICES/LICENSE)、视消费方式可能触发的传递 copyleft;🟢Low=义务已满足的宽松、不触发部署模型的 copyleft。
额外标记:双授权包(我们用哪个许可证?)、已弃用包、顶层宽松但传递依赖含 copyleft 的包、近期改过许可证的包(Redis、MongoDB、Elastic、HashiCorp——核对锁定版本确属你以为的许可证)。
示例
review ~/code/my-project/package.json
review ~/code/my-project/requirements.txt
review redis
review ~/code/my-project # 仓库根 — 扫描所有清单
逐包输出块模板:
### [package@version] — [License]
**分类:** [宽松 / 弱 copyleft / 强 copyleft / 公有领域 / 非 OSI / 未知]
**针对本部署([SaaS/二进制/内部/嵌入式])的义务:**
- [ ] [具体义务,如「在随应用分发的 NOTICES 文件中包含署名」]
- [ ] [如「若修改并分发,须发布我方修改的源码」]
- [ ] [如「AGPL 网络触发——用户经网络访问我方修改版时须向其提供源码」]
**风险:** 🔴 Critical | 🟠 High | 🟡 Medium | 🟢 Low
**建议:** [遵守义务 | 替换为〈替代品〉 | 移除 | 发布前法务复核 | 向〈厂商〉申请商业授权]
备忘录骨架:底线(能否发布?先要做什么?+ 审查包数 + 各分类计数 + 各级问题数)→ 顶部红旗(未知清单/冲突清单/伪开源清单/不兼容组合)→ 逐包块(按严重度分组)→ 法域提示 → 出站检查 → 审批路由。
注意事项
- 决策姿态:无法自信分类的许可证一律标「需复核」,绝不默认宽松。低估许可证风险是单向门——基于「默认宽松」的发布决定,几个月后会变成源码披露义务或禁令;过度标记是双向门,复核时可收窄。
- 争议问题升级:当 copyleft 触发取决于未经法院充分检验的问题(AGPL「经网络交互」、GPL-3.0「conveying」与专利条款、LGPL 链接范围),标记为待法务复核并同时陈列正反两面因素。
- 不兼容组合:GPL-2.0-only + Apache-2.0 是历史已知不兼容;仔细核对 MPL/EPL/GPL 组合。
- 不要被 GitHub 的「open source」徽章误导:SSPL/BUSL/Commons Clause/Elastic/Confluent Community 都读具体许可证文本再判断。
- 出站不可降级合并:内嵌了 GPL 代码就不能以 MIT 发布——合并作品须为 GPL。
- 来源标注:引用许可证文本、判例或管理方指引(OSI/SPDX/FSF/SFC-SFLC)时打标签;网络搜索结果标
[web search — verify],模型知识标[model knowledge — verify],仓库直读标[user provided],带 verify 的须对照一手来源核验后再依赖。 - 交付前自检:部署模型已先于义务确立;每个依赖(含可得的传递依赖)都有分类;未知项已标记未默认宽松;任何 copyleft/非 OSI 结论都读过真实许可证文本而非仅元数据;建议字段已给出明确处置。
互见
dependency-auditor:依赖的安全漏洞、陈旧版本与供应链审计(与本技能的许可证维度互补)。code-reviewer:出站开源前对代码本身的质量与机密残留复核。
本条采编自 anthropics/claude-for-legal(Apache-2.0),已适配重写为面向 AI Agent 消费的中文条目,去除了原插件特有的配置加载、事项工作区与特权抬头等内部机制,保留核心方法论、命令与约束。