Communitygithub.com

Holix 发布技能(「сделай релиз」)

Holix 是一个强大的自学习 AI 智能体,具备记忆、技能和工具召回能力。它能从成功任务中学习,并为未来创建可复用的技能。

Holix 发布技能(「сделай релиз」) 是什么?

该技能为 Holix 智能体定义了端到端的发布流水线,用户只需说出「сделай релиз」即可触发。它会自动检查仓库状态、版本文件一致性(pyproject.toml 与 cli/__init__.py),然后创建包含代码变更、版本提升和 CHANGELOG 更新的 PR,并在 GitHub Actions 上持续监控 CI 直至全部通过。合并 PR 后,技能会自动打标签并推动 GitHub Release 与 PyPI 发布,最后返回完整的发布报告。此技能适用于 GitHub 托管的 `javded-itres/Holix` 仓库,要求 `gh` 认证、`git` 已获取最新标签,并严格遵循补丁版本号策略。整个流程强调不可跳过 CI、不可手动在标签前合并,确保了发布的可重复性和可靠性。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add javded-itres/Holix

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Holix 发布技能(「сделай релиз」) 是做什么的?

当用户说出 сделай релиз(或等同指令)时,自始至终执行此流水线。不要在 PR 后停止。不要跳过 CI。不要在合并前打标签。

规范包规则:RULES.md §8。本技能即是操作循环。

前置条件

  • 仓库:javded-itres/Holix。默认分支:main。
  • 认证:gh auth status 必须已登录。
  • 先拉取:git fetch origin --tags。
  • 下个版本 = 最新 GitHub 发布 + 补丁版本(1.0.7 → 1.0.8),除非用户要求次版本或主版本。
  • 打标签前确认版本一致:
    • pyproject.toml [project].version
    • cli/__init__.py __version__
    • 最新 gh release list / git tag
  • 不要 rsync/scp/hotfix 生产环境。在 main 上打标签即足够:GHA 的 GitHub Release + Publish to PyPI 将从 vX.Y.Z 运行。
  • 每次推送前运行 ./scripts/lint.sh(或 --fix)。

1)包含变更的 PR

将 代码 + 版本提升 + 变更日志 放在同一个 PR 中,以便一次合并,然后打标签。

  1. 如果已有开放的 PR 涵盖了这项工作,则复用它,并在其中添加上版本提升(如果缺失)。
  2. 否则从最新的 origin/main 创建分支: release/X.Y.Z(示例:release/1.0.8)。
  3. 提交用户未提交/未合并的工作(不包含秘密、node_modules/、本地 .env)。
  4. 使用 scripts/versioning.py 提升版本(或编辑两个文件):
    • pyproject.toml
    • cli/__init__.py
  5. 更新 docs/CHANGELOG.md:
    • 将 ## Unreleased 下的笔记移至 ## X.Y.Z — YYYY-MM-DD
    • 留下一个新的空 ## Unreleased
    • 根据实际差异编写 Added/Fixed/Tests
  6. 推送并创建 PR → main:
gh pr create --base main --title "Holix X.Y.Z" --body "$(cat <<'EOF'
## 摘要
发布 Holix X.Y.Z。

## 检查清单
- [ ] pyproject.toml 和 cli/__init__.py 中的版本一致
- [ ] docs/CHANGELOG.md 包含 X.Y.Z 部分
- [ ] CI 绿色(ruff + pytest 矩阵)

合并后:打标签 `vX.Y.Z`(创建 GitHub Release + PyPI)。
EOF
)"

2)GitHub 测试直至绿色

监视 PR 上的 GitHub Actions,而不仅仅是本地 pytest。

gh pr checks <n> --watch
# 或
gh run watch <run-id>

若失败:

  1. gh run view <id> --log-failed(或作业日志)。
  2. 修复代码/测试/ruff。
  3. 本地:./scripts/lint.sh 然后针对性的 pytest。
  4. 提交、推送、重新监视。

重复直到 每个 必需检查都变绿。不要合并红色 CI。 如果失败需要产品决策,请停下来询问——不要掩盖。

3)合并到 main

用户已授权合并作为此命令的一部分。

gh pr merge <n> --merge --delete-branch

仅当用户要求时才使用 --squash。等待 PR 状态为 MERGED。 然后 git checkout main && git pull origin main。

验证 main 现在拥有版本 X.Y.Z。

4)下一个编号的 GitHub 发布

标签 必须 与 pyproject.toml 匹配。如果标签工作流可以完成,请不要手动创建 GitHub 发布。

git checkout main
git pull origin main
python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])"
git tag vX.Y.Z
git push origin vX.Y.Z

监视:

gh run list --branch vX.Y.Z --limit 5
gh release view vX.Y.Z

如果标签工作流因 CHANGELOG 没有 ## X.Y.Z 部分而失败,请在一个后续 PR 中修复,仅在使用 --force-with-lease 并事先说明后才删除/重新推送标签。更倾向于一个新的补丁版本而不是重写已发布的标签。

报告结果

完成后,回复:

  • PR 链接和合并的 SHA
  • 版本 X.Y.Z / 标签 vX.Y.Z
  • 发布链接
  • CI + PyPI 工作流状态

相关技能