← ClaudeAtlas

git-publish-releaselisted

当用户明确要求"发布项目到 GitHub"、"创建 GitHub Release"或"生成 Release Notes"时使用。智能分析 tag 间历史变化,生成专业且吸引人的 Release Notes,自动创建 GitHub Release。支持首次发布、常规版本、预发布版本(alpha/beta/rc),自动识别 prerelease 标记。
huangwb8/skills · ★ 36 · Code & Development · score 85
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