关于 write-release-notes
为已发布的 tldraw SDK 版本编写完整发布说明的技能,面向维护者和贡献者。它涵盖 PR 与补丁版本收集、变更分类,以及每项破坏性变更的迁移指南。
主要功能
- 01收集版本与合并 PR 信息
- 02筛选合入 main 的 PR
- 03归纳功能、API 变更和修复
- 04为破坏性变更编写迁移指南
- 05核验链接、归属和章节顺序
适用场景
- 01整理 SDK 版本发布说明
- 02汇总某版本的合并 PR
- 03记录 API 变更与问题修复
- 04为升级者编写迁移步骤
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tldraw/ tldraw --skill write-release-notes安装后在 Claude Code 中输入/write-release-notes确认已加载。
详细介绍
编写发布说明
本技能介绍如何为已发布的 tldraw SDK 版本撰写一篇完整的发布说明文章。
位置
所有发布文件都位于 apps/docs/content/releases/。
| 文件 | 用途 |
|---|---|
next.mdx | 累积即将发布的版本中的变更 |
vX.Y.0.mdx | 已发布的版本(除补丁新增外不可修改) |
流程
1. 确定版本
获取版本号并找到 GitHub 发布:
gh release view v4.3.0
这会显示发布日期、标签以及 GitHub 上的任何发布说明。
2. 找出该版本中的所有 PR
列出上一个版本与本版本之间合并的 PR:
# Find commits between releases
git log v4.2.0..v4.3.0 --oneline --merges
# Or use gh to list PRs
gh pr list --state merged --base main --search "merged:2024-01-01..2024-02-01"
3. 获取 PR 详情
对于每个 PR,获取完整详情:
gh pr view <PR_NUMBER> --json title,body,labels,author,baseRefName
关注:
- PR 正文中的
### Release notes部分 - PR 正文中的
### API changes部分 - 标明类别的标签(api、bugfix、improvement 等)
- PR 中是否出现 "breaking"
重要: 仅包含 baseRefName 为 main 的 PR。合并到功能分支(例如 default-shape-customization)的 PR 尚未发布——当功能分支本身合并到 main 时它们才会被纳入。
4. 找出补丁版本
列出此次要版本的所有补丁版本:
gh release list | grep "v4.3"
对于每个补丁版本,找出其 PR:
git log v4.3.0..v4.3.1 --oneline --merges
5. 撰写文章
按照风格指南创建 apps/docs/content/releases/vX.Y.0.mdx。
- 撰写包含版本、日期和关键词的 frontmatter
- 撰写 1-2 句简介,概述亮点
- 为主要功能和破坏性变更创建重点章节
- 列出 API 变更、改进和缺陷修复
- 如适用,添加补丁版本章节
- 添加 GitHub 发布链接
6. 为每个破坏性变更撰写迁移指南
文章中的每个 💥 都需要一份迁移方案。tldraw-migrate 技能以这些方案为依据——它有意不在自己的 SKILL.md 中重复它们,因为特定版本的知识应放在引入该变更的破坏性变更旁边。如果方案缺失,执行升级的 Agent 和贡献者就必须从类型定义中逆向推导。
有两种可接受的形式:
对于有自己重点章节的破坏性变更(重命名、被替换的 API、新模式),在该章节下添加一个 <details><summary>Migration guide</summary> 块。包含修改前后的代码,并指出任何静默编译陷阱(类型检查不会拒绝的 props、带有可选新参数的签名等):
### 💥 Custom themes with display values
[Description of what changed and why]
<details>
<summary>Migration guide</summary>
`getDefaultColorTheme()` and `DefaultColorThemePalette` have been removed. Use `editor.getCurrentTheme().colors[colorMode]` instead:
```tsx
// Before
const theme = getDefaultColorTheme({ isDarkMode })
// After
const theme = editor.getCurrentTheme()
const colors = theme.colors[editor.getColorMode()]
```
</details>
对于 API 变更列表中的单行 💥 条目,条目本身必须包含方案——内联写明替代项及任何注意事项:
- ✅
💥 Replace TLDrawShapeSegment.points with the helper getPointsFromDrawSegment(segment, scaleX, scaleY) so segment points respect the shape's current scale. - ❌
💥 Remove TLDrawShapeSegment.points.(无替代项 → 读者只能猜测)
被移除且没有替代项的符号是文档缺陷——找到公开替代项,或者如果确实没有,就明确说明,这样读者就知道应删除调用处,而不是去寻找重命名。
特殊情况——@public → @internal 降级: 这些符号可以编译,但会从公开类型中消失。对于导入了该符号的使用者来说,它们仍是破坏性变更。将其视为移除:用 💥 标记,写明公开替代项,并明确告诉读者不要借助模块扩充来重新暴露被降级的符号。
7. 验证
检查:
- 所有重要 PR 都已涵盖
- PR 链接正确且格式规范
- 社区贡献者已署名
- 破坏性变更已用 💥 标记
- 每个
💥都有迁移指南块或内联替代项(运行grep -nE '💥' apps/docs/content/releases/<file>.mdx并逐一核对每个条目/章节) - 各章节顺序正确
参考
- 风格指南: 有关发布说明文章应包含的内容以及如何设置格式的指导,请参阅
../shared/release-notes-guide.md。