gitlink-cli/skills/gitlink-workflow/SKILL.md

5.7 KiB
Raw Blame History

name version description metadata
gitlink-workflow 2.0.0 AI 自动化工作流代码质量审查PR Review。当用户需要 AI 审查 PR 代码质量时触发。
requires
bins
gitlink-cli

gitlink-workflowAI 代码质量看门人)

前置条件: 先阅读 ../gitlink-shared/SKILL.md

CRITICAL — GitLink 操作只能用 gitlink-cli。禁止用 ghGitHub CLI操作 GitLink 资源。

工作流代码质量看门人Code Quality Gatekeeper

触发词代码审查、PR review、质量检查、gatekeeper、审查 PR

参数

  • --owner:仓库所属组织或用户
  • --repo:仓库名称
  • --pr-id:指定 PR ID可选默认审查所有 open PR
  • --threshold:质量阈值(默认 80

流程总览

PR 提交 → 获取详情 → 获取 Diff → AI 四维度评分 → 发布审查评论 → 检查 CI → 自动合并

审查单个 PR 的步骤

步骤 1 — 获取 PR 详情:

gitlink-cli pr +view --owner {OWNER} --repo {REPO} --id {PR_ID} --format json

提取字段:

  • title: .data.title // .data.subject // .data.issue.subject
  • author: .data.author.login // .data.author.username
  • state: .data.state // .data.status

步骤 2 — 获取变更文件列表:

gitlink-cli pr +files --owner {OWNER} --repo {REPO} --id {PR_ID} --format json

文件列表路径:.data.files[],字段:.name(或 .filename)、.additions.deletions

步骤 3 — 获取代码差异:

gitlink-cli pr +diff --owner {OWNER} --repo {REPO} --id {PR_ID} --format json

提取 diff.data.files[].sections[].lines[].content,截取前 5000 字符

步骤 4 — AI 四维度代码审查(总分 100

维度 满分 检查项
代码质量 25 复杂度、命名规范、注释、格式一致性
安全性 25 SQL注入、XSS、硬编码凭证、认证绕过、输入验证
性能 25 循环效率、资源泄漏、N+1查询、内存占用、阻塞调用
可维护性 25 代码重复、职责单一、依赖耦合、测试覆盖

评分标准:

  • 90-100优秀可直接合并
  • 75-89良好建议合并
  • 60-74一般需要改进
  • <60较差不建议合并

问题严重级别:

  • CRITICAL阻止合并安全漏洞、数据丢失风险
  • HIGH强烈建议修复性能问题、逻辑错误
  • MEDIUM建议修复代码质量、可维护性
  • LOW可选修复风格、命名

输出要求AI 必须输出以下 JSON 结构:

{
  "total": 85,
  "quality": 22,
  "security": 25,
  "performance": 20,
  "maintainability": 18,
  "issues": [
    {
      "severity": "MEDIUM",
      "category": "quality",
      "file": "src/main.go",
      "rule": "naming",
      "description": "变量名过于简短",
      "suggestion": "使用更具描述性的变量名"
    }
  ],
  "positive_notes": [
    {"description": "错误处理完善"}
  ],
  "recommendations": [
    "建议添加单元测试"
  ],
  "verdict": "PASS"
}

AI 不可用时的降级方案(关键词检测):

  • 检测到 password/secret/token/api_key/private_key → security -15
  • 检测到 eval()/exec()/system()/os.system → security -10
  • 检测到 TODO/FIXME/HACK/XXX → quality -5
  • 检测到 SELECT */findAll()/.all() → performance -10
  • 检测到 sleep()/Thread.sleep → performance -5
  • 变更文件 > 20 个 → maintainability -10

步骤 5 — 组装审查评论 Markdown

## AI Code Quality Review - PR #{PR_ID}

### Scores
| Dimension | Score | Max |
|-----------|-------|-----|
| Code Quality | {QUALITY} | 25 |
| Security | {SECURITY} | 25 |
| Performance | {PERFORMANCE} | 25 |
| Maintainability | {MAINTAINABILITY} | 25 |
| **Total** | **{TOTAL}** | **100** |

### Issues Found
- [{SEVERITY}] {CATEGORY}: {DESCRIPTION} ({FILE}) → {SUGGESTION}

### Positive Notes
- {NOTE}

### Recommendations
- {REC}

### Verdict
{PASS/FAIL} - Score {TOTAL} {>=/<} threshold {THRESHOLD}

---
*Auto-reviewed by gitlink-cli code-quality-gatekeeper workflow*

步骤 6 — 发布审查评论:

gitlink-cli api POST /{OWNER}/{REPO}/pulls/{PR_ID}/reviews --body '{"body":"{REVIEW_MD}","event":"{EVENT}"}'
  • 分数 >= 阈值 → event = "APPROVE"
  • 分数 < 阈值 → event = "COMMENT"

步骤 7 — 检查 CI 构建状态:

gitlink-cli ci +builds --owner {OWNER} --repo {REPO} --format json

遍历 .data.builds[].data[],检查 status 是否为 success/passed/completed

步骤 8 — 自动合并(条件:分数 >= 阈值 且 CI 全部通过):

gitlink-cli pr +merge --owner {OWNER} --repo {REPO} --id {PR_ID} --method merge

审查所有 open PR

如果用户没指定 --pr-id,先获取列表再逐个审查:

gitlink-cli pr +list --owner {OWNER} --repo {REPO} --state open --limit 50 --format json

PR ID 提取:.data.issues[].data.pulls[].data[] 中的 .pull_request_number // .number // .id

其他自动化工作流

以下工作流不需要 AI已实现为 PowerShell 脚本(workflows/ 目录):

工作流 脚本 用法
社区运营自动化 01-community-ops.ps1 pwsh workflows/01-community-ops.ps1 -Owner zzx-coder -Repo gitlink-cli
项目一键初始化 03-project-init.ps1 pwsh workflows/03-project-init.ps1 -Owner org -Name my-app -Desc "描述" -Lang go
多仓库协同 04-multi-repo-collab.ps1 pwsh workflows/04-multi-repo-collab.ps1 -Org myorg
贡献者成长体系 05-contributor-growth.ps1 pwsh workflows/05-contributor-growth.ps1 -Owner zzx-coder -Repo gitlink-cli