---
name: gitlink-project-health
version: 2.0.0
description: "项目健康度报告：统计 Issue 响应时间、PR 合并效率、贡献者活跃度，生成带评分和趋势分析的项目健康度报告。"
metadata:
  requires:
    bins: ["gitlink-cli"]
  cliHelp: "gitlink-cli --help"
---

# gitlink-project-health（项目健康度报告）

**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)，其中包含认证、权限处理和 API 注意事项。**

## 说明

本 Skill 组合多个 gitlink-cli 命令，从不同维度采集项目数据，然后进行**量化分析**，生成带评分和趋势判断的健康度报告。

**不仅仅是展示数据，而是对数据进行分析：**
- 计算 Issue 平均响应时间、关闭率、积压趋势
- 计算 PR 平均合并时间、合并率、堆积趋势
- 分析贡献者活跃度变化
- 给出综合评分和改进建议

## 数据采集与分析

### 1. Issue 健康度分析

```bash
# 采集数据
gitlink-cli issue +list --owner myuser --repo myrepo --state all --format json
gitlink-cli issue +list --owner myuser --repo myrepo --state open
gitlink-cli issue +list --owner myuser --repo myrepo --state closed --limit 50
```

**分析逻辑：**

```
总 Issue 数 = open_count + closed_count
关闭率 = closed_count / total × 100%

Issue 积压趋势：
- 近 30 天新增 - 近 30 天关闭 = 净变化
- 净变化 > 5  → 积压增加，标记 🔴
- 净变化 < -2 → 积压在减少，标记 🟢
- 其他            → 稳定，标记 🟡

平均响应时间 = 计算 closed 列表中 created_at 到 closed_at 的平均天数
- < 2 天   → 响应及时 🟢
- 2-7 天   → 正常 🟡
- > 7 天   → 响应偏慢 🔴
```

**评分规则：**
- 关闭率 > 80% 且平均响应 < 3 天 → 10/10
- 关闭率 > 50% → 7/10
- 关闭率 > 30% → 5/10
- 关闭率 < 30% → 3/10

### 2. PR 健康度分析

```bash
# 采集数据
gitlink-cli pr +list --owner myuser --repo myrepo --state all --format json
gitlink-cli pr +list --owner myuser --repo myrepo --state open
gitlink-cli pr +list --owner myuser --repo myrepo --state merged --limit 50
```

**分析逻辑：**

```
总 PR 数 = open_count + merged_count + closed_count
合并率 = merged_count / total × 100%

PR 合并效率：
- 分析 merged 列表中 created_at 到 merged_at 的平均天数
- < 3 天   → 合并迅速 🟢
- 3-7 天   → 正常 🟡
- > 7 天   → 合并缓慢 🔴

堆积 PR（超过 7 天未合并）：
- 计算 open 列表中超过 7 天的 PR 数量
- 占 open 总数 < 20% → 🟢
- 占 open 总数 20-50% → 🟡
- 占 open 总数 > 50% → 🔴
```

### 3. 贡献者活跃度分析

```bash
# 采集数据
gitlink-cli commit +list --owner myuser --repo myrepo --limit 50
gitlink-cli repo +info --owner myuser --repo myrepo --format json
```

**分析逻辑：**

```
活跃贡献者 = 近 50 次提交中 unique author 数量

活跃度等级：
- ≥ 5 人   → 团队协作活跃 🟢
- 2-4 人   → 少量贡献者 🟡
- 1 人     → 单人维护 🔴

提交频率 = 近 50 次提交的时间跨度 / 50
- 每天都有提交 → 非常活跃 🟢
- 每周 2-3 次  → 正常活跃 🟡
- 每周 < 1 次  → 不活跃 🔴

新贡献者比例 = 首次贡献者数量 / 总贡献者数 × 100%
- > 20% → 社区有新鲜血液 🟢
- 5-20% → 有少量新人 🟡
- < 5%  → 缺少新人 🔴
```

### 4. 里程碑进度分析

```bash
# 采集数据
gitlink-cli milestone +list --owner myuser --repo myrepo
```

**分析逻辑：**

```
里程碑完成度 = 计算每个 milestone 中 closed issues / total issues
逾期风险 = 当前日期超过 due_date 但未关闭
```

## 综合评分计算

```
综合得分 = Issue得分 × 30% + PR得分 × 30% + 活跃度得分 × 25% + 里程碑得分 × 15%

评分区间：
9-10 分 → 🟢 优秀：项目健康，保持现状
7-8 分  → 🟢 良好：个别方面需关注
5-6 分  → 🟡 一般：需要改进
3-4 分  → 🔴 堪忧：需重点治理
0-2 分  → 🔴 危险：项目急需干预
```

## 报告输出规范

生成的健康度报告必须严格按以下**固定七个模块**的顺序输出，不得增减或调序：

| 序号 | 模块标题 | 格式要求 |
|:----:|----------|----------|
| 一 | 基本信息 | 两列表格（指标 / 数据） |
| 二 | Issue 状况（评分：X/10 🟢🟡🔴） | 三列表格（指标 / 数据 / 状态）+ 分析行 |
| 三 | PR 状况（评分：X/10 🟢🟡🔴） | 三列表格（指标 / 数据 / 状态）+ 分析行 |
| 四 | 贡献者活跃度（评分：X/10 🟢🟡🔴） | 三列表格（指标 / 数据 / 状态）+ 分析行 |
| 五 | 里程碑进度 | 四列表格（里程碑 / 到期日 / 完成度 / 状态） |
| 六 | 综合评分计算 | 四列加权表格 + 评分区间说明 |
| 七 | 改进建议 | 带优先级编号列表 |

**注意事项：**
- 每个模块之间用 `---` 分隔
- 所有指标必须有**量化数据**（百分比、天数、人数），不能只罗列原始数字
- 评分必须有明确的**计算依据**，不能凭感觉打分
- 每个维度都需给出**分析行**和改进方向
- 使用 `🟢🟡🔴` 颜色标识状态

## 完整报告示例

```markdown
# 📊 项目健康度报告 — myuser/myrepo

**报告日期：** 2026-06-17
**综合评分：** 7.5/10 🟢 良好

---

## 一、基本信息

| 指标 | 数据 |
|------|------|
| 项目 | myuser/myrepo |
| 默认分支 | master |
| Issue 总数 | 47 |
| PR 总数 | 23 |
| 近 30 天活跃贡献者 | 3 人 |

---

## 二、Issue 状况（评分：8/10 🟢）

| 指标 | 数据 | 状态 |
|------|------|------|
| 总 Issue 数 | 47 | — |
| 打开中 | 8 | — |
| 已关闭 | 39 | — |
| 关闭率 | 83% | 🟢 优秀 |
| 平均响应时间 | 1.8 天 | 🟢 响应及时 |
| 近 30 天净变化 | +2 | 🟡 略增 |

**分析：** Issue 关闭率很高，响应也及时。近 30 天新增略多于关闭，建议关注积压趋势。

---

## 三、PR 状况（评分：7/10 🟢）

| 指标 | 数据 | 状态 |
|------|------|------|
| 总 PR 数 | 23 | — |
| 打开中 | 3 | — |
| 已合并 | 18 | — |
| 合并率 | 78% | 🟢 良好 |
| 平均合并时间 | 4.2 天 | 🟡 正常 |
| 堆积 PR（>7 天） | 1 个 | 🟡 占 33% |

**分析：** 合并率良好，但有一个 PR 超过 7 天未处理，建议关注。

---

## 四、贡献者活跃度（评分：7/10 🟢）

| 指标 | 数据 | 状态 |
|------|------|------|
| 近 50 次提交贡献者 | 3 人 | 🟡 少量贡献者 |
| 提交频率 | 每周 3-4 次 | 🟡 正常 |
| 新贡献者比例 | 0% | 🔴 缺少新人 |

**分析：** 项目目前由少数核心成员维护，建议标记一些 good-first-issue 吸引新贡献者。

---

## 五、里程碑进度

| 里程碑 | 到期日 | 完成度 | 状态 |
|--------|--------|--------|------|
| v1.3.0 | 2026-06-30 | 60% | 🟢 进行中 |
| v2.0.0 | 2026-08-15 | 20% | 🟡 初期 |

---

## 六、综合评分计算

| 维度 | 得分 | 权重 | 加权得分 |
|------|:----:|:----:|:--------:|
| Issue 健康度 | 8/10 | × 30% | 2.4 |
| PR 健康度 | 7/10 | × 30% | 2.1 |
| 贡献者活跃度 | 7/10 | × 25% | 1.75 |
| 里程碑进度 | 6/10 | × 15% | 0.9 |
| **综合得分** | | | **7.15/10 → 7.2 🟢 良好** |

**评分区间：**
- 9-10 分 → 🟢 优秀：项目健康，保持现状
- 7-8 分  → 🟢 良好：个别方面需关注
- 5-6 分  → 🟡 一般：需要改进
- 3-4 分  → 🔴 堪忧：需重点治理
- 0-2 分  → 🔴 危险：项目急需干预

---

## 七、改进建议

1. **🔴 高优先级** — 添加 good-first-issue 标签吸引新贡献者
2. **🟡 中优先级** — 关注堆积 PR，设置自动提醒
3. **🟢 低优先级** — 定期清理积压 Issue

---

## 注意事项

- 每个指标都要计算**量化数据**（百分比、天数、人数），不能只罗列原始数字。
- 评分需要有明确的**计算规则**（见各维度分析逻辑），不能凭感觉打分。
- 每个维度都要给出**改进建议**，不能只报告现状。
- 使用 `🟢🟡🔴` 颜色标识状态，一目了然。
