对已合并的GitCode PR进行质量审计:按时间范围或仓库列表抽样,检查合规性(标签、评论、测试、大小等),输出表格。用户...
GitCode 合入 PR 质量抽检是一项面向实际任务的技能,主要用于对指定时间范围内合入主分支的 PR 进行抽检,按多维度判断质量并输出表格;支持多仓库、可配置阈值与必选标签,输出可写为 Markdown 或 CSV;
它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
对指定时间范围内合入主分支的 PR 进行抽检,按多维度判断质量并输出表格。支持多仓库、可配置阈值与必选标签,输出可写为 Markdown 或 CSV。
owner/repo);可多仓库、可选时间(默认最近 30 天)与分支、可选抽检数量或「全部」检查。GITCODE_TOKEN:按以下优先级读取。
| 优先级 | 来源 |
|---|---|
| 1 | 进程环境变量 GITCODE_TOKEN |
| 2 | Windows 用户级环境变量 |
| 3 | Windows 系统级环境变量 |
~/.bashrc 或 ~/.zshrc 中 export GITCODE_TOKEN="..."。SKILL_ROOT):本 SKILL.md 所在目录。脚本通过 __file__ 定位,不依赖当前工作目录。python /scripts/pr_audit.py ... )。--repo(可多个)、--pr(可多个)、--branch、--since、--until、--days、--all、--output 等。python/scripts/pr_audit.py --repo owner/repo [--pr N] [--pr N2 ...] [--branch BRANCH] [--since YYYY-MM-DD] [--until YYYY-MM-DD] [--days N] [--all] [--output path.md|path.csv]
--pr N(可多次)并且仅指定一个 --repo,脚本只检查这些 PR,不按时间范围拉取。--pr 时:未指定时间则默认 最近 30 天(--days 30);指定 --since/--until 则按用户时间。--all 时,该时间范围内合入的 PR 全部检查。--output 则同时写入该文件(.md 或 .csv)。退出码非 0 或 stderr 有错误时,向用户展示错误并结束。| 参数 | 必填 | 说明 |
|---|---|---|
--repo |
是(可多次) | 仓库,格式 owner/repo,可多次传入多仓库 |
--pr |
否(可多次) | 指定 PR 编号;与时间范围二选一,使用时常需且仅需一个 --repo |
--branch |
否 | 目标分支;未传时自动尝试 master → develop → main |
--since |
否 | 起始日期 YYYY-MM-DD(含该日 00:00 上海时间) |
--until |
否 | 结束日期 YYYY-MM-DD(含该日 24:00 前) |
--days |
否 | 最近 N 天(默认 30);与 since/until 二选一,未指定 since/until 时生效 |
--all |
否 | 不抽样,该时间范围内合入的 PR 全部检查 |
--output |
否 | 输出文件路径,扩展名 .md 或 .csv,UTF-8(CSV 带 BOM) |
--config |
否 | 配置文件路径,未传则使用技能根目录下 config.json |
--pr N(可多个)时仅检查这些 PR,需且仅需一个 --repo,不按时间筛选。--days、或仅用 --since/--until。若同时传,脚本按 --since/--until 优先。| 维度 | 说明 | 判定 |
|---|---|---|
| 评论未解决 | 是否存在未解决的 diff 检视意见 | PR 评论中 comment_type == "diff_comment" 且 resolved == false 则记为「是」 |
| 流水线/标签 | 是否缺少必选标签(含流水线通过) | 配置的 required_labels 缺任一则「是」 |
| 缺必选标签 | 同上,与「流水线」合并为配置的必选标签集合 | 见 config.json required_labels |
| 新增超行数 | 新增代码行是否超过阈值 | 超过 max_additions(默认 1000)则「是」 |
| 无测试 | 修改文件是否包含测试 | 变更文件路径中均不包含 test 或 ut 则「是」 |
| 多 Issue | 是否关联超过 1 个 Issue | 关联 Issue 数 > 1 则「是」 |
| 缺检视 | 大 PR 是否缺乏检视意见 | 新增行数 > review_lines_threshold(默认 500)且 diff 评论数为 0 则「是」 |
| 标题/描述不清晰 | 标题与描述是否过短或过于笼统 | 标题长度 < title_min_length(默认 5)或描述长度 < body_min_length(默认 10)则「是」;满足长度后若标题/描述明显含糊(如仅「fix」「修改」无实质说明),则判为「是」 |
#编号 带链接,无单独链接列)、标题、各维度详情、问题汇总。否(已解决数/总 diff 评论数) 或 是(未解决数/总数),如 否(1/10)、是(2/5)。否 或 是(缺:label1、label2)。否(实际行数) 或 是(实际行数)。否(0) 或 是(N)。否 或 是(新增 N 行,0 个检视)。否 或 是(原因,如标题过短、描述过短、描述笼统)。位于技能根目录,或通过 --config 指定。字段说明:
| 字段 | 含义 | 默认 |
|---|---|---|
required_labels |
必选标签列表(缺一即不通过) | ["ci-pipeline-passed", "approved", "lgtm"] |
max_additions |
新增行数阈值,超过记为「新增超行数」 | 1000 |
review_lines_threshold |
超过此行数且无 diff 评论则记为「缺检视」 | 500 |
title_min_length |
标题最小字符数 | 5 |
body_min_length |
描述最小字符数 | 10 |
test_substrings |
判定「含测试」时路径需包含的子串 | ["test", "ut"] |
#编号 带链接)、标题、评论未解决、缺必选标签、新增超行数、无测试、多 Issue、缺检视、标题/描述不清晰、问题汇总(无单独链接列,链接在 PR 列)。--repo 时执行脚本。| 用户意图 | 命令 |
|---|---|
| 最近 30 天单仓抽检 | python |
| 指定 PR 检查 | python |
| 指定时间多仓抽检 | python |
| 全部检查不抽样 | python |
| 指定分支并写 CSV | python |
| 自定义配置 | python |
其中 为 的绝对路径。
v1.0.0 (2026-03-11)