From defbef7fe78a0f75fec272277597aa9faffabcb4 Mon Sep 17 00:00:00 2001
From: Mengz <2567587994@qq.com>
Date: Mon, 20 Jul 2026 11:25:37 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=BB=B4=E6=8A=A4=E8=80=85?=
=?UTF-8?q?=E5=AE=A1=E6=9F=A5=20Skills=20=E7=9A=84=E6=8A=A5=E5=91=8A?=
=?UTF-8?q?=E6=95=88=E7=8E=87=E4=B8=8E=E5=AE=89=E5=85=A8=E9=97=A8=E7=A6=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
skills/README.md | 29 +++++
skills/gitlink-cli-contract-guard/SKILL.md | 30 ++++++
.../examples/codex-validation-2026-06-26.md | 2 +-
.../examples/executive-contract-gate.md | 20 ++++
skills/gitlink-code-review/SKILL.md | 29 +++++
.../examples/executive-review.md | 27 +++++
skills/gitlink-maintainer-radar/SKILL.md | 32 ++++++
.../examples/executive-duty-board.md | 20 ++++
skills/gitlink-pr-integrator/SKILL.md | 30 ++++++
.../examples/executive-integration.md | 19 ++++
skills/gitlink-pr-topology/SKILL.md | 29 +++++
.../examples/executive-queue.md | 22 ++++
skills/gitlink-shared/SKILL.md | 2 +
.../examples/maintenance-report.fixture.json | 20 ++++
.../examples/validate-maintenance-report.ps1 | 22 ++++
.../references/maintenance-report-contract.md | 100 ++++++++++++++++++
.../references/security-review-matrix.md | 25 +++++
17 files changed, 457 insertions(+), 1 deletion(-)
create mode 100644 skills/gitlink-cli-contract-guard/examples/executive-contract-gate.md
create mode 100644 skills/gitlink-code-review/examples/executive-review.md
create mode 100644 skills/gitlink-maintainer-radar/examples/executive-duty-board.md
create mode 100644 skills/gitlink-pr-integrator/examples/executive-integration.md
create mode 100644 skills/gitlink-pr-topology/examples/executive-queue.md
create mode 100644 skills/gitlink-shared/examples/maintenance-report.fixture.json
create mode 100644 skills/gitlink-shared/examples/validate-maintenance-report.ps1
create mode 100644 skills/gitlink-shared/references/maintenance-report-contract.md
create mode 100644 skills/gitlink-shared/references/security-review-matrix.md
diff --git a/skills/README.md b/skills/README.md
index ab395e6..0912b3c 100644
--- a/skills/README.md
+++ b/skills/README.md
@@ -114,6 +114,18 @@ skills/
└── SKILL.md # 工作流模板(Issue 分类、PR Review、Release Notes)
```
+维护者效率 Skill:
+
+```text
+├── gitlink-code-review/ # 代码质量、安全和回归审查
+├── gitlink-pr-integrator/ # 合并门禁、冲突和集成验证
+├── gitlink-pr-topology/ # open PR 依赖、重叠和处理顺序
+├── gitlink-maintainer-radar/ # SLA、review 负载和责任停滞
+└── gitlink-cli-contract-guard/ # CLI 参数、帮助、JSON 和安全契约
+```
+
+这五个 Skill 默认输出“执行摘要 + 最多五项动作 + 证据附录”,并共享 [`gitlink-shared/references/maintenance-report-contract.md`](gitlink-shared/references/maintenance-report-contract.md) 和安全审查矩阵,适合维护者快速批阅 open PR 队列。
+
---
## 📖 所有 Skills 概览
@@ -142,6 +154,16 @@ skills/
| **gitlink-workflow** | AI 工作流 | Issue 分类、PR Review、Release Notes |
| **gitlink-docs-assistant** | 文档智能维护 ★ | `wiki +list/+create/+update/+view` |
+### 维护者效率 Skills
+
+| Skill | 说明 | 适用决策 |
+|-------|------|----------|
+| **gitlink-code-review** | 代码质量、安全边界、回归和测试证据 | 这条 PR 是否需要修改 |
+| **gitlink-pr-integrator** | 合并态、构建、测试、契约、安全和冲突门禁 | 现在能否进入合并队列 |
+| **gitlink-pr-topology** | PR 依赖、重叠、替代、冲突和关系簇 | 哪些 PR 先看、一起看或择一保留 |
+| **gitlink-maintainer-radar** | 首响 SLA、reviewer 负载、责任停滞和安全优先级 | 今天维护者先处理什么 |
+| **gitlink-cli-contract-guard** | flags、帮助、JSON、错误、文档和安全契约 | 是否破坏既有 CLI 用户 |
+
---
## 🎯 使用场景
@@ -237,6 +259,13 @@ gitlink-cli org +info -i Gitlink
- [gitlink-pr/SKILL.md](gitlink-pr/SKILL.md) - PR 命令
- [gitlink-issue/examples/issue-workflow.md](gitlink-issue/examples/issue-workflow.md) - Issue 工作流
+**维护者效率**:
+- [gitlink-code-review/SKILL.md](gitlink-code-review/SKILL.md) - PR 代码审查
+- [gitlink-pr-integrator/SKILL.md](gitlink-pr-integrator/SKILL.md) - 集成门禁
+- [gitlink-pr-topology/SKILL.md](gitlink-pr-topology/SKILL.md) - PR 关系图谱
+- [gitlink-maintainer-radar/SKILL.md](gitlink-maintainer-radar/SKILL.md) - 维护者值班雷达
+- [gitlink-cli-contract-guard/SKILL.md](gitlink-cli-contract-guard/SKILL.md) - CLI 契约守卫
+
**发布和搜索**:
- [gitlink-release/SKILL.md](gitlink-release/SKILL.md) - Release 命令
- [gitlink-search/SKILL.md](gitlink-search/SKILL.md) - 搜索命令
diff --git a/skills/gitlink-cli-contract-guard/SKILL.md b/skills/gitlink-cli-contract-guard/SKILL.md
index 8675483..558b673 100644
--- a/skills/gitlink-cli-contract-guard/SKILL.md
+++ b/skills/gitlink-cli-contract-guard/SKILL.md
@@ -1,6 +1,11 @@
---
name: gitlink-cli-contract-guard
+version: 1.0.0
description: "CLI 契约守卫:审查 GitLink CLI 改动是否破坏既有命令契约,重点检查 flags 与默认值、命令层级与帮助文本、`--format json` 输出结构、错误提示与编码质量、README/示例命令和实际行为是否漂移。用于用户需要判断某个 PR 或本地改动会不会破坏旧用法、引入不兼容输出、造成帮助文档失真,或在合并前补做兼容性审查时。"
+metadata:
+ requires:
+ bins: ["gitlink-cli"]
+ cliHelp: "gitlink-cli pr --help"
---
# gitlink-cli-contract-guard
@@ -19,6 +24,31 @@ description: "CLI 契约守卫:审查 GitLink CLI 改动是否破坏既有命
4. **错误契约**:错误提示、退出语义、编码质量、用户可理解性。
5. **文档契约**:README、示例、帮助文本与真实行为是否一致。
+## 效率版契约门禁
+
+默认遵循 [`../gitlink-shared/references/maintenance-report-contract.md`](../gitlink-shared/references/maintenance-report-contract.md),先给维护者一个兼容性决策,再列证据。首屏最多展示 5 个会阻断合并或影响脚本用户的动作,问题编号使用 `CG-xxx`。
+
+除五类既有契约面外,增加安全契约检查:
+
+- token、cookie、Authorization 和调试输出必须脱敏,不能进入 Markdown 或 JSON 报告。
+- header、path、query、文件路径和 shell 参数在模板渲染后仍需校验,防止注入和路径遍历。
+- `--format json` 不得混入 ANSI 颜色、HTML 标签、日志或非 JSON 文本;退出码要能区分成功、参数错误、认证失败和远端失败。
+- 认证、权限、webhook、文件读写、外部 URL 和新依赖改动必须进入安全矩阵,并补未登录、无权、恶意输入和超时测试。
+
+推荐首屏格式:
+
+```markdown
+# CLI 契约审查摘要
+**结论:** 阻断合并 **[blocked]**
+**门禁:** 参数通过 | 帮助通过 | JSON 失败 | 错误提示通过 | 安全未验证
+
+## 先做这 2 件事
+1. **[CG-001][blocking] 修复** JSON 输出中的 ANSI 转义,并补 golden 测试(责任:作者)。
+2. **[CG-002][high] 验证** `--header` 渲染后的换行和注入边界(责任:作者)。
+```
+
+关键验证至少包括:旧命令和默认值、`--help`、正常 JSON、错误 JSON、退出码、中文 UTF-8、`NO_COLOR`、敏感值脱敏和恶意边界输入。使用 golden/snapshot 或等价结构化断言,避免只检查命令返回 0。
+
## 不覆盖的内容
下面这些不属于这个 skill 的职责:
diff --git a/skills/gitlink-cli-contract-guard/examples/codex-validation-2026-06-26.md b/skills/gitlink-cli-contract-guard/examples/codex-validation-2026-06-26.md
index 42f7ca2..57245d8 100644
--- a/skills/gitlink-cli-contract-guard/examples/codex-validation-2026-06-26.md
+++ b/skills/gitlink-cli-contract-guard/examples/codex-validation-2026-06-26.md
@@ -32,7 +32,7 @@ Agent 平台:Codex
- `git diff --name-status origin/master...HEAD`:确认仅 skill 文档和图片资产变更。
- `git diff --check origin/master...HEAD`:通过。
-- `rg "�|锛|鈥|Ã|Â|绠|璇|涓|馃"`:未命中新增/修改文本。
+- `rg "锛|鈥|Ã|Â|绠|璇|涓"`:未命中新增/修改文本。
- `go test ./cmd/... ./shortcuts/...`:通过。
### 低风险备注
diff --git a/skills/gitlink-cli-contract-guard/examples/executive-contract-gate.md b/skills/gitlink-cli-contract-guard/examples/executive-contract-gate.md
new file mode 100644
index 0000000..6aeab57
--- /dev/null
+++ b/skills/gitlink-cli-contract-guard/examples/executive-contract-gate.md
@@ -0,0 +1,20 @@
+# 轻量 CLI 契约审查示例
+
+```powershell
+go test ./cmd/... ./shortcuts/...
+go run . pr +view --owner Gitlink --repo gitlink-cli --id 123 --format json
+go run . --help
+go run . pr +view --owner Gitlink --repo gitlink-cli --id 123 --format json 2>error.txt
+```
+
+```markdown
+# CLI 契约审查摘要
+**结论:** 阻断合并 **[blocked]**
+**门禁:** 参数通过 | 帮助通过 | JSON 失败 | 错误提示通过 | 安全未验证
+
+## 先做这 2 件事
+1. **[CG-001][blocking] 修复** JSON 输出中的调试文本,并补结构化断言。
+2. **[CG-002][high] 验证** `--header` 的换行、引号和敏感值脱敏边界。
+```
+
+关键回归至少覆盖旧 flag、默认值、帮助、成功 JSON、错误 JSON、退出码、中文 UTF-8、`NO_COLOR` 和恶意输入;不要只以进程返回 0 作为通过依据。
diff --git a/skills/gitlink-code-review/SKILL.md b/skills/gitlink-code-review/SKILL.md
index e43b0ab..3345c85 100644
--- a/skills/gitlink-code-review/SKILL.md
+++ b/skills/gitlink-code-review/SKILL.md
@@ -16,6 +16,35 @@ metadata:
> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 了解认证和全局参数。
+## 效率版默认输出
+
+本 Skill 默认遵循 [`../gitlink-shared/references/maintenance-report-contract.md`](../gitlink-shared/references/maintenance-report-contract.md),先输出维护者可直接执行的摘要,不把完整分析堆在首屏:
+
+1. 先给 `decision`、最高严重性、阻断数、高风险数、安全门禁和验证状态。
+2. 只列最多 5 项按优先级排序的动作,每项标明 `CR-xxx`、责任方、文件/行号或命令证据。
+3. 完整逐文件审查、正向反馈和原始证据放到“证据附录”;无关的风格建议合并,不刷屏。
+4. Markdown 使用“颜色 + 粗体 + 纯文本回退”;JSON 只输出稳定字段,绝不混入 ANSI、HTML 或 emoji。
+
+报告首屏固定使用以下结构:
+
+```markdown
+# PR # 代码审查摘要
+**结论:** 需要修改 **[action_required]**
+**安全门禁:** 未通过 | **验证:** 部分完成
+**问题:** blocking 1 / high 2 / medium 1 | **范围:** 4 files, +120/-30
+
+## 先做这 3 件事
+1. **[CR-001][blocking] 修复** `path/to/file.go:42` 的凭据泄露风险(责任:作者)。
+2. **[CR-002][high] 补充** 恶意输入和失败路径测试(责任:作者)。
+3. **[CR-003][medium] 复看** 中文错误提示的 UTF-8 输出(责任:维护者)。
+```
+
+## 安全和验证门禁
+
+除了语言专项检查,必须读取 [`../gitlink-shared/references/security-review-matrix.md`](../gitlink-shared/references/security-review-matrix.md),根据 diff 命中的数据流执行凭据、注入、路径、权限、依赖、敏感输出和资源耗尽检查。至少验证正常路径、失败路径和兼容路径;没有仓库定义的测试命令时写明“未找到”,不得写成通过。
+
+安全发现使用 `CR-xxx` 编号,疑似真实密钥只报告类型和位置,不复制内容。涉及写操作、权限或外连的验证使用脱敏 fixture、临时 worktree 和 `--dry-run`。
+
## 工作流概览
本 Skill 提供一套完整的 AI 驱动代码审查工作流,覆盖从获取 PR 变更到生成审查报告的全过程。不需要额外的 CLI Shortcuts——现有 `gitlink-cli` 命令 + AI Agent 的分析能力即可完成。
diff --git a/skills/gitlink-code-review/examples/executive-review.md b/skills/gitlink-code-review/examples/executive-review.md
new file mode 100644
index 0000000..6aee589
--- /dev/null
+++ b/skills/gitlink-code-review/examples/executive-review.md
@@ -0,0 +1,27 @@
+# 轻量 PR 审查示例
+
+这个示例展示维护者默认看到的摘要,而不是完整审查记录。完整 diff 和命令输出放在附录。
+
+```bash
+gitlink-cli pr +view --owner Gitlink --repo gitlink-cli --id 123 --format json
+gitlink-cli pr +files --owner Gitlink --repo gitlink-cli --id 123 --format json
+gitlink-cli pr +diff --owner Gitlink --repo gitlink-cli --id 123 --format json
+gitlink-cli pr +reviews --owner Gitlink --repo gitlink-cli --id 123 --format json
+```
+
+```markdown
+# PR #123 代码审查摘要
+**结论:** 需要补验证 **[action_required]**
+**安全门禁:** 部分完成 | **验证:** 部分完成 | **问题:** high 1 / medium 2
+
+## 先做这 3 件事
+1. **[CR-001][high] 补充** 恶意路径和无权限请求测试(责任:作者)。
+2. **[CR-002][medium] 验证** Windows PowerShell 下的中文错误输出(责任:作者)。
+3. **[CR-003][medium] 复看** API 失败时的回滚行为(责任:维护者)。
+```
+
+## 关键验证
+
+- 正常路径、失败路径、兼容路径至少各一条。
+- 触及 token、权限、命令、文件路径、外部 URL 或依赖时,执行共享安全矩阵对应检查。
+- 报告落盘后确认 Markdown 为 UTF-8;JSON 可解析且没有 ANSI、HTML 或敏感值。
diff --git a/skills/gitlink-maintainer-radar/SKILL.md b/skills/gitlink-maintainer-radar/SKILL.md
index 7f34682..0bdfc20 100644
--- a/skills/gitlink-maintainer-radar/SKILL.md
+++ b/skills/gitlink-maintainer-radar/SKILL.md
@@ -1,6 +1,11 @@
---
name: gitlink-maintainer-radar
+version: 1.0.0
description: "维护者雷达:面向 GitLink 仓库维护者,联合扫描 open Pull Request、open Issue、消息提醒、review 分配和等待时长,识别响应超时、review 负载失衡、负责人长期停滞等协作瓶颈,生成按优先级排序的处置清单、催办建议和责任调整建议。用于用户需要值班巡检待办、判断哪些事项被晾着了、找出 reviewer 瓶颈、发现有负责人但无进展的条目,或生成维护者今日工作面板时。"
+metadata:
+ requires:
+ bins: ["gitlink-cli"]
+ cliHelp: "gitlink-cli pr --help"
---
# gitlink-maintainer-radar
@@ -17,6 +22,33 @@ description: "维护者雷达:面向 GitLink 仓库维护者,联合扫描 op
把它当作“维护者值班面板”来用,而不是通知中心。
+## 效率版值班面板
+
+默认遵循 [`../gitlink-shared/references/maintenance-report-contract.md`](../gitlink-shared/references/maintenance-report-contract.md),首屏只给维护者今天可以执行的队列:
+
+- 先显示 HOT 数量、最早超时对象、安全事项、reviewer 瓶颈和本轮扫描时间。
+- 最多输出 5 项动作,并明确等待方:`author`、`reviewer`、`maintainer` 或 `platform`。
+- 同一 PR 的 SLA、review 负载和责任停滞信号合并为一项,避免重复催办。
+- 普通消息、点赞和已明确归属且未超时的条目只计数,不展开正文。
+
+读取 [`../gitlink-shared/references/security-review-matrix.md`](../gitlink-shared/references/security-review-matrix.md)。对涉及凭据、权限、命令、路径、webhook、依赖和敏感数据的 PR 提升为安全 HOT;但仅凭标题或标签不能认定存在漏洞,必须标记证据状态。
+
+首屏格式:
+
+```markdown
+# 维护者值班摘要
+**结论:** 今日需处理 **[action_required]**
+**队列:** HOT 4 | WATCH 6 | reviewer 瓶颈 1 | 安全 HOT 1
+
+## 先做这 4 件事
+1. **[MR-001][blocking] 转派** PR #123 的安全复查,当前等待 reviewer(责任:维护者)。
+2. **[MR-002][high] 回复** Issue #87,首响已超 24 小时(责任:维护者)。
+3. **[MR-003][high] 复看** 作者更新后的 PR #118(责任:reviewer)。
+4. **[MR-004][medium] 确认** Issue #91 是否继续推进(责任:assignee)。
+```
+
+如果没有 open PR 或 open Issue,明确报告“没有可分析的 open PR/Issue”;如果消息接口失败,不得用通知列表代替协作队列,也不得伪造 SLA。
+
## 核心能力
### 1. 响应时效雷达
diff --git a/skills/gitlink-maintainer-radar/examples/executive-duty-board.md b/skills/gitlink-maintainer-radar/examples/executive-duty-board.md
new file mode 100644
index 0000000..fa90e03
--- /dev/null
+++ b/skills/gitlink-maintainer-radar/examples/executive-duty-board.md
@@ -0,0 +1,20 @@
+# 轻量维护者值班示例
+
+```bash
+gitlink-cli pr +list --owner Gitlink --repo gitlink-cli --state open --format json
+gitlink-cli issue +list --owner Gitlink --repo gitlink-cli --state open --format json
+gitlink-cli api GET users//messages.json --query "status=1&limit=40" --format json
+```
+
+```markdown
+# 维护者值班摘要
+**结论:** 今日需处理 **[action_required]**
+**队列:** HOT 3 | WATCH 5 | reviewer 瓶颈 1 | 安全 HOT 1
+
+## 先做这 3 件事
+1. **[MR-001][blocking] 转派** PR #123 的安全复查,当前等待 reviewer(责任:维护者)。
+2. **[MR-002][high] 回复** Issue #87,首响已超时(责任:维护者)。
+3. **[MR-003][high] 复看** 作者已更新的 PR #118(责任:reviewer)。
+```
+
+只展开会改变本轮行动的条目。普通通知只计数;接口失败、空队列和未配置 SLA 都要原样标出。
diff --git a/skills/gitlink-pr-integrator/SKILL.md b/skills/gitlink-pr-integrator/SKILL.md
index 7e48efe..b334b2e 100644
--- a/skills/gitlink-pr-integrator/SKILL.md
+++ b/skills/gitlink-pr-integrator/SKILL.md
@@ -1,6 +1,11 @@
---
name: gitlink-pr-integrator
+version: 1.0.0
description: 评估 GitLink Pull Request 是否已经具备集成到主线的条件,输出合并态验证、与其他 open PR 的冲突风险、集成影响面、发布与回移建议以及合并后动作清单。用于维护者需要决定某个 PR 是否可以进入 merge queue、为一批待合并 PR 排顺序、在合并前验证 rebase 或 merge 后是否仍能构建测试通过,或为自动化队列生成集成就绪报告时。
+metadata:
+ requires:
+ bins: ["gitlink-cli"]
+ cliHelp: "gitlink-cli pr --help"
---
# gitlink-pr-integrator
@@ -15,6 +20,31 @@ description: 评估 GitLink Pull Request 是否已经具备集成到主线的条
执行命令前,按需读取 [`references/api_reference.md`](./references/api_reference.md)。其中包含 GitLink CLI 命令、Windows 调用方式、独立 worktree 验证方法和报告字段约定。
+## 效率版集成门禁
+
+默认遵循 [`../gitlink-shared/references/maintenance-report-contract.md`](../gitlink-shared/references/maintenance-report-contract.md),先回答“现在能否进入 merge queue”,再展开证据。首屏只保留:
+
+- `decision`:`merge`、`action_required` 或 `blocked`
+- 合并态、构建、测试、契约、安全和冲突六个门禁
+- 最多 5 项下一动作,明确等待作者、reviewer、维护者还是平台
+- 仅列会改变排序的冲突和影响面,其余放附录
+
+读取 [`../gitlink-shared/references/security-review-matrix.md`](../gitlink-shared/references/security-review-matrix.md)。若 PR 修改认证、权限、命令执行、文件路径、webhook、依赖或敏感输出,安全门禁至少为 `not_run`,不能直接给出 `ready_to_merge`。安全验证、构建和测试都要分别记录 `passed` / `failed` / `not_run`。
+
+推荐的首屏格式:
+
+```markdown
+# PR # 集成摘要
+**结论:** 需补验证 **[action_required]**
+**门禁:** 合并态通过 | 构建通过 | 测试未执行 | 安全未验证 | 冲突低
+
+## 先做这 2 件事
+1. **[IN-001][high] 验证** `go test ./...`(责任:作者/维护者确认命令)。
+2. **[IN-002][high] 复查** `internal/auth/` 的权限边界(责任:reviewer)。
+```
+
+只有六项门禁全部有充分证据且无 `blocking/high` 未解决项,才可使用 `merge`。大型 PR 先做文件/目录重叠和安全热点筛选,只有高风险候选才进入独立 worktree 的完整合并验证,避免批量扫描浪费维护者时间。
+
## Windows 前置
如果你在 Windows PowerShell 里运行或落盘报告,先执行:
diff --git a/skills/gitlink-pr-integrator/examples/executive-integration.md b/skills/gitlink-pr-integrator/examples/executive-integration.md
new file mode 100644
index 0000000..8573688
--- /dev/null
+++ b/skills/gitlink-pr-integrator/examples/executive-integration.md
@@ -0,0 +1,19 @@
+# 轻量集成审查示例
+
+```bash
+gitlink-cli pr +view --owner Gitlink --repo gitlink-cli --id 123 --format json
+gitlink-cli pr +files --owner Gitlink --repo gitlink-cli --id 123 --format json
+gitlink-cli pr +reviews --owner Gitlink --repo gitlink-cli --id 123 --format json
+gitlink-cli ci +builds --owner Gitlink --repo gitlink-cli --format json
+```
+
+```markdown
+# PR #123 集成摘要
+**结论:** 可进入合并队列 **[merge]**
+**门禁:** 合并态通过 | 构建通过 | 测试通过 | 契约通过 | 安全通过 | 冲突低
+
+## 需要记录的动作
+1. **[IN-001][low] 更新** 发布说明(责任:维护者)。
+```
+
+如果构建、测试或安全门禁是 `not_run`,结论必须降级为 `action_required` 或 `blocked`。高风险 PR 需要在独立 worktree 中验证,且报告记录真实 base、head 和命令。
diff --git a/skills/gitlink-pr-topology/SKILL.md b/skills/gitlink-pr-topology/SKILL.md
index 5db00cd..b7dd973 100644
--- a/skills/gitlink-pr-topology/SKILL.md
+++ b/skills/gitlink-pr-topology/SKILL.md
@@ -1,6 +1,11 @@
---
name: gitlink-pr-topology
+version: 1.0.0
description: "开源社区 PR 队列关系图谱:面向一个仓库的多条 open Pull Request,识别它们之间的依赖链、功能重叠、替代/超越关系、冲突热点、可打包评审分组和建议处理顺序。用于维护者需要批量梳理 open PR 为什么互相卡住、哪几条其实在做同一件事、哪一条实现更完整、哪些 PR 应该先合并或先关闭,以及如何把复杂队列整理成可执行决策时。"
+metadata:
+ requires:
+ bins: ["gitlink-cli"]
+ cliHelp: "gitlink-cli pr --help"
---
# gitlink-pr-topology
@@ -21,6 +26,30 @@ description: "开源社区 PR 队列关系图谱:面向一个仓库的多条 o
5. 哪些 PR 应该一起评审,避免维护者重复进入同一上下文。
6. 当前 open PR 队列最合理的处理顺序是什么。
+## 效率版队列输出
+
+默认遵循 [`../gitlink-shared/references/maintenance-report-contract.md`](../gitlink-shared/references/maintenance-report-contract.md),输出“关系摘要”而不是完整的两两比较表:
+
+1. 先给 open PR 数、关系簇数量、冲突热点、安全热点和建议处理顺序。
+2. 只展示会改变维护决策的最多 5 条关系;相同关系簇合并成一项,完整边列表放附录或 JSON。
+3. 每条关系使用 `TP-xxx` 稳定编号,写明证据、置信度和建议动作;没有足够证据时标为 `candidate`,不能断言重复或 supersedes。
+4. 对同时修改认证、权限、命令执行、路径处理、依赖或输出敏感数据的 PR,增加 `security_hotspot` 关系,要求先完成安全审查再排序。
+
+首屏示例:
+
+```markdown
+# PR 队列关系摘要
+**结论:** 需要重排 **[reorder]**
+**范围:** 18 个 open PR | 4 个关系簇 | 2 个高风险热点
+
+## 先处理
+1. **[TP-001][blocking] 先处理** #61,再处理 #63:共享 `shortcuts/pr/`,#63 依赖 #61 的输出字段。
+2. **[TP-002][high] 择一评审** #71 / #74:目标重叠,但 #74 缺安全和回归测试,不能直接判定 supersedes。
+3. **[TP-003][high] 安全复查** #80 / #82:同时改变权限校验。
+```
+
+先按标题、issue、改动文件和目录做低成本候选筛选,再对候选关系读取 diff、review 和测试证据;不要对所有 PR 做完整笛卡尔积分析。
+
## 不覆盖的内容
下面这些不属于本 skill 的职责:
diff --git a/skills/gitlink-pr-topology/examples/executive-queue.md b/skills/gitlink-pr-topology/examples/executive-queue.md
new file mode 100644
index 0000000..3306ec7
--- /dev/null
+++ b/skills/gitlink-pr-topology/examples/executive-queue.md
@@ -0,0 +1,22 @@
+# 轻量 PR 队列关系示例
+
+先使用列表信息筛选候选,再对候选读取 diff,避免所有 PR 两两拉取完整内容。
+
+```bash
+gitlink-cli pr +list --owner Gitlink --repo gitlink-cli --state open --limit 50 --format json
+gitlink-cli pr +files --owner Gitlink --repo gitlink-cli --id --format json
+gitlink-cli pr +diff --owner Gitlink --repo gitlink-cli --id --format json
+```
+
+```markdown
+# PR 队列关系摘要
+**结论:** 需要重排 **[reorder]**
+**范围:** 12 个 open PR | 3 个关系簇 | 1 个安全热点
+
+## 先处理
+1. **[TP-001][blocking] 先处理** #61,再处理 #63:共享命令入口且 #63 使用 #61 的输出字段。
+2. **[TP-002][high] 一起评审** #71、#74:修改同一 API 包装层,需统一错误契约。
+3. **[TP-003][high] 安全复查** #80:修改权限校验,不能仅凭标题判定可合并。
+```
+
+关系证据不足时写 `candidate`,并说明还缺哪些 diff、review 或测试证据。
diff --git a/skills/gitlink-shared/SKILL.md b/skills/gitlink-shared/SKILL.md
index 858a827..d5a0684 100644
--- a/skills/gitlink-shared/SKILL.md
+++ b/skills/gitlink-shared/SKILL.md
@@ -10,6 +10,8 @@ metadata:
# gitlink-cli 共享规则
+维护者类 Skill 的报告协议见 [`references/maintenance-report-contract.md`](references/maintenance-report-contract.md),安全检查见 [`references/security-review-matrix.md`](references/security-review-matrix.md)。生成报告时先给执行摘要,再提供可追溯的证据附录;JSON 不得混入展示层样式。
+
本技能指导你如何通过 gitlink-cli 操作 GitLink 平台资源。
## 认证
diff --git a/skills/gitlink-shared/examples/maintenance-report.fixture.json b/skills/gitlink-shared/examples/maintenance-report.fixture.json
new file mode 100644
index 0000000..b73e439
--- /dev/null
+++ b/skills/gitlink-shared/examples/maintenance-report.fixture.json
@@ -0,0 +1,20 @@
+{
+ "schema_version": "1.0",
+ "mode": "executive",
+ "decision": "action_required",
+ "severity": "high",
+ "counts": {"blocking": 0, "high": 1, "medium": 1, "low": 0},
+ "security_gate": "passed",
+ "verification": "partial",
+ "scope": {"owner": "Gitlink", "repo": "gitlink-cli", "items": 1},
+ "top_actions": [
+ {
+ "id": "CR-001",
+ "owner": "author",
+ "action": "补充失败路径测试",
+ "evidence": ["shortcuts/example/example_test.go:42"]
+ }
+ ],
+ "findings": [],
+ "limitations": ["平台 CI 结果未提供"]
+}
diff --git a/skills/gitlink-shared/examples/validate-maintenance-report.ps1 b/skills/gitlink-shared/examples/validate-maintenance-report.ps1
new file mode 100644
index 0000000..89a6d3f
--- /dev/null
+++ b/skills/gitlink-shared/examples/validate-maintenance-report.ps1
@@ -0,0 +1,22 @@
+param(
+ [Parameter(Mandatory = $true)]
+ [string]$Path
+)
+
+$ErrorActionPreference = 'Stop'
+$raw = Get-Content -Raw -Encoding utf8 $Path
+$report = $raw | ConvertFrom-Json
+
+$required = @('schema_version', 'mode', 'decision', 'severity', 'counts', 'security_gate', 'verification', 'top_actions', 'findings', 'limitations')
+foreach ($name in $required) {
+ if ($null -eq $report.PSObject.Properties[$name]) {
+ throw "missing report field: $name"
+ }
+}
+
+if ($report.mode -notin @('executive', 'standard', 'full')) { throw "invalid report mode" }
+if ($report.top_actions.Count -gt 5) { throw "executive report has more than five top actions" }
+if ($raw -match "`e\[|") { throw "JSON contains presentation markers" }
+if ($raw.Contains([char]0xfffd)) { throw "JSON contains UTF-8 replacement character" }
+
+Write-Output "maintenance report contract passed: $Path"
diff --git a/skills/gitlink-shared/references/maintenance-report-contract.md b/skills/gitlink-shared/references/maintenance-report-contract.md
new file mode 100644
index 0000000..2f97a13
--- /dev/null
+++ b/skills/gitlink-shared/references/maintenance-report-contract.md
@@ -0,0 +1,100 @@
+# 维护者效率报告协议
+
+五个维护类 Skill 统一遵循本协议。目标是让维护者在 30 秒内知道“先处理什么、为什么、下一步由谁做”,同时保留可追溯的证据。
+
+## 默认输出层级
+
+默认生成 `executive` 模式;用户明确要求细节时再生成 `standard` 或 `full`。
+
+1. **执行摘要**:结论、阻断数、高风险数、安全门禁、验证状态和扫描范围。
+2. **今日动作**:最多 5 项,按优先级排序;每项必须包含对象、责任方、下一动作和证据引用。
+3. **证据附录**:完整发现、命令输出摘要、文件/行号、时间戳和未验证项。
+
+不要在首屏输出原始 API 响应、完整 diff、所有通知或所有 PR 两两比较结果。需要保留时放入附录或 JSON。
+
+## 统一决策字段
+
+Markdown 和 JSON 的结论必须一致。推荐使用以下字段:
+
+```json
+{
+ "schema_version": "1.0",
+ "mode": "executive",
+ "decision": "action_required",
+ "severity": "high",
+ "counts": {"blocking": 1, "high": 2, "medium": 3, "low": 0},
+ "security_gate": "fail",
+ "verification": "partial",
+ "scope": {"owner": "Gitlink", "repo": "gitlink-cli", "items": 12},
+ "top_actions": [
+ {"id": "CR-001", "owner": "maintainer", "action": "先处理安全阻断", "evidence": ["diff:shortcuts/x/y.go:42"]}
+ ],
+ "findings": [],
+ "limitations": []
+}
+```
+
+允许的 `decision`:`merge`、`action_required`、`reorder`、`observe`、`blocked`。没有足够证据时必须使用 `observe` 或 `blocked`,不能猜测为通过。
+
+## 严重性和稳定编号
+
+- `blocking`:阻止合并、会泄露凭据、破坏兼容性或无法证明核心行为可用。
+- `high`:高概率影响真实用户、维护队列或安全边界,应进入本轮处理。
+- `medium`:需要补验证、文档或边界处理,但不立即阻断。
+- `low`:可延后处理的质量或可读性问题。
+
+每条发现使用稳定前缀和递增编号:代码审查 `CR-001`、集成 `IN-001`、关系图谱 `TP-001`、维护雷达 `MR-001`、契约守卫 `CG-001`。复审时复用已有编号;新问题才新增编号。
+
+## 醒目显示规则
+
+Markdown 使用 HTML 颜色和粗体,同时必须提供纯 Markdown 回退,确保终端、网页和被清洗的渲染器都可读:
+
+```markdown
+阻断 **[blocking]** #CR-001
+高风险 **[high]** #CR-002
+通过 **[pass]**
+```
+
+颜色只用于结论、严重性、门禁和动作,不要给整段正文着色。JSON、CSV 和命令管道输出禁止包含 ANSI 转义、HTML 标签或 emoji;使用纯字段值。
+
+在支持终端颜色时,可以根据 `NO_COLOR` 约定关闭 ANSI 颜色。报告落盘默认不写 ANSI。
+
+## 验证门禁
+
+每次报告都要分别记录 `passed`、`failed`、`not_run`、`not_applicable`,不能把未执行写成通过:
+
+| 门禁 | 最低要求 |
+|------|----------|
+| 数据完整性 | 目标、状态、更新时间和证据来源齐全 |
+| 核心行为 | 使用仓库定义的构建/测试命令,或明确记录未找到命令 |
+| 安全 | 扫描敏感文件、凭据、危险输入边界和权限变化 |
+| 回归 | 至少覆盖本次改动的正常路径、失败路径和兼容路径 |
+| 输出 | Markdown 可读,JSON 可解析,中文无替换字符或乱码 |
+
+关键门禁失败时,结论不得为 `merge`。只列最能改变决策的测试;完整命令和输出摘要放在附录。
+
+## 队列效率约束
+
+- 首屏最多展示 5 个动作;其余项目按 `deferred_count` 计数并放入附录。
+- 同一对象的多个问题合并为一项动作,避免维护者重复阅读。
+- 每项动作只写一个明确动词:`修复`、`验证`、`复看`、`转派`、`合并`、`收口`。
+- 对“等待作者 / 等待 reviewer / 等待维护者 / 等待平台”的状态必须显式标注,避免错误催办。
+- 无 open PR 或无可用数据时,明确输出“没有可分析的 open PR”或“数据不足”,不得用历史样例冒充实时结果。
+
+## 质量自检
+
+生成报告后,依次检查:
+
+```powershell
+# JSON 可解析且无颜色控制符
+$json | ConvertFrom-Json | Out-Null
+if ($json -match "`e\[|") { throw "JSON 含展示层标记" }
+
+# Markdown 使用 UTF-8 保存,并检查替换字符
+$markdown | Set-Content .\maintenance-report.md -Encoding utf8
+$bytes = [IO.File]::ReadAllBytes('.\maintenance-report.md')
+$text = [Text.Encoding]::UTF8.GetString($bytes)
+if ($text.Contains([char]0xfffd) -or $text.Contains('?')) { throw "报告存在编码风险" }
+```
+
+最后一条检查只针对报告中预期的中文文本;如果业务数据本身包含问号,应改为检查 UTF-8 替换字符和已知乱码片段,并记录例外。
diff --git a/skills/gitlink-shared/references/security-review-matrix.md b/skills/gitlink-shared/references/security-review-matrix.md
new file mode 100644
index 0000000..3a3f388
--- /dev/null
+++ b/skills/gitlink-shared/references/security-review-matrix.md
@@ -0,0 +1,25 @@
+# PR 安全审查矩阵
+
+安全检查不是“看到 security 标签才执行”的附加项。五个维护类 Skill 都要先根据改动文件和数据流判断是否命中以下类别;无法验证时标记为 `not_run`,不能直接判定安全通过。
+
+| 类别 | 重点信号 | 最低验证 | 默认级别 |
+|------|----------|----------|----------|
+| 凭据泄露 | token、密码、私钥、`.env`、日志回显 | 扫描 diff、配置、测试 fixture 和日志;确认脱敏 | blocking |
+| 命令注入 | shell 拼接、`exec`、用户可控参数进入命令 | 使用带空格、引号、shell 元字符的输入测试 | blocking |
+| 路径遍历 | 文件名、压缩包、下载地址来自用户或远端 | 验证 `..`、绝对路径、符号链接和跨平台分隔符 | high |
+| 注入 | SQL、模板、Markdown、HTML、JSON 拼接 | 正常值、边界值、恶意值和转义结果 | high |
+| SSRF / 外连 | URL、webhook、重定向、代理配置 | 限制协议、主机、重定向和内网地址 | high |
+| 认证授权 | token 作用域、项目权限、管理员动作 | 未登录、无权、越权和过期 token | blocking |
+| 不安全反序列化 | 任意类型、远端 JSON/YAML、对象恢复 | 不可信输入和异常输入,确认无任意代码执行 | blocking |
+| 依赖供应链 | 新增依赖、安装脚本、下载二进制 | 锁定版本、核对来源和最小权限 | high |
+| 敏感信息暴露 | PR 报告、错误、调试、缓存包含用户数据 | 检查 stdout、文件、JSON 和日志 | high |
+| 资源耗尽 | 无界分页、超大 diff、并发、重试 | 空数据、最大数据、超时和取消 | medium/high |
+| 加密与传输 | TLS、证书校验、随机数、哈希用途 | 禁止跳过证书校验,确认算法和错误处理 | high |
+
+## 证据规则
+
+每个命中的安全项至少记录:`category`、`status`、`evidence`、`test`、`owner`。代码位置使用文件和行号;行为验证使用实际命令;平台能力不确定时标记 `unverified_platform_behavior`。
+
+## 自动化边界
+
+静态关键词命中只能生成候选项,不能单独证明漏洞。动态验证不能覆盖真实凭据或生产写操作;默认使用脱敏 fixture、临时 worktree、`--dry-run` 和最小权限 token。发现疑似真实密钥时不要复制到报告,报告只保留类型、位置和轮换建议。