From 0a42350e2255e2a0966d81a563babc1512de39c2 Mon Sep 17 00:00:00 2001 From: csh Date: Thu, 13 Aug 2026 12:05:01 +0800 Subject: [PATCH] :recycle: refactor(commit-message): separate CI input validation --- skills/commit-message/SKILL.md | 36 ++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/skills/commit-message/SKILL.md b/skills/commit-message/SKILL.md index 721e818a..35d6a1dc 100644 --- a/skills/commit-message/SKILL.md +++ b/skills/commit-message/SKILL.md @@ -95,21 +95,8 @@ policy 的 `emoji.requirement_env` 未设置时使用 `required_by_default`; 对提交信息文件可使用 `--message-file `,但该模式只校验首行主题,不机械 校验 body/footer;结果中的 `Validation` 必须明确这一边界。如果项目指引要求使用 bundled policy 之外的策略,传入 `--policy `;否则让 validator 使用随 skill - 携带的 JSON。无参数运行检查 CI payload;只有未识别事件或本地调用才回退 `HEAD`, - 不能代替对新起草候选的校验。已识别的 push/PR 事件缺失或损坏 payload 时必须失败。 - PR 必须同时校验 `pull_request.title` 和本地 Git 中的 `base.sha..head.sha` 完整提交 - 范围;遇到 shallow repository、缺失范围元数据或 Git 对象时必须失败。PR CI 的 - workflow 编排必须来自可信 base/default branch:直接触发时使用 - `pull_request_target`,或先用 `pull_request` 准备输入、再由默认分支的 - `workflow_run` 执行校验。普通 `pull_request` 中来自 PR head 的 workflow 即使切到 - base worktree,也仍可被待审改动删除或绕过。可信 workflow 必须从 `base.sha` 的 - 可信 base worktree 运行 wrapper、validator 和 policy;只能读取 PR head 的 Git - 对象,不能在持有 secret 的步骤 checkout 或执行 PR head 内容。 - 普通 push 必须校验本地 Git 中的 `before..after` 完整范围;新分支 push 的 `before` - 为零对象时,必须用 payload 的目标 `refs/heads/*` 和本地分支图计算该分支相对其它 - 分支新增的完整提交集合。缺少有效范围元数据、目标引用或所需 Git 对象时必须失败; - push 所在仓库遇到 shallow repository 也必须失败。不能用可能截断的 payload - `commits` 数组或计数字段证明范围完整。 + 携带的 JSON。无参数的 CI 模式不能代替对新起草候选的 `--subject` 校验;其专用 + 约束见下文“CI 输入校验”。 5. **一致性复核** @@ -123,6 +110,25 @@ policy 的 `emoji.requirement_env` 未设置时使用 `required_by_default`; index 也不等于授权提交。未获得相应授权时,不运行 `git commit`,不暂存文件, 不修改 index。 +## CI 输入校验(仅无参数模式) + +无参数运行 validator 时检查 CI payload;只有未识别事件或本地调用才回退 `HEAD`。 +已识别的 push/PR 事件缺失或损坏 payload 时必须失败。 + +- **Pull request**:同时校验 `pull_request.title` 和本地 Git 中 + `base.sha..head.sha` 的完整提交范围;遇到 shallow repository、缺失范围元数据或 + Git 对象时失败。workflow 编排必须来自可信 base/default branch:直接触发使用 + `pull_request_target`,或先由 `pull_request` 准备输入、再由默认分支的 + `workflow_run` 执行。普通 `pull_request` 中来自 PR head 的 workflow 即使切到 base + worktree,仍可被待审改动删除或绕过。可信 workflow 必须从 `base.sha` 的可信 base + worktree 运行 wrapper、validator 和 policy;只能读取 PR head 的 Git 对象,不能在 + 持有 secret 的步骤 checkout 或执行 PR head 内容。 +- **Push**:校验本地 Git 中 `before..after` 的完整范围。新分支 push 的 `before` 为 + 零对象时,使用 payload 的目标 `refs/heads/*` 和本地分支图计算该分支相对其它分支 + 新增的完整提交集合。缺少有效范围元数据、目标引用或所需 Git 对象时失败;shallow + repository 也必须失败。不能用可能截断的 payload `commits` 数组或计数字段证明 + 范围完整。 + ## 输出约定 以下固定字段名保留英文,以兼容已有调用方;字段内容使用中文: