Communitygithub.com

Holix リリース (「リリースを作成」)

自己学習型AIエージェントHolixのためのリリースパイプラインスキルです。タスクの成功から学び、将来に再利用可能なスキルを自動生成します。

Holix リリース (「リリースを作成」) とは?

このスキルは、「リリースを作成」というユーザー指示に対して、完全なエンドツーエンドのリリースパイプラインを自動実行します。リポジトリのバージョン管理、CHANGELOG更新、GitHub PR作成、CIテストの監視、マージ、タグ付け、そしてGitHub ReleaseとPyPIへの公開までを一貫して行います。主なプラットフォームはGitHub ActionsとPyPIで、開発者は単一のコマンドで複雑なリリースプロセスを完了できます。このスキルは自己学習型エージェントHolixの一部であり、成功したリリースプロセスを記憶し、将来的に類似タスクを最適化・自動化する能力を持ちます。スキルはRULES.mdに準拠し、バージョン確認、lint実行、CIグリーン状態の確認など、厳格な前提条件を満たした上で動作します。

対応~Claude Code~Codex CLI~Cursor
npx skills add javded-itres/Holix

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

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回にしてからタグを付けます。

  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テストがグリーンになるまで監視

ローカルの pytest だけでなく、PR上のGitHub Actions を監視します。

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ワークフローのステータス

関連スキル