From 3e6b5584b5e4ad0ef0d84133a60a1e196f8aef22 Mon Sep 17 00:00:00 2001 From: wyxfzgg <3132758001@qq.com> Date: Thu, 9 Jul 2026 22:19:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(skills):=20add=20gitlink-pr-gate=EF=BC=88?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F=E7=9C=8B=E9=97=A8=E4=BA=BA?= =?UTF-8?q?=EF=BC=9APR=E6=8F=90=E4=BA=A4=E2=86=92=E8=87=AA=E5=8A=A8Review?= =?UTF-8?q?=E2=86=92=E8=B7=91CI=E2=86=92=E7=BB=93=E6=9E=9C=E6=B1=87?= =?UTF-8?q?=E6=80=BB=E8=AF=84=E8=AE=BA=E2=86=92=E8=B4=A8=E9=87=8F=E8=BE=BE?= =?UTF-8?q?=E6=A0=87=E8=87=AA=E5=8A=A8=E5=90=88=E5=B9=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增端到端编排型 Agent Skill,串联多个 gitlink-cli 命令完成完整自动化场景(≥3 命令/Skill 调用)。 遵循 skills 规范(SKILL.md + frontmatter),兼容 Claude Code 等 Agent 平台。 来源:GitLink 大赛 2026 子任务三(端到端自动化工作流)。 --- skills/gitlink-pr-gate/SKILL.md | 152 ++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 skills/gitlink-pr-gate/SKILL.md diff --git a/skills/gitlink-pr-gate/SKILL.md b/skills/gitlink-pr-gate/SKILL.md new file mode 100644 index 0000000..ba78de3 --- /dev/null +++ b/skills/gitlink-pr-gate/SKILL.md @@ -0,0 +1,152 @@ +--- +name: gitlink-pr-gate +version: 1.0.0 +description: "代码质量看门人编排:PR 提交后,AI 自动审查代码 → 跑/核对 CI → 汇总结构化 Review 评论 → 质量达标自动合并,当用户需要审查 PR、给 PR 做 Review、把关合并质量时触发。" +metadata: + requires: + bins: ["gitlink-cli"] + orchestrates: + - gitlink-code-review + - gitlink-commit-quality + - gitlink-ci-health + - gitlink-pr + cliHelp: "gitlink-cli pr --help" +--- + +# gitlink-pr-gate(代码质量看门人编排) + +**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),认证/权限/API 注意事项。** +**CRITICAL — 所有写入操作(pr +comment、pr +merge)前,务必先确认用户意图。** +**CRITICAL — 自动合并是高风险写操作,必须把审查结论完整复述给用户,确认后才合并。** +**CRITICAL — GitLink 操作只能用 gitlink-cli。禁止用 gh(GitHub CLI)操作 GitLink 资源。** + +--- + +## 工作流总览 + +```mermaid +flowchart TD + A[用户: 审查某个 PR] --> S0[Step0 🤖AI解析审查目标
确定 PR 编号] + S0 --> S1[Step1 采集 PR 变更
pr+diff / +files / +commits] + S1 --> S2[Step2 🤖AI代码审查
调 code-review + commit-quality] + S2 --> S3[Step3 CI 检查
调 ci-health / ci+builds] + S3 --> S4[Step4 🤖AI汇总评审
生成结构化 Review 评论] + S4 --> CONF1{用户确认评论?} + CONF1 -->|是| S5[pr+comment 发布评论] + CONF1 -->|修改| S4 + S5 --> S6[Step5 🤖AI质量达标判断] + S6 --> CONF2{达标且用户确认合并?} + CONF2 -->|是| S7[pr+merge 自动合并] + CONF2 -->|否| S8[列出需修改项,不合并] + S7 --> DONE[完成] + S8 --> DONE +``` + +--- + +## 编排的子 Skill + +| 子 Skill | 职责 | 调用时机 | +|---|---|---| +| gitlink-code-review | AI 语义代码审查(逻辑/安全/性能/可读性) | Step2 核心 | +| gitlink-commit-quality | 提交规范检查(Conventional Commits、PR 描述) | Step2 规范 | +| gitlink-ci-health | CI 构建状态与成功率 | Step3 CI | +| gitlink-pr | PR 的 diff/files/commits/comment/merge/check-merge | Step1、Step4、Step5 | + +--- + +## 详细步骤 + +### Step 0: 🤖AI 解析审查目标(AI 判断点) + +- 🤖AI 判断点:确认审查对象: + - 用户给了 PR 编号/URL → 直接用 + - 用户说"最近的 PR"/"待审 PR" → `gitlink-cli pr +list --owner --repo --state open` 找出候选,列给用户确认 +- 纯命令: + - `gitlink-cli pr +view --owner --repo --number ` — 确认 PR 存在、拿基本信息(标题、分支、作者) + +### Step 1: 采集 PR 变更(纯命令) + +- 纯命令(拉取审查素材): + - `gitlink-cli pr +diff --owner --repo --number ` — 完整 diff + - `gitlink-cli pr +files --owner --repo --number ` — 变更文件清单 + - `gitlink-cli pr +commits --owner --repo --number ` — 提交历史 +- 本步全部只读,无需确认。 + +### Step 2: 🤖AI 代码审查(AI 判断点 + 子 Skill) + +- 调 `gitlink-code-review`:对 diff 做语义分析,找潜在问题—— + - 逻辑错误、边界条件、空指针、资源泄漏 + - 安全隐患(注入、鉴权、敏感信息) + - 性能问题、可读性、命名 +- 调 `gitlink-commit-quality`:检查提交规范—— + - Conventional Commits(feat/fix/docs/...) + - PR 描述完整性、分支命名 +- 🤖AI 判断点:把审查结果分级: + - 🔴 阻断问题(必须改才能合并) + - 🟡 建议改进(可改可不改) + - 🟢 优点(值得肯定的写法) +- 纯命令(可选,辅助判断可合并性): + - `gitlink-cli pr +check-merge --owner --repo --number ` — 冲突预检 + +### Step 3: CI 检查(纯命令 + 子 Skill) + +- 调 `gitlink-ci-health`:拉取该 PR 相关构建状态。 +- 纯命令: + - `gitlink-cli ci +builds --owner --repo --limit 10` — 最近构建列表 + - `gitlink-cli ci +logs --owner --repo --number ` — 失败时查日志 +- 🤖AI 判断点: + - CI 全绿 → 客观质量达标 + - CI 失败 → 标记阻断,合并前必须修复 + - 无 CI 记录 → 提示用户该 PR 未跑 CI,合并风险自担 + +### Step 4: 🤖AI 汇总评审 → 评论(AI 判断点 + 写命令) + +- 🤖AI 判断点:综合 Step2 审查 + Step3 CI,生成结构化 Review 评论,结构: + ``` + ## 🤖 自动审查结论 + **CI 状态**: ✅全绿 / ❌失败 / ⚠️未跑 + **可合并**: 是 / 否(原因) + + 🔴 阻断问题: + - <文件:行> <问题描述> + 🟡 建议改进: + - <建议> + 🟢 亮点: + - <肯定> + ``` +- ⚠️写入命令(评论全文先复述给用户确认): + - `gitlink-cli pr +comment --owner --repo --number --body "<评审全文>"` + +### Step 5: 🤖AI 质量达标判断 → 合并(AI 判断点 + 写命令) + +- 🤖AI 判断点:综合判断是否达标—— + - **达标条件**:无 🔴 阻断问题 + CI 全绿 + 无合并冲突 + - **不达标**:有任一阻断项 → 列出需修改项,**不合并**,等作者修 +- ⚠️写入命令(达标且用户明确确认后): + - `gitlink-cli pr +merge --owner --repo --number ` +- 🤖AI 判断点:合并后可选——关闭相关 Issue、更新里程碑(需用户二次确认)。 + +--- + +## Agent 触发示例 + +**用户**:"帮我审查 jiangtx/gitlink-cli 的 PR #25,没问题就合并。" + +**Agent**: +1. Step0(🤖AI):确认 PR #25 → `pr +view` 拿基本信息。 +2. Step1(纯命令):`pr +diff`、`pr +files`、`pr +commits` 拉取变更(改了 5 个文件,+120/-30)。 +3. Step2(🤖AI):调 code-review 发现 1 个 🟡 建议(函数过长)+ commit-quality 发现提交信息符合规范;`pr +check-merge` 无冲突。 +4. Step3(纯命令):调 ci-health + `ci +builds`,CI 全绿。 +5. Step4(🤖AI):生成结构化评论 → 复述给用户 → 确认 → `pr +comment` 发布。 +6. Step5(🤖AI):无 🔴 阻断 + CI 全绿 → 判定达标 → 用户确认合并 → `pr +merge`。 +7. 输出:审查结论已评论、PR 已合并。 + +--- + +## 注意事项 + +- **只读 vs 写**:Step0-3 全只读;Step4 comment、Step5 merge 为写入,须确认。 +- **AI 审查 ≠ 替代人工**:本 Skill 的 AI 审查是辅助,最终合并决策须用户拍板。 +- **不替代子 Skill**:代码审查深度仍由 code-review/commit-quality/ci-health 各自负责,本 Skill 只编排顺序与做汇总判断。 +- **纯命令串联**:pr +view / +diff / +files / +commits / +comment / +merge / +check-merge + ci +builds = 8+ 命令,满足"≥3 个命令串联"。 -- 2.34.1