SuperAPI AI 工具集

run-maintenance

部署与运维

查看项目

更新于 10-16 06:59

技能介绍

用途

Maintenance Prep Skill 用于在 XerahS 工作区中,为请求的维护或发布工作准备仓库与子模块状态。它不适用于日常编辑,只有在涉及发布、变更日志或例行仓库维护时使用。该技能本身不是提交、推送、打标签或版本前缀规则的唯一来源,相关规则分别由 git-workflow、update-changelog、publish-release 以及 AGENTS.md 承担。

主要能力

该技能可以完成以下工作:

  • 同步主仓库与子模块。
  • 当维护任务明确涉及同级仓库时,检查这些同级仓库。
  • 判断是否需要进行版本号提升或变更日志更新。
  • 在改动完成后运行相关的预提交构建。
  • 把最终的暂存、提交、推送与打标签决策交给 git-workflow 或 publish-release。

技能明确要求:不要用它来发明提交信息格式、子模块版本前缀、发布标签或变更日志分组规则。

使用方式

工作流按以下步骤进行。

1. 同步前检查状态

在任何拉取或子模块更新之前,先于 XerahS 仓库根目录运行:

git status --short
git submodule foreach --recursive "git status --short"

对于任务中涉及的可选同级仓库:

git -C ../xerahs.github.io status --short
git -C ../ShareX status --short

如果主仓库、子模块或范围内同级仓库存在本地改动,不要直接拉取覆盖。应先提交、暂存,或明确暂停等待所有者决定。子模块的改动属于该子模块仓库。

2. 同步干净的仓库状态

仅在相关仓库干净后,才从 XerahS 仓库根目录运行:

git pull --recurse-submodules
git submodule update --init --recursive

git submodule update 可能因检出父仓库记录的精确提交而使子模块 HEAD 处于分离状态。必须执行后续操作:将 ShareX.ImageEditor 重新附着到其跟踪的 develop 分支,并在继续发布或变更日志工作前快进:

git -C ShareX.ImageEditor fetch origin --prune
git -C ShareX.ImageEditor checkout develop
git -C ShareX.ImageEditor pull --ff-only origin develop
git submodule status ShareX.ImageEditor
git -C ShareX.ImageEditor status --short --branch

如果 ShareX.ImageEditor 无法快进、存在本地改动或仍处于分离状态,应中止并手动解决。如果快进改变了 XerahS 记录的子模块提交,应先提交并推送子模块,然后在父仓库中提交更新后的 XerahS gitlink。

如果任务还涉及可选同级仓库,只同步处于范围内的干净仓库:

git -C ../xerahs.github.io pull origin main
git -C ../ShareX pull origin develop

不要因为可选同级仓库存在就拉取它们。

如果子模块自身有改动,应将其视为独立仓库。共享库子模块提交(如 ShareX.ImageEditor)必须遵循 git-workflow,并省略 XerahS 应用版本前缀。

3. 检查版本需求

从根目录 Directory.Build.props 读取当前 XerahS 应用版本:

$version = (Select-String -Path Directory.Build.props -Pattern '<Version>(.+?)</Version>').Matches[0].Groups[1].Value
git tag --sort=-v:refname | Select-Object -First 1

仅在任务明确涉及版本管理或发布准备时才提升版本。如果需要提升,使用 git-workflow 获取版本来源与前缀规则,或使用 publish-release 执行完整的发布提升/打标签流程。

SkiaSharp 仍在 Directory.Packages.props 中集中管理;不要重新引入项目本地的旧式固定版本。

4. 按需更新变更日志

对于变更日志工作,使用 update-changelog。优先使用辅助脚本生成草稿:

powershell -NoProfile -ExecutionPolicy Bypass -File .ai/skills/update-changelog/scripts/update-changelog.ps1

发布前需人工审核生成的变更日志文本,确保分组、贡献者归属和措辞准确。

5. 构建门禁

对于代码/配置改动,在推送前运行必需的构建:

dotnet build src/desktop/XerahS.sln

不要仅因为经过固定时长就停止构建。如果构建确实卡住,清理过期的构建进程/锁,优先使用 -m:1,然后重试。

纯文档类技能编辑不需要完整解决方案构建,除非它们影响需要本地执行的构建或发布脚本。

6. 提交与推送交接

使用 git-workflow 进行最终的暂存、提交信息、版本前缀和推送行为。

要点:

  • XerahS 应用提交仅在确认根版本领先于最新标签后,才使用 [vX.Y.Z] [Type] description。
  • 共享库或仅子模块的提交省略 [vX.Y.Z],使用 [Type] description。
  • 当父仓库记录更新后的子模块指针时,先推送子模块提交,再推送父仓库。
  • 不要通过此技能给发布打标签;使用 publish-release。

适用场景

适用于需要对 XerahS 仓库进行发布准备、变更日志维护或例行仓库维护的场景,包括同步主仓库与子模块、检查版本提升需求、生成变更日志草稿以及运行预提交构建。

限制

该技能明确不应用于发明提交信息格式、子模块版本前缀、发布标签或变更日志分组规则。它也不负责最终的打标签操作。普通代码编辑不应触发此技能。文档类技能编辑在不妨碍构建或发布脚本时,无需运行完整解决方案构建。