feat(skills): add gitlink-metrics skill

This commit is contained in:
Ct201314 2026-06-06 15:31:29 +08:00
parent b45241dcda
commit 66793a66ae
3 changed files with 164 additions and 0 deletions

View File

@ -0,0 +1,82 @@
---
name: gitlink-metrics
version: 1.0.0
description: "仓库量化指标看板:计算 PR 合并率、按月活跃趋势、基尼系数、CR3/CR5、巴士因子与多维评分卡活跃度/协作/社区/可维护性生成数据驱动的运营看板。当用户提到「指标」「数据看板」「合并率」「活跃趋势」「巴士因子」「评分卡」「metrics」「dashboard」时触发。"
metadata:
requires:
bins: ["gitlink-cli"]
optional_bins: ["python"]
cliHelp: "gitlink-cli repo --help"
---
# gitlink-metrics仓库量化指标看板
**CRITICAL — 开始前先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。**
**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`GitHub CLI操作 GitLink 资源。**
**CRITICAL — 本技能全程只读,不修改任何远程数据。**
> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)。
## 何时使用本技能
- 需要用量化指标评估仓库状态(合并率、活跃趋势、集中度)
- 用户问「这个项目的数据指标怎么样」「给我一个指标看板」「巴士因子是多少」
- 多仓库横向对比、数据驱动的社区运营
## 与 gitlink-insight 的区别
`gitlink-insight` 偏定性的健康度评估与周报;本技能聚焦**量化指标与评分卡**——
PR 合并率、按月活跃趋势、基尼系数、CR3/CR5、巴士因子、四维评分卡用可计算、
可对比的数字刻画仓库,功能更偏数据分析。
## 指标说明
| 指标 | 含义 |
|------|------|
| PR 合并率 | 已合并 PR / 总 PR |
| 按月活跃趋势 | 各月提交量分布 |
| 基尼系数 | 贡献分布不平等程度0 均衡1 集中) |
| CR3 / CR5 | 前 3 / 前 5 贡献者占比 |
| 巴士因子 | 累计贡献达 50% 所需最少人数 |
| 多维评分卡 | 活跃度 / 协作 / 社区 / 可维护性 / 综合(各 0-100 |
## 工作流:生成指标看板
### 方式 A配套脚本推荐
```bash
python scripts/metrics.py --owner Gitlink --repo gitlink-cli
python scripts/metrics.py --owner Gitlink --repo gitlink-cli --format json
```
参数说明:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| `--owner` / `--repo` | string | 是* | 仓库(*或用 `--slug` |
| `--slug` | string | 否 | `owner/repo` 或完整 URL |
| `--commit-pages` | int | 否 | 提交采集页数(每页 50默认 6 |
| `--format` | string | 否 | `markdown`(默认)或 `json` |
| `--output` | string | 否 | 输出文件 |
### 方式 B用 gitlink-cli 命令
```bash
gitlink-cli repo +info --owner Gitlink --repo gitlink-cli --format json
gitlink-cli pr +list --owner Gitlink --repo gitlink-cli --format json
gitlink-cli api GET /:owner/:repo/commits --query 'page=1&limit=50' --format json
gitlink-cli api GET /:owner/:repo/contributors --format json
```
## API 注意事项
- 活跃趋势依据提交 `timestamp`unix按月统计。
- PR 合并率依据 `pull_request_status`1=merged
- 评分卡为启发式综合评分,用于横向参考而非绝对评价。
- 数据采集全程只读。
## References
- [api-reference.md](references/api-reference.md) — 采集接口与字段
- [metrics-formula.md](references/metrics-formula.md) — 指标计算公式
- [gitlink-shared](../gitlink-shared/SKILL.md) — 认证、全局参数、安全规则

View File

@ -0,0 +1,37 @@
# gitlink-metrics API 参考
> **前置条件:** 先阅读 [`../../gitlink-shared/SKILL.md`](../../gitlink-shared/SKILL.md)。
本技能全程只读。
## 采集的接口
| 接口 | 用途 |
|------|------|
| `GET /:owner/:repo.json` | 规模指标issues/pulls/releases/star/fork 计数) |
| `GET /:owner/:repo/pulls.json` | PR 合并率(`pull_request_status` |
| `GET /:owner/:repo/commits.json` | 按月活跃趋势(`timestamp` |
| `GET /:owner/:repo/contributors.json` | 集中度与评分(`contributions` |
## 使用的字段
- 仓库:`issues_count` / `pull_requests_count` / `version_releases_count` / `praises_count` / `forked_count`
- PR`pull_request_status`0=open,1=merged,2=closed
- 提交:`timestamp`unix 秒)
- 贡献者:`contributions`
## 输出字段JSON
```json
{
"scale": {"issues","pulls","contributors","releases","stars","forks"},
"pr_metrics": {"total","merged","closed","open","merge_rate"},
"monthly_commits": {"2026-05": 93},
"concentration": {"gini","cr3","cr5","bus_factor"},
"score_card": {"活跃度","协作","社区","可维护性","综合"}
}
```
## 错误处理
采集失败返回非零退出码并打印原因。提交无可定位时间戳时不计入活跃趋势。

View File

@ -0,0 +1,45 @@
# 指标计算公式
## PR 合并率
```
合并率 = 已合并 PR 数 / 总 PR 数 × 100%
```
PR 状态依据 `pull_request_status`0=open, 1=merged, 2=closed。
## 按月活跃趋势
按提交 `timestamp`unix 秒)换算为 UTC 年月,统计各月提交数。
## 基尼系数(贡献分布)
基于贡献次数排序后的洛伦兹曲线:
```
G = 2 × Σ(i × xᵢ) / (n × Σxᵢ) (n + 1) / n
```
其中 xᵢ 为升序排序后的贡献值n 为贡献者数。0=完全均衡1=完全集中。
## CR3 / CR5集中度
```
CRk = 前 k 名贡献者贡献之和 / 总贡献 × 100%
```
## 巴士因子
累计贡献达到 50% 所需的最少人数(贡献降序累加)。越小表示知识越集中、单点风险越高。
## 多维评分卡(各 0-100
| 维度 | 计算 |
|------|------|
| 活跃度 | min(100, 近 3 个月平均月提交 × 2) |
| 协作 | PR 合并率(百分数取整) |
| 社区 | min(100, 贡献者数 × 4 + Star + Fork) |
| 可维护性 | min(100, 巴士因子 × 20) |
| 综合 | 上述四项的平均 |
评分为启发式综合,用于横向参考与趋势观察,非绝对评价。