Communitygithub.com

Holix 發布流程 (Holix Release)

Helix 是一個強大的自學型 AI 代理,具備記憶、技能和工具回憶能力。它能從成功的任務中學習,並為未來建立可重複使用的技能。

Holix 發布流程 (Holix Release) 是什麼?

此技能定義了一個完整的端到端發布流程,專為 `javded-itres/Holix` 專案設計。當使用者下達「сделай релиз」(發布)指令時,AI 代理會自動執行從創建 Pull Request、通過 CI 測試、合併到主分支、最後打上 Git 標籤並觸發 GitHub Release 與 PyPI 發布的完整循環。該流程嚴格遵循 `RULES.md` 中定義的規範,包含版本號確認(pyproject.toml、cli/__init__.py)、CHANGELOG 更新、程式碼檢查等步驟。核心設計是確保發布的可靠性和可重複性,避免跳過任何步驟(如 CI 未通過就合併)。此技能主要支援 GitHub 和 PyPI 平台,透過 gh CLI 和 Git 命令實現自動化。

相容平台~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 matrix)

合併後:打標籤 `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 URL 和合併 SHA
  • 版本 X.Y.Z / 標籤 vX.Y.Z
  • 發布 URL
  • CI + PyPI 工作流程狀態

相關技能