From 036939ccff591cf030db825e578051315d784ec5 Mon Sep 17 00:00:00 2001 From: Mengz <2567587994@qq.com> Date: Fri, 26 Jun 2026 12:02:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(skills):=20=E6=96=B0=E5=A2=9E=20gitlink-cl?= =?UTF-8?q?i-contract-guard=20skill?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skills/gitlink-ci-health/EXAMPLES.md | 178 ----------------- skills/gitlink-ci-health/SKILL.md | 189 ------------------ skills/gitlink-cli-contract-guard/SKILL.md | 183 +++++++++++++++++ .../agents/openai.yaml | 4 + .../assets/codex-skill-directory.png | Bin 0 -> 19992 bytes .../assets/codex-validation-output.png | Bin 0 -> 119166 bytes .../examples/codex-validation-2026-06-26.md | 42 ++++ .../examples/encoding-and-doc-drift.md | 19 ++ .../examples/flag-compat-review.md | 19 ++ .../examples/json-output-review.md | 19 ++ .../references/contract-surfaces.md | 115 +++++++++++ .../references/severity-rubric.md | 40 ++++ 12 files changed, 441 insertions(+), 367 deletions(-) delete mode 100644 skills/gitlink-ci-health/EXAMPLES.md delete mode 100644 skills/gitlink-ci-health/SKILL.md create mode 100644 skills/gitlink-cli-contract-guard/SKILL.md create mode 100644 skills/gitlink-cli-contract-guard/agents/openai.yaml create mode 100644 skills/gitlink-cli-contract-guard/assets/codex-skill-directory.png create mode 100644 skills/gitlink-cli-contract-guard/assets/codex-validation-output.png create mode 100644 skills/gitlink-cli-contract-guard/examples/codex-validation-2026-06-26.md create mode 100644 skills/gitlink-cli-contract-guard/examples/encoding-and-doc-drift.md create mode 100644 skills/gitlink-cli-contract-guard/examples/flag-compat-review.md create mode 100644 skills/gitlink-cli-contract-guard/examples/json-output-review.md create mode 100644 skills/gitlink-cli-contract-guard/references/contract-surfaces.md create mode 100644 skills/gitlink-cli-contract-guard/references/severity-rubric.md diff --git a/skills/gitlink-ci-health/EXAMPLES.md b/skills/gitlink-ci-health/EXAMPLES.md deleted file mode 100644 index af237f8..0000000 --- a/skills/gitlink-ci-health/EXAMPLES.md +++ /dev/null @@ -1,178 +0,0 @@ -# gitlink-ci-health 使用样例 - -## 样例 1:CI 未激活的仓库 - -**日期**:2026-06-03 -**仓库**:jiangtx/gitlink-cli(Fork from Gitlink/gitlink-cli) -**CLI 版本**:gitlink-cli 0.1.18 - -### 执行流程 - -```bash -# Step 1: 检查 CI 状态(方法 1 — repo +info) -gitlink-cli repo +info --owner jiangtx --repo gitlink-cli --format json -# → "open_devops": false ← CI 未激活 - -# Step 1 补充(方法 2 — ci +builds) -gitlink-cli ci +builds --owner jiangtx --repo gitlink-cli --format json -# → {"status":-1,"message":"接口数据异常"} ← 确认 CI 未激活 - -# 此时终止后续步骤,生成"CI 未激活"报告 -``` - -### 关键发现 - -| 项目 | 值 | -|------|-----| -| `open_devops` | `false` | -| `ci +builds` 返回 | `{"status": -1, "message": "接口数据异常"}` | -| 可用 CI 命令 | `+builds`、`+logs`、`+restart`、`+stop` | -| 不存在的命令 | `ci +authorize`、`ci +activate`、`ci +deactivate` | - -### 诊断结论 - -CI 完全未启用,需通过 GitLink Web 界面开启(仓库设置 → DevOps)。用户拥有 Manager 权限,可以操作。 - -### 生成的报告 - -```markdown -# 🔧 CI 健康巡检报告:jiangtx/gitlink-cli - -> 巡检时间:2026-06-03 -> 仓库:jiangtx/gitlink-cli(Fork from Gitlink/gitlink-cli) -> CI 状态:❌ 未激活 - -## 一、健康度总览 - -| 指标 | 数值 | 评分 | -|------|------|------| -| CI 激活状态 | ❌ 未激活(open_devops: false) | 0/4 | -| 整体成功率 | N/A | —/5 | -| 近期稳定性 | N/A | —/5 | -| 构建频率 | N/A | —/3 | -| 修复速度 | N/A | —/3 | -| **总分** | | **0/20** | - -## 二、诊断详情 - -API 调用 ci +builds 返回: -{"status": -1, "message": "接口数据异常"} - -仓库元数据显示 open_devops: false,确认该仓库尚未启用 GitLink 平台的 CI/CD(DevOps)服务。 - -## 三、改进建议 - -- 🔴 立即激活 CI:前往 GitLink Web 界面 → 仓库设置 → DevOps 开启 CI/CD 服务 -- 🟡 配置 CI Pipeline:建议添加 .gitlink-ci.yml 配置编译和测试流水线 - -## 四、仓库基本信息 - -| 项目 | 值 | -|------|-----| -| 默认分支 | master | -| 仓库大小 | 13.4 MB | -| 贡献者 | 2 | -| PR 数量 | 9 | -| 权限 | Manager | -``` - ---- - -## 异常场景速查 - -| 场景 | 检测方式 | `ci +builds` 返回值 | 处理 | -|------|----------|---------------------|------| -| CI 未激活 | `repo +info` 的 `open_devops: false` | `{"status":-1,"message":"接口数据异常"}` | 建议 Web 界面激活,终止巡检 | -| CI 已激活但无构建 | `repo +info` 的 `open_devops: true` + builds 为空 | `[]` 或空列表 | 标注"暂无构建记录" | -| 构建样本不足(<5) | builds 列表长度 < 5 | 正常 JSON 数组 | 标注"数据有限,不具代表性" | - ---- - -## 版本兼容性说明 - -本 skill 基于 `gitlink-cli 0.1.18` 编写。不同版本的 CI 子命令可能有差异: - -| CLI 版本 | 可用 CI 命令 | -|----------|-------------| -| 0.1.18 | `+builds`、`+logs`、`+restart`、`+stop` | -| 未来版本 | 可能新增 `+activate`、`+deactivate` 等 | - -当 CLI 版本更新后,重新验证可用命令: -```bash -gitlink-cli ci --help -``` - ---- - -## 样例 2:通过 Agent 调用 Skill(自动巡检) - -**日期**:2026-06-03 -**仓库**:jiangtx/gitlink-cli -**调用方式**:`Agent(subagent_type="general-purpose", prompt="调用 gitlink-ci-health skill,检查 jiangtx/gitlink-cli 的 CI 状态。严格按照 skill 的工作流步骤执行。")` - -### Agent 自主执行的命令序列 - -``` -工具调用 1: gitlink-cli repo +info --owner jiangtx --repo gitlink-cli --format json - → open_devops: false ← 发现 CI 未激活 - -工具调用 2: gitlink-cli ci +builds --owner jiangtx --repo gitlink-cli --format json - → {"status": -1, "message": "接口数据异常"} ← 二次确认 -``` - -### Agent 决策过程 - -Agent 读取到 `open_devops: false` 后,**正确遵循了 skill 的异常场景处理规则**: - -> "CI 未激活 → 报告 CI 状态为'未激活',建议通过 Web 界面开启,**不再继续后续步骤**" - -Agent 没有继续尝试 `ci +logs` 或统计分析,直接生成了完整报告。共消耗 **5 次工具调用**,**32,113 tokens**,耗时 **35.8 秒**。 - -### Agent 生成的报告 - -```markdown -# CI 健康巡检报告:gitlink-cli - -> 巡检时间:2026-06-03 -> 仓库:jiangtx/gitlink-cli -> CI 状态:未激活 - -## 一、健康度总览 - -| 指标 | 数值 | 评分 | -|------|------|------| -| CI 激活状态 | 未激活 | 0/4 | -| 整体成功率 | N/A | -/5 | -| 近期稳定性 | N/A | -/5 | -| 构建频率 | N/A | -/3 | -| 修复速度 | N/A | -/3 | -| **总分** | | **0/20** | - -## 二、构建趋势 - -无构建记录。仓库 CI 未启用。 - -## 三、故障分析 - -CI 未激活,无构建数据可供分析。 - -## 四、改进建议 - -- **立即激活 CI**:前往 GitLink Web 界面 → 仓库设置 → DevOps,开启 CI/CD 服务。 - (CLI 暂不支持 ci +activate 命令,需要通过 Web 界面操作。) - ---- - -总结:仓库 jiangtx/gitlink-cli(项目 ID: 1547588,默认分支: master,权限: Manager) -当前 open_devops 字段为 false,CI/CD 服务未开启。其他仓库信息:2 位贡献者、 -9 个 PR、0 个 Issue,Fork 自 Gitlink/gitlink-cli。 -``` - -### 验证结论 - -✅ skill v1.1.0 修复验证通过: -- Agent 正确使用了 `repo +info` 的 `open_devops` 字段判断 CI 状态 -- Agent 在 CI 未激活时正确终止,没有执行后续无效步骤 -- Agent 没有尝试调用不存在的 `ci +authorize` 或 `ci +activate` -- Agent 正确建议通过 Web 界面激活 -- 报告结构完整,包含了仓库基本信息 diff --git a/skills/gitlink-ci-health/SKILL.md b/skills/gitlink-ci-health/SKILL.md deleted file mode 100644 index 8721c8b..0000000 --- a/skills/gitlink-ci-health/SKILL.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -name: gitlink-ci-health -version: 1.1.0 -description: "CI 健康巡检:检查仓库 CI/CD 授权状态、构建历史和成功率,生成 CI 健康度报告。当用户需要检查 CI 状态、分析构建成功率、排查 CI 故障时触发。" -metadata: - requires: - bins: ["gitlink-cli"] - cliHelp: "gitlink-cli ci --help" ---- - -# gitlink-ci-health(CI 健康巡检) - -**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。** -**CRITICAL — 本 Skill 为只读操作。CI 激活/关闭需通过 GitLink Web 界面操作,CLI 不提供对应命令。** -**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`(GitHub CLI)操作 GitLink 资源。** - -> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 了解认证和全局参数。 - ---- - -## 功能概述 - -面向维护者的 CI/CD 健康度巡检工具: - -1. **授权检查** — 确认仓库 CI 是否已激活 -2. **构建历史** — 获取近期构建列表 -3. **成功率统计** — 计算构建成功率和平均耗时 -4. **故障分析** — 识别频繁失败的构建及其原因 -5. **健康报告** — 生成 CI 健康度评分和改进建议 - ---- - -## 工作流:CI 健康巡检 - -### Step 1:检查 CI 授权状态 - -**方法 1(推荐)**:通过 `repo +info` 查看 `open_devops` 字段: - -```bash -gitlink-cli repo +info --owner --repo --format json -``` - -- `"open_devops": true` → CI 已激活 -- `"open_devops": false` → CI 未激活 - -**方法 2**:直接调用 `ci +builds`,CI 未激活时返回: - -```json -{"status": -1, "message": "接口数据异常"} -``` - -> ⚠️ `ci +authorize` 命令在当前 CLI 版本(v0.1.18)中**不存在**。可用 CI 命令仅:`+builds`、`+logs`、`+restart`、`+stop`。 - -若 CI 未激活,报告中说明"CI 未启用",建议通过 GitLink Web 界面(仓库设置 → DevOps)开启,随后不再继续后续步骤。 - -### Step 2:获取构建历史 - -```bash -gitlink-cli ci +builds --owner --repo --format json -``` - -提取每次构建的: -- `status` — 构建状态(success/failed/running/pending) -- `created_at` / `finished_at` — 时间信息 -- `duration` — 耗时(如有) -- `branch` — 触发分支 - -如构建数量 >30,取最近 30 次分析。 - -### Step 3:构建日志(失败构建) - -对状态为 failed 的构建获取日志: - -```bash -gitlink-cli ci +logs --owner --repo --build --format json -``` - -> ⚠️ **控制调用量**:仅对最近 5 次失败构建获取日志,避免过多 API 调用。日志可能过大,提取关键错误行(最后 20 行)。 - -### Step 4:统计分析 - -#### 4.1 成功率计算 - -| 指标 | 计算方式 | -|------|----------| -| 整体成功率 | 成功构建数 / 总构建数 × 100% | -| 近 10 次成功率 | 最近 10 次中成功占比 | -| 平均修复时间 | 从失败到下次成功的平均间隔 | - -#### 4.2 健康度评分(满分 20) - -| 维度 | 权重 | 评分标准 | -|------|------|----------| -| CI 激活 | 4 | 已激活=4,未激活=0 | -| 构建成功率 | 5 | ≥90%=5,≥80%=4,≥70%=3,≥50%=2,<50%=1 | -| 近期稳定性 | 5 | 近10次全部成功=5,8-9次=4,6-7次=3,4-5次=2,<4次=1 | -| 构建频率 | 3 | 每天有构建=3,2-3天=2,每周=1,更少=0 | -| 修复速度 | 3 | 失败后1次内修复=3,2-3次=2,>3次=1 | - -### Step 5:生成 CI 健康报告 - ---- - -## 输出模板 - -```markdown -# 🔧 CI 健康巡检报告:{{仓库名}} - -> 巡检时间:{{当前时间}} -> 仓库:{{full_name}} -> CI 状态:{{ci_status_display}} - ---- - -## 一、健康度总览 - -| 指标 | 数值 | 评分 | -|------|------|------| -| CI 激活状态 | {{activated_status}} | {{activate_score}}/4 | -| 整体成功率 | {{success_rate}}%({{success_count}}/{{total_count}}) | {{success_score}}/5 | -| 近期稳定性 | 近 10 次 {{recent_success}} 次成功 | {{stability_score}}/5 | -| 构建频率 | {{build_frequency_desc}} | {{frequency_score}}/3 | -| 修复速度 | {{repair_speed_desc}} | {{repair_score}}/3 | -| **总分** | | **{{total_score}}/20** | - -## 二、构建趋势 - -``` -最近 20 次构建: -✅✅❌✅✅✅❌✅✅✅✅✅❌✅✅✅✅✅✅ -(✅=成功 ❌=失败) -``` - -| 时间段 | 总构建 | 成功 | 失败 | 成功率 | -|--------|--------|------|------|--------| -| 最近 7 天 | {{w1_total}} | {{w1_success}} | {{w1_fail}} | {{w1_rate}}% | -| 7-14 天 | {{w2_total}} | {{w2_success}} | {{w2_fail}} | {{w2_rate}}% | -| 14-30 天 | {{w3_total}} | {{w3_success}} | {{w3_fail}} | {{w3_rate}}% | - -## 三、故障分析 - -> 如无失败构建,输出:**🎉 分析期内无失败构建,CI 运行健康。** - -| 构建 ID | 分支 | 失败时间 | 错误摘要 | -|---------|------|----------|----------| -| {{id}} | {{branch}} | {{time}} | {{error_summary}} | - -### 故障模式分类 - -| 故障类型 | 次数 | 占比 | -|----------|------|------| -| 编译错误 | {{compile_count}} | {{compile_pct}}% | -| 测试失败 | {{test_fail_count}} | {{test_fail_pct}}% | -| 超时 | {{timeout_count}} | {{timeout_pct}}% | -| 环境问题 | {{env_count}} | {{env_pct}}% | -| 其他 | {{other_count}} | {{other_pct}}% | - -## 四、改进建议 - - - -- **立即激活 CI**(当 CI 未激活时):前往 GitLink Web 界面 → 仓库设置 → DevOps 开启 CI/CD 服务(CLI 暂不支持 `ci +activate`) -- **提升成功率**(当 success_rate < 80% 时):优先修复高频失败原因 -- **增加构建频率**(当构建频率评分 < 2 时):建议每次 push 触发 CI -- **缩短修复时间**(当修复速度评分 < 2 时):建立 CI 失败告警 -``` - ---- - -## 异常场景处理 - -| 场景 | 处理方式 | -|------|----------| -| CI 未激活 | 报告 CI 状态为"未激活",建议通过 Web 界面开启,不再继续后续步骤 | -| 无构建记录 | 标注"仓库暂无 CI 构建记录" | -| `ci +logs` 返回空 | 标注"日志不可用" | -| 构建总数 < 5 | 样本量不足,标注"数据有限,统计不具代表性" | - ---- - -## 注意事项 - -- ✅ **所有命令使用 `--format json`**,确保可解析 -- ✅ **CI 激活/关闭需通过 GitLink Web 界面**,CLI 不提供 `+activate`/`+deactivate` 命令 -- ✅ **Owner/repo 优先从 `git remote` 自动解析** -- ⚠️ **`ci +logs` 输出可能很大**,仅提取关键错误行 -- ⚠️ **构建历史无分页参数**,实际返回条数取决于 API -- ⚠️ **CI 数据仅反映 GitLink 平台活动**,不包括第三方 CI 服务 -- ⚠️ **`repo +info` 的 `open_devops` 字段**是判断 CI 是否激活的最可靠方式 diff --git a/skills/gitlink-cli-contract-guard/SKILL.md b/skills/gitlink-cli-contract-guard/SKILL.md new file mode 100644 index 0000000..8675483 --- /dev/null +++ b/skills/gitlink-cli-contract-guard/SKILL.md @@ -0,0 +1,183 @@ +--- +name: gitlink-cli-contract-guard +description: "CLI 契约守卫:审查 GitLink CLI 改动是否破坏既有命令契约,重点检查 flags 与默认值、命令层级与帮助文本、`--format json` 输出结构、错误提示与编码质量、README/示例命令和实际行为是否漂移。用于用户需要判断某个 PR 或本地改动会不会破坏旧用法、引入不兼容输出、造成帮助文档失真,或在合并前补做兼容性审查时。" +--- + +# gitlink-cli-contract-guard + +**CRITICAL - 如果需要拉取 GitLink 上的 PR 元数据、diff 或评论,先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)。** +**CRITICAL - 这个 skill 默认只读分析,不直接修改远端评论、标签或分配关系。** +**CRITICAL - 这个 skill 只关注 CLI 对用户承诺的行为契约,不负责判断 PR 是否应当合并。** + +这个 skill 的目标很窄,也很硬:**找出会把现有 CLI 用户用法搞坏的改动。** + +它重点审查五类契约面: + +1. **参数契约**:flag 名称、短别名、默认值、必填规则、参数语义。 +2. **帮助契约**:命令层级、`--help` 内容、国际化文案、示例命令。 +3. **输出契约**:`--format json` 结构、字段名、字段类型、包裹 envelope。 +4. **错误契约**:错误提示、退出语义、编码质量、用户可理解性。 +5. **文档契约**:README、示例、帮助文本与真实行为是否一致。 + +## 不覆盖的内容 + +下面这些不属于这个 skill 的职责: + +- PR 是否值得合并:交给 `gitlink-pr-assessor` +- PR 是否适合集成主线:交给 `gitlink-pr-integrator` +- commit message、分支命名、PR 模板质量:交给 `gitlink-commit-quality` +- 维护者今日值班优先级:交给 `gitlink-maintainer-radar` + +## 工作流 + +### Step 1:确定分析对象 + +优先区分两种输入: + +- **本地改动**:当前工作区已有变更或已 checkout 到目标分支,直接看 `git diff`、文件改动和本地测试。 +- **远端 PR**:用户只给出 GitLink PR 编号,需要先通过 `gitlink-cli` 拉 PR 元数据和 diff,再结合本地代码理解。 + +如果是本地改动,优先看: + +```bash +git diff --name-only +git diff --stat +``` + +如果是 GitLink PR,优先看: + +```bash +gitlink-cli pr +view --owner --repo -i --format json +gitlink-cli pr +version-diff --owner --repo -i --format json +``` + +### Step 2:把改动映射到契约面 + +根据改动文件,先判断它可能影响哪一类契约。常见映射见 [`references/contract-surfaces.md`](references/contract-surfaces.md)。 + +重点关注这些高风险位置: + +- `cmd/`:根命令、全局 flag、命令层级、帮助文本 +- `shortcuts/*/*.go`:shortcut 参数、默认值、必填规则、输出行为 +- `shortcuts/common/`:通用运行时、输出封装、参数解析 +- `internal/client/`、`internal/auth/`:API client 行为、header、错误处理 +- `internal/i18n/`:国际化文案、语言切换、编码风险 +- `README.md`、`README.zh-CN.md`、`examples/`:文档和真实行为漂移 + +### Step 3:逐类检查契约是否被破坏 + +#### 3.1 参数契约 + +检查: + +- 是否删除或重命名了已有 flag +- 是否变更了短别名 +- 是否改了默认值但没有迁移说明 +- 是否把原本可选参数改成必填 +- 是否改变了 flag 含义但名字未变 + +对 shortcut 代码重点查看 `Name`、`Short`、`Default`、`Required`、`Bool`、`Usage`。 + +#### 3.2 帮助契约 + +检查: + +- 命令层级是否变了 +- `--help` 内容是否仍然描述真实行为 +- 示例命令是否还可运行 +- 中英文帮助文本是否同步 +- 本地化 key 是否丢失或回退异常 + +如果触及 `cmd/root.go`、`shortcuts/register.go` 或 i18n 文案,优先检查 help 相关测试。 + +#### 3.3 输出契约 + +检查: + +- `--format json` 是否仍然返回既有结构 +- 字段名是否发生破坏性变更 +- 字段类型是否变化 +- envelope 是否还保持稳定 +- 机器可读消费者依赖的路径是否变化 + +如果字段是新增但非破坏性变更,要明确说明是“扩展”而不是“破坏”。 + +#### 3.4 错误契约 + +检查: + +- 错误消息是否退化为难以理解的技术细节 +- 中文或多语言提示是否出现乱码 +- `suggestFix`、校验错误、缺参错误是否还可读 +- 渲染后的 header、path 模板或其他用户输入是否可能导致非法请求 + +尤其要把 **中文 mojibake、编码损坏、格式化后非法 header/path** 当成高风险契约问题。 + +#### 3.5 文档契约 + +检查: + +- README 中的示例命令是否与当前实现一致 +- 文档新增内容是否引入乱码 +- 文档说支持的参数/输出,代码是否真的支持 +- 代码新增能力后,帮助或 README 是否漏更新 + +### Step 4:要求验证证据 + +只指出风险还不够,要同时判断“有没有证据证明它没坏”。 + +常用验证方式: + +```bash +go build ./... +go test ./cmd/... ./shortcuts/... +go test ./... +``` + +需要更聚焦时,优先跑与改动最相关的包测试。典型情况: + +- 改 `cmd/` 或帮助/i18n:优先看 `cmd/root_test.go` +- 改 shortcut 参数或输出:优先看对应 `shortcuts//*_test.go` +- 改 API client 或错误处理:优先看 `internal/...` 和相关 shortcut 测试 + +如果改动了契约面,但没有补测试或现有测试没覆盖到,直接把它列为缺口。 + +### Step 5:按严重性归类 + +用 [`references/severity-rubric.md`](references/severity-rubric.md) 把问题分成: + +- `blocking`:明确破坏旧用法或输出契约 +- `high`:高概率影响真实用户或自动化脚本 +- `medium`:存在漂移或边界缺口,但不一定立即破坏 +- `low`:文案、可读性或一致性问题 + +### Step 6:输出契约审查结论 + +推荐输出结构: + +```markdown +# CLI 契约审查报告 + +## 高风险问题 +- `--header` 模板渲染后未再次校验,可能生成非法 header。 +- README.zh-CN 新增示例出现中文乱码,会污染用户可见文档。 + +## 契约面影响 +- 参数契约:`--header` 新增并改变请求构造行为。 +- 输出契约:无破坏性字段变更证据。 +- 错误契约:中文错误提示存在编码退化风险。 + +## 缺失验证 +- 缺少对 `Accept` 头覆盖行为的边界测试。 +- 缺少对渲染后非法 header 的测试。 + +## 结论 +- 需要修改后再合并。 +``` + +## 典型触发语句 + +- “帮我看这个改动会不会破坏现有 CLI 用法。” +- “检查这个 PR 有没有 flag / help / JSON 输出兼容性问题。” +- “看看这个命令改动会不会影响脚本调用方。” +- “帮我做一轮 CLI 行为契约审查。” diff --git a/skills/gitlink-cli-contract-guard/agents/openai.yaml b/skills/gitlink-cli-contract-guard/agents/openai.yaml new file mode 100644 index 0000000..89544b8 --- /dev/null +++ b/skills/gitlink-cli-contract-guard/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "CLI 契约守卫" + short_description: "检查 flags、help、JSON 输出和错误提示是否发生破坏性变化。" + default_prompt: "Use $gitlink-cli-contract-guard 审查这个 GitLink CLI 改动是否破坏了既有命令契约,重点检查参数、帮助、JSON 输出、错误提示和兼容性。" diff --git a/skills/gitlink-cli-contract-guard/assets/codex-skill-directory.png b/skills/gitlink-cli-contract-guard/assets/codex-skill-directory.png new file mode 100644 index 0000000000000000000000000000000000000000..17f97e089269efb8aa7ccef8a937debdd5a907c1 GIT binary patch literal 19992 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 G4ElelMZ9?c literal 0 HcmV?d00001 diff --git a/skills/gitlink-cli-contract-guard/assets/codex-validation-output.png b/skills/gitlink-cli-contract-guard/assets/codex-validation-output.png new file mode 100644 index 0000000000000000000000000000000000000000..896b32b6412ce546f3e45715e1ab1fe714d3940d GIT binary patch literal 119166 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 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000..42f7ca2 --- /dev/null +++ b/skills/gitlink-cli-contract-guard/examples/codex-validation-2026-06-26.md @@ -0,0 +1,42 @@ +# Codex 验证记录(2026-06-26) + +Agent 平台:Codex + +验证目标:确认 `gitlink-cli-contract-guard` 能对 GitLink CLI 改动执行兼容性审查,尤其关注 flags、帮助文案、JSON 输出契约、错误提示与中文编码质量。 + +验证结果如下: + +# PR #290 CLI 契约审查报告 + +审查对象:GitLink/gitlink-cli PR #290 + +结论:**未发现会破坏现有 CLI 契约的问题,可从契约角度通过。** + +#290 的改动范围只在 `skills/gitlink-contributor-insight` 下: + +- 删除 `SKILL.md` frontmatter 中的 `version: 1.1.0` +- 新增 4 张 Codex 验证截图 +- 新增 `examples/codex-validation-2026-06-25.md` + +### 契约面检查 + +| 契约面 | 结论 | +|---|---| +| flags / 默认值 | 未触碰 `cmd/`、`shortcuts/`,未新增/删除/改名任何 CLI flag | +| help 文案 | 未触碰命令注册、help、i18n、README,不影响 `--help` | +| JSON 输出结构 | 未触碰输出层、shortcut 返回结构或 envelope | +| 错误提示 | 未触碰 client、auth、错误处理或校验逻辑 | +| 中文编码 | 新增 Markdown 中文可读,未发现常见乱码模式;`git diff --check` 通过 | + +### 验证记录 + +- `git diff --name-status origin/master...HEAD`:确认仅 skill 文档和图片资产变更。 +- `git diff --check origin/master...HEAD`:通过。 +- `rg "�|锛|鈥|Ã|Â|绠|璇|涓|馃"`:未命中新增/修改文本。 +- `go test ./cmd/... ./shortcuts/...`:通过。 + +### 低风险备注 + +删除 `version: 1.1.0` 不影响 CLI 用户契约;它只可能影响 skill 元数据展示或外部 skill schema 约定。若仓库要求所有 skill 保留 `version` 字段,建议由 skill 校验流程单独确认,但这不是 CLI flags/help/JSON/error 契约破坏。 + +最终判断:**无 blocking/high/medium 契约问题。** diff --git a/skills/gitlink-cli-contract-guard/examples/encoding-and-doc-drift.md b/skills/gitlink-cli-contract-guard/examples/encoding-and-doc-drift.md new file mode 100644 index 0000000..526a932 --- /dev/null +++ b/skills/gitlink-cli-contract-guard/examples/encoding-and-doc-drift.md @@ -0,0 +1,19 @@ +# 示例:编码与文档漂移审查 + +用户请求: + +```text +Use $gitlink-cli-contract-guard 审查这个 PR 的中文提示、README 示例和错误文案是否有编码或行为漂移问题。 +``` + +期望动作: + +1. 检查用户可见中文文本是否出现 mojibake。 +2. 对照 README 和帮助示例,确认命令是否仍可用。 +3. 检查错误提示是否仍然可操作、可理解。 +4. 输出具体问题点和建议补测项。 + +输出要点: + +- 中文乱码默认按高风险处理。 +- README / 帮助 / 代码三者不一致时,要明确指出谁是事实来源、谁需要修正。 diff --git a/skills/gitlink-cli-contract-guard/examples/flag-compat-review.md b/skills/gitlink-cli-contract-guard/examples/flag-compat-review.md new file mode 100644 index 0000000..c51af99 --- /dev/null +++ b/skills/gitlink-cli-contract-guard/examples/flag-compat-review.md @@ -0,0 +1,19 @@ +# 示例:参数兼容性审查 + +用户请求: + +```text +Use $gitlink-cli-contract-guard 检查这个 PR 有没有破坏现有 flag、默认值或帮助文案。 +``` + +期望动作: + +1. 定位变更是否触及 `cmd/`、`shortcuts/`、`README`。 +2. 检查 flag 的 `Name`、`Short`、`Default`、`Required` 是否变化。 +3. 检查 `--help` 和示例命令是否同步。 +4. 输出按严重性排序的问题和缺失验证。 + +输出要点: + +- 明确指出是“新增能力”还是“破坏旧用法”。 +- 如果默认值改变,要说明对已有用户的影响。 diff --git a/skills/gitlink-cli-contract-guard/examples/json-output-review.md b/skills/gitlink-cli-contract-guard/examples/json-output-review.md new file mode 100644 index 0000000..541773c --- /dev/null +++ b/skills/gitlink-cli-contract-guard/examples/json-output-review.md @@ -0,0 +1,19 @@ +# 示例:JSON 输出契约审查 + +用户请求: + +```text +Use $gitlink-cli-contract-guard 看一下这个改动会不会破坏 `--format json` 输出,尤其是脚本依赖的字段。 +``` + +期望动作: + +1. 定位输出相关代码和测试。 +2. 判断字段名、字段类型、envelope 是否变化。 +3. 核对是否有测试覆盖机器可读输出。 +4. 给出“安全 / 需补验证 / 高风险”的结论。 + +输出要点: + +- 区分“新增字段”与“破坏字段”。 +- 如果只是怀疑,不要下过度确定的结论,要把缺失证据写清楚。 diff --git a/skills/gitlink-cli-contract-guard/references/contract-surfaces.md b/skills/gitlink-cli-contract-guard/references/contract-surfaces.md new file mode 100644 index 0000000..33f2c18 --- /dev/null +++ b/skills/gitlink-cli-contract-guard/references/contract-surfaces.md @@ -0,0 +1,115 @@ +# CLI 契约面映射 + +这个 skill 的第一步不是直接评论代码,而是先判断改动触到了哪类契约面。 + +## 1. 参数契约 + +典型文件: + +- `cmd/root.go` +- `cmd/*/*.go` +- `shortcuts/*/*.go` +- `shortcuts/common/runner.go` +- `shortcuts/common/types.go` + +重点观察: + +- `Name` +- `Short` +- `Default` +- `Required` +- `Bool` +- `Usage` + +高风险信号: + +- 旧 flag 被重命名或移除 +- 必填/可选规则变化 +- 默认值变化但没有说明 +- 示例命令仍使用旧 flag + +## 2. 帮助契约 + +典型文件: + +- `cmd/root.go` +- `cmd/root_test.go` +- `shortcuts/register.go` +- `internal/i18n/**` +- `README.md` +- `README.zh-CN.md` + +重点观察: + +- 命令分组和层级 +- `Use` / `Short` / `Long` +- 中英文帮助文案 +- `--help` 输出快照或断言 + +高风险信号: + +- 命令已改,但帮助仍描述旧行为 +- 中文或英文帮助不一致 +- i18n key 缺失导致回退或错误 + +## 3. 输出契约 + +典型文件: + +- `shortcuts/common/types.go` +- `internal/output/**` +- `shortcuts/*/*_test.go` +- `cmd/*/*_test.go` + +重点观察: + +- `--format json` +- envelope 结构 +- 字段名和字段类型 +- 是否仍适合脚本消费 + +高风险信号: + +- 字段重命名 +- 类型从字符串改为对象/数组 +- 原有必备字段消失 +- 错误输出结构不再稳定 + +## 4. 错误契约 + +典型文件: + +- `internal/client/**` +- `internal/auth/**` +- `cmd/**` +- `internal/i18n/**` + +重点观察: + +- `suggestFix` +- 缺参错误 +- 校验错误 +- header/path/query 渲染后行为 +- 中文提示编码 + +高风险信号: + +- 用户可见中文乱码 +- 错误变得不可操作 +- 渲染后非法 header/path 没有被拦截 + +## 5. 文档契约 + +典型文件: + +- `README.md` +- `README.zh-CN.md` +- `examples/**` +- 命令帮助中的示例 + +高风险信号: + +- 文档示例已不能运行 +- 示例使用了不存在的参数 +- 文档与实际默认值不一致 +- 文档新增内容出现乱码 diff --git a/skills/gitlink-cli-contract-guard/references/severity-rubric.md b/skills/gitlink-cli-contract-guard/references/severity-rubric.md new file mode 100644 index 0000000..55d0278 --- /dev/null +++ b/skills/gitlink-cli-contract-guard/references/severity-rubric.md @@ -0,0 +1,40 @@ +# CLI 契约问题分级 + +把发现的问题按下面的标准分级,避免把所有问题都说成“高风险”。 + +## blocking + +满足任一项即可: + +- 删除、重命名或破坏已有 flag / 命令路径 +- 破坏 `--format json` 的既有字段名或字段类型 +- 引入明确的中文乱码或编码损坏 +- 文档和帮助明显宣称支持,但实际命令已无法工作 +- 会导致自动化脚本或既有调用方高概率失败 + +## high + +- 新增功能影响了现有行为,但证据还不完整 +- header/path/query 渲染存在高风险边界问题 +- 错误提示退化,用户很难定位或修复问题 +- 默认值变化会显著改变用户结果,但没有迁移说明 +- 测试没有覆盖关键兼容面 + +## medium + +- 文档、帮助、示例与实际实现有轻度漂移 +- 中英文文案不同步 +- 新增参数的边界行为未覆盖 +- 输出是“扩展式变化”,但缺少明确验证 + +## low + +- 文案可读性问题 +- 示例可进一步收敛 +- 一致性或可维护性问题 + +## 结论规则 + +- 只要存在 `blocking`,结论就是“需要修改后再合并”。 +- 没有 `blocking` 但有多个 `high`,结论仍然偏向“需要补验证或修复”。 +- 只有 `medium/low` 时,可以给出“可合并,但建议跟进”的结论。