gitlink-cli/skills/gitlink-cli-contract-guard/references/contract-surfaces.md

116 lines
1.9 KiB
Markdown

# 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/**`
- 命令帮助中的示例
高风险信号:
- 文档示例已不能运行
- 示例使用了不存在的参数
- 文档与实际默认值不一致
- 文档新增内容出现乱码