--- name: cl description: 审计自上次发版以来的提交,把遗漏的「用户可见变更」补进 CHANGELOG.md 的 [Unreleased];可选地把 [Unreleased] 收口成正式版本节 --- 帮我审计并维护 [CHANGELOG.md](../../../CHANGELOG.md),确保自上次发版以来的所有「用户可见变更」都被记录。规则以 [AGENTS.md](../../../AGENTS.md) 的 **Changelog** 章节为准。 参数约定: - **留空** → 只做「审计 + 补漏」:把遗漏的条目补进顶部的 `## [Unreleased]`,**不**收口、**不**改版本号。 - **传版本号**(如 `1.3.3`)→ 在补漏之后再做「发版收口」:把 `## [Unreleased]` 落成 `## <版本> - <今天日期>`,并在顶部补一个新的空 `## [Unreleased]`。 ## 工作流 ### 1. 划定审计区间 - 读取 [CHANGELOG.md](../../../CHANGELOG.md),找到最近一个已发布版本节(如 `## 1.3.2 - 2026-06-14`)和它的日期。 - 在终端用 `git log` 取出自该版本以来的提交(项目历史是线性的、**无 git tag**,按日期或上一条 release commit 划界即可)。例: `git log --no-pager --pretty=format:'%h %ad %s' --date=short --since=<上次发版日期>` - 同时读完整个现有 `## [Unreleased]`,记下已经记过的条目,避免重复。 ### 2. 逐条判定「记 / 不记」 对区间内每个提交,按 Changelog 章节的「记什么」判断: - **记**:新功能、行为变化、Bug 修复、面向用户的破坏性变更。 - **不记**:纯重构、测试、构建、CI、文档、内部依赖升级(除非影响用户的可感知行为)。 - 拿不准时,问自己「终端用户能不能感知到这条变更」——能则记,不能则跳过。 - 一个提交可能对应一条或多条用户可见变更;反之多个琐碎提交可合并成一条。 ### 3. 写入 [Unreleased] - 归入正确小节:`### 新增 / Added`、`### 变更 / Changed`、`### 修复 / Fixed`、`### 移除 / Removed`、`### 破坏性变更 / Breaking Changes`(按需创建,不重复建小节)。 - **双语排版**:每个小节正文先列**全部中文条目**,空一行,再列**全部对应英文条目**(顺序一一对应)。不要逐行中英并排,不用 `/` 在条目内分隔中英。 - 来自 issue 的变更在中、英两条末尾都附 `(#编号)`。 - 措辞从用户视角写,描述「带来什么变化」,不要照抄 commit message 的实现术语。 - **只动 `## [Unreleased]`**,绝不修改任何已发布版本节。 ### 4.(仅当传了版本号)发版收口 - 把 `## [Unreleased]` 标题改成 `## <版本号> - <今天的日期 YYYY-MM-DD>`。 - 在文件顶部、紧跟头部约定说明之后,补一个新的空 `## [Unreleased]`。 - **不要**在这里改 [package.json](../../../package.json) 的版本号——版本号 bump 由发版提交单独处理,本指令只管 Changelog。 ## 输出 - 先报告:审计了哪个区间(从哪个版本到 HEAD)、扫了多少提交。 - 列出本次**新增/合并**了哪些条目、**有意跳过**了哪些提交(一句话说明为什么跳过,便于我复核取舍)。 - 如果做了发版收口,说明落成了哪个版本节、日期是多少。 - 遇到拿不准要不要记、或某条变更措辞没把握的,直接告诉我,不要擅自下判断。