git-publish-releaselisted
Install: claude install-skill huangwb8/skills
# GitHub Release
## 与 bensz-collect-bugs 的协作约定
- 因本 skill 设计缺陷导致的 bug,先用 `bensz-collect-bugs` 规范记录到 `~/.bensz-skills/bugs/`,不要直接修改用户本地已安装的 skill 源码;若有 workaround,先记 bug,再继续完成任务。
- 只有用户明确要求“report bensz skills bugs”等公开上报时,才用本地 `gh` 上传新增 bug 到 `huangwb8/bensz-bugs`;不要 pull / clone 整个仓库。
智能分析项目历史变化,自动生成吸引人的 Release Notes 并发布到 GitHub。
## 触发条件
用户需要:
- 发布项目的新版本到 GitHub
- 创建 GitHub Release 并自动生成 Release Notes
- 推送某个 tag 到 GitHub 并创建 release
- 总结版本间的历史变化
## 你需要确认的输入
1. **目标 tag**(如 `v3.0.0`)
- 如未指定,列出最近 tags 供选择
2. **项目路径**(可选,默认当前工作目录)
> 认证通过 `gh auth login` 管理,无需手动配置 token。
## 前置检查
确认 `gh` CLI 已安装并已认证:
```bash
gh auth status
```
如未认证,提示用户运行:
```bash
gh auth login
```
## 工作流程
### 确认项目信息
```bash
# 获取 owner/repo
REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner)
```
### 获取最新 Release 信息
```bash
# 获取最近一次 release 的 tag
PREVIOUS_TAG=$(gh release list --limit 1 --json tagName -q '.[0].tagName')
```
- 如果存在历史 release,比较范围为:`PREVIOUS_TAG..TARGET_TAG`
- 如果是首个 release,比较范围为:从初始 commit 到 `TARGET_TAG`
### 分析历史变化
获取两个版本之间的 commit 历史:
```bash
# 如果有历史 release
git log ${PREVIOUS_TAG}..${TARGET_TAG} --pretty=format:"%h|%s|%an|%ad" --date=short
# 如果是首个 release
git log ${TARGET_TAG} --pretty=format:"%h|%s|%an|%ad" --date=short
```
### 生成 Release Notes
根据 commit 历史和项目特点,智能生成 Release Notes。
#### Release Notes 结构
```
🎉 [版本号] - [吸引人的标题]
[一句话总结本次发布的核心价值/意义]
🚀 核心亮点:
• [亮点1]
• [亮点2]
• [亮点3]
✨ 主要更新:
[类别1]
• 更新内容1
• 更新内容2
[类别2]
• 更新内容3
• 更新内容4
🔧 技术改进:
• 技术改进1
• 技术改进2