开

开源许可证合规

作者:鹿Sir法律合规v2

开源许可证合规与 SPDX 标准管理:许可证分类(宽松/弱版权/强版权/网络版权)、兼容性矩阵、依赖许可证审计(license-checker)、SBOM 生成(CycloneDX/SPDX)、CI 集成、第三方声明(NOTICES)与风险评估。当用户提到许可证合规、SPDX、GPL/MIT/Apache、许可证兼容性、copyleft、SBOM 或审计依赖许可证时触发。触发词:许可证合规、SPDX、License 审计、copyleft、SBOM、第三方声明。

下载量
355
点赞
89
价格
¥1.49
精选

技能文档

---
name: claude-dev-suite-license-compliance
title: 开源许可证合规
description: 开源许可证合规与 SPDX 标准管理:许可证分类(宽松/弱版权/强版权/网络版权)、兼容性矩阵、依赖许可证审计(license-checker)、SBOM 生成(CycloneDX/SPDX)、CI 集成、第三方声明(NOTICES)与风险评估。当用户提到许可证合规、SPDX、GPL/MIT/Apache、许可证兼容性、copyleft、SBOM 或审计依赖许可证时触发。触发词:许可证合规、SPDX、License 审计、copyleft、SBOM、第三方声明。
category: 法律合规
---

# 开源许可证合规

管理项目的开源许可证合规:理解许可证类型与兼容性、审计依赖许可证、生成 SBOM、维护第三方声明,避免版权违规。

> 注意:本技能不处理依赖安全漏洞(另用供应链安全技能)与代码质量问题。

## 官方参考

| 资源 | 地址 |
|------|------|
| SPDX 许可证列表 | https://spdx.org/licenses/ |
| SPDX 规范 | https://spdx.github.io/spdx-spec/ |
| OSI 认可许可证 | https://opensource.org/licenses/ |
| Choose a License | https://choosealicense.com/ |
| license-checker | https://www.npmjs.com/package/license-checker-rseidelsohn |

## 许可证分类(按宽松程度)

| 类别 | 许可证 | 商用 |
|------|--------|------|
| 公共领域 | Unlicense, CC0-1.0 | 无限制 |
| 宽松型 | MIT, Apache-2.0, BSD-3-Clause, ISC | 允许 |
| 弱版权(Copyleft) | LGPL-3.0, MPL-2.0, EPL-2.0 | 允许(附条件) |
| 强版权 | GPL-3.0, AGPL-3.0 | 必须开源 |
| 网络版权 | AGPL-3.0, SSPL-1.0 | 网络使用即触发 |

常用 SPDX 标识:`MIT`、`Apache-2.0`、`BSD-3-Clause`、`ISC`、`GPL-3.0-only`、`GPL-3.0-or-later`、`LGPL-3.0-only`、`MPL-2.0`、`AGPL-3.0-only`、`Unlicense`。

## 兼容性要点

| 你的项目许可证 | 可引入的依赖 |
|----------------|--------------|
| MIT | MIT, BSD, ISC, Unlicense, CC0 |
| Apache-2.0 | MIT, BSD, ISC, Apache-2.0, Unlicense |
| LGPL-3.0 | MIT, BSD, ISC, Apache-2.0, LGPL, GPL(作为库) |
| GPL-3.0 | 多数许可证(产物须以 GPL 发布) |
| 专有软件 | MIT, BSD, ISC, Apache-2.0(注意署名) |

**典型不兼容**:GPL-2.0-only × Apache-2.0(专利条款冲突);GPL-3.0 × GPL-2.0-only;AGPL-3.0 × 闭源 SaaS(网络条款);SSPL-1.0 未经 OSI 认可。

## 技能工作流

### 步骤1:审计依赖许可证(NPM)

```bash
npm install -g license-checker-rseidelsohn
license-checker --summary              # 汇总
license-checker --production --json    # 仅生产依赖,JSON 输出

# 白名单校验:只允许指定许可证
license-checker --onlyAllow "MIT;Apache-2.0;BSD-3-Clause;ISC;0BSD"
# 遇到 copyleft 许可证直接失败
license-checker --failOn "GPL-3.0;AGPL-3.0;GPL-2.0"
```

也可用 `@onebeyond/license-checker`(`scan --allowOnly ...`、`check "MIT OR Apache-2.0"`)或 `license-compliance`(`--production --allow ... --report licenses.csv`)。

### 步骤2:生成 SBOM

```bash
# CycloneDX
npm install -g @cyclonedx/cyclonedx-npm
cyclonedx-npm --output-file sbom.json
cyclonedx-npm --output-format XML --output-file sbom.xml

# SPDX(Syft)
syft . -o spdx-json > sbom-spdx.json
syft validate sbom-spdx.json
```

### 步骤3:接入 CI 流水线

```yaml
name: License Compliance
on: [push, pull_request]
jobs:
  license-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: '20' }
      - run: npm ci
      - name: 许可证检查
        run: |
          npx license-checker-rseidelsohn --production \
            --onlyAllow "MIT;Apache-2.0;BSD-3-Clause;BSD-2-Clause;ISC;0BSD;Unlicense;CC0-1.0" \
            --excludePrivatePackages
      - name: 生成 SBOM
        run: npx @cyclonedx/cyclonedx-npm --output-file sbom.json
      - uses: actions/upload-artifact@v4
        with: { name: sbom, path: sbom.json }
```

也可在 `package.json` 加本地钩子:

```json
{
  "scripts": {
    "license:check": "license-checker --production --onlyAllow 'MIT;Apache-2.0;BSD-3-Clause;ISC'"
  }
}
```

### 步骤4:维护第三方声明(NOTICES)

| 许可证 | 署名要求 |
|--------|----------|
| MIT / BSD-3-Clause / ISC | 保留版权声明 + 许可证文本 |
| Apache-2.0 | 版权 + 许可证 + NOTICE 文件(如有) |
| LGPL-3.0 | 提供修改部分的源码 |
| GPL-3.0 | 提供完整源码 |

自动生成:

```bash
license-checker --production --customFormat '{"name": "", "version": "", "license": "", "repository": ""}' \
  | jq -r '.[] | "- \(.name)@\(.version) - \(.license)\n  \(.repository)\n"' \
  > NOTICES.md
```

## 风险评估

**高风险(专有软件避免使用)**:GPL-3.0(强版权,改用 LGPL 版本或替代品)、AGPL-3.0(网络版权,SaaS 产品避免)、SSPL-1.0(服务限制)、CPAL-1.0(UI 署名要求)。

**中风险(谨慎评审)**:LGPL-3.0(确保动态链接)、MPL-2.0(修改文件单独分离)、EPL-2.0(审查专利条款)。

**低风险(一般安全)**:MIT、Apache-2.0(附 NOTICE)、BSD-3-Clause、ISC——保留版权与许可证声明即可。

## 合规检查清单

**初始配置**:选定项目许可证;仓库加入 LICENSE 文件;package.json 填 license 字段;CI 配置 license-checker。

**持续合规**:新增依赖前先审计;PR 评审拒绝不兼容许可证;发版生成 SBOM;维护 NOTICES;关注依赖升级中的许可证变更。

**发布**:分发包含 LICENSE;第三方声明已生成;发布物附带 SBOM;无 copyleft 违规。

## 常见反模式与排错

| 问题 | 原因 | 解决 |
|------|------|------|
| 加依赖前不查许可证 | 法律风险、copyleft 违规 | CI 中集成 license-checker |
| 专有软件引入 GPL | 整个应用必须开源 | 改用 MIT/Apache 或以 LGPL 库方式隔离 |
| 无 NOTICES 文件 | 违反许可证条款 | 从依赖自动生成 |
| 升级后许可证变化未察觉 | 新版本可能换许可证 | 审查 Dependabot PR 中的许可证字段 |
| 使用无许可证的包 | 法律状态不明 | 只用许可证明确的包 |
| license-checker 安装即失败 | package.json 缺 license 字段 | 补 `"license": "MIT"` |
| 同一包多许可证 | 双许可 | 选择兼容的一份(通常 MIT/Apache) |
| SPDX 校验失败 | 标识符不合法 | 使用 spdx.org/licenses 上的精确 ID |

使用说明

# 开源许可证合规

开源许可证合规与 SPDX 标准管理:许可证分类、兼容性检查、依赖审计、SBOM 生成与第三方声明。

## 功能

- 许可证分类速查(宽松/弱版权/强版权/网络版权)与兼容性矩阵
- NPM 依赖许可证审计:license-checker 白名单/黑名单校验
- SBOM 生成:CycloneDX 与 SPDX(Syft)
- CI 集成示例(GitHub Actions)与 NOTICES 自动生成
- 风险分级评估与合规检查清单

## 最简用法

```bash
# 审计当前项目依赖,仅允许宽松许可证
npx license-checker-rseidelsohn --production --onlyAllow "MIT;Apache-2.0;BSD-3-Clause;ISC"
```

或直接对 Agent 说:

```text
帮我审计项目的依赖许可证,生成 SBOM 和 NOTICES 文件
```

如何安装此技能?

访问技能市场,点击「安装」按钮,按提示将技能包放入 AI 编程助手的 skills 目录即可。

浏览技能市场

支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手