---
name: gitlink-compliance
version: 1.0.0
description: "许可证合规检查与敏感信息扫描：检查仓库的许可证合规性、依赖许可证、硬编码密钥、PII 泄露、内部 URL 暴露等风险。当用户需要审计仓库安全性或合规性时触发。"
metadata:
  requires:
    bins: ["git"]
  cliHelp: "gitlink-cli compliance --help"
---

# gitlink-compliance（合规检查）

> **前置条件：** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)

**CRITICAL — 本技能仅执行只读扫描，不修改任何文件，不向外部发送数据。**
**CRITICAL — 发现敏感信息时只报告文件路径和行号，禁止输出匹配到的原文内容。**

## AI 代理执行流程

触发本技能后，**必须先询问用户要扫描哪些模块**，不要直接执行全部扫描。

```
请选择要扫描的模块（可多选）：

  A. 许可证合规    → 检查 LICENSE 文件、声明一致性、版权头
  B. 依赖许可证    → 检查第三方依赖的许可证类型和兼容性
  C. 敏感信息      → 扫描硬编码密钥、Token、密码、私钥
  D. PII 与暴露面  → 扫描邮箱、手机号、内网 IP、内部域名
  E. 敏感词汇      → 扫描军事、党政、监管、国密等敏感用语
  ALL. 全部扫描    → 依次执行以上五项
```

用户选择后，**只读取对应模块的参考文档**，不加载全部：

| 用户选择 | 读取的参考文档 |
|----------|---------------|
| A | `references/check-license.md` |
| B | `references/check-deps.md` |
| C | `references/check-secrets.md` |
| D | `references/check-pii.md` |
| E | `references/check-sensitive-vocab.md` |
| ALL | 以上全部 |

## Shortcuts

| Shortcut | 说明 |
|----------|------|
| `compliance +scan` | 执行全部五项检查 |
| `compliance +license` | 许可证合规检查 |
| `compliance +deps` | 依赖许可证检查 |
| `compliance +secrets` | 敏感信息扫描（密钥/Token/密码） |
| `compliance +exposure` | PII 与暴露面扫描 |
| `compliance +vocab` | 敏感词汇扫描（军事/党政/监管） |

## 使用示例

```bash
# 完整扫描，需要阅读reference里的全部内容
gitlink-cli compliance +scan

# 单独扫描某一项，只需要阅读reference里和选择名称一样的就可以文件就可以
gitlink-cli compliance +license
gitlink-cli compliance +deps
gitlink-cli compliance +secrets
gitlink-cli compliance +exposure
gitlink-cli compliance +vocab

# JSON 输出（供脚本或 AI 代理使用）
gitlink-cli compliance +scan --format json
```

## 五大检查模块速查

| 模块 | 覆盖范围 | 参考文档 |
|------|----------|----------|
| 许可证合规 | LICENSE 文件、声明一致性、版权头 | `references/check-license.md` |
| 依赖许可证 | 第三方依赖类型、Copyleft 传染 | `references/check-deps.md` |
| 敏感信息 | Token/密钥/密码/私钥/Debug泄露 | `references/check-secrets.md` |
| PII与暴露面 | 邮箱/手机号/内网IP/内部域名 | `references/check-pii.md` |
| 敏感词汇 | 军事/党政/内部系统/监管/国密 | `references/check-sensitive-vocab.md` |

## 扫描排除项

默认跳过：

| 类型 | 排除项 |
|------|--------|
| 目录 | `vendor/` `node_modules/` `.git/` `.claude/` `skills/` |
| 路径前缀 | `shortcuts/compliance`（避免自扫描） |
| 二进制文件 | `*.exe` `*.dll` `*.so` `*.dylib` `*.bin` |
| 图片/文档 | `*.jpg` `*.jpeg` `*.png` `*.gif` `*.ico` `*.svg` `*.pdf` |
| 压缩包 | `*.zip` `*.gz` `*.tgz` |
| 锁文件 | `go.sum` `package-lock.json` |

## 误报规避机制

扫描器内置三种误报规避：

1. **目录排除** — 跳过 `skills/`（参考文档中的示例不属于项目源码）、`.claude/` 等配置目录
2. **自扫描排除** — `shortcuts/compliance` 下的规则定义文件不参与扫描，避免规则模式匹配自身
3. **行级去重** — 同一行匹配多条规则时，只报告严重度最高的那一条，避免重复报告

## 注意事项

- 只读操作，不修改任何文件
- 敏感信息只报告位置，不展示内容
- 所有扫描在本地完成，不跨仓库
- 部分匹配可能是误报（示例代码、测试数据），需人工判断
