skills/writing-changelogs/SKILL.md
Use when 需要根据 git 历史生成或更新 CHANGELOG.md,尤其在发版前整理 Unreleased、版本区间、tag diff 或 Keep a Changelog 条目时。
npx skillsauth add snailuu/skill writing-changelogsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
CHANGELOG.md 是写给人的发布说明,不是 commit dump。
核心原则: 先确定发布边界,再从 Git 历史里提炼“用户可感知的显著变更”;任何直接输出 git log 或文件 diff 清单的做法都不合格。
CHANGELOG.mdgit tag、git diff、git log 生成 release notesUnreleased 或最近一个版本区间feat/fix/refactor 这类技术提交改写成用户可读的变更说明不要用于:
digraph changelog_range {
rankdir=TB;
node [shape=box];
start [label="开始"];
release [label="要写正式版本还是 Unreleased?", shape=diamond];
current_tag [label="当前版本已有 tag?", shape=diamond];
history_tag [label="仓库里已有历史 tag?", shape=diamond];
tagged_release [label="范围 = 上一个发布 tag..当前 tag"];
pending_release [label="范围 = 最近发布 tag..HEAD\n再确认目标版本号与发布日期"];
unreleased [label="范围 = 最近发布 tag..HEAD"];
manual [label="人工确认首次可发布提交、版本号、日期"];
start -> release;
release -> current_tag [label="正式版本"];
release -> history_tag [label="Unreleased"];
current_tag -> tagged_release [label="有"];
current_tag -> pending_release [label="没有"];
history_tag -> unreleased [label="有"];
history_tag -> manual [label="没有"];
}
上一个发布 tag..当前发布 tag最近发布 tag..HEAD,同时确认目标版本号与发布日期Unreleased:使用 最近发布 tag..HEAD不要默认从第一个 commit 开始写首版 changelog。
git log --first-parent目标: 候选项尽量接近“一个 PR / 一个主题 = 一条 changelog 项”。
commit message 只能提供线索,不能直接当事实。
至少交叉验证以下信息:
优先使用:
git diff --name-status -M <range>git diff --stat <range>git show --stat <sha>必要时再看 patch 摘要。
默认跳过以下内容,除非 diff 显示它确实改变了用户行为:
docstestcistyle处理规则:
revert,前后都不写,只保留净效果| 信号 | 分类 |
|---|---|
| feat、add、support、新增命令/接口/能力 | Added |
| 行为调整、默认值变化、性能变化、兼容性变化 | Changed |
| deprecate、标记过时、迁移提示 | Deprecated |
| remove、drop、停止支持、删除能力 | Removed |
| fix、bugfix、hotfix、回归修复 | Fixed |
| security、权限、鉴权、输入清洗、漏洞修复 | Security |
优先级从高到低:
BREAKING CHANGE:、feat!:、fix!: 等显式信号## [Unreleased]按以下顺序取数:
git taggit log --first-parentgit diff --name-status -M 与 git diff --statgit show --stat <sha>BREAKING CHANGE: 等显式信号默认不要依赖:
# 查看发布 tag
git tag --sort=-creatordate
# 查看主线候选项
git log --first-parent --format='%H%x09%s' <range>
# 查看主线正文(适合 merge commit 仓库)
git log --first-parent --format='%H%n%s%n%b%n---' <range>
# 校验改动范围和类型
git diff --name-status -M <range>
git diff --stat <range>
# 查看单个候选项的概览
git show --stat <sha>
# Changelog
All notable changes to this project will be documented in this file.
## [Unreleased]
### Added
- 支持……
## [1.4.0] - 2026-03-09
### Changed
- 调整……
### Fixed
- 修复……
更多完整场景示例见 references/examples.md,优先参考:
UnreleasedBREAKING CHANGE 的版本说明遇到以下情况必须先确认,不要擅自假设:
Unreleased、0.x 还是 1.xgit log v1.2.0..HEAD 粘进 changelogdocs、test、ci 噪音写成版本亮点revertdevelopment
Semantic Design System Skill for Google Stitch. Generates agent-friendly DESIGN.md files that enforce premium, anti-generic UI standards — strict typography, calibrated color, asymmetric layouts, perpetual micro-motion, and hardware-accelerated performance.
development
Upgrades existing websites and apps to premium quality. Audits current design, identifies generic AI patterns, and applies high-end design standards without breaking functionality. Works with any CSS framework or vanilla CSS.
development
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
tools
Clean editorial-style interfaces. Warm monochrome palette, typographic contrast, flat bento grids, muted pastels. No gradients, no heavy shadows.