diff --git a/.cursor/skills/README.md b/.cursor/skills/README.md index 9830a72..5f5f821 100644 --- a/.cursor/skills/README.md +++ b/.cursor/skills/README.md @@ -14,6 +14,10 @@ │ └── package.json ├── backend/ # 后端相关 skill └── common/ # 通用 skill + └── create-release/ # 创建 GitHub Release + ├── SKILL.md + └── scripts/ + └── create-release.sh ``` - **SKILL.md**:YAML frontmatter(`name`、`description` 必填,`name` 须与父文件夹名一致、小写连字符)+ 给 Agent 的详细指令。 @@ -27,7 +31,8 @@ ## 示例 -- `frontend/check-i18n-keys/SKILL.md` + `frontend/check-i18n-keys/scripts/` — 检查前端多语言 key。 +- `frontend/check-i18n-keys/SKILL.md` + `frontend/check-i18n-keys/scripts/` — 检查前端多语言 key +- `common/create-release/SKILL.md` + `common/create-release/scripts/` — 创建 GitHub Release ## 运行 check-i18n-keys @@ -37,3 +42,17 @@ npm install npm run check-i18n ``` +## 运行 create-release + +```bash +cd .cursor/skills/common/create-release/scripts +./create-release.sh -t v1.0.0 -T "Release v1.0.0" -d "发布说明" +``` + +参数说明: +- `-t` 版本号(必需,格式 v1.0.0) +- `-T` Release 标题 +- `-d` Release 描述 +- `-p` 标记为 Pre-release(自动加 -beta 后缀) +- `-y` 无交互模式 + diff --git a/.cursor/skills/common/create-release/SKILL.md b/.cursor/skills/common/create-release/SKILL.md new file mode 100644 index 0000000..3b89d1a --- /dev/null +++ b/.cursor/skills/common/create-release/SKILL.md @@ -0,0 +1,341 @@ +--- +name: create-release +description: 创建 PolyHermes 项目的 GitHub Release。当用户要求发布版本、创建 release、打 tag 或发布新版本时使用。 +--- + +# Create Release + +创建 PolyHermes 项目的 GitHub Release,包括创建 Git tag、推送 tag、创建 GitHub Release(支持 pre-release),并自动在 Issue #1 发布公告。 + +## 使用时机 + +- 用户要求「发布版本」「创建 release」「打 tag」「发布新版本」时 +- 用户要求「创建 pre-release」「beta 版本」时 +- 用户提到「v1.x.x」等版本号相关操作时 + +## 前置条件 + +1. **GitHub CLI 已安装**:确保 `gh` 命令可用 +2. **已登录 GitHub**:运行 `gh auth status` 确认 +3. **工作目录干净**:建议先提交所有更改 + +## 指令 + +### 步骤 1:收集发布信息 + +询问用户以下信息: +- 版本号(格式:vX.Y.Z,如 v1.0.0) +- 是否为 Pre-release(测试版本) +- Release 标题和描述(可选,如未提供则自动生成) + +### 步骤 2:生成 Release 内容 + +**重要**:如果用户未提供描述,需要根据 Git commits 自动生成。 + +1. **获取上一个版本的 tag**: + ```bash + git describe --tags --abbrev=0 HEAD + ``` + +2. **获取版本间的 commits**: + ```bash + git log ..HEAD --oneline --no-merges + ``` + +3. **过滤 commit 规则**: + - **排除**:版本内新增功能的修复 commit + - **判断方法**:如果一个 commit 的消息包含「fix」「修复」「bugfix」等关键词,且是针对同一版本内新增代码的修复,则不包含 + - **保留**:新功能、性能优化、重构、文档更新等 + +4. **生成中英文 Release 内容**: + - 格式要求:**中文在上,英文在下** + - 使用分隔线 `---` 分隔中英文部分 + - 按功能类型分组(新功能、改进、修复等) + + 示例格式: + ```markdown + ## 新功能 + + - 添加了 A 功能 + - 支持了 B 操作 + + ## 改进 + + - 优化了 C 性能 + + --- + + ## New Features + + - Added feature A + - Supported operation B + + ## Improvements + + - Optimized performance C + ``` + +### 步骤 3:运行发布脚本 + +在项目根目录下执行: + +```bash +cd .cursor/skills/common/create-release/scripts && \ +chmod +x create-release.sh && \ +./create-release.sh -t [-T ""] [-d "<DESCRIPTION>"] [-p] [-y] +``` + +### 步骤 4:发布公告到 Issue #1 + +**重要**:Release 创建成功后,必须自动在 Issue #1 下发布公告 comment。 + +1. **生成公告内容**(面向用户,通俗易懂): + + 公告格式模板: + ```markdown + # 🎉 PolyHermes vX.X.X 版本发布公告 + + ## 📅 发布日期 + + YYYY年MM月DD日 + + --- + + ## ✨ 本次更新亮点 + + ### 🚀 新功能 + + **功能名称** + - 用通俗的语言描述这个功能是什么 + - 用户能从中获得什么好处 + - 如何使用这个功能 + + ### 🔧 改进优化 + + - 优化了 XXX,现在 XXX 更快/更稳定了 + - 改进了 XXX 体验,操作更简单了 + + ### 🐛 问题修复 + + - 修复了 XXX 问题,不再出现 XXX 情况 + + --- + + ## 📦 如何更新 + + ### Docker 部署(推荐) + + ```bash + # 拉取最新镜像 + docker pull wrbug/polyhermes:vX.X.X + + # 重启服务 + docker-compose -f docker-compose.prod.yml down + docker-compose -f docker-compose.prod.yml up -d + ``` + + --- + + ## ⚠️ 安全提醒 + + **请务必使用官方 Docker 镜像源,避免财产损失!** + + **官方镜像地址**:`wrbug/polyhermes` + + --- + + ## 📚 相关链接 + + - **GitHub Release**: https://github.com/WrBug/PolyHermes/releases/tag/vX.X.X + - **Docker Hub**: https://hub.docker.com/r/wrbug/polyhermes + ``` + +2. **公告内容编写原则**: + + - ✅ **通俗易懂**:避免技术术语,用用户能理解的语言 + - ✅ **突出价值**:告诉用户这个更新对他们有什么好处 + - ✅ **简洁明了**:每个功能点用 1-2 句话说明 + - ✅ **包含操作指引**:告诉用户如何使用新功能 + - ✅ **中英文双语**:中文在上,英文在下(可选) + - ❌ **避免**:commit hash、代码细节、内部实现 + +3. **执行发布公告命令**: + + ```bash + gh issue comment 1 --repo WrBug/PolyHermes --body "$(cat <<'EOF' + # 🎉 PolyHermes vX.X.X 版本发布公告 + + [公告内容...] + + --- + EOF + )" + ``` + + 或使用文件方式(内容较长时推荐): + + ```bash + echo "[公告内容...]" > /tmp/announcement.md + gh issue comment 1 --repo WrBug/PolyHermes --body-file /tmp/announcement.md + ``` + +### 参数说明 + +| 参数 | 说明 | 示例 | +|------|------|------| +| `-t, --tag` | 版本号(必需) | `-t v1.0.0` | +| `-T, --title` | Release 标题 | `-T "Release v1.0.0"` | +| `-d, --description` | Release 描述 | `-d "## 新功能\n- 功能1"` | +| `-f, --description-file` | 从文件读取描述 | `-f CHANGELOG.md` | +| `-p, --prerelease` | 标记为 Pre-release(自动加 -beta 后缀) | `-p` | +| `-y, --yes` | 无交互模式 | `-y` | + +## 版本号格式 + +- 必须格式:`v数字.数字.数字`(如 v1.0.0, v1.10.2, v1.1.12) +- 如果指定 `--prerelease`,会自动拼接 `-beta` 后缀(如 v1.0.1 → v1.0.1-beta) + +## Release 内容生成规则 + +### 中英文格式 + +Release 描述**必须**使用中英文双语格式: + +```markdown +## 中文标题 + +- 内容项1 +- 内容项2 + +--- + +## English Title + +- Item 1 +- Item 2 +``` + +### Commit 过滤规则 + +**需要排除的 commit 类型**: + +1. **版本内修复**:对同一版本新增功能的后续修复 + - 例如:v1.0.1 新增了功能 A,然后有一个 commit 修复功能 A 的 bug → 不包含 + - 判断依据:commit 消息包含「fix」「修复」「bugfix」且相关功能在本版本新增 + +2. **琐碎修改**: + - typo 修正 + - 代码格式调整 + - 注释更新 + +**需要保留的 commit 类型**: + +1. 新功能(feat、feature) +2. 改进/优化(improve、optimize、enhance) +3. 重要 bug 修复(针对旧版本的 bug) +4. 重构(refactor) +5. 文档更新(docs) + +### 分组建议 + +- **新功能 / New Features** +- **改进 / Improvements** +- **修复 / Bug Fixes**(仅包含对旧版本 bug 的修复) +- **其他 / Others** + +## 公告内容示例 + +以下是一个面向用户的公告示例: + +```markdown +# 🎉 PolyHermes v1.2.0 版本发布公告 + +## 📅 发布日期 + +2026年3月2日 + +--- + +## ✨ 本次更新亮点 + +### 🚀 新功能 + +**系统自动更新** +- 现在可以在网页上直接更新系统,无需手动重启 Docker +- 更新过程约 30-60 秒,系统会自动处理 +- 如果更新失败,系统会自动恢复到旧版本 + +**RPC 节点管理** +- 可以在系统设置中添加、编辑、删除自定义 RPC 节点 +- 可以随时启用或禁用节点 +- 系统会自动选择可用的节点 + +### 🔧 改进优化 + +- **更快的跟单响应**:通过实时监听链上交易,跟单速度提升到秒级 +- **更准确的盈亏统计**:系统会自动追踪实际成交价,统计数据更准确 +- **内存占用优化**:修复了内存泄漏问题,系统可以长时间稳定运行 + +### 🐛 问题修复 + +- 修复了部分市场无法正确查询价格的问题 +- 修复了卖出订单偶发失败的问题 + +--- + +## 📦 如何更新 + +### 方式一:网页更新(推荐) + +1. 登录系统,进入 **系统设置** → **系统更新** +2. 点击 **检查更新** +3. 如果有新版本,点击 **立即升级** +4. 等待更新完成即可 + +### 方式二:Docker 更新 + +```bash +docker pull wrbug/polyhermes:v1.2.0 +docker-compose -f docker-compose.prod.yml down +docker-compose -f docker-compose.prod.yml up -d +``` + +--- + +## ⚠️ 安全提醒 + +**请务必使用官方 Docker 镜像源!** + +官方镜像:`wrbug/polyhermes` + +--- + +## 📚 相关链接 + +- **GitHub Release**: https://github.com/WrBug/PolyHermes/releases/tag/v1.2.0 +- **Docker Hub**: https://hub.docker.com/r/wrbug/polyhermes +``` + +## 发布流程 + +1. 验证版本号格式 +2. 检查 Git 工作目录状态 +3. 检查 tag 是否已存在 +4. 生成 Release 内容(中英文) +5. 创建本地 tag +6. 推送 tag 到远程 +7. 创建 GitHub Release +8. **生成面向用户的公告内容** +9. **发布公告到 Issue #1** +10. 返回 Release URL 和公告链接 + +## 注意事项 + +- Pre-release 版本不会触发 Telegram 通知 +- GitHub Actions 会自动触发构建流程 +- 如果 tag 已存在,会提示是否删除并重新创建 +- **必须**在 Release 创建成功后发布公告到 Issue #1 + +## 可选目录说明 + +- `scripts/`:包含 `create-release.sh` 发布脚本 diff --git a/create-release.sh b/.cursor/skills/common/create-release/scripts/create-release.sh similarity index 99% rename from create-release.sh rename to .cursor/skills/common/create-release/scripts/create-release.sh index 899d278..3191ca8 100755 --- a/create-release.sh +++ b/.cursor/skills/common/create-release/scripts/create-release.sh @@ -346,4 +346,3 @@ main() { # 执行主函数 main "$@" -