扫描许可证Skill scan-licenses

该技能用于自动扫描和分析软件开发项目中的开源许可证合规性,确保遵守相关法律政策,识别许可证冲突和风险。关键词:开源许可证、合规性、扫描、分析、依赖管理。

合规管理 1 次安装 3 次浏览 更新于 3/11/2026

name: scan-licenses description: 分析项目依赖的开源许可证合规性。 argument-hint: [项目路径] allowed-tools: 任务, 技能, 阅读, 全局, 搜索

开源许可证合规性扫描

分析项目依赖的许可证合规性。

工作流程

步骤 1: 加载所需技能

加载这些技能:

  • license-compliance - 许可证要求和兼容性
  • sbom-management - 依赖跟踪

步骤 2: 识别项目类型

检测项目类型和包管理器:

  • .NET:查找 *.csproj, *.sln, packages.config
  • Node.js:查找 package.json, package-lock.json
  • Python:查找 requirements.txt, pyproject.toml, setup.py
  • Java:查找 pom.xml, build.gradle

步骤 3: 提取依赖

对于 .NET 项目:

dotnet list package --include-transitive

对于 Node.js:

npm ls --all --json

步骤 4: 分析许可证

对于每个依赖:

  1. 识别许可证(SPDX 标识符)
  2. 分类(宽松许可证、弱 Copyleft、强 Copyleft)
  3. 根据策略检查(已批准、需要审查、禁止)
  4. 识别义务

步骤 5: 检查兼容性

验证许可证兼容性:

  • 检查入站与出站许可证兼容性
  • 识别冲突许可证
  • 标记 Copyleft 污染风险

步骤 6: 生成报告

创建全面的许可证合规性报告。

示例用法

# 扫描当前目录
/compliance-planning:scan-licenses

# 扫描特定项目
/compliance-planning:scan-licenses "./src/MyApp"

# 扫描解决方案
/compliance-planning:scan-licenses "./MySolution.sln"

输出格式

# 许可证合规性报告:[项目名称]

## 摘要

| 指标 | 数量 |
|--------|-------|
| 总依赖 | [N] |
| 直接依赖 | [N] |
| 传递依赖 | [N] |
| 已批准许可证 | [N] |
| 需要审查 | [N] |
| 禁止 | [N] |
| 未知 | [N] |

### 合规状态:[合规 / 需审查 / 不合规]

---

## 许可证分布

| 许可证 | 类别 | 数量 | 状态 |
|---------|----------|-------|--------|
| MIT | 宽松许可证 | [N] | 已批准 |
| Apache-2.0 | 宽松许可证 | [N] | 已批准 |
| GPL-3.0 | 强 Copyleft | [N] | 禁止 |

---

## 按状态分类的依赖

### 已批准

| 包 | 版本 | 许可证 | 类别 |
|---------|---------|---------|----------|
| [包] | [版本] | [许可证] | 宽松许可证 |

### 需要审查

| 包 | 版本 | 许可证 | 关注点 |
|---------|---------|---------|---------|
| [包] | [版本] | [许可证] | [为什么需要审查] |

### 禁止

| 包 | 版本 | 许可证 | 问题 | 替代方案 |
|---------|---------|---------|-------|-------------|
| [包] | [版本] | [许可证] | [问题] | [建议的替代方案] |

### 未知

| 包 | 版本 | 许可证信息 | 操作 |
|---------|---------|--------------|--------|
| [包] | [版本] | [信息] | [所需操作] |

---

## 兼容性分析

### 许可证冲突
| 包 1 | 许可证 1 | 包 2 | 许可证 2 | 冲突 |
|-----------|-----------|-----------|-----------|----------|

### Copyleft 评估

**找到的 Copyleft 包:**[是/否]

| 包 | 许可证 | 影响 | 缓解措施 |
|---------|---------|--------|------------|

---

## 义务摘要

### 需要署名
| 包 | 许可证 | 署名文本 |
|---------|---------|-----------------|

### 需要源代码披露
| 包 | 许可证 | 要求 |
|---------|---------|-------------|

### 需要通知文件
| 包 | NOTICE 文件 | 状态 |
|---------|-------------|--------|

---

## 推荐操作

### 立即操作
1. **替换禁止的包**
   - [包] -> [替代方案]

2. **审查标记的包**
   - [包] - [审查原因]

### 文档操作
1. **更新 NOTICE 文件**
   - 为以下包添加署名:[包]

2. **添加许可证文件**
   - 包括:[需要的许可证文件]

---

## NOTICE 文件内容

```text

第三方软件通知和信息

本软件包括以下第三方组件:

[包名称] ([版本])
许可证:[许可证]
[版权通知]

---
[为所有依赖继续]

```

---

## 策略合规性

| 策略规则 | 状态 | 详情 |
|-------------|--------|---------|
| 专有软件中无 GPL | [状态] | [详情] |
| 无 AGPL | [状态] | [详情] |
| 所有许可证已识别 | [状态] | [详情] |
| 署名完成 | [状态] | [详情] |

.NET 特定命令

对于 .NET 项目,以下命令很有用:

# 安装许可证检查器
dotnet tool install --global dotnet-project-licenses

# 生成许可证报告
dotnet-project-licenses -i ./MySolution.sln

# 生成 SBOM
dotnet CycloneDX ./MySolution.sln -o sbom.json -j