gitlink-cli/examples/workflows/gitlink-ops-platform/skills/gitlink-contributor-growth/SKILL.md

6.6 KiB
Raw Blame History

name version description metadata
gitlink-contributor-growth 1.0.0 贡献者成长体系编排 Skill串联 gitlink-insight + gitlink-issue-triage完成「采集贡献数据 → 综合积分排行榜 → 三级徽章授予 → 颁奖 Issue 公布」的端到端流程。当用户需要识别仓库贡献者、做积分排行、颁发徽章 label、建颁奖 Issue 时触发。
requires cliHelp
bins
gitlink-cli
gitlink-cli issue --help

gitlink-contributor-growth贡献者成长体系 · 端到端编排)

CRITICAL — 开始前先阅读任务二的 gitlink-shared/SKILL.md,其中包含认证、权限处理和 API 注意事项。 CRITICAL — 所有写入操作前(建 label、建颁奖 Issue、打标签务必先确认用户意图。 CRITICAL — GitLink 操作只能用 gitlink-cli。禁止用 ghGitHub CLI操作 GitLink 资源。

定位:本 Skill 是一个"总指挥"编排 Skill依次调用任务二的 2 个子 Skillinsight 取数 + issue-triage 颁奖)+ git log 聚合,完成贡献者激励闭环。


工作流概览(串联 2 个子 Skill + git log

步骤 调用子 Skill / 命令 做什么 写入
① 取数 gitlink-insight 工作流 3 + git log 采集 commits / merged PR / Issue 作者
② 排行 (本 Skill 内置公式) 计算综合积分,输出排行榜
③ 颁奖 gitlink-issue-triage 工作流 1Step 5-6 创建三级徽章 label + 颁奖 Issue + @mention

串联满足 PDF「≥3 命令/Skill 串联」要求3 个 Step 串 2 个子 Skill + git log。


详细工作流

严格按 skills/gitlink-insight/SKILL.md 工作流 3第 169-203 行

数据源 蓝图行号 命令
Commits 排行 第 173-183 行 采集数据 git log --format="%an" | sort | uniq -c | sort -rn
合并 PR 第 173-183 行 gitlink-cli pr +list --owner <o> --repo <r> --state merged --format json
Issue 作者聚合 第 173-183 行 gitlink-cli issue +list --owner <o> --repo <r> --format json 后按 author 聚合
三层分布 第 194-197 行 核心 / 活跃 / 新增(对应"星级 / 活跃 / 贡献者"三级)

⚠️ 已知降级contributors API endpoint 在 GitLink 返回 HTML 而非 JSON蓝图已记录改用 git log 取 commits 是经过验证的降级方案。

⚠️ 数据清洗:必须过滤测试号(如 15972095207 / 2403_89190320 / fsafasff 等明显机器号),否则排行榜失真。

Step 2生成综合积分排行榜本 Skill 内置公式)

积分公式综合积分 = commits × 1 + 合并 PR × 5 + Issue × 2

公式理由PR 权重高,因合并工作量大(需通过 code reviewIssue 权重中等提需求成本低commits 是基础活跃度。

输出格式

| 排名 | 贡献者 | Commits | 合并 PR | Issue | 综合积分 |
|:----:|--------|:-------:|:-------:|:-----:|:--------:|
| 1    | xxx    | 42      | 0       | 0     | 42       |
| ...

skills/gitlink-issue-triage/SKILL.md 工作流 1 Step 5-6第 80-117 行

Step 3a查现有标签 + 创建徽章 label第 80-91 行)

# 先查是否已有同名 label蓝图要求优先复用
gitlink-cli label +list --owner <o> --repo <r> --format json

未命中则建 3 个徽章(写入前确认用户意图

徽章名 颜色 授予标准
星级贡献者 #FFD700(金) commits ≥ 10 或 合并 PR ≥ 2
活跃贡献者 #FF6B35(橙) commits ≥ 5 或 Issue ≥ 5
贡献者 #87C95F(绿) 有任意提交
# payload_star.json: {"name":"星级贡献者","color":"#FFD700"}
MSYS_NO_PATHCONV=1 gitlink-cli api POST /<owner>/<repo>/labels --body-file payload_star.json --format json
# 同理建活跃 / 贡献者

API 路径label 走 /owner/repo/...(不带 /v1)。

Step 3b建颁奖 Issue第 101-117 行报告格式)

颁奖 Issue 模板:

  • subject🏆 <版本号> 贡献者排行榜公布
  • description:含完整排行榜表格 + Top 贡献者 @mention
  • 必须传 done_ratio: 0,否则 MySQL 报错
  • issue_tag_ids 创建时不生效GitLink bug需创建后用 issue +update --label 补打
# payload_award.json:
# {
#   "subject": "🏆 vX.Y.Z 贡献者排行榜公布",
#   "description": "<完整排行榜 + Top @mention>",
#   "priority_id": 2,
#   "done_ratio": 0
# }

MSYS_NO_PATHCONV=1 gitlink-cli api POST /<owner>/<repo>/issues --body-file payload_award.json --format json
# 拿到 issue number 后补打星级 label
gitlink-cli issue +update --owner <o> --repo <r> --number <n> --label <star_label_id>

API 路径issue 走 /owner/repo/...(不带 /v1)也能创建,但 issue 后续操作(如 journals必须 /v1


输出

步骤 产物
① 取数 commits / PR / Issue 原始数据 JSON
② 排行 综合积分排行榜 Markdown 表格
③ 颁奖 3 个 label ID + 1 个颁奖 Issue number + URL

关键避坑(实测提炼)

解决
contributors API 返回 HTML 不是 JSON 降级用 git log --format="%an" | sort | uniq -c 取 commits
排行榜混入测试号15972095207 等) 积分前过滤已知测试账号
创建 Issue 不传 done_ratio 报 MySQL 错 payload 必加 done_ratio: 0, priority_id: 2
issue_tag_ids 创建时不生效GitLink bug 创建后用 issue +update --label <id> 补打
Windows Git Bash 拼 JSON 中文乱码 全部用 --body-file <UTF-8文件> + MSYS_NO_PATHCONV=1
label 跨仓库独立 每个 owner/repo 的 label ID 不通用,颁奖前需在目标仓库重新建

实测落地参考

本工作流已在 ylly/gitlink-cli 实测落地2026-06-29

步骤 实测结果
① 取数 git log 取到 commits 排行wbtiger 42 / whzy 9 / wbavon 8 等)+ merged PR + 14 个 Issue 作者
② 排行 14 人综合积分排行榜(已过滤 3 个测试号)
③ 颁奖 创建 3 个徽章 label星级 394180 / 活跃 394181 / 贡献者 394182+ 颁奖 Issue #17带「星级贡献者」label

Top 3 贡献者:① wbtiger42 分)② ylly33 分)③ ZxR123-Z24 分)

执行报告:仓库内 examples/workflows/zhangqing-task3/05-contributor-growth.md