forked from Gitlink/gitlink-cli
feat(skills): 统一关键结论前置与Markdown落盘
This commit is contained in:
parent
83b5f15c80
commit
a9d0848676
|
|
@ -1,10 +1,6 @@
|
|||
---
|
||||
name: gitlink-cli-contract-guard
|
||||
description: "CLI 契约守卫:审查 GitLink CLI 改动是否破坏既有命令契约,重点检查 flags 与默认值、命令层级与帮助文本、`--format json` 输出结构、错误提示与编码质量、README/示例命令和实际行为是否漂移。用于用户需要判断某个 PR 或本地改动会不会破坏旧用法、引入不兼容输出、造成帮助文档失真,或在合并前补做兼容性审查时。"
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
cliHelp: "gitlink-cli pr --help"
|
||||
description: "GitLink CLI 契约专项审查:检查 flags 与默认值、命令层级与帮助、JSON 结构、错误和退出码、UTF-8、NO_COLOR、文档示例与安全输入边界,生成带 CG 编号和复现证据的只读 Markdown 报告。用户只需点名 gitlink-cli-contract-guard 并提供本地改动或一个/多个 PR;默认不调用其他 Skill、不修改远端。"
|
||||
---
|
||||
|
||||
## 已合并功能的增量证据
|
||||
|
|
@ -27,6 +23,35 @@ gitlink-cli workflow +review-queue --from queue.json --previous queue-previous.j
|
|||
**CRITICAL - 这个 skill 默认只读分析,不直接修改远端评论、标签或分配关系。**
|
||||
**CRITICAL - 这个 skill 只关注 CLI 对用户承诺的行为契约,不负责判断 PR 是否应当合并。**
|
||||
|
||||
## 默认调用契约
|
||||
|
||||
用户只需说“使用 `gitlink-cli-contract-guard` 检查 `<owner>/<repo>` 的 PR `#<number>`”或“检查当前本地改动”。多个 PR 可直接列出多个编号;除非目标无法确定,不再要求用户补充输出格式或报告路径。
|
||||
|
||||
点名后默认自动执行:
|
||||
|
||||
- 只检查 CLI 契约,不调用其他 Skill,不评价业务价值、通用代码质量、PR 关系或维护者 SLA。
|
||||
- 只读运行,不评论、不 approve、不合并、不关闭、不修改远端。
|
||||
- 使用 `CG-001` 起的稳定编号,记录旧行为、新行为、复现命令、严重性、证据、修复建议和验证限制。
|
||||
- 首屏先显示兼容性结论、关键门禁和最多 5 项会影响现有用户或脚本的动作;blocking/high 使用颜色和粗体并保留文本标签。
|
||||
- 一次运行只生成一份 UTF-8 Markdown,保存到 `reports/skill-runs/gitlink-cli-contract-guard/<owner>-<repo>-<scope>-<yyyyMMdd-HHmmssZ>.md`;多个 PR 在同一报告内分开结论。
|
||||
|
||||
无法写入工作区时输出完整 Markdown 并标记“未落盘”。最终回复只需给出报告绝对路径、主结论和阻断数,不在聊天中重复整份报告。
|
||||
|
||||
首屏固定先使用以下结构,再展开完整契约面:
|
||||
|
||||
```markdown
|
||||
# CLI 契约审查摘要
|
||||
|
||||
**结论:** <span style="color:#B42318"><strong>阻断合并</strong></span> **[blocked]**
|
||||
**门禁:** 参数 `passed` | 帮助 `passed` | JSON `failed` | 错误 `passed` | 安全 `not_run`
|
||||
**发现:** blocking 1 | high 1 | medium 0 | low 0
|
||||
|
||||
## 先处理这 2 项
|
||||
|
||||
1. <span style="color:#B42318"><strong>[CG-001][blocking] 修复</strong></span> JSON 中的 ANSI,并补 golden 测试。
|
||||
2. <span style="color:#B54708"><strong>[CG-002][high] 验证</strong></span> header 换行和注入边界。
|
||||
```
|
||||
|
||||
这个 skill 的目标很窄,也很硬:**找出会把现有 CLI 用户用法搞坏的改动。**
|
||||
|
||||
它重点审查五类契约面:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
interface:
|
||||
display_name: "CLI 契约守卫"
|
||||
short_description: "检查 flags、help、JSON 输出和错误提示是否发生破坏性变化。"
|
||||
default_prompt: "Use $gitlink-cli-contract-guard 审查这个 GitLink CLI 改动是否破坏既有命令契约,先建立旧用法基线,再检查 flags、help、JSON、错误、UTF-8、NO_COLOR 和安全边界,输出最多五项带复现命令的 CG 发现。"
|
||||
default_prompt: "使用 $gitlink-cli-contract-guard 检查指定 PR 或本地改动。按 Skill 默认契约执行只读 CLI 契约审查,并生成关键结论前置的单一 Markdown 报告。"
|
||||
|
|
|
|||
|
|
@ -1,385 +1,144 @@
|
|||
---
|
||||
name: gitlink-code-review
|
||||
description: "智能代码审查:获取 PR 变更、分析代码质量、自动生成 Review 评论与摘要报告。当用户需要审查 Pull Request、检查代码质量或生成审查报告时触发。"
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
cliHelp: "gitlink-cli pr --help"
|
||||
description: "GitLink Pull Request 专项代码审查:只分析代码质量、逻辑正确性、测试覆盖、可维护性和代码级安全风险,生成带 CR 稳定编号、精确文件行号、证据、修复建议和验证限制的只读 Markdown 报告。用户只需点名 gitlink-code-review 并提供仓库与一个或多个 PR 编号即可使用;默认不调用其他 Skill、不评论或修改远端。"
|
||||
---
|
||||
|
||||
## 已合并功能的增量证据
|
||||
# GitLink PR 代码审查
|
||||
|
||||
前置 PR #426 合并后,优先用 `workflow +review-context` 一次获取变更文件、Review、提交记录和 CI 结果,再进行本 Skill 的代码质量、测试充分性和代码安全审查:
|
||||
只负责代码层审查,不扩展到仓库健康度、Issue 分拣、PR 价值判断、PR 关系、合并门禁或维护者 SLA。
|
||||
|
||||
## 默认调用契约
|
||||
|
||||
用户只需说“使用 `gitlink-code-review` 审查 `<owner>/<repo>` 的 PR `#<number>`”;多个 PR 可以直接列出多个编号。除非仓库或 PR 无法确定,不要求用户重复说明输出格式、安全边界或报告路径。
|
||||
|
||||
点名本 Skill 后,默认自动执行以下要求:
|
||||
|
||||
- **范围固定**:只审查代码质量、逻辑正确性、测试覆盖、可维护性和代码级安全。
|
||||
- **独立运行**:不调用其他 Skill;发现契约、拓扑、集成或维护问题时只写“超出本次范围”,不替它们下结论。
|
||||
- **只读运行**:不提交 Review、不发表评论、不 approve、不合并、不关闭、不分配、不修改远端。
|
||||
- **稳定发现**:问题使用 `CR-001` 起的稳定编号,标明严重性、文件/行号、证据、影响、修复建议和验证限制。
|
||||
- **高效首屏**:报告开头先给会直接影响评审结果的结论、门禁和最多 5 项动作;blocking/high 使用颜色和粗体,同时保留纯文本标签。
|
||||
- **单文件落盘**:一次运行只生成一份供人阅读的 Markdown,保存到 `reports/skill-runs/gitlink-code-review/<owner>-<repo>-<scope>-<yyyyMMdd-HHmmssZ>.md`。多个 PR 放在同一份报告中,但每个 PR 的发现和结论必须分开。
|
||||
|
||||
Markdown 使用 UTF-8 保存,不写 ANSI。无法写入工作区时,在回复中输出完整 Markdown,并明确标记“未落盘”;不能只给聊天摘要而丢失完整报告。
|
||||
|
||||
## 首屏固定结构
|
||||
|
||||
首屏必须在详细分析之前,保持在维护者无需滚动或少量滚动即可读完的长度:
|
||||
|
||||
```markdown
|
||||
# PR #<number> 代码审查摘要
|
||||
|
||||
**结论:** <span style="color:#B42318"><strong>需要修改</strong></span> **[action_required]**
|
||||
**关键门禁:** 代码质量 `failed` | 逻辑 `partial` | 测试 `failed` | 可维护性 `passed` | 安全 `passed`
|
||||
**发现:** blocking 1 | high 1 | medium 2 | low 0
|
||||
|
||||
## 先处理这 2 项
|
||||
|
||||
1. <span style="color:#B42318"><strong>[CR-001][blocking] 修复</strong></span> `path/file.go:42` 的越权路径;责任:作者;证据:`E-CR-001`。
|
||||
2. <span style="color:#B54708"><strong>[CR-002][high] 补测</strong></span> 非法输入与失败路径;责任:作者;证据:`E-CR-002`。
|
||||
```
|
||||
|
||||
颜色仅用于最终结论、blocking/high、关键门禁和最优先动作。必须同时保留 `[blocking]`、`[high]` 等纯文本回退,避免渲染器清除 HTML 后丢失含义。
|
||||
|
||||
## 输入和批量模式
|
||||
|
||||
单 PR 优先获取统一上下文:
|
||||
|
||||
```bash
|
||||
gitlink-cli workflow +review-context --owner <owner> --repo <repo> --number <number> --include-commits=true --include-ci=true --format json
|
||||
```
|
||||
|
||||
本 Skill 只消费代码层证据;CI 失败可以作为审查依据,但不直接替代 `gitlink-pr-integrator` 的合并门禁。若 `sections` 缺少 `commits` 或 `ci_builds`,或 `notes` 标记探针失败,相关结论必须标记为 `partial`。
|
||||
接口不可用时再分别获取:
|
||||
|
||||
当结果包含 `ci_summary` 时,只统计与当前 PR head SHA 匹配的构建;`match_mode=branch` 只能作为回退,`none/unavailable` 必须标记 CI 证据不足。报告还要记录运行键、当前 head、证据台账和限制项,避免把旧 commit 或其他分支的结果写进本次审查。
|
||||
```bash
|
||||
gitlink-cli pr +view --owner <owner> --repo <repo> --id <pull_request_id> --format json
|
||||
gitlink-cli pr +files --owner <owner> --repo <repo> --id <pull_request_id> --format json
|
||||
gitlink-cli pr +diff --owner <owner> --repo <repo> --id <pull_request_id> --format json
|
||||
gitlink-cli pr +reviews --owner <owner> --repo <repo> --id <pull_request_id> --format json
|
||||
```
|
||||
|
||||
# gitlink-code-review(智能代码审查)
|
||||
`id` 使用 API 的 `pull_request_id`,报告标题使用用户可见的 PR 编号。两者无法确认映射时停止深审并记录限制,不能猜测。
|
||||
|
||||
**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。**
|
||||
**CRITICAL — 所有写入/删除操作前,务必先确认用户意图。**
|
||||
**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`(GitHub CLI)操作 GitLink 资源。`gh` 仅适用于 GitHub 平台。**
|
||||
**CRITICAL — 默认只生成本地审查报告或评论草稿;只有用户明确要求且满足共享运行协议的安全条件时,才允许发布普通评论。不得自动 APPROVE、MERGE、CLOSE 或修改权限。**
|
||||
多个 PR 按编号逐条建立独立上下文、独立 `CR-` 发现和独立结论,然后在报告最前面增加批量摘要。不得把多个 Diff 混合成一个代码结论,也不得为了节省篇幅省略某个 PR 的验证限制。
|
||||
|
||||
> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 了解认证和全局参数。
|
||||
## 审查流程
|
||||
|
||||
## 效率版默认输出
|
||||
### 1. 固定证据快照
|
||||
|
||||
本 Skill 默认遵循 [`../gitlink-shared/references/maintenance-report-contract.md`](../gitlink-shared/references/maintenance-report-contract.md),先输出维护者可直接执行的摘要,不把完整分析堆在首屏:
|
||||
记录 owner、repo、PR 编号、`pull_request_id`、base、head、head SHA、采集时间和数据来源。同一报告内的详情、Diff、Review、CI 和本地检出必须对应同一 head SHA;不一致时标记 `stale`,不得写成通过。
|
||||
|
||||
运行键、证据台账、刷新和自动回写边界遵循 [`../gitlink-shared/references/maintenance-run-protocol.md`](../gitlink-shared/references/maintenance-run-protocol.md)。
|
||||
### 2. 确认变更声明与影响面
|
||||
|
||||
1. 先给 `decision`、最高严重性、阻断数、高风险数、安全门禁和验证状态。
|
||||
2. 只列最多 5 项按优先级排序的动作,每项标明 `CR-xxx`、责任方、文件/行号或命令证据。
|
||||
3. 完整逐文件审查、正向反馈和原始证据放到“证据附录”;无关的风格建议合并,不刷屏。
|
||||
4. Markdown 使用“颜色 + 粗体 + 纯文本回退”;JSON 只输出稳定字段,绝不混入 ANSI、HTML 或 emoji。
|
||||
先阅读标题、描述、提交和文件列表,提取作者声明的行为。只将声明用作检查目标,不将它当作已验证事实。标记核心代码、测试、权限、文件、网络、命令执行、依赖和敏感输出的变化。
|
||||
|
||||
## 证据驱动的审查闭环
|
||||
### 3. 检查五个固定维度
|
||||
|
||||
按“范围确认、声明提取、行为 Diff、数据流安全、测试证据、Review 反馈、兼容性边界、摘要决策”顺序执行。每条 `CR-` 发现必须满足:
|
||||
- **代码质量**:错误处理、资源释放、并发、复杂度、重复实现、API 使用和明显性能退化。
|
||||
- **逻辑正确性**:正常路径、边界条件、空值、状态转换、分页、排序、编码、错误分支和平台差异。
|
||||
- **测试覆盖**:正常、失败、边界、兼容和回归路径;断言是否验证行为而非只验证返回成功。
|
||||
- **可维护性**:是否符合现有架构、职责是否清晰、命名和注释是否解释复杂逻辑、维护成本是否无必要上升。
|
||||
- **代码级安全**:注入、路径遍历、越权、反序列化、凭据泄露、资源耗尽、危险外联和依赖风险。
|
||||
|
||||
1. 有精确文件/行号、命令输出或 Review 引用;无法定位时只能标为 `candidate`。
|
||||
2. 说明实际影响、触发条件和最小修复方向,不能只贴规则名称。
|
||||
3. 标出 `observed`、`derived` 或 `unknown`;推导结论不能单独升级为 blocking。
|
||||
4. 与 `CG-` 契约问题、`IN-` 集成门禁或 `MR-` 维护动作通过 `related_ids` 关联,不重复催办。
|
||||
安全检查读取 [`../gitlink-shared/references/security-review-matrix.md`](../gitlink-shared/references/security-review-matrix.md)。疑似密钥只报告类型和位置,不复制值。
|
||||
|
||||
审查完成后将发现按“必须修复、需要验证、可选建议、正向证据”分组,首屏只保留最多 5 个会改变维护决策的动作。测试作者声称“通过”不等于行为已经验证,必须有实际命令或可复现观察。
|
||||
### 4. 执行与改动相匹配的验证
|
||||
|
||||
报告首屏固定使用以下结构:
|
||||
优先使用仓库 README、CI、Makefile 或现有测试中的命令。至少覆盖本次改动的正常路径、失败路径和兼容路径;安全敏感改动补恶意输入或权限边界测试。记录命令、工作目录、实际检出 SHA、退出码和输出摘要。
|
||||
|
||||
未执行、无法执行、CI 未关联当前 head 或测试命令不存在时,分别写 `not_run`、`partial` 或 `stale`,不能写成通过。CI 只统计匹配当前 PR head SHA 的构建;分支匹配只能作为低置信度回退。
|
||||
|
||||
### 5. 生成发现和动作
|
||||
|
||||
每条 `CR-` 发现必须包含:
|
||||
|
||||
- 严重性:`blocking`、`high`、`medium` 或 `low`
|
||||
- 事实类型:`observed`、`derived` 或 `candidate`
|
||||
- 精确位置:文件和行号,或可复现命令
|
||||
- 触发条件与实际影响
|
||||
- 主证据 ID
|
||||
- 最小可执行修复建议
|
||||
- 验证状态和限制
|
||||
|
||||
没有精确证据的内容只能是 `candidate`,不能升级为 blocking。纯格式、个人偏好和 linter 可自动修复的问题默认不进入首屏。
|
||||
|
||||
## 严重性规则
|
||||
|
||||
- `blocking`:可导致漏洞、数据损坏、核心行为错误、明显回归,或核心功能完全无法验证。
|
||||
- `high`:高概率影响真实用户、关键失败路径或重要兼容行为,应在本轮修复。
|
||||
- `medium`:存在边界、测试或维护缺口,但没有证据表明立即阻断。
|
||||
- `low`:不影响当前正确性的可选改进,合并显示并放入附录。
|
||||
|
||||
## 单一 Markdown 报告结构
|
||||
|
||||
报告按以下顺序组织:
|
||||
|
||||
1. 评审决策和五维门禁
|
||||
2. 最多五项关键动作
|
||||
3. 验证结果摘要
|
||||
4. 完整 `CR-` 发现
|
||||
5. 正向证据
|
||||
6. 限制和未验证项
|
||||
7. 证据附录
|
||||
|
||||
完整发现示例:
|
||||
|
||||
```markdown
|
||||
# PR #<number> 代码审查摘要
|
||||
**结论:** <span style="color:#B42318"><strong>需要修改</strong></span> **[action_required]**
|
||||
**安全门禁:** <span style="color:#B42318"><strong>未通过</strong></span> | **验证:** 部分完成
|
||||
**问题:** blocking 1 / high 2 / medium 1 | **范围:** 4 files, +120/-30
|
||||
### CR-001:非法路径可逃逸目标目录
|
||||
|
||||
## 先做这 3 件事
|
||||
1. **[CR-001][blocking] 修复** `path/to/file.go:42` 的凭据泄露风险(责任:作者)。
|
||||
2. **[CR-002][high] 补充** 恶意输入和失败路径测试(责任:作者)。
|
||||
3. **[CR-003][medium] 复看** 中文错误提示的 UTF-8 输出(责任:维护者)。
|
||||
- **严重性:** blocking
|
||||
- **位置:** `internal/files/write.go:42`
|
||||
- **证据:** `E-CR-001`,恶意路径 fixture 使目标落到工作目录之外
|
||||
- **影响:** 有写权限的调用者可以覆盖非目标文件
|
||||
- **修复建议:** 清理并解析路径后,验证最终绝对路径仍位于允许根目录
|
||||
- **验证限制:** Windows junction 场景尚未执行
|
||||
```
|
||||
|
||||
## 安全和验证门禁
|
||||
|
||||
除了语言专项检查,必须读取 [`../gitlink-shared/references/security-review-matrix.md`](../gitlink-shared/references/security-review-matrix.md),根据 diff 命中的数据流执行凭据、注入、路径、权限、依赖、敏感输出和资源耗尽检查。至少验证正常路径、失败路径和兼容路径;没有仓库定义的测试命令时写明“未找到”,不得写成通过。
|
||||
|
||||
安全发现使用 `CR-xxx` 编号,疑似真实密钥只报告类型和位置,不复制内容。涉及写操作、权限或外连的验证使用脱敏 fixture、临时 worktree 和 `--dry-run`。
|
||||
|
||||
## 职责边界与组合协同
|
||||
|
||||
独立运行时,本 Skill 只评价单个 PR 的代码、测试、可维护性和代码级安全,不评价 reviewer SLA、PR 之间的重复关系或是否进入合并队列。组合运行时读取共享上下文,向 `gitlink-pr-integrator` 交接 `CR-xxx` 发现和验证门禁;如果发现涉及 CLI 参数、JSON 或错误边界,关联 `gitlink-cli-contract-guard` 的 `CG-xxx`,不要重复生成同一条泛化安全结论。
|
||||
|
||||
## 工作流概览
|
||||
|
||||
本 Skill 提供一套完整的 AI 驱动代码审查工作流,覆盖从获取 PR 变更到生成审查报告的全过程。不需要额外的 CLI Shortcuts——现有 `gitlink-cli` 命令 + AI Agent 的分析能力即可完成。
|
||||
|
||||
| 阶段 | 操作 | AI Agent 角色 |
|
||||
|------|------|--------------|
|
||||
| ① 获取上下文 | 拉取 PR 详情、变更文件、Diff | 执行 CLI 命令采集数据 |
|
||||
| ② 分析代码 | 检查每个文件的变更 | 逐文件审查,标记问题 |
|
||||
| ③ 结构化反馈 | 按严重程度分级输出审查意见 | 生成分级 Review 评论 |
|
||||
| ④ 提交评论 | 发表 Review 到 PR | 通过 API 提交 |
|
||||
| ⑤ 生成报告 | 输出审查摘要 | 生成 Markdown 摘要 |
|
||||
|
||||
---
|
||||
|
||||
## 详细工作流
|
||||
|
||||
### 工作流 1:PR 代码审查
|
||||
|
||||
**场景**:收到 PR Review 请求后,进行完整代码审查。
|
||||
|
||||
#### Step 1:获取 PR 上下文
|
||||
|
||||
```bash
|
||||
# 获取 PR 详情
|
||||
gitlink-cli pr +view --id <pr_id> --format json
|
||||
|
||||
# 获取变更文件列表
|
||||
gitlink-cli pr +files --id <pr_id> --format json
|
||||
|
||||
# 获取 Diff 内容(含变更行号和代码上下文)
|
||||
gitlink-cli pr +diff --id <pr_id> --format json
|
||||
```
|
||||
|
||||
#### Step 2:逐文件分析
|
||||
|
||||
对每个变更文件,根据文件类型执行针对性检查:
|
||||
|
||||
**Python 文件检查项:**
|
||||
- 语法与导入:未使用的 import、循环导入、wildcard import
|
||||
- 代码规范:PEP 8 风格偏离、过长行(>88 chars)、命名规范
|
||||
- 安全:硬编码密钥、SQL 注入风险、`eval()`/`exec()` 使用
|
||||
- 性能:不必要的循环、缺少缓存、N+1 查询
|
||||
- 错误处理:裸 `except`、吞异常、缺少 finally
|
||||
|
||||
**JavaScript/TypeScript 文件检查项:**
|
||||
- 安全:`innerHTML` 直接赋值、`eval()` 使用
|
||||
- 类型安全:`any` 滥用、缺失类型定义
|
||||
- 性能:不必要的 re-render、大对象深拷贝
|
||||
- 异步:未处理的 Promise、缺少 error boundary
|
||||
- 依赖:已废弃 API 使用
|
||||
|
||||
**Go 文件检查项:**
|
||||
- 错误处理:未检查的 error return、panic 滥用
|
||||
- 并发:goroutine 泄漏、缺少 sync 保护
|
||||
- 资源管理:未关闭的 file/conn、defer 使用
|
||||
- 命名:导出标识符缺少注释、变量 shadowing
|
||||
|
||||
**通用检查项:**
|
||||
- 硬编码的配置值、密钥、URL
|
||||
- 缺少或错误的边界条件检查
|
||||
- 过于复杂的函数(圈复杂度高)
|
||||
- 魔法数字(未命名的常量)
|
||||
- 重复代码(DRY 违反)
|
||||
- 缺少或过时的注释
|
||||
- 测试覆盖不足
|
||||
|
||||
#### Step 3:生成结构化审查结果
|
||||
|
||||
按以下 Severity 分级输出:
|
||||
|
||||
```markdown
|
||||
## PR #<id> 代码审查报告
|
||||
|
||||
### 🔴 Critical(必须修改)
|
||||
- <问题描述> — <文件>:<行号>
|
||||
> <修改建议>
|
||||
|
||||
### 🟡 Warning(建议修改)
|
||||
- <问题描述> — <文件>:<行号>
|
||||
> <修改建议>
|
||||
|
||||
### 🔵 Suggestion(可选优化)
|
||||
- <问题描述> — <文件>:<行号>
|
||||
> <修改建议>
|
||||
|
||||
### ✅ Positive(值得肯定)
|
||||
- <做得好的地方>
|
||||
```
|
||||
|
||||
#### Step 4:提交 Review 评论
|
||||
|
||||
```bash
|
||||
# 方式 1:提交整体 Review
|
||||
gitlink-cli pr +review --body '{
|
||||
"body": "## 审查结果\n\n### 🔴 Critical\n...\n\n### 🟡 Warning\n...\n\n总体评价:...",
|
||||
"event": "COMMENT"
|
||||
}'
|
||||
|
||||
# 方式 2:在特定行添加内联评论(逐条提交)
|
||||
gitlink-cli pr +review --body '{
|
||||
"body": "这里存在安全风险:用户输入未经转义直接拼接到 SQL 查询中,存在注入风险。建议使用参数化查询。",
|
||||
"event": "COMMENT",
|
||||
"commit_id": "<commit_sha>",
|
||||
"path": "src/query.py",
|
||||
"position": 42
|
||||
}'
|
||||
```
|
||||
|
||||
> **注意:** `event` 参数支持 `COMMENT`(普通评论)和 `APPROVE`(批准)。对于需要修改的问题,使用 `COMMENT`。
|
||||
|
||||
默认不要执行上述写入命令。先输出草稿并等待明确授权;即使获得授权,也只发布带稳定运行键、证据引用和修复建议的 `COMMENT`,不发布 `APPROVE`。
|
||||
|
||||
#### Step 5:生成审查摘要
|
||||
|
||||
审查完成后,输出 Markdown 摘要供用户查阅:
|
||||
|
||||
```markdown
|
||||
## 📋 审查摘要 — PR #<id> <title>
|
||||
|
||||
| 指标 | 数据 |
|
||||
|------|------|
|
||||
| 审查文件数 | <n> |
|
||||
| 变更行数 | +<add> / -<del> |
|
||||
| Critical 问题 | <n> |
|
||||
| Warning | <n> |
|
||||
| Suggestion | <n> |
|
||||
|
||||
### 主要发现
|
||||
1. **[Critical]** <最严重的问题>
|
||||
2. **[Warning]** <次要问题>
|
||||
3. **[Suggestion]** <优化建议>
|
||||
|
||||
### 总体评价
|
||||
<整体评估:代码质量、审查通过建议>
|
||||
|
||||
---
|
||||
*由 gitlink-code-review Skill 自动生成*
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 非默认职责:仓库健康度与 Issue 分拣
|
||||
|
||||
仓库整体健康度、Issue 分类分配和维护者队列治理不属于本 Skill 的默认职责,分别交给专门的仓库/维护 Skill。下面的历史命令仅在用户明确点名该兼容流程时执行;普通 PR 代码审查不得自动扩展成仓库扫描或 Issue 写操作。
|
||||
|
||||
### 历史兼容:仓库代码健康度扫描
|
||||
|
||||
**场景**:对仓库整体代码质量进行评估,不依赖 PR。
|
||||
|
||||
```bash
|
||||
# 1. 获取仓库信息
|
||||
gitlink-cli repo +info --owner <owner> --repo <repo> --format json
|
||||
|
||||
# 2. 获取仓库文件列表(遍历关键目录)
|
||||
gitlink-cli repo +files --query 'filepath=src&ref=master'
|
||||
gitlink-cli repo +files --query 'filepath=tests&ref=master'
|
||||
|
||||
# 3. 获取关键文件内容
|
||||
gitlink-cli repo +raw --ref=master/README.md
|
||||
gitlink-cli repo +raw --ref=master/.gitignore
|
||||
gitlink-cli repo +raw --ref=master/.eslintrc.js # 或类似配置
|
||||
gitlink-cli repo +raw --ref=master/package.json # 或 go.mod, Cargo.toml
|
||||
|
||||
# 4. 获取语言统计和贡献者
|
||||
gitlink-cli repo +languages
|
||||
gitlink-cli repo +contributors
|
||||
```
|
||||
|
||||
**健康度检查清单:**
|
||||
|
||||
| 检查项 | 标准 | 评分依据 |
|
||||
|--------|------|----------|
|
||||
| 文档完整性 | 有 README、CONTRIBUTING、CHANGELOG | 文件是否存在、内容质量 |
|
||||
| 许可证 | 有 LICENSE 文件 | 是否存在、是否合规 |
|
||||
| CI 配置 | 有 CI 配置(.github/workflows, Jenkinsfile 等) | 文件是否存在 |
|
||||
| 代码规范 | 有 linter 配置 | eslint/prettier/ruff/pylint 等 |
|
||||
| 测试覆盖 | 有 test 目录或测试文件 | 测试文件比例 |
|
||||
| 依赖管理 | 依赖文件完整且无已知漏洞 | package-lock/go.sum/poetry.lock |
|
||||
| Issue 健康度 | Issue 有分类标签、响应及时 | 通过 Issue 列表分析 |
|
||||
|
||||
**输出格式:**
|
||||
|
||||
```markdown
|
||||
## 🏥 仓库健康度报告 — <owner>/<repo>
|
||||
|
||||
### 总体评分:<⭐x/5>
|
||||
|
||||
| 维度 | 状态 | 评分 | 建议 |
|
||||
|------|:----:|:----:|------|
|
||||
| 📖 文档 | ✅/⚠️/❌ | ☆☆☆☆☆ | <建议> |
|
||||
| 📜 许可证 | ✅/⚠️/❌ | ☆☆☆☆☆ | <建议> |
|
||||
| 🔧 CI/CD | ✅/⚠️/❌ | ☆☆☆☆☆ | <建议> |
|
||||
| 🎨 代码规范 | ✅/⚠️/❌ | ☆☆☆☆☆ | <建议> |
|
||||
| 🧪 测试覆盖 | ✅/⚠️/❌ | ☆☆☆☆☆ | <建议> |
|
||||
| 📦 依赖安全 | ✅/⚠️/❌ | ☆☆☆☆☆ | <建议> |
|
||||
| 🐛 Issue 管理 | ✅/⚠️/❌ | ☆☆☆☆☆ | <建议> |
|
||||
|
||||
### 关键发现
|
||||
1. <最需要改进的问题>
|
||||
2. <次要问题>
|
||||
3. <做得好的方面>
|
||||
|
||||
### 改进路线图
|
||||
- **紧急(本周):** ...
|
||||
- **短期(本月):** ...
|
||||
- **长期(本季度):** ...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 历史兼容:批量 Issue Triage + 自动分配
|
||||
|
||||
**场景**:对新 Issue 进行自动分类、标签分配和责任人推荐。
|
||||
|
||||
```bash
|
||||
# 1. 获取未标记的 Issue
|
||||
gitlink-cli issue +list --state open --format json
|
||||
|
||||
# 2. 逐个分析 Issue 内容
|
||||
gitlink-cli issue +view --id <issue_id> --format json
|
||||
|
||||
# 3. 根据内容智能分类
|
||||
# 分析标题和描述后,通过 Raw API 打标签
|
||||
gitlink-cli issue +update --number '{
|
||||
"issue_tag_ids": [<tag_id>],
|
||||
"done_ratio": 0,
|
||||
"subject": "<原始标题>",
|
||||
"description": "<原始描述>"
|
||||
}'
|
||||
```
|
||||
|
||||
**分类规则参考:**
|
||||
|
||||
| Issue 关键词 | 推荐标签 | 优先级 |
|
||||
|-------------|----------|:------:|
|
||||
| bug, 错误, 失败, crash, 崩溃 | bug | 🔴 High |
|
||||
| feature, 新增, 建议, 希望 | enhancement | 🔵 Low |
|
||||
| 安全, 漏洞, 权限, 泄露 | security | 🔴 High |
|
||||
| 性能, 慢, 卡顿, 优化 | performance | 🟡 Medium |
|
||||
| 文档, README, 注释 | documentation | 🔵 Low |
|
||||
| question, 如何, 怎么, 请问 | question | 🟡 Medium |
|
||||
| 测试, test, 覆盖率 | testing | 🔵 Low |
|
||||
|
||||
---
|
||||
|
||||
## Raw API 参考
|
||||
|
||||
代码审查相关的 GitLink API 端点:
|
||||
|
||||
```bash
|
||||
# 获取 PR 详情
|
||||
gitlink-cli pr +view --id --format json
|
||||
|
||||
# 获取 PR 变更文件列表
|
||||
gitlink-cli pr +files --format json
|
||||
|
||||
# 获取 PR Diff
|
||||
gitlink-cli pr +diff --format json
|
||||
|
||||
# 提交 PR Review
|
||||
gitlink-cli pr +review --body '{"body":"...","event":"COMMENT"}'
|
||||
|
||||
# 获取仓库文件列表
|
||||
gitlink-cli repo +files --query 'filepath=<path>&ref=<branch>'
|
||||
|
||||
# 获取仓库语言统计
|
||||
gitlink-cli repo +languages --format json
|
||||
|
||||
# 获取贡献者列表
|
||||
gitlink-cli repo +contributors --format json
|
||||
|
||||
# 获取仓库动态
|
||||
gitlink-cli repo +activity --format json
|
||||
```
|
||||
|
||||
## 代码审查最佳实践
|
||||
|
||||
### 审查原则
|
||||
|
||||
1. **先大局后细节**:先理解 PR 的目的和整体变更范围,再逐文件审查
|
||||
2. **关注行为,而非风格**:自动化工具(linter/formatter)能处理的风格问题优先交给工具
|
||||
3. **提供可操作的建议**:不只是指出问题,要给出具体的修改方案
|
||||
4. **肯定好的代码**:发现好的设计、清晰的命名、完善的测试时给予正面反馈
|
||||
5. **控制评论量**:避免信息过载——最严重的 3-5 个问题比 20 个小问题更有价值
|
||||
|
||||
### 安全红线
|
||||
|
||||
以下问题必须标记为 **Critical**,不得忽略:
|
||||
|
||||
- 硬编码的密钥 / Token / 密码
|
||||
- SQL / NoSQL 注入漏洞
|
||||
- 命令注入(shell 命令拼接)
|
||||
- 路径遍历(用户输入直接用于文件路径)
|
||||
- 不安全的反序列化
|
||||
- XSS(未转义的用户输入直接渲染)
|
||||
|
||||
### 输出规范
|
||||
|
||||
- 始终使用 `--format json` 获取结构化数据
|
||||
- 审查报告输出为 **Markdown 格式**,便于直接粘贴到 PR 评论
|
||||
- 涉及文件/行号时使用精准引用,方便定位
|
||||
- 批量操作前使用 `--dry-run` 预检
|
||||
|
||||
## 注意事项
|
||||
|
||||
- PR Review 提交后会通知所有关注该 PR 的参与者,评论内容请保持专业
|
||||
- `pr +diff` 输出可能很大(大型 PR),Agent 应分段处理
|
||||
- API 的 PR files 和 diff 接口有频率限制,避免短时间内重复请求
|
||||
- 对于 draft PR(草稿),应提示用户先将其标记为 Ready for Review
|
||||
## 完成前自检
|
||||
|
||||
- 首屏是否先于完整发现,且只保留最多五项会改变评审结果的动作。
|
||||
- 是否只覆盖五个固定维度,没有调用其他 Skill 或扩展到其他治理任务。
|
||||
- 每条 blocking/high 是否有位置、证据、影响和修复建议。
|
||||
- 未执行的测试是否明确标为 `not_run`,旧 head 证据是否标为 `stale`。
|
||||
- 是否没有执行任何远端写操作。
|
||||
- 是否已生成一份 UTF-8 Markdown,并在最终回复中给出其绝对路径和一句话结论。
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
interface:
|
||||
display_name: "PR 代码审查"
|
||||
short_description: "基于 Diff、测试和安全证据生成精确、可执行的代码 Review。"
|
||||
default_prompt: "Use $gitlink-code-review 审查这个 GitLink PR 的代码质量、测试充分性和代码级安全风险,优先引用精确证据,输出最多五项动作;默认只生成报告或评论草稿,不自动批准或合并。"
|
||||
default_prompt: "使用 $gitlink-code-review 审查指定 GitLink PR。按 Skill 默认契约只做五个代码维度的只读审查,并生成关键结论前置的单一 Markdown 报告。"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,6 @@
|
|||
---
|
||||
name: gitlink-maintainer-radar
|
||||
description: "维护者雷达:面向 GitLink 仓库维护者,联合扫描 open Pull Request、open Issue、消息提醒、review 分配和等待时长,识别响应超时、review 负载失衡、负责人长期停滞等协作瓶颈,生成按优先级排序的处置清单、催办建议和责任调整建议。用于用户需要值班巡检待办、判断哪些事项被晾着了、找出 reviewer 瓶颈、发现有负责人但无进展的条目,或生成维护者今日工作面板时。"
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
cliHelp: "gitlink-cli pr --help"
|
||||
description: "GitLink 维护者队列专项雷达:扫描 open PR、open Issue、Review 分配和等待时长,识别响应超时、reviewer 负载失衡、责任停滞与安全事项运营优先级,生成带 MR 编号、明确等待方和证据的只读 Markdown 待办。用户只需点名 gitlink-maintainer-radar 并提供仓库;默认不调用其他 Skill、不修改远端。"
|
||||
---
|
||||
|
||||
## 已合并功能的增量证据
|
||||
|
|
@ -26,6 +22,35 @@ gitlink-cli workflow +review-context --owner <owner> --repo <repo> --number <num
|
|||
**CRITICAL - 所有 GitLink 操作只使用 `gitlink-cli`,不要改用 `gh`、`glab` 或网页猜测数据。**
|
||||
**CRITICAL - 默认只读分析。只有在用户明确要求时才回写评论、标签或成员分配。**
|
||||
|
||||
## 默认调用契约
|
||||
|
||||
用户只需说“使用 `gitlink-maintainer-radar` 扫描 `<owner>/<repo>`”;也可以给出 PR/Issue 编号限制范围。默认扫描当前 open 队列,除非仓库无法确定,不要求用户重复说明 SLA、输出格式或报告路径。
|
||||
|
||||
点名后默认自动执行:
|
||||
|
||||
- 只分析响应时效、reviewer 负载、责任停滞、等待方和维护优先级,不调用其他 Skill,不判断代码漏洞、CLI 契约或合并就绪度。
|
||||
- 只读运行,不评论、不催办、不标记已读、不改标签、不分配、不关闭、不修改远端。
|
||||
- 使用 `MR-001` 起的稳定编号,记录对象、等待方、超时证据、紧迫度、影响、置信度和建议动作。
|
||||
- 首屏先显示今天直接能执行的最多 5 项动作;HOT、高风险和安全运营事项使用颜色和粗体。
|
||||
- 一次运行只生成一份 UTF-8 Markdown,保存到 `reports/skill-runs/gitlink-maintainer-radar/<owner>-<repo>-<scope>-<yyyyMMdd-HHmmssZ>.md`;完整队列与负载明细放同一文件附录。
|
||||
|
||||
无法写入工作区时输出完整 Markdown 并标记“未落盘”。最终回复给出报告绝对路径、HOT 数、超 SLA 数和第一待办。
|
||||
|
||||
首屏固定先使用:
|
||||
|
||||
```markdown
|
||||
# 维护者值班摘要
|
||||
|
||||
**结论:** <span style="color:#B42318"><strong>今日需处理</strong></span> **[action_required]**
|
||||
**队列:** HOT 4 | WATCH 6 | 超 SLA 3 | reviewer 瓶颈 1 | 安全 HOT 1
|
||||
|
||||
## 先做这 3 件事
|
||||
|
||||
1. <span style="color:#B42318"><strong>[MR-001][blocking] 转派</strong></span> PR #123 安全复查;等待:reviewer。
|
||||
2. <span style="color:#B54708"><strong>[MR-002][high] 回复</strong></span> Issue #87;首响超 24 小时。
|
||||
3. <span style="color:#B54708"><strong>[MR-003][high] 复看</strong></span> PR #118;等待:maintainer。
|
||||
```
|
||||
|
||||
这个 skill 不再做“把通知列表抄一遍”的弱摘要,而是把三类真正影响维护者效率的治理信号合在一起:
|
||||
|
||||
1. **响应时效雷达**:找出超出响应 SLA 的 Issue 和 PR。
|
||||
|
|
@ -201,7 +226,7 @@ gitlink-cli pr +version-diff --owner <owner> --repo <repo> -i <number> --format
|
|||
- review 结论是否已经形成,但没有后续动作
|
||||
- 是否存在 reviewer 过载导致的人工瓶颈
|
||||
|
||||
如果用户需要深入判断代码可行性,切换到 `gitlink-pr-assessor`。如果用户要判断是否适合集成主线,切换到 `gitlink-pr-integrator`。
|
||||
如果发现需要代码可行性或集成判断,只写入“超出本次范围”和建议后续检查,不自动调用其他 Skill。
|
||||
|
||||
### Step 4:为停滞 Issue 建立责任视图
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
interface:
|
||||
display_name: "维护者雷达"
|
||||
short_description: "识别响应超时、review 失衡和责任停滞,生成维护者处置面板。"
|
||||
default_prompt: "Use $gitlink-maintainer-radar 扫描这个 GitLink 仓库当前的响应 SLA、review 负载和责任停滞情况,固定 as_of、合并同一 PR 的重复信号,输出最多五项带责任方和证据的处置动作,不误催未知责任人。"
|
||||
default_prompt: "使用 $gitlink-maintainer-radar 扫描指定 GitLink 仓库。按 Skill 默认契约只读生成维护者优先待办,并保存关键结论前置的单一 Markdown 报告。"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
name: gitlink-maintenance-orchestrator
|
||||
description: "五个 GitLink 维护 Skill 的只读编排器:共享同一批 PR 队列、当前 head SHA、运行 ID 和证据台账,先并行执行代码审查、CLI 契约、PR 拓扑分析,再交给集成门禁和维护者雷达生成重点待办与完整附件。用于维护者需要对单个 PR 或 open PR 队列做全方位审查、自动化回归测试、统一生成首屏报告,或验证五个 Skill 的端到端交接时。"
|
||||
description: "五个 GitLink 维护 Skill 的只读编排器:用户只需点名 gitlink-maintenance-orchestrator 并提供仓库或一个/多个 PR,即可共享同一快照并执行代码审查、CLI 契约、PR 拓扑、集成门禁和维护者排序,最终生成一份关键结论前置、高亮且可追溯的 Markdown 总报告。默认不评论、合并、关闭、分配或修改远端。"
|
||||
---
|
||||
|
||||
# GitLink 维护审查编排器
|
||||
|
|
@ -19,6 +19,36 @@ description: "五个 GitLink 维护 Skill 的只读编排器:共享同一批 P
|
|||
|
||||
五个 Skill 仍然可以单独触发。只有用户要求“全方位审查”“跑完整维护流水线”或“生成统一 PR 维护报告”时才使用本编排器。
|
||||
|
||||
## 默认调用契约
|
||||
|
||||
用户只需说“使用 `gitlink-maintenance-orchestrator` 分析 `<owner>/<repo>`”或附带一个/多个 PR 编号。仓库可从当前 Git remote 唯一推断时无需重复询问;只有目标不明确时才请求补充。
|
||||
|
||||
点名后默认自动执行:
|
||||
|
||||
- 共享一次队列快照和每个目标 PR 的固定 head 上下文,编排五个专项 Skill;不要求用户逐条重复五个 Skill 的提示词。
|
||||
- 全流程只读,不评论、不 approve、不合并、不关闭、不分配、不修改标签或权限。
|
||||
- 单 PR 和多 PR 都支持;多 PR 先做队列级拓扑/维护排序,再对重点 PR 逐条做代码、契约和集成检查,不能混合 Diff。
|
||||
- 首屏只保留一个最终决策、关键门禁、最多 5 项跨专项去重后的动作和责任方;直接影响评审的 blocking/high 使用颜色和粗体。
|
||||
- 一次运行只生成一份主要人读报告 `<run-directory>/final-report.md`。五个专项 JSON 和 `final-report.json` 作为机器证据附件,不再让维护者阅读五份独立长 Markdown。
|
||||
|
||||
最终回复只给出 `final-report.md` 的绝对路径、最终决策、阻断数和第一动作。若无法落盘,输出完整 Markdown 并标记“未落盘”。
|
||||
|
||||
首屏固定先使用:
|
||||
|
||||
```markdown
|
||||
# PR 维护全流程摘要
|
||||
|
||||
**结论:** <span style="color:#B42318"><strong>已阻断</strong></span> **[blocked]**
|
||||
**门禁:** 代码 `failed` | 契约 `passed` | 拓扑 `reorder` | 集成 `blocked` | 维护 `action_required`
|
||||
**风险:** blocking 1 | high 2 | security `failed` | verification `partial`
|
||||
|
||||
## 先处理这 3 项
|
||||
|
||||
1. <span style="color:#B42318"><strong>[CR-001][blocking] 修复</strong></span> 权限绕过;责任:作者。
|
||||
2. <span style="color:#B54708"><strong>[IN-001][high] 重验</strong></span> 当前 head 的合并态;责任:维护者。
|
||||
3. <span style="color:#B54708"><strong>[MR-001][high] 转派</strong></span> 安全复查;责任:maintainer。
|
||||
```
|
||||
|
||||
## 编排流程
|
||||
|
||||
```mermaid
|
||||
|
|
@ -147,4 +177,3 @@ powershell -NoProfile -ExecutionPolicy Bypass -File .\skills\gitlink-maintenance
|
|||
- 任何阶段拿不到证据时记录 `not_run`、`failed` 或 `stale`,不使用历史报告伪造通过。
|
||||
|
||||
详细字段、降级条件和状态枚举见 [`references/pipeline-contract.md`](references/pipeline-contract.md)。
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
interface:
|
||||
display_name: "GitLink 维护审查编排器"
|
||||
short_description: "编排五个维护 Skill 生成可验证的 PR 维护摘要"
|
||||
default_prompt: "对指定仓库或 PR 运行五个维护 Skill 的只读审查流水线,校验共享证据并输出重点待办与完整附件。"
|
||||
default_prompt: "使用 $gitlink-maintenance-orchestrator 分析指定仓库或一个/多个 PR。自动应用只读编排、证据一致性和首屏高亮规则,生成一份最终 Markdown 总报告。"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,6 @@
|
|||
---
|
||||
name: gitlink-pr-integrator
|
||||
description: 评估 GitLink Pull Request 是否已经具备集成到主线的条件,输出合并态验证、与其他 open PR 的冲突风险、集成影响面、发布与回移建议以及合并后动作清单。用于维护者需要决定某个 PR 是否可以进入 merge queue、为一批待合并 PR 排顺序、在合并前验证 rebase 或 merge 后是否仍能构建测试通过,或为自动化队列生成集成就绪报告时。
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
cliHelp: "gitlink-cli pr --help"
|
||||
description: "GitLink PR 集成专项验证:检查当前 head 对最新主线的合并态、构建、测试、契约、安全、冲突与发布影响,生成带 IN 编号和门禁证据的只读 Markdown 报告。用户只需点名 gitlink-pr-integrator 并提供一个或多个 PR;默认独立运行、不调用其他 Skill、不评论或合并远端。"
|
||||
---
|
||||
|
||||
## 已合并功能的增量证据
|
||||
|
|
@ -27,7 +23,35 @@ CI 门禁必须读取 `ci_summary`:`match_mode=sha` 优先,`branch` 只能
|
|||
**CRITICAL - 不要在用户当前的脏工作树里做合并验证。优先使用独立 worktree、临时 clone 或明确指定的检出目录。**
|
||||
**CRITICAL - 在 Windows PowerShell 中保存中文报告前,先切到 UTF-8 输出链路,否则中文可能被写成 `?`。**
|
||||
|
||||
这个 Skill 解决的是“这个 PR 现在能不能安全并入主线”,不是“这个 PR 有没有价值”。如果需求是判断贡献价值、功能可行性、代码质量或声明是否成立,先使用 `gitlink-pr-assessor`;如果价值判断已经成立,需要决定是否进入合并队列、是否先 rebase、是否会与别的 open PR 打架,再使用这个 Skill。
|
||||
## 默认调用契约
|
||||
|
||||
用户只需说“使用 `gitlink-pr-integrator` 检查 `<owner>/<repo>` 的 PR `#<number>`”;多个 PR 可直接列出多个编号。除非目标或验证环境无法确定,不要求用户重复说明门禁、只读边界或报告路径。
|
||||
|
||||
点名后默认自动执行:
|
||||
|
||||
- 只判断集成就绪度,不调用其他 Skill,不重新做完整代码审查、不判断替代关系或维护者 SLA。
|
||||
- 只读远端;允许在隔离 worktree 中执行本地验证,但不评论、不 approve、不合并、不关闭、不修改远端。
|
||||
- 使用 `IN-001` 起的稳定编号,记录门禁、当前 head SHA、命令、退出码、证据、下一动作和限制。
|
||||
- 首屏先直接回答“现在能否进入 merge queue”,显示六项门禁和最多 5 项动作;失败或高风险使用颜色和粗体。
|
||||
- 一次运行只生成一份 UTF-8 Markdown,保存到 `reports/skill-runs/gitlink-pr-integrator/<owner>-<repo>-<scope>-<yyyyMMdd-HHmmssZ>.md`;多个 PR 先给队列摘要,再分别给每条 PR 的门禁。
|
||||
|
||||
无法写入工作区时输出完整 Markdown 并标记“未落盘”。最终回复给出报告绝对路径、可进入队列数量、阻断数量和第一下一动作。
|
||||
|
||||
首屏固定先使用:
|
||||
|
||||
```markdown
|
||||
# PR #<number> 集成摘要
|
||||
|
||||
**结论:** <span style="color:#B54708"><strong>需补验证</strong></span> **[action_required]**
|
||||
**门禁:** 合并态 `passed` | 构建 `passed` | 测试 `not_run` | 契约 `partial` | 安全 `not_run` | 冲突 `low`
|
||||
|
||||
## 先处理这 2 项
|
||||
|
||||
1. <span style="color:#B54708"><strong>[IN-001][high] 验证</strong></span> `go test ./...`;责任:作者。
|
||||
2. <span style="color:#B54708"><strong>[IN-002][high] 复查</strong></span> 权限边界;责任:reviewer。
|
||||
```
|
||||
|
||||
这个 Skill 解决的是“这个 PR 现在能不能安全并入主线”,不是“这个 PR 有没有价值”。遇到贡献价值、功能可行性或完整代码审查问题时,只将其记录为超出范围或限制,不自动切换到其他 Skill。
|
||||
|
||||
执行命令前,按需读取 [`references/api_reference.md`](./references/api_reference.md)。其中包含 GitLink CLI 命令、Windows 调用方式、独立 worktree 验证方法和报告字段约定。
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
interface:
|
||||
display_name: "PR 集成检查"
|
||||
short_description: "评估 PR 是否能安全并入主线,分析冲突、发布影响和合并后动作。"
|
||||
default_prompt: "Use $gitlink-pr-integrator 评估这个 GitLink PR 的集成就绪度,按当前 head SHA 执行合并态、构建、测试、契约、安全和冲突门禁,输出最多五项动作和合并后清单,不要回写、批准或合并远端。"
|
||||
default_prompt: "使用 $gitlink-pr-integrator 检查指定 GitLink PR。按 Skill 默认契约只读验证六项集成门禁,并生成关键结论前置的单一 Markdown 报告。"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,6 @@
|
|||
---
|
||||
name: gitlink-pr-topology
|
||||
description: "开源社区 PR 队列关系图谱:面向一个仓库的多条 open Pull Request,识别它们之间的依赖链、功能重叠、替代/超越关系、冲突热点、可打包评审分组和建议处理顺序。用于维护者需要批量梳理 open PR 为什么互相卡住、哪几条其实在做同一件事、哪一条实现更完整、哪些 PR 应该先合并或先关闭,以及如何把复杂队列整理成可执行决策时。"
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
cliHelp: "gitlink-cli pr --help"
|
||||
description: "GitLink open PR 队列关系专项分析:识别依赖、继承、重叠、替代、冲突、互补和可打包评审关系,比较重叠实现的完整性并给出处理顺序,生成带 TP 编号和证据置信度的只读 Markdown 报告。用户只需点名 gitlink-pr-topology 并提供仓库或指定 PR 编号集合;默认不调用其他 Skill、不修改远端。"
|
||||
---
|
||||
|
||||
## 已合并功能的增量证据
|
||||
|
|
@ -27,6 +23,35 @@ gitlink-cli workflow +review-context --owner <owner> --repo <repo> --number <num
|
|||
**CRITICAL - 这个 skill 关注的是 PR 与 PR 之间的关系,不代替单条 PR 的代码审查或合并验收。**
|
||||
**CRITICAL - 如果需要把中文报告写入文件或重定向输出,在 Windows PowerShell 中先切到 UTF-8 输出链路。**
|
||||
|
||||
## 默认调用契约
|
||||
|
||||
用户只需说“使用 `gitlink-pr-topology` 分析 `<owner>/<repo>` 的 open PR”,也可以列出若干 PR 编号限制范围。默认扫描当前 open 队列;除非仓库无法确定,不要求用户重复说明关系类型、输出格式或保存位置。
|
||||
|
||||
点名后默认自动执行:
|
||||
|
||||
- 只分析 PR 之间的关系,不调用其他 Skill,不做单 PR 代码缺陷、CLI 契约、合并门禁或 SLA 判断。
|
||||
- 只读运行,不评论、不关闭、不合并、不分配、不修改远端。
|
||||
- 使用 `TP-001` 起的稳定编号,记录关系类型、相关 PR、证据、置信度、比较结论、建议动作和限制。
|
||||
- 首屏先显示最能减少重复评审的关系簇、冲突热点和建议顺序,最多 5 项;高置信度阻断/高风险使用颜色和粗体。
|
||||
- 一次运行只生成一份 UTF-8 Markdown,保存到 `reports/skill-runs/gitlink-pr-topology/<owner>-<repo>-<scope>-<yyyyMMdd-HHmmssZ>.md`;完整边列表放同一文件附录,不再额外生成第二份人读报告。
|
||||
|
||||
无法写入工作区时输出完整 Markdown 并标记“未落盘”。最终回复给出报告绝对路径、关系簇数量和第一处理顺序。
|
||||
|
||||
首屏固定先使用:
|
||||
|
||||
```markdown
|
||||
# PR 队列关系摘要
|
||||
|
||||
**结论:** <span style="color:#B54708"><strong>需要重排</strong></span> **[reorder]**
|
||||
**范围:** open PR 18 | 关系簇 4 | 冲突热点 2 | 安全热点 1
|
||||
|
||||
## 先处理这 3 项
|
||||
|
||||
1. <span style="color:#B42318"><strong>[TP-001][blocking] 先处理</strong></span> #61,再处理 #63;证据:共享接口依赖。
|
||||
2. <span style="color:#B54708"><strong>[TP-002][high] 择一评审</strong></span> #71/#74;先比较测试与兼容性。
|
||||
3. <span style="color:#B54708"><strong>[TP-003][high] 集中复看</strong></span> #80/#82 的权限热点。
|
||||
```
|
||||
|
||||
这个 skill 解决的是“PR 太多,维护者看不出它们彼此是什么关系”的问题。
|
||||
|
||||
它不只回答“有没有重复”,还要回答:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
interface:
|
||||
display_name: "PR 关系图谱"
|
||||
short_description: "分析 open PR 之间的依赖、重叠、替代和建议处理顺序。"
|
||||
default_prompt: "Use $gitlink-pr-topology 扫描这个 GitLink 仓库的 open PR 队列,基于文件、分支、接口和快照证据识别依赖、重叠、替代、冲突和互补关系,标注置信度并输出最多五个关系簇,不关闭 PR。"
|
||||
default_prompt: "使用 $gitlink-pr-topology 分析指定仓库或 PR 集合。按 Skill 默认契约只读识别 PR 关系和处理顺序,并生成关键结论前置的单一 Markdown 报告。"
|
||||
|
|
|
|||
|
|
@ -1,12 +1,28 @@
|
|||
# 维护者效率报告协议
|
||||
|
||||
五个维护类 Skill 统一遵循本协议。目标是让维护者在 30 秒内知道“先处理什么、为什么、下一步由谁做”,同时保留可追溯的证据。
|
||||
五个维护专项 Skill 和一个编排 Skill 统一遵循本协议。目标是让维护者在 30 秒内知道“先处理什么、为什么、下一步由谁做”,同时保留可追溯的证据。
|
||||
|
||||
## 默认调用与单报告落盘
|
||||
|
||||
用户点名某个 Skill 并给出可确定的仓库、PR 或本地改动范围后,该 Skill 必须自行应用只读边界、专项职责、严重性、首屏格式和保存规则。不得要求用户重复粘贴“不要调用其他 Skill”“不要修改远端”“关键结论放前面”等固定提示词。
|
||||
|
||||
五个专项 Skill 默认独立运行,不自动调用其他 Skill;只有 `gitlink-maintenance-orchestrator` 可以编排五个专项。目标无法从用户输入或当前 Git remote 唯一确定时才请求补充。
|
||||
|
||||
每次运行只生成一份主要人读 Markdown:
|
||||
|
||||
```text
|
||||
reports/skill-runs/<skill>/<owner>-<repo>-<pr-number-or-queue>-<yyyyMMdd-HHmmssZ>.md
|
||||
```
|
||||
|
||||
编排器使用 `<run-directory>/final-report.md`。多个 PR 放在同一份报告内,但每个 PR 的证据、发现和决策必须独立;原始 API、完整 Diff、阶段 JSON 和机器证据放附件,不再生成多份互相重复的人读报告。
|
||||
|
||||
Markdown 使用 UTF-8、无 ANSI,并在最终回复中给出绝对路径。无法落盘时输出完整 Markdown 并明确标记“未落盘”,不能只返回聊天摘要。
|
||||
|
||||
## 默认输出层级
|
||||
|
||||
默认生成 `executive` 模式;用户明确要求细节时再生成 `standard` 或 `full`。
|
||||
|
||||
1. **执行摘要**:结论、阻断数、高风险数、安全门禁、验证状态和扫描范围。
|
||||
1. **执行摘要**:使用颜色、粗体和纯文本标签突出结论、阻断数、高风险数、安全门禁、验证状态和扫描范围。
|
||||
2. **今日动作**:最多 5 项,按优先级排序;每项必须包含对象、责任方、下一动作和证据引用。
|
||||
3. **证据附录**:完整发现、命令输出摘要、文件/行号、时间戳和未验证项。
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue