本文へ移動
cccskills
無料GitHub で公開

release-publisher

发布并验收 TrailSnap 新版本:汇总提交、同步全项目版本号、更新官网日志与客户端更新清单、执行发布前测试、创建 GitHub Release、监控标签 CI、核验 Release 附件,并生成小红书和公众号文案。

Use when the user asks to 发布新版本、发版、创建或检查 GitHub Release、总结版本变更、监控发布 CI、检查发布产物,或撰写版本更新帖子。

インストール方法を見る

含まれるファイル(1)

  • SKILL.md10.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

TrailSnap 版本发布与验收

严格按顺序执行。完整性优先于打标签;未经用户确认,不得创建 GitHub Release。

1. 发布前检查

  1. 确认位于 TrailSnap 仓库根目录。
  2. 运行 gh auth status,确认 GitHub CLI 已登录。
  3. 运行 git status --short --branch。保护用户已有改动;工作区不干净时先判断归属,不得覆盖。
  4. 获取远程标签,并只选择严格语义化标签:
    • 接受正则 ^v[0-9]+.[0-9]+.[0-9]+$
    • 排除 pr-preview、app-v*、预发布标签等
    • 不要直接信任 git describe --tags;它可能选中非版本标签
  5. 确认目标标签和 Release 均不存在:
    • 检查本地标签、git ls-remote --tags origin 和 gh release view
  6. 获取上个正式版本到 HEAD 的提交。若为空,停止并提示先提交代码。
  7. 运行 git grep 搜索上个版本的带 v 和不带 v 形式,建立版本影响清单。

PowerShell 可按版本对象排序标签:

$lastTag = git tag --list |
  Where-Object { $_ -match '^v\d+\.\d+\.\d+$' } |
  Sort-Object { [version]($_ -replace '^v', '') } -Descending |
  Select-Object -First 1

2. 确定版本号

  • 用户已指定版本时直接采用。
  • 未指定时根据提交建议 patch、minor 或 major。
  • patch:修复和小优化。
  • minor:向后兼容的新功能。
  • major:不兼容变更;必须向用户确认影响与迁移方式。
  • 标签始终使用 v 前缀,项目文件使用不带 v 的版本号。

3. 同步版本号

以下是当前基线清单,不是完整清单。先更新这些位置,再用 git grep 发现新增位置。

AI 服务

  • package/ai/pyproject.toml
  • package/ai/uv.lock
  • package/ai/desktop_app.py
  • package/ai/app/services/photo_model_repository.py 中的 User-Agent

Server

  • package/server/pyproject.toml
  • package/server/uv.lock
  • package/server/app/core/config_manager.py 中的全部版本常量和默认值

Website 与 CLI

  • package/website/package.json
  • package/trailsnap-cli/package.json
  • package/trailsnap-cli/pyproject.toml
  • package/trailsnap-cli/trailsnap/cli.py
  • 仅在测试夹具表达“当前产品版本”时同步测试版本;不要误改依赖版本,例如 ts-node@10.9.2

Desktop 与 AI 扩展

  • package/desktop/package.json
  • package/desktop/src-tauri/Cargo.toml
  • package/desktop/src-tauri/Cargo.lock
  • package/desktop/src-tauri/tauri.conf.json
  • package/desktop/src-tauri/resources/ai-extensions.json
  • package/desktop/src-tauri/src/ai_extension.rs 中的扩展版本
  • .github/workflows/build-desktop-ai-extension.yml 中的 EXTENSION_VERSION

完成后再次搜索旧版本:

  • 历史 changelog 和 version.json 中的旧版本应保留。
  • 第三方依赖版本不得误改。
  • 所有当前产品版本、锁文件本地包版本和发布工作流版本必须一致。

4. 分析提交并撰写内容

按功能模块归并最终用户可见结果,不要机械罗列 commit。

  • 优先提炼 feat、fix、perf 和有用户影响的 refactor。
  • 忽略构建前端、构建后端、构建ai、构建cli 等 CI 触发词。
  • 忽略中间修复:如果同一功能先实现后优化,只描述最终能力。
  • 测试、内部重构和 CI 调整仅在影响稳定性、安装或发布体验时提及。
  • Release Notes 使用中文,按桌面端、移动端、照片浏览、设置、安装部署、修复稳定性等实际模块组织。
  • 避免无必要的实现术语。

5. 更新官网和客户端更新清单

必须在创建标签前完成:

  1. 在 package/official-site/docs/guide/changelog.md 顶部加入中文日志,使用“新增功能 / 优化功能 / Bug 修复”。
  2. 在 package/official-site/en/docs/guide/changelog.md 顶部加入等价英文日志,使用“New / Improvements / Bug Fixes”。
  3. 在 package/official-site/public/version.json 数组末尾加入新版本:
    • version 不带 v
    • update_info 使用面向用户的简洁中文 HTML,以 <br> 换行
    • download_url 指向本次 GitHub Release 地址
  4. 生成 releases/v{version}/:
    • release-notes.md
    • xiaohongshu.md
    • wechat.md

releases/ 通常被 git 忽略;确认三个文件存在即可,不强行提交。

6. 发布前验证、提交与推送

依次执行:

  1. 在 package/official-site 下解析 public/version.json。

  2. 在 package/official-site 下运行 pnpm docs:build。

  3. 在仓库根目录运行完整 E2E:

    pwsh .\tests\scripts\run-tests.ps1 -Layer e2e -Level full

  4. 若失败:

    • 区分代码失败与环境/启动器失败。
    • 修复属于本次发布范围的根因后,重新运行同一完整命令。
    • 不得把扫描准备通过或部分用例通过报告为完整通过。
  5. 审查 git diff、git diff --check 和工作区状态。

  6. 提交所有版本号、官网日志、version.json 及必要的发布测试修复。

  7. 使用 Conventional Commits,例如 chore(release): prepare vX.Y.Z。

  8. 除非用户明确要求,不在提交消息中加入镜像或包发布触发词。

  9. 推送当前分支,确认本地 HEAD 与远程一致且工作区干净。

7. 确认并创建 Release

  1. 向用户完整展示 release-notes.md。

  2. 明确说明官网构建和完整 E2E 结果。

  3. 等待用户确认。

  4. 确认后创建 Release:

    gh release create vX.Y.Z --title "vX.Y.Z" --notes-file "releases\vX.Y.Z\release-notes.md"

  5. 记录 Release URL、标签 SHA 和创建时间。

  6. 不要手动重复创建标签;gh release create 会创建并推送标签。

  7. 不得移动已发布标签或删除 Release,除非用户明确授权。

8. 监控标签 CI

创建 Release 后不要立即结束。持续监控该标签触发的工作流,直到全部进入 completed。

当前应关注的工作流基线:

  • Build and Push Frontend
  • Build and Push Server
  • Build and Push AI
  • Build Desktop Installers
  • Build Desktop AI Extension
  • Build Mobile App
  • Build and Publish CLI

使用 gh run list --branch vX.Y.Z 和 gh run view 检查状态、矩阵任务及失败步骤。

  • 记录本次标签触发的 run ID,避免混入同一提交的分支 push 任务。
  • 定期汇报状态变化,不重复播报无变化快照。
  • 工作流 queued 或 pending 时继续等待。
  • 任一工作流失败时,读取失败 job 和日志,报告根因。
  • 未经用户授权,不移动标签、重建 Release 或实施范围外修复。
  • Docker 镜像工作流成功不代表有 Release 附件;分别报告镜像与附件状态。

9. 验收 Release 附件

从工作流定义推导预期附件,不只依赖固定数量。当前 v0.10.0 结构的基线为 12 个:

  • Desktop:Windows EXE、macOS DMG、Linux AppImage、Linux DEB
  • Mobile:Android APK
  • CLI:Windows、Linux、macOS 可执行文件
  • Desktop AI Extension:Windows、Linux、macOS 压缩包和 ai-extensions.json

验收要求:

  1. 运行 gh release view vX.Y.Z --json assets。
  2. 确认每个预期文件存在、size 大于 0、state 为 uploaded。
  3. 确认标签 SHA 与发布提交 SHA 一致。
  4. 确认 Release 不是 draft 或 prerelease,除非用户要求。
  5. 确认全部相关 CI 为 completed/success。

10. 生成安装包下载区并验证 Release 正文

多个上传工作流可能使用 generate_release_notes 更新同一个 Release,从而修改标题。

所有 CI 完成后必须:

  1. 检查 Release 标题和正文。

  2. 将其与用户确认过的 release-notes.md,追加的 “What's Changed”可以保留。

  3. 若标题或正文被改变,恢复:

    gh release edit vX.Y.Z --title "vX.Y.Z" --notes-file "releases\vX.Y.Z\release-notes.md"

  4. 从 gh release view vX.Y.Z --json assets 的 assets[].url 读取浏览器直链,在本地 release-notes.md 末尾生成或替换 ## 安装包下载:

    • Windows:EXE 安装包
    • macOS:DMG 安装包,并标注实际架构
    • Linux:AppImage 和 DEB 安装包
    • Android:APK 安装包
    • 只列面向普通用户的应用安装包;不要列 CLI 可执行文件、Desktop AI Extension 压缩包或 ai-extensions.json
    • 只使用 size 大于 0 且 state 为 uploaded 的附件;必须使用 url,不要使用 apiUrl
    • 链接文字包含文件名或明确格式;按平台归组,同一平台有多种格式时放在同一项
    • 操作必须幂等:已有 ## 安装包下载 时替换该节,不得重复追加
  5. 若任何预期安装包缺失,停止并报告,不得发布不完整的下载区或宣称验收成功。

  6. 使用更新后的 release-notes.md 再次恢复 Release 标题和正文:

    gh release edit vX.Y.Z --title "vX.Y.Z" --notes-file "releases\vX.Y.Z\release-notes.md"

  7. 再次确认正文与更新后的 release-notes.md 完全一致、安装包直链均来自已验收附件、附件数量不变且全部 uploaded。

11. 社媒文案规范

小红书

  • 300–500 字,产品向、口语化,活泼但不过分。
  • 标题突出核心价值,可使用一个 emoji,不做标题党。
  • 用【】标记重点功能,每段最多 1–2 个 emoji。
  • 描述用户收益,不解释 API、框架或内部实现。
  • 结尾邀请反馈,并附 5–8 个相关标签。

公众号

  • 800–1500 字,专业友好,使用 Markdown。
  • 标题包含版本号与主要更新。
  • 按功能模块解释“是什么、有什么价值、适用场景”。
  • 包含体验优化、升级方式和结尾感谢。
  • major 版本必须增加“⚠️ 升级注意事项”,说明影响与迁移方式。
  • 不凭空承诺下一版本;仅在提交或计划中有依据时预告。

Skill 不自动向社交平台发布内容,只生成文件并提醒用户审阅。

12. 完成报告

报告以下内容:

  • 版本号和 GitHub Release 链接
  • 发布提交与标签 SHA
  • 官网构建结果
  • 完整 E2E 汇总
  • 每个发布工作流的最终状态
  • Release 附件数量、分类和 uploaded 状态
  • Release 正文中的各平台安装包下载链接,以及已排除 CLI 和 AI 扩展下载链接
  • Release 标题与正文是否通过最终复核
  • 三份本地文案的绝对路径链接
  • 提醒用户审阅后再手动发布社媒内容

若任何 CI 或预期附件失败,不得宣称发布全部成功。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

对照片库或指定相册进行体检,并把结构、时间、地点、AI 元数据与安全清理问题转成可选择、可确认、尽量可撤销的计划。

日本語の概要は準備中です。原文の説明を表示しています。

LC044/TrailSnap7832026年10月12日 更新

安全地把照片整理成正式相册,通过预览、用户确认、执行和撤销完成写操作。

日本語の概要は準備中です。原文の説明を表示しています。

LC044/TrailSnap7832026年10月12日 更新

根据模糊的时间、地点、同行人、画面和文字线索找回可能的照片事件,并在用户确认后生成可追溯的回忆故事。

日本語の概要は準備中です。原文の説明を表示しています。

LC044/TrailSnap7832026年10月12日 更新

为朋友圈九宫格选择质量高、重复少、内容与时空分布丰富的照片。

日本語の概要は準備中です。原文の説明を表示しています。

LC044/TrailSnap7832026年10月12日 更新

按年份和事件整理指定人物出现过的照片,展示共同经历、成长变化、地点与同行人,并可生成可追溯的人物故事。

日本語の概要は準備中です。原文の説明を表示しています。

LC044/TrailSnap7832026年10月12日 更新

Query a user's TrailSnap photo library through scoped MCP tools to find photos, reconstruct memories, build person timelines, create evidence-backed narratives, or propose an album plan for explicit in-app approval. Use for the user's own TrailSnap library; never claim a proposal was executed or changed the library.

日本語の概要は準備中です。原文の説明を表示しています。

LC044/TrailSnap7832026年10月12日 更新

LC044 のスキルをすべて見る

このスキルの問題を報告する