git-publish-release
当用户明确要求"发布项目到 GitHub"、"创建 GitHub Release"或"生成 Release Notes"时使用。智能分析 tag 间历史变化,生成专业且吸引人的 Release Notes,自动创建 GitHub Release。支持首次发布、常规版本、预发布版本(alpha/beta/rc),自动识别 prerelease 标记。
Install
npx skills add https://github.com/huangwb8/skills/tree/main/skills/alpha/git-publish-release
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install huangwb8-skills@llmmart
git clone https://github.com/huangwb8/skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole huangwb8/skills collection as a plugin from our marketplace. Git is the plain clone.
README
GitHub Release 发布
智能分析项目历史变化并生成吸引人的 Release Notes;明确要求发布/创建 Release 时发布到 GitHub,单独请求 notes 或历史总结时仅生成预览,除非随后确认发布。
✨ 特性
- 🤖 智能分析:AI 驱动的 commit 历史分析,自动提炼核心价值
- 📝 专业模板:生成简洁、有效、有煽动性的 Release Notes
- 🚀 一键发布:明确要求发布/创建 Release 时自动创建 GitHub Release
- 🎯 分类清晰:自动分类新功能、Bug 修复、性能优化等
- 🌐 联网验证:与 GitHub API 集成,获取最新 release 信息
📋 使用场景
当你需要:
- 发布新版本到 GitHub
- 创建 GitHub Release 并生成 Release Notes
- 推送 tag 并自动创建 release
- 总结版本间的历史变化
🚀 快速开始
前置要求
GitHub CLI:需要安装并认证
ghCLI- 安装:
brew install gh(macOS)或访问 https://cli.github.com - 认证:
gh auth login
- 安装:
Git 仓库:项目必须是 Git 仓库,且有 GitHub remote
使用方式
在 Claude Code 中使用以下任一方式触发:
"帮我发布 v3.0.0 到 GitHub"
"创建一个 GitHub Release,tag 是 v2.5.0"
"发布当前项目到 GitHub,版本 v1.0.0"
"我要 release v4.0.0-beta.1"
明确要求发布/创建 Release 时,技能会自动:
- 确认项目路径和 tag
- 获取最新 release 信息
- 分析历史变化
- 生成专业的 Release Notes
- 发布到 GitHub
如果只要求生成 Release Notes 或总结历史变化,技能只输出文案预览,不调用 gh release create;需要发布时再明确确认。
📖 使用示例
示例 1:首次发布
你:发布 v1.0.0 到 GitHub
技能:检测到这是首次发布,将创建项目第一个 Release。
[生成首次发布专用 Release Notes]
✅ Release 发布成功!
示例 2:常规版本发布
你:发布 v2.3.0
技能:将比较 v2.2.0 和 v2.3.0 之间的变化...
[分析 23 个 commits,生成分类 Release Notes]
✅ Release 发布成功!
示例 3:预发布版本
你:发布 v3.0.0-beta.1
技能:检测到这是预发布版本(beta),将标记为 prerelease。
[生成 Pre-release 专用 Release Notes]
✅ Release 发布成功!
示例 4:指定项目路径
你:为 /path/to/project 发布 v1.5.0
技能:正在处理 /path/to/project...
[在该项目下执行发布流程]
✅ Release 发布成功!
🎨 Release Notes 风格
生成的 Release Notes 具有以下特点:
结构清晰
🎉 版本号 - 吸引人的标题
一句话价值定位
🚀 核心亮点
• 亮点1
• 亮点2
✨ 主要更新(分类)
• 更新内容
• 更新内容
📋 完整变更日志
[链接]
语言风格
- 简洁有力:每个要点不超过一行
- 价值导向:强调"为什么"而非仅仅"是什么"
- 情感化表达:使用"革命性"、"突破性"等词汇
- 数字量化:用具体数字说明改进幅度
- 用户视角:用用户能理解的语言
自动分类
| 类别 | 图标 | 关键词 |
|---|---|---|
| 新功能 | ✨ | feat, feature, add, new |
| Bug 修复 | 🐛 | fix, bugfix, resolve |
| 性能优化 | ⚡ | perf, performance, optimize |
| 技术改进 | 🔧 | refactor, improve |
| 文档更新 | 📝 | docs, document, readme |
| 安全更新 | 🔐 | security, fix vulnerability |
⚙️ 配置选项
认证
通过 gh auth login 管理,无需手动配置 token。运行以下命令检查认证状态:
gh auth status
Git Remote 格式支持
- HTTPS:
https://github.com/owner/repo.git - SSH:
git@github.com:owner/repo.git
🛠️ 故障排查
问题:gh 未认证
解决方案:
gh auth login
问题:Tag 不存在
解决方案:先创建 tag
git tag v1.0.0
git push origin v1.0.0
问题:权限不足
解决方案:运行 gh auth status 检查认证状态及仓库权限
问题:Release 已存在
解决方案:技能会询问是否覆盖,选择更新现有 release
📚 相关资源
WHICHMODEL - 模型选择最佳实践
最后更新:2026-01-25
披露信息
- 覆盖厂商:Anthropic, OpenAI(2/6 = 33%)
- 来源构成:社区 70%, 官方 20%, 技术博客 10%
- 数据时效:2024-10 至 2026-01
- 局限性:未覆盖国产模型,未独立测试 Release Notes 生成质量
场景化建议
场景 1:标准版本发布(最常见)
触发条件:常规版本发布,需要生成 Release Notes
| 项目 | 建议 |
|---|---|
| 推荐模型 | Claude Haiku 4.5 或 Sonnet 4.5 |
| 推理强度 | low-medium |
| 预期成本 | ~$0.005-0.05/次 |
理由:
- Release Notes 生成主要是文本处理和模式匹配任务
- Haiku 成本最低,适合简单版本发布
- Sonnet 在 commit 分类和内容整理上表现更好
- 社区反馈 显示 Haiku 在简单任务中表现优异
避免:复杂大规模版本(100+ commits)建议用 Sonnet
来源:Haiku System Card + Reddit 社区讨论
场景 2:大规模版本发布
触发条件:
- 大规模版本(100+ commits)
- 跨越多个功能模块
- 需要深度理解业务价值
| 项目 | 建议 |
|---|---|
| 推荐模型 | Claude Sonnet 4.5 |
| 推理强度 | medium |
| 预期成本 | ~$0.03-0.15/次 |
理由:
- Sonnet 在代码分析和内容整理上表现出色
- 更适合需要"中等复杂度理解"的场景
- 社区对比 显示 Sonnet 在复杂场景下的优势
- 大规模 commit 历史分析需要一定的推理能力
避免:简单版本(<20 commits)不需要 Sonnet,用 Haiku 即可
来源:社区对比讨论 + 官方模型选择指南
场景 3:首次发布
触发条件:
- 项目首次发布(v1.0.0)
- 需要生成完整的初始介绍
- 需要创造性撰写项目定位
| 项目 | 建议 |
|---|---|
| 推荐模型 | Claude Sonnet 4.5 |
| 推理强度 | medium |
| 预期成本 | ~$0.05-0.20/次 |
理由:
- 首次发布需要理解和总结整个项目
- 需要创造性撰写吸引人的标题和价值定位
- Sonnet 在内容组织和语言表达上更有优势
- 首次发布是项目的"第一印象",值得投入更多资源
避免:如果不是首次发布,优先使用 Haiku
来源:社区反馈 + 官方文档
对比总结
| 模型 | 最适合 | 最不适合 | 相对成本 | 相对速度 | 推荐度 |
|---|---|---|---|---|---|
| Haiku 4.5 | 小版本发布、常规版本 | 大规模版本、首次发布 | $ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Sonnet 4.5 | 大规模版本、首次发布 | 小版本(浪费) | $$$ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Opus 4.5 | 不推荐 | 所有场景 | \($\) | ⭐⭐ | ⭐ |
说明:
- Haiku 覆盖 80% 的版本发布场景(小版本、常规版本)
- Sonnet 用于大规模版本(100+ commits)和首次发布
- Opus 对此任务完全不必要,成本过高且无性能提升
通用原则
- 默认从 Haiku 开始:80% 的版本发布任务 Haiku 足够,无需升级
- 复杂度判断:根据 commit 数量选择模型
- <20 commits:Haiku
- 20-100 commits:Haiku 或 Sonnet
-
100 commits:Sonnet
- 首次发布:Sonnet
- 成本敏感:版本发布是高频操作,Haiku 的成本优势明显
- 速度优先:Haiku 的 <1 秒响应时间明显优于 Sonnet 的 3-5 秒
- 避免过度设计:Release Notes 生成主要是模式匹配和文本整理,Haiku 完全胜任
⚠️ 争议点
Haiku vs Sonnet:Release Notes 生成真的可以用 Haiku 吗?
| 观点 | 支持者 | 理由 |
|---|---|---|
| Haiku 足够 | Reddit 社区 | Release Notes 生成是简单任务,Haiku 在文本处理任务中表现稳定 |
| Sonnet 更保险 | 部分开发者 | 担心 Haiku 在大规模版本分析时出错 |
数据支持:
建议:
- 默认使用 Haiku:小版本和常规版本发布,Haiku 完全胜任
- 仅在以下情况升级 Sonnet:
- 大规模版本(>100 commits)
- 首次发布(需要项目理解和创造性撰写)
- 跨多个功能模块的复杂版本
- Haiku 出现理解错误时(极少见)
更新记录
- 2026-01-25:首次调研,覆盖 Anthropic/OpenAI
- 建议:2026-07 重新调研(6 个月后)
来源链接
官方文档:
社区讨论:
- Sonnet 4.5 vs Haiku 4.5 vs Opus 4.1
- Haiku 4.5 better than Sonnet? (Reddit)
- Claude Haiku 4.5: Features, Testing Results, and Use Cases
技术博客:
🤝 贡献
欢迎反馈和改进建议!请提交 issue 或 PR。
📄 许可
MIT License
Skill manifest
GitHub Release
目标
当用户明确要求"发布项目到 GitHub"、"创建 GitHub Release"或"生成 Release Notes"时使用。智能分析 tag 间历史变化并生成专业的 Release Notes;明确发布/创建请求时自动创建 GitHub Release,单独的 notes/历史总结请求仅生成预览,除非用户随后确认发布。支持首次发布、常规版本、预发布版本(alpha/beta/rc),自动识别 prerelease 标记。
流程
输入
触发条件
用户需要:
- 发布项目的新版本到 GitHub
- 创建 GitHub Release 并自动生成 Release Notes
- 推送某个 tag 到 GitHub 并创建 release
- 总结版本间的历史变化
你需要确认的输入
目标 tag(如
v3.0.0)- 如未指定,列出最近 tags 供选择
项目路径(可选,默认当前工作目录)
任务输出目录(宿主可设置
TASK_OUTPUT_DIR,指向本轮已声明的./.bensz-api/task-.../git-publish-release/output/;未设置时临时 notes 使用 OS 临时目录并立即清理)
认证通过
gh auth login管理,无需手动配置 token。
明确要求“发布项目到 GitHub”或“创建 GitHub Release”时,按配置执行远程发布;仅要求“生成 Release Notes”或“总结版本间的历史变化”时只生成文案/预览,不调用 gh release create,除非用户随后明确确认发布。release.require_confirmation 的含义是:明确发布/创建请求可作为本次授权,覆盖已有 Release 仍按下方错误处理规则询问;不得把文案生成请求视为远程发布授权。
执行步骤
工作流程
确认项目信息
# 获取 owner/repo
REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner)
获取最新 Release 信息
# 获取最近一次 release 的 tag
PREVIOUS_TAG=$(gh release list --limit 1 --json tagName -q '.[0].tagName')
- 如果存在历史 release,比较范围为:
PREVIOUS_TAG..TARGET_TAG - 如果是首个 release,比较范围为:从初始 commit 到
TARGET_TAG
分析历史变化
获取两个版本之间的 commit 历史:
# 如果有历史 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
📋 完整变更日志:
[简略说明获取方式或列出主要 commits]
标题撰写原则
- 情感化表达:使用"革命性"、"突破性"、"里程碑"等词汇
- 场景化描述:说明这个版本解决什么问题、带来什么价值
- 时效性关联:如"为 2026 年就绪"、"拥抱新范式"
内容分类原则
根据 commit 信息自动分类:
| 类别图标 | 类别名称 | Commit 关键词示例 |
|---|---|---|
| 🚀 | 核心亮点 | breakthrough, major, feature |
| ✨ | 新功能 | add, new, feature |
| 🐛 | Bug 修复 | fix, bugfix, resolve |
| 🔧 | 技术改进 | refactor, optimize, improve |
| 📝 | 文档更新 | docs, readme, guide |
| 🔐 | 安全更新 | security, fix vulnerability |
| 💥 | 破坏性变更 | breaking, deprecate |
语言风格
- 简洁有力:每个要点不超过一行
- 价值导向:强调"为什么"而非仅仅"是什么"
- 用户视角:用用户能理解的语言,避免技术术语堆砌
- 适当煽动:使用感叹号、emoji 营造氛围,但不过度
判断是否为 Prerelease
根据 tag 名称自动判断:
- 包含
alpha,beta,rc,pre等标识 →prerelease: true - 否则 →
prerelease: false
按授权创建 GitHub Release
仅在用户明确要求发布/创建 Release,或在预览后明确确认发布时执行以下命令;单独的 Release Notes/历史总结请求不得执行此步骤。
# 将 Release Notes 写入临时文件(避免 shell 转义问题)
# TASK_OUTPUT_DIR 可由宿主设置为本次任务已声明的
# ./.bensz-api/task-.../git-publish-release/output/ 目录;未注入时仅使用
# 一次性的 OS 临时目录,并在流程结束后清理,不把它当作任务产物。
NOTES_DIR="${TASK_OUTPUT_DIR:-${TMPDIR:-/tmp}}"
mkdir -p "$NOTES_DIR"
NOTES_FILE=$(mktemp "$NOTES_DIR/release-notes-XXXXXX.md")
cat > "$NOTES_FILE" << 'NOTES_EOF'
[生成的 Release Notes 内容]
NOTES_EOF
# 正式版
gh release create "$TARGET_TAG" \
--title "$TARGET_TAG" \
--notes-file "$NOTES_FILE"
# 预发布版(tag 含 alpha/beta/rc/pre 时)
gh release create "$TARGET_TAG" \
--title "$TARGET_TAG" \
--notes-file "$NOTES_FILE" \
--prerelease
# 清理临时文件
rm -f "$NOTES_FILE"
参考资源
- Release Notes 生成策略:references/release-notes-strategy.md
- Release Notes 示例模板:references/release-templates.md
- GitHub CLI 文档:https://cli.github.com/manual/gh_release_create
输出
输出格式
完成发布后,向用户输出:
✅ Release 发布成功!
📍 Release URL: [release 链接]
🏷️ Tag: [tag 名称]
📅 发布时间: [时间]
📝 Release Notes 预览:
[生成的前 10 行 notes]
如果用户只要求 Release Notes 或历史总结,输出文案预览及对应的历史范围,不报告 Release URL,也不宣称已发布。
输出管理
BenszAPI 任务工作区
校验
前置检查
确认 gh CLI 已安装并已认证:
gh auth status
如未认证,提示用户运行:
gh auth login
失败与恢复
错误处理
| 场景 | 处理方式 |
|---|---|
gh 未安装 |
提示安装:brew install gh 或访问 https://cli.github.com |
gh 未认证 |
提示运行 gh auth login |
| Tag 不存在 | 提示用户可用的 tags 列表 |
| 网络请求失败 | 重试 3 次,仍失败则报错并给出手动创建指南 |
| 权限不足 | 提示检查 gh auth status 及仓库权限 |
| Release 已存在 | 询问用户是否覆盖(使用 gh release edit) |
实现注意事项
- 跨平台兼容:始终使用正斜杠
/处理路径 - Notes 转义:使用
--notes-file传递临时文件,避免 shell 特殊字符转义问题 - Git 远程解析:
gh repo view自动处理 HTTPS 和 SSH 两种 remote URL 格式 - 认证管理:
ghCLI 使用系统 keychain 或~/.config/gh/hosts.yml存储凭证,无需手动管理 token
约束
公共硬约束
本块由 docs/templates/skill-common-constraints.md 统一维护;每个 SKILL.md 的 ## 约束 必须逐字同步本块,不得在副本中改写公共规则。
- 任务需要落盘时,使用唯一的
./.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/根目录;共享材料放入shared/,Skill 专属材料放入该 Skill 的input/、output/、log/。 - 正式交付物、源代码和正式计划按项目约定保存,不写入任务工作区;未经授权不覆盖、删除、迁移或远程写入。
- 项目维护变更检查 BAC 可用性并记录需求、AI 产出、工具结果、文件改动和验证摘要;BAC 只做过程审计,不替代署名、责任或合规判断。
- 不记录 API Key、访问令牌、密码、Cookie、环境/凭据文件、私有 Prompt、身份信息、本地用户名、主机名或不必要的大体积原始数据。
- 文件路径必须规范化并限制在授权项目范围内;外部 URL、子进程和网络访问遵循最小权限,防止路径遍历、SSRF 和命令注入。
- Skill 版本唯一记录在自身
config.yaml:skill_info.version;公开 API、协议、目录或配置变更同步文档与CHANGELOG.md。 bensz-collect-bugs是一个 Agent Skill;仅将 Bensz Agent Skill 或 Bensz 基础设施本身的设计缺陷交给它。先脱敏写入~/.bensz-skills/bugs/,当前任务不中断,只有用户明确要求才公开上报,禁止直接修改用户已安装的 Skill 源码。
Files (skills)
-
references
-
release-notes-strategy.md 6.2 KB
# Release Notes 生成策略 ## 核心原则 ### 1. 价值导向,非变更罗列 Release Notes 不是 changelog,而是**价值传达**。 | ❌ 错误示例 | ✅ 正确示例 | |-----------|-----------| | 修复了 3 个 bug,新增了 2 个功能 | 彻底解决长文档渲染卡顿问题,性能提升 300% | | 更新了依赖版本 | 全面拥抱最新技术栈,兼容性与安全性双重升级 | | 重构了代码结构 | 代码库全面模块化,维护效率显著提升 | ### 2. 情感化表达,营造氛围 使用情感化的词汇,让用户感受到产品的活力和进步。 **常用词汇库**: | 类别 | 词汇 | |------|------| | **革命性** | 革命性、突破性、里程碑、重塑、重新定义 | | **速度/效率** | 极速、显著提升、大幅优化、飞跃式进步 | | **稳定性** | 稳如磐石、企业级、生产就绪、全面加固 | | **易用性** | 零门槛、开箱即用、丝滑体验、人性化 | | **前瞻性** | 面向未来、拥抱新范式、为 X 年就绪 | ### 3. 结构化组织,层次分明 使用清晰的层级结构,让读者快速抓住重点。 ``` 🎉 标题(版本 + 核心) ├── 一句话总结 ├── 🚀 核心亮点(3-5 个) ├── ✨ 主要更新(分类) └── 📋 完整变更日志 ``` ## 分类策略 ### 自动分类规则 根据 commit message 的前缀和关键词自动分类: | 前缀 | 分类 | 图标 | 示例 | |------|------|------|------| | `feat:`, `feature:` | 新功能 | ✨ | ✨ 新增 AI 辅助写作功能 | | `fix:`, `bugfix:` | Bug 修复 | 🐛 | 🐛 修复 PDF 导出格式错误 | | `perf:`, `performance:` | 性能优化 | ⚡ | ⚡ 启动速度提升 50% | | `refactor:`, `refactor` | 重构 | 🔧 | 🔧 重构数据层架构 | | `docs:`, `document:` | 文档 | 📝 | 📝 完善快速入门指南 | | `test:`, `testing:` | 测试 | ✅ | ✅ 新增 100+ 单元测试 | | `style:`, `format:` | 样式 | 💄 | 💄 统一代码风格 | | `chore:`, `build:` | 构建/工具 | 🔨 | 🔨 升级构建工具链 | | `security:`, `sec:` | 安全 | 🔐 | 🔐 修复 XSS 漏洞 | | `breaking:` | 破坏性变更 | 💥 | 💥 移除旧版 API | ### 语义分组 对于无法从前缀判断的 commit,使用关键词语义分析: **新功能组**:add, new, create, introduce **改进组**:improve, optimize, enhance, update **修复组**:fix, resolve, handle, catch ## 标题撰写策略 ### 公式 ``` 🎉 [版本号] - [情感化标题] [价值定位句] ``` ### 标题模板库 | 场景 | 模板 | 示例 | |------|------|------| | **重大更新** | 🎉 v{version} - {核心能力} 革命性发布 | 🎉 v3.0.0 - Vibe Writing 革命性发布 | | **性能飞跃** | 🚀 v{version} - 性能飞跃,{具体提升} | 🚀 v2.5.0 - 性能飞跃,响应速度提升 300% | | **稳定性** | 🛡️ v{version} - 企业级稳定性,生产就绪 | 🛡️ v1.8.0 - 企业级稳定性,生产就绪 | | **用户体验** | ✨ v{version} - 极致体验,零门槛上手 | ✨ v2.0.0 - 极致体验,零门槛上手 | | **里程碑** | 🏆 v{version} - {里程碑} 重要里程碑 | 🏆 v4.0.0 - 10 万+ 用户重要里程碑 | | **年度就绪** | 🎯 v{version} - 为 {年份} 全面就绪 | 🎯 v5.0.0 - 为 2026 年全面就绪 | ### 价值定位句模板 | 类型 | 模板 | 示例 | |------|------|------| | **问题解决** | 彻底解决{痛点},{价值} | 彻底解决长文档渲染卡顿,体验丝般顺滑 | | **范式转变** | 拥抱{新范式},{愿景} | 拥抱 AI 驱动科研写作新范式 | | **能力提升** | {核心能力}全面升级,{价值} | Skills 体系全面升级,兼容性与扩展性双重飞跃 | | **时间节点** | 为{时间}就绪,{准备内容} | 为 2026 国自然全面就绪,AI 辅助写作全栈就绪 | ## 内容润色技巧 ### 1. 数字化表达 | ❌ 平淡表达 | ✅ 数字化表达 | |-----------|-------------| | 性能提升了 | 性能提升 300% | | 新增了很多功能 | 新增 15+ 核心功能 | | 修复了一些 bug | 修复 23 个用户反馈问题 | | 支持更多平台 | 支持 5 大主流平台 | ### 2. 对比法 | ❌ 平淡表达 | ✅ 对比表达 | |-----------|-------------| | 性能更好 | 相比上一代,性能提升 3 倍 | | 更稳定 | 99.9% 可用性,企业级稳定 | | 更快 | 从 30s 缩短到 2s,提速 15 倍 | ### 3. 场景化 | ❌ 技术语言 | ✅ 场景化语言 | |-----------|-------------| | 新增异步处理机制 | 再也不用等待,后台静默处理 | | 优化内存占用 | 即使处理超大文件,内存占用依然很低 | | 新增缓存层 | 第二次打开,瞬间呈现 | ### 4. 用户视角 | ❌ 开发者视角 | ✅ 用户视角 | |-------------|-------------| | 重构了 API 层 | 更强大的功能,更简单的调用 | | 优化了数据库查询 | 查找速度提升 10 倍,告别等待 | | 新增日志系统 | 遇到问题?一键诊断,快速解决 | ## 长度控制 | 版本类型 | 建议长度 | 核心亮点数量 | 主要更新数量 | |---------|---------|------------|------------| | **Major (x.0.0)** | 详尽版 | 5-7 个 | 8-12 个 | | **Minor (x.y.0)** | 标准版 | 3-5 个 | 5-8 个 | | **Patch (x.y.z)** | 精简版 | 2-3 个 | 3-5 个 | ## 特殊场景处理 ### 首次发布 (v1.0.0) ``` 🎉 v1.0.0 - {项目名称} 正式发布! 经过 {时间} 的精心打磨,{项目名称} 终于和大家见面了! 🌟 为什么选择 {项目名称}? • {核心价值1} • {核心价值2} • {核心价值3} 🚀 核心功能: • {功能1} • {功能2} • {功能3} 🎯 适用场景: • {场景1} • {场景2} 🙏 致谢 感谢所有参与测试和反馈的用户! 📚 快速开始 {快速开始链接或简短说明} ``` ### Pre-release (alpha/beta/rc) 在标题和内容中明确标识测试版本: ``` 🧪 v2.0.0-beta.1 - 测试版本,诚邀体验! 注意:这是一个预发布版本,可能存在不稳定因素。 ✨ 新功能预览: • {新功能1} • {新功能2} 🐛 已知问题: • {已知问题1} 📢 反馈渠道 {反馈方式} ``` ### 紧急修复 ``` 🚨 v1.2.1 - 紧急修复 修复了一个影响 {影响范围} 的严重问题。 🐛 问题修复: • {问题描述} • {影响范围} • {修复方式} 建议所有用户立即升级! ``` -
release-templates.md 9.1 KB
# Release Notes 模板示例 ## 模板 1:重大版本发布(革命性) ``` 🎉 v3.0.0 - Vibe Writing 革命性发布 为 2026 年国自然全面就绪!拥抱 AI 驱动的科研写作新范式! 🚀 核心亮点: • Vibe Coding 范式重构:AI 驱动、模块化技能、人机协作,为科研写作树立新标杆 • 2026 国自然模板就绪:青年基金 ✅ | 面上项目 ✅ | 地区基金 ⏸️ • 强大 Skills 体系:3 个稳定 AI 技能,兼容 Claude Code 和 OpenAI Codex CLI • AI 辅助写作技能:立项依据生成、研究内容规划、可行性分析、特色与创新提炼 • 完美工具链:VS Code + LaTeX Workshop + Claude Code/Codex CLI ✨ 主要更新: 📋 模板与规范 • 青年基金标书模板:2026 最新规范,开箱即用 • 面上项目标书模板:结构完整,内容详实 • 智能章节导航:快速定位,高效写作 • 格式自动检查:避免常见格式错误 🤖 AI Skills 体系 • make_latex_model:自动生成 LaTeX 项目模型 • transfer_old_latex_to_new:旧项目平滑迁移 • complete_example:完整示例快速上手 🔧 技术改进 • 模块化架构:技能独立开发、测试、部署 • 跨平台兼容:Windows/macOS/Linux 全面支持 • 性能优化:大型项目编译速度提升 200% 📚 文档与支持 • 快速入门指南:5 分钟上手 • 最佳实践:来自一线科研人员的经验总结 • 问题排查:常见问题快速解决 📋 完整变更日志: https://github.com/username/repo/compare/v2.0.0...v3.0.0 ``` --- ## 模板 2:性能飞跃版 ``` 🚀 v2.5.0 - 性能飞跃,体验重塑 响应速度提升 300%,内存占用降低 50%,享受丝般顺滑的写作体验! ⚡ 性能革命: • 启动速度提升 5 倍:从 8s 缩短到 1.5s • 文档渲染提速 300%:即使是 100+ 页文档,依然流畅滚动 • 内存占用减半:多文档并行编辑不再卡顿 • 自动保存优化:静默后台处理,不打断写作思路 ✨ 主要更新: 🎨 用户体验 • 全新界面设计:更清爽、更专注 • 智能补全升级:预测更准确,输入更流畅 • 快捷键重构:常用操作一键直达 • 深色模式优化:夜间写作更舒适 🔧 技术改进 • 全面异步化:告别界面卡顿 • 智能缓存机制:二次打开瞬间呈现 • 增量渲染:只重绘变化部分 • 资源按需加载:启动更轻量 🐛 问题修复: • 修复大文档可能导致崩溃的问题 • 修复特殊字符显示异常 • 修复导出 PDF 格式错乱 📋 完整变更日志: https://github.com/username/repo/compare/v2.4.0...v2.5.0 ``` --- ## 模板 3:功能增强版 ``` ✨ v2.3.0 - 功能大升级,创作更自由 新增 10+ 强大功能,让你的创作事半功倍! 🌟 功能亮点: • AI 辅助写作:智能续写、润色、翻译,创作效率提升 10 倍 • 多格式导出:PDF、Word、HTML、Markdown 一键转换 • 云端同步:跨设备无缝协作,随时随地创作 • 协作编辑:多人实时协作,团队效率倍增 • 版本历史:随时回溯,再也不怕误操作 ✨ 主要更新: 🤖 AI 能力 • 智能续写:根据上下文自动生成内容 • 一键润色:提升文字表达质量 • 多语言翻译:支持 20+ 语言互译 • 语法检查:自动发现并修正语法错误 📤 导出与同步 • 多格式导出:PDF/Word/HTML/Markdown • 云端同步:Google Drive、Dropbox、OneDrive • 协作编辑:多人同时编辑,实时同步 • 评论功能:精准反馈,高效沟通 🎨 界面优化 • 全新图标设计:视觉更统一 • 自定义主题:多种配色方案 • 响应式布局:适配各种屏幕尺寸 • 快捷操作栏:常用功能一键访问 📋 完整变更日志: https://github.com/username/repo/compare/v2.2.0...v2.3.0 ``` --- ## 模板 4:稳定性增强版 ``` 🛡️ v1.8.0 - 稳如磐石,企业级可靠性 99.9% 可用性保证,通过 1000+ 严格测试,生产环境就绪! 🔒 稳定性升级: • 崩溃率降低 95%:经过压力测试验证 • 内存泄漏修复:长时间使用依然稳定 • 异常处理增强:优雅降级,不会意外退出 • 数据完整性保护:自动备份,防止数据丢失 ✨ 主要更新: 🐛 问题修复: • 修复导入大文件可能崩溃的问题 • 修复特殊字符导致保存失败 • 修复网络中断时数据丢失 • 修复多语言环境下显示异常 🔐 数据安全: • 自动备份:每 5 分钟自动保存 • 数据恢复:意外关闭后可恢复 • 加密存储:敏感数据加密保护 • 导入验证:防止损坏文件导入 🧪 质量保证: • 单元测试覆盖率达到 90% • 集成测试覆盖核心流程 • 压力测试验证 10 万+ 文档 • 安全测试通过独立审计 📋 完整变更日志: https://github.com/username/repo/compare/v1.7.0...v1.8.0 ``` --- ## 模板 5:精简修复版(Patch) ``` 🐛 v1.2.3 - 紧急修复 修复一个导致数据丢失的严重问题,建议立即升级! 🔥 关键修复: • 修复自动保存可能失败导致数据丢失 • 修复导出 PDF 时图片丢失 • 修复撤销/重做可能错乱 ⚡ 其他改进: • 性能小幅优化 • 改进错误提示信息 建议所有用户立即升级! 📋 完整变更日志: https://github.com/username/repo/compare/v1.2.2...v1.2.3 ``` --- ## 模板 6:首次发布 ``` 🎉 v1.0.0 - 正式发布 经过 6 个月的精心打磨,ProjectName 终于和大家见面了! 🌟 为什么选择 ProjectName? • 🚀 极速高效:相比传统工具,效率提升 10 倍 • 🎨 简单优雅:零学习成本,开箱即用 • 🔒 安全可靠:企业级安全保障,数据无忧 • 🌍 跨平台支持:Windows、macOS、Linux 全覆盖 🚀 核心功能: ✓ 功能一:描述功能一的核心价值 ✓ 功能二:描述功能二的核心价值 ✓ 功能三:描述功能三的核心价值 ✓ 功能四:描述功能四的核心价值 🎯 适用场景: • 场景一:描述适用场景 • 场景二:描述适用场景 • 场景三:描述适用场景 📚 快速开始: 1. 安装:`npm install projectname` 2. 初始化:`projectname init` 3. 开始使用:`projectname start` 详细文档:https://docs.projectname.com 🙏 致谢: 感谢所有参与 Alpha 和 Beta 测试的用户,你们的反馈让这个产品变得更好! 📢 关注我们: • GitHub: https://github.com/username/projectname • Twitter: @projectname • 官网: https://projectname.com ``` --- ## 模板 7:Pre-release ``` 🧪 v2.0.0-beta.1 - 诚邀体验 全新一代架构,性能飞跃!诚邀勇敢者体验测试版! ⚠️ 注意:这是预发布版本,可能存在不稳定因素。生产环境请使用稳定版。 ✨ 新功能预览: • 🚀 全新架构:性能提升 5 倍 • 🎨 全新界面:更现代、更直观 • 🤖 AI 集成:智能辅助,如虎添翼 • 📦 插件系统:无限扩展可能 🐛 已知问题: • [已知问题 1] • [已知问题 2] 📢 反馈渠道: 发现问题?请在 GitHub 提 issue: https://github.com/username/repo/issues 期待你的反馈,帮助我们做得更好! 📋 完整变更日志: https://github.com/username/repo/compare/v1.9.0...v2.0.0-beta.1 ``` --- ## 模板 8:年度就绪版 ``` 🎯 v5.0.0 - 为 2026 全面就绪 拥抱未来,抢占先机! 🚀 2026 核心能力: • AI 原生架构:深度集成最新 AI 能力 • 云端协同:跨设备无缝协作 • 安全合规:符合最新数据保护法规 • 性能旗舰:处理能力提升 10 倍 ✨ 主要更新: 📅 2026 新规适配 • 新规一:适配描述 • 新规二:适配描述 🤖 AI 能力升级 • AI 功能一 • AI 功能二 ☁️ 云端能力 • 云功能一 • 云功能二 为 2026 做好准备,现在就升级! 📋 完整变更日志: https://github.com/username/repo/compare/v4.0.0...v5.0.0 ``` --- ## Emoji 使用指南 ### 常用 Emoji 及其语义 | Emoji | 语义 | 使用场景 | |-------|------|---------| | 🎉 | 庆祝 | 版本发布标题 | | 🚀 | 速度/启动 | 性能提升、新功能启动 | | ✨ | 闪耀/新意 | 新功能、新特性 | | 🐛 | 虫子 | Bug 修复 | | 🔧 | 工具 | 技术改进、重构 | | ⚡ | 闪电 | 性能优化、速度提升 | | 🛡️ | 盾牌 | 安全、稳定性 | | 🌟 | 星星 | 亮点、推荐 | | 🎯 | 靶心 | 目标、就绪 | | 🧪 | 试管 | 实验、测试版 | | 🚨 | 警报 | 紧急修复 | | 🔒 | 锁 | 安全、加密 | | 📋 | 剪贴板 | 清单、日志 | | 📚 | 书籍 | 文档、学习 | | 💄 | 口红 | 样式、UI | | 🔐 | 密钥 | 安全、认证 | | 💥 | 爆炸 | 破坏性变更 | | 🎨 | 调色板 | 设计、界面 | | 🤖 | 机器人 | AI、自动化 | | ☁️ | 云 | 云服务、同步 | ### Emoji 使用原则 1. **适度使用**:标题和一级分类使用,不在详细描述中滥用 2. **语义一致**:同一类型的变更使用相同 emoji 3. **视觉平衡**:每类 emoji 数量保持均衡 4. **避免过度**:不要让 emoji 成为干扰,而是辅助理解
-
-
scripts
-
get-github-token.sh 3.2 KB
#!/usr/bin/env bash # git-publish-release 环境管理脚本 # 功能:确保 .env 文件存在且被 .gitignore 忽略,读取 GH_TOKEN set -euo pipefail # 项目根目录(当前工作目录) PROJECT_ROOT="${PROJECT_ROOT:-.}" # .env 文件路径 ENV_FILE="$PROJECT_ROOT/.env" # .gitignore 文件路径 GITIGNORE_FILE="$PROJECT_ROOT/.gitignore" # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 日志函数 log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # 确保 .env 文件存在 ensure_env_file() { if [[ ! -f "$ENV_FILE" ]]; then log_info ".env 文件不存在,正在创建..." cat > "$ENV_FILE" << 'EOF' # GitHub Token for git-publish-release # 获取方式:https://github.com/settings/tokens # 需要的权限:repo (完整仓库访问权限) GH_TOKEN=your_token_here EOF log_warn ".env 文件已创建,请在里面添加你的 GitHub Token" return 1 fi return 0 } # 确保 .env 在 .gitignore 中 ensure_gitignore() { local env_entry=".env" # 如果 .gitignore 不存在,创建它 if [[ ! -f "$GITIGNORE_FILE" ]]; then log_info ".gitignore 文件不存在,正在创建..." echo "$env_entry" > "$GITIGNORE_FILE" log_info ".gitignore 已创建并添加了 .env" return 0 fi # 检查 .env 是否已在 .gitignore 中 if grep -qx "$env_entry" "$GITIGNORE_FILE" 2>/dev/null; then return 0 fi # 添加 .env 到 .gitignore log_info "将 .env 添加到 .gitignore..." echo "$env_entry" >> "$GITIGNORE_FILE" log_info ".env 已添加到 .gitignore" return 0 } # 从 .env 文件读取 GH_TOKEN read_gh_token() { if [[ ! -f "$ENV_FILE" ]]; then return 1 fi # 读取 GH_TOKEN(支持带引号和不带引号) while IFS='=' read -r key value; do # 跳过注释和空行 [[ "$key" =~ ^#.*$ || -z "$key" ]] && continue # 去除 key 的空格 key=$(echo "$key" | tr -d ' ') # 匹配 GH_TOKEN if [[ "$key" == "GH_TOKEN" ]]; then # 去除 value 的引号和空格 value=$(echo "$value" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e "s/^'//" -e "s/'$//" -e 's/^"//' -e 's/"$//') if [[ -n "$value" && "$value" != "your_token_here" ]]; then echo "$value" return 0 fi fi done < "$ENV_FILE" return 1 } # 主函数 main() { # 1. 确保 .gitignore 存在且包含 .env ensure_gitignore # 2. 确保 .env 文件存在 if ! ensure_env_file; then log_error "请在 .env 文件中设置 GH_TOKEN 后重试" exit 1 fi # 3. 读取并输出 GH_TOKEN local token token=$(read_gh_token) || { log_error "无法从 .env 文件读取有效的 GH_TOKEN" log_warn "请在 $ENV_FILE 中设置 GH_TOKEN=your_actual_token" exit 1 } # 输出 token(供调用方使用) echo "$token" } # 如果直接执行脚本,运行主函数 if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then main "$@" fi
-
-
CHANGELOG.md 571 B
# Changelog 该 Skill 的变更记录遵循 Keep a Changelog 与语义化版本。 ## [Unreleased] ### Changed(变更) - 规范化 `SKILL.md` 正文骨架,补齐输入、输出、校验、失败恢复和安全边界;发布行为与 CLI 参数保持不变。 - 明确单独生成 Release Notes/历史总结仅输出预览,只有明确发布/创建请求或后续确认才执行远程发布;既有发布流程和 CLI 参数不变。 ## [0.1.0] - 2026-09-05 ### Added(新增) - 初始化 GitHub Release 与 Release Notes 生成 Skill 治理元数据。 -
config.yaml 585 B
skill_info: name: git-publish-release version: "0.1.0" description: "当用户明确要求发布项目到 GitHub、创建 GitHub Release 或生成 Release Notes 时使用;明确发布/创建请求才执行远程发布,单独的 notes/历史总结请求仅生成预览,除非随后确认。" author: "Bensz Conan" category: 发布管理 release: default_prerelease: false # 明确的“发布项目/创建 Release”请求即视为确认;仅覆盖已有 Release 时再询问。 require_confirmation: true notes_reference: references/release-notes-strategy.md -
README.md 10.5 KB
# GitHub Release 发布 智能分析项目历史变化并生成吸引人的 Release Notes;明确要求发布/创建 Release 时发布到 GitHub,单独请求 notes 或历史总结时仅生成预览,除非随后确认发布。 ## ✨ 特性 - 🤖 **智能分析**:AI 驱动的 commit 历史分析,自动提炼核心价值 - 📝 **专业模板**:生成简洁、有效、有煽动性的 Release Notes - 🚀 **一键发布**:明确要求发布/创建 Release 时自动创建 GitHub Release - 🎯 **分类清晰**:自动分类新功能、Bug 修复、性能优化等 - 🌐 **联网验证**:与 GitHub API 集成,获取最新 release 信息 ## 📋 使用场景 当你需要: - 发布新版本到 GitHub - 创建 GitHub Release 并生成 Release Notes - 推送 tag 并自动创建 release - 总结版本间的历史变化 ## 🚀 快速开始 ### 前置要求 1. **GitHub CLI**:需要安装并认证 `gh` CLI - 安装:`brew install gh`(macOS)或访问 https://cli.github.com - 认证:`gh auth login` 2. **Git 仓库**:项目必须是 Git 仓库,且有 GitHub remote ### 使用方式 在 Claude Code 中使用以下任一方式触发: ``` "帮我发布 v3.0.0 到 GitHub" "创建一个 GitHub Release,tag 是 v2.5.0" "发布当前项目到 GitHub,版本 v1.0.0" "我要 release v4.0.0-beta.1" ``` 明确要求发布/创建 Release 时,技能会自动: 1. 确认项目路径和 tag 2. 获取最新 release 信息 3. 分析历史变化 4. 生成专业的 Release Notes 5. 发布到 GitHub 如果只要求生成 Release Notes 或总结历史变化,技能只输出文案预览,不调用 `gh release create`;需要发布时再明确确认。 ## 📖 使用示例 ### 示例 1:首次发布 ``` 你:发布 v1.0.0 到 GitHub 技能:检测到这是首次发布,将创建项目第一个 Release。 [生成首次发布专用 Release Notes] ✅ Release 发布成功! ``` ### 示例 2:常规版本发布 ``` 你:发布 v2.3.0 技能:将比较 v2.2.0 和 v2.3.0 之间的变化... [分析 23 个 commits,生成分类 Release Notes] ✅ Release 发布成功! ``` ### 示例 3:预发布版本 ``` 你:发布 v3.0.0-beta.1 技能:检测到这是预发布版本(beta),将标记为 prerelease。 [生成 Pre-release 专用 Release Notes] ✅ Release 发布成功! ``` ### 示例 4:指定项目路径 ``` 你:为 /path/to/project 发布 v1.5.0 技能:正在处理 /path/to/project... [在该项目下执行发布流程] ✅ Release 发布成功! ``` ## 🎨 Release Notes 风格 生成的 Release Notes 具有以下特点: ### 结构清晰 ``` 🎉 版本号 - 吸引人的标题 一句话价值定位 🚀 核心亮点 • 亮点1 • 亮点2 ✨ 主要更新(分类) • 更新内容 • 更新内容 📋 完整变更日志 [链接] ``` ### 语言风格 - **简洁有力**:每个要点不超过一行 - **价值导向**:强调"为什么"而非仅仅"是什么" - **情感化表达**:使用"革命性"、"突破性"等词汇 - **数字量化**:用具体数字说明改进幅度 - **用户视角**:用用户能理解的语言 ### 自动分类 | 类别 | 图标 | 关键词 | |------|------|--------| | 新功能 | ✨ | feat, feature, add, new | | Bug 修复 | 🐛 | fix, bugfix, resolve | | 性能优化 | ⚡ | perf, performance, optimize | | 技术改进 | 🔧 | refactor, improve | | 文档更新 | 📝 | docs, document, readme | | 安全更新 | 🔐 | security, fix vulnerability | ## ⚙️ 配置选项 ### 认证 通过 `gh auth login` 管理,无需手动配置 token。运行以下命令检查认证状态: ```bash gh auth status ``` ### Git Remote 格式支持 - HTTPS: `https://github.com/owner/repo.git` - SSH: `git@github.com:owner/repo.git` ## 🛠️ 故障排查 ### 问题:gh 未认证 **解决方案**: ```bash gh auth login ``` ### 问题:Tag 不存在 **解决方案**:先创建 tag ```bash git tag v1.0.0 git push origin v1.0.0 ``` ### 问题:权限不足 **解决方案**:运行 `gh auth status` 检查认证状态及仓库权限 ### 问题:Release 已存在 **解决方案**:技能会询问是否覆盖,选择更新现有 release ## 📚 相关资源 - [SKILL.md](SKILL.md) - 技能核心逻辑 - [Release Notes 生成策略](references/release-notes-strategy.md) - [Release Notes 模板示例](references/release-templates.md) - [GitHub CLI 文档](https://cli.github.com/manual/gh_release_create) ## WHICHMODEL - 模型选择最佳实践 **最后更新**:2026-01-25 ### 披露信息 - **覆盖厂商**:Anthropic, OpenAI(2/6 = 33%) - **来源构成**:社区 70%, 官方 20%, 技术博客 10% - **数据时效**:2024-10 至 2026-01 - **局限性**:未覆盖国产模型,未独立测试 Release Notes 生成质量 --- ### 场景化建议 #### 场景 1:标准版本发布(最常见) **触发条件**:常规版本发布,需要生成 Release Notes | 项目 | 建议 | |------|------| | **推荐模型** | Claude Haiku 4.5 或 Sonnet 4.5 | | **推理强度** | low-medium | | **预期成本** | ~$0.005-0.05/次 | **理由**: - Release Notes 生成主要是文本处理和模式匹配任务 - Haiku 成本最低,适合简单版本发布 - Sonnet 在 commit 分类和内容整理上表现更好 - [社区反馈](https://www.reddit.com/r/ClaudeAI/comments/1ocpoye/haiku_45_better_than_sonnet/) 显示 Haiku 在简单任务中表现优异 **避免**:复杂大规模版本(100+ commits)建议用 Sonnet **来源**:[Haiku System Card](https://www.anthropic.com/claude-haiku-4-5-system-card) + Reddit 社区讨论 --- #### 场景 2:大规模版本发布 **触发条件**: - 大规模版本(100+ commits) - 跨越多个功能模块 - 需要深度理解业务价值 | 项目 | 建议 | |------|------| | **推荐模型** | Claude Sonnet 4.5 | | **推理强度** | medium | | **预期成本** | ~$0.03-0.15/次 | **理由**: - Sonnet 在代码分析和内容整理上表现出色 - 更适合需要"中等复杂度理解"的场景 - [社区对比](https://medium.com/@ayaanhaider.dev/sonnet-4-5-vs-haiku-4-5-vs-opus-4-1-which-claude-model-actually-works-best-in-real-projects-7183c0dc2249) 显示 Sonnet 在复杂场景下的优势 - **大规模 commit 历史分析需要一定的推理能力** **避免**:简单版本(<20 commits)不需要 Sonnet,用 Haiku 即可 **来源**:社区对比讨论 + 官方模型选择指南 --- #### 场景 3:首次发布 **触发条件**: - 项目首次发布(v1.0.0) - 需要生成完整的初始介绍 - 需要创造性撰写项目定位 | 项目 | 建议 | |------|------| | **推荐模型** | Claude Sonnet 4.5 | | **推理强度** | medium | | **预期成本** | ~$0.05-0.20/次 | **理由**: - 首次发布需要理解和总结整个项目 - 需要创造性撰写吸引人的标题和价值定位 - Sonnet 在内容组织和语言表达上更有优势 - **首次发布是项目的"第一印象",值得投入更多资源** **避免**:如果不是首次发布,优先使用 Haiku **来源**:社区反馈 + 官方文档 --- ### 对比总结 | 模型 | 最适合 | 最不适合 | 相对成本 | 相对速度 | 推荐度 | |------|-------|---------|---------|---------|-------| | **Haiku 4.5** | 小版本发布、常规版本 | 大规模版本、首次发布 | $ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | | **Sonnet 4.5** | 大规模版本、首次发布 | 小版本(浪费) | $$$ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | | **Opus 4.5** | **不推荐** | 所有场景 | $$$$$ | ⭐⭐ | ⭐ | **说明**: - Haiku 覆盖 80% 的版本发布场景(小版本、常规版本) - Sonnet 用于大规模版本(100+ commits)和首次发布 - Opus 对此任务**完全不必要**,成本过高且无性能提升 --- ### 通用原则 1. **默认从 Haiku 开始**:80% 的版本发布任务 Haiku 足够,无需升级 2. **复杂度判断**:根据 commit 数量选择模型 - <20 commits:Haiku - 20-100 commits:Haiku 或 Sonnet - >100 commits:Sonnet - 首次发布:Sonnet 3. **成本敏感**:版本发布是高频操作,Haiku 的成本优势明显 4. **速度优先**:Haiku 的 <1 秒响应时间明显优于 Sonnet 的 3-5 秒 5. **避免过度设计**:Release Notes 生成主要是模式匹配和文本整理,Haiku 完全胜任 --- ### ⚠️ 争议点 #### Haiku vs Sonnet:Release Notes 生成真的可以用 Haiku 吗? | 观点 | 支持者 | 理由 | |------|-------|------| | **Haiku 足够** | Reddit 社区 | Release Notes 生成是简单任务,Haiku 在文本处理任务中表现稳定 | | **Sonnet 更保险** | 部分开发者 | 担心 Haiku 在大规模版本分析时出错 | **数据支持**: - [某用户测试](https://medium.com/@cognidownunder/claude-haiku-4-5-matches-sonnets-coding-skills-at-80-less-cost-changes-everything-297f4b163d4e):Haiku 在编码任务中匹配 Sonnet 能力,成本降低 80% - [官方文档](https://platform.claude.com/docs/en/about-claude/models/choosing-a-model):Haiku 专为"高吞吐量、低延迟"场景设计 **建议**: - **默认使用 Haiku**:小版本和常规版本发布,Haiku 完全胜任 - **仅在以下情况升级 Sonnet**: - 大规模版本(>100 commits) - 首次发布(需要项目理解和创造性撰写) - 跨多个功能模块的复杂版本 - Haiku 出现理解错误时(极少见) --- ### 更新记录 - 2026-01-25:首次调研,覆盖 Anthropic/OpenAI - 建议:2026-07 重新调研(6 个月后) --- ### 来源链接 **官方文档**: - [Claude Tool Use Documentation](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) - [Choosing the right model](https://platform.claude.com/docs/en/about-claude/models/choosing-a-model) - [Claude Haiku 4.5 System Card](https://www.anthropic.com/claude-haiku-4-5-system-card) **社区讨论**: - [Sonnet 4.5 vs Haiku 4.5 vs Opus 4.1](https://medium.com/@ayaanhaider.dev/sonnet-4-5-vs-haiku-4-5-vs-opus-4-1-which-claude-model-actually-works-best-in-real-projects-7183c0dc2249) - [Haiku 4.5 better than Sonnet? (Reddit)](https://www.reddit.com/r/ClaudeAI/comments/1ocpoye/haiku_45_better_than_sonnet/) - [Claude Haiku 4.5: Features, Testing Results, and Use Cases](https://www.datacamp.com/fr/blog/anthropic-claude-haiku-4-5) **技术博客**: - [Top Use Cases for Claude Haiku 4.5](https://chatlyai.app/blog/claude-haiku-4-5-use-cases) - [Claude Haiku 4.5 matches Sonnet's coding skills at 80% less cost](https://medium.com/@cognidownunder/claude-haiku-4-5-matches-sonnets-coding-skills-at-80-less-cost-changes-everything-297f4b163d4e) --- ## 🤝 贡献 欢迎反馈和改进建议!请提交 issue 或 PR。 ## 📄 许可 MIT License -
SKILL.md 9.1 KB
--- name: git-publish-release description: 当用户明确要求发布项目到 GitHub、创建 GitHub Release 或生成 Release Notes 时使用。根据版本历史整理发布说明;仅要求预览时不执行发布。 metadata: author: Bensz Conan short-description: GitHub Release 发布与 Release Notes 生成(按请求区分预览/发布) keywords: - git-publish-release - GitHub Release - release notes - version publish --- # GitHub Release ## 目标 当用户明确要求"发布项目到 GitHub"、"创建 GitHub Release"或"生成 Release Notes"时使用。智能分析 tag 间历史变化并生成专业的 Release Notes;明确发布/创建请求时自动创建 GitHub Release,单独的 notes/历史总结请求仅生成预览,除非用户随后确认发布。支持首次发布、常规版本、预发布版本(alpha/beta/rc),自动识别 prerelease 标记。 ## 流程 ### 输入 #### 触发条件 用户需要: - 发布项目的新版本到 GitHub - 创建 GitHub Release 并自动生成 Release Notes - 推送某个 tag 到 GitHub 并创建 release - 总结版本间的历史变化 #### 你需要确认的输入 1. **目标 tag**(如 `v3.0.0`) - 如未指定,列出最近 tags 供选择 2. **项目路径**(可选,默认当前工作目录) 3. **任务输出目录**(宿主可设置 `TASK_OUTPUT_DIR`,指向本轮已声明的 `./.bensz-api/task-.../git-publish-release/output/`;未设置时临时 notes 使用 OS 临时目录并立即清理) > 认证通过 `gh auth login` 管理,无需手动配置 token。 明确要求“发布项目到 GitHub”或“创建 GitHub Release”时,按配置执行远程发布;仅要求“生成 Release Notes”或“总结版本间的历史变化”时只生成文案/预览,不调用 `gh release create`,除非用户随后明确确认发布。`release.require_confirmation` 的含义是:明确发布/创建请求可作为本次授权,覆盖已有 Release 仍按下方错误处理规则询问;不得把文案生成请求视为远程发布授权。 ### 执行步骤 #### 工作流程 ##### 确认项目信息 ```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 📋 完整变更日志: [简略说明获取方式或列出主要 commits] ``` ###### 标题撰写原则 - **情感化表达**:使用"革命性"、"突破性"、"里程碑"等词汇 - **场景化描述**:说明这个版本解决什么问题、带来什么价值 - **时效性关联**:如"为 2026 年就绪"、"拥抱新范式" ###### 内容分类原则 根据 commit 信息自动分类: | 类别图标 | 类别名称 | Commit 关键词示例 | |---------|---------|-----------------| | 🚀 | 核心亮点 | breakthrough, major, feature | | ✨ | 新功能 | add, new, feature | | 🐛 | Bug 修复 | fix, bugfix, resolve | | 🔧 | 技术改进 | refactor, optimize, improve | | 📝 | 文档更新 | docs, readme, guide | | 🔐 | 安全更新 | security, fix vulnerability | | 💥 | 破坏性变更 | breaking, deprecate | ###### 语言风格 - **简洁有力**:每个要点不超过一行 - **价值导向**:强调"为什么"而非仅仅"是什么" - **用户视角**:用用户能理解的语言,避免技术术语堆砌 - **适当煽动**:使用感叹号、emoji 营造氛围,但不过度 ##### 判断是否为 Prerelease 根据 tag 名称自动判断: - 包含 `alpha`, `beta`, `rc`, `pre` 等标识 → `prerelease: true` - 否则 → `prerelease: false` ##### 按授权创建 GitHub Release 仅在用户明确要求发布/创建 Release,或在预览后明确确认发布时执行以下命令;单独的 Release Notes/历史总结请求不得执行此步骤。 ```bash # 将 Release Notes 写入临时文件(避免 shell 转义问题) # TASK_OUTPUT_DIR 可由宿主设置为本次任务已声明的 # ./.bensz-api/task-.../git-publish-release/output/ 目录;未注入时仅使用 # 一次性的 OS 临时目录,并在流程结束后清理,不把它当作任务产物。 NOTES_DIR="${TASK_OUTPUT_DIR:-${TMPDIR:-/tmp}}" mkdir -p "$NOTES_DIR" NOTES_FILE=$(mktemp "$NOTES_DIR/release-notes-XXXXXX.md") cat > "$NOTES_FILE" << 'NOTES_EOF' [生成的 Release Notes 内容] NOTES_EOF # 正式版 gh release create "$TARGET_TAG" \ --title "$TARGET_TAG" \ --notes-file "$NOTES_FILE" # 预发布版(tag 含 alpha/beta/rc/pre 时) gh release create "$TARGET_TAG" \ --title "$TARGET_TAG" \ --notes-file "$NOTES_FILE" \ --prerelease # 清理临时文件 rm -f "$NOTES_FILE" ``` #### 参考资源 - Release Notes 生成策略:[references/release-notes-strategy.md](references/release-notes-strategy.md) - Release Notes 示例模板:[references/release-templates.md](references/release-templates.md) - GitHub CLI 文档:https://cli.github.com/manual/gh_release_create ### 输出 #### 输出格式 完成发布后,向用户输出: ``` ✅ Release 发布成功! 📍 Release URL: [release 链接] 🏷️ Tag: [tag 名称] 📅 发布时间: [时间] 📝 Release Notes 预览: [生成的前 10 行 notes] ``` 如果用户只要求 Release Notes 或历史总结,输出文案预览及对应的历史范围,不报告 Release URL,也不宣称已发布。 ### 输出管理 #### BenszAPI 任务工作区 ### 校验 #### 前置检查 确认 `gh` CLI 已安装并已认证: ```bash gh auth status ``` 如未认证,提示用户运行: ```bash gh auth login ``` ### 失败与恢复 #### 错误处理 | 场景 | 处理方式 | |------|---------| | `gh` 未安装 | 提示安装:`brew install gh` 或访问 https://cli.github.com | | `gh` 未认证 | 提示运行 `gh auth login` | | Tag 不存在 | 提示用户可用的 tags 列表 | | 网络请求失败 | 重试 3 次,仍失败则报错并给出手动创建指南 | | 权限不足 | 提示检查 `gh auth status` 及仓库权限 | | Release 已存在 | 询问用户是否覆盖(使用 `gh release edit`) | #### 实现注意事项 1. **跨平台兼容**:始终使用正斜杠 `/` 处理路径 2. **Notes 转义**:使用 `--notes-file` 传递临时文件,避免 shell 特殊字符转义问题 3. **Git 远程解析**:`gh repo view` 自动处理 HTTPS 和 SSH 两种 remote URL 格式 4. **认证管理**:`gh` CLI 使用系统 keychain 或 `~/.config/gh/hosts.yml` 存储凭证,无需手动管理 token ## 约束 <!-- BEGIN COMMON CONSTRAINTS --> <!-- Source-Hash: sha256:15120201e9e0c7569517261d57ecefb63ac279c26ed13876f8e95b6dc35854d3 --> <!-- Template-ID: skill-common-constraints; Template-Version: 1; Sync-Policy: exact-block --> ### 公共硬约束 本块由 `docs/templates/skill-common-constraints.md` 统一维护;每个 `SKILL.md` 的 `## 约束` 必须逐字同步本块,不得在副本中改写公共规则。 - 任务需要落盘时,使用唯一的 `./.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/` 根目录;共享材料放入 `shared/`,Skill 专属材料放入该 Skill 的 `input/`、`output/`、`log/`。 - 正式交付物、源代码和正式计划按项目约定保存,不写入任务工作区;未经授权不覆盖、删除、迁移或远程写入。 - 项目维护变更检查 BAC 可用性并记录需求、AI 产出、工具结果、文件改动和验证摘要;BAC 只做过程审计,不替代署名、责任或合规判断。 - 不记录 API Key、访问令牌、密码、Cookie、环境/凭据文件、私有 Prompt、身份信息、本地用户名、主机名或不必要的大体积原始数据。 - 文件路径必须规范化并限制在授权项目范围内;外部 URL、子进程和网络访问遵循最小权限,防止路径遍历、SSRF 和命令注入。 - Skill 版本唯一记录在自身 `config.yaml:skill_info.version`;公开 API、协议、目录或配置变更同步文档与 `CHANGELOG.md`。 - `bensz-collect-bugs` 是一个 Agent Skill;仅将 Bensz Agent Skill 或 Bensz 基础设施本身的设计缺陷交给它。先脱敏写入 `~/.bensz-skills/bugs/`,当前任务不中断,只有用户明确要求才公开上报,禁止直接修改用户已安装的 Skill 源码。 <!-- End of canonical common constraints. --> <!-- END COMMON CONSTRAINTS -->
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.