Communityコーディング&開発github.com

コアキットリリース準備

bottlerocket-core-kitのリリース準備として、バージョン更新とCHANGELOGの更新を自動化します。

コアキットリリース準備 とは?

このスキルは、bottlerocket-core-kitリポジトリのリリース準備ワークフローを自動化します。具体的には、Twoliter.tomlのリリースバージョンを更新し、Git履歴からCHANGELOGエントリを生成し、適切なフォーマットのコミットを作成します。ユーザーは、リリースバージョン番号を指定するだけで、このスキルがバージョン更新とCHANGELOG更新の2つのコミットを正しい順序で作成します。スキルは、各PRの実際の差分を確認し、ファーストパーティの変更とサードパーティのパッケージ更新を正しく分類するための厳格な検証手順を実装しています。また、サードパーティのパッケージ更新にバージョン番号を含めないなど、CHANGELOGのスタイルガイドラインを強制し、高品質なリリースメモを作成します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/cbgbt/bottlerocket-forest/tree/main/skills/prepare-core-kit-release

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

Core Kit リリース準備

bottlerocket-core-kit リポジトリの新しいリリースの準備として、Twoliter.toml のバージョン更新と CHANGELOG.md の更新を行います。

目的

bottlerocket-core-kit のリリース準備ワークフローを自動化します:

  • Twoliter.toml のリリースバージョンを更新
  • Git 履歴から CHANGELOG エントリを生成
  • リリース用に適切にフォーマットされたコミットを作成

使用すべきケース

  • bottlerocket-core-kit の新しいリリースを準備する場合
  • 最近の変更で CHANGELOG を更新する必要がある場合
  • 適切なフォーマットでリリースコミットを作成する場合

前提条件

  • bottlerocket-core-kit がチェックアウトされた grove で作業していること
  • マージコミットと PR 参照を含む Git 履歴が利用可能であること
  • ターゲットリリースバージョンがわかっていること

手順

リリースワークフロー

重要: リリースプロセスでは、厳密な順序で2つのコミットが必要です:

コミット 1: バージョン更新 (必ず最初)

Twoliter.toml を更新して新しいリリースバージョンを設定します:

# Twoliter.toml 内で以下を更新:
release-version = "X.Y.Z"

コミットコマンド:

git add Twoliter.toml && git commit -s -S -m "twoliter: bump kit version to vX.Y.Z"

コミット 2: CHANGELOG 更新 (必ず2番目)

新しいバージョンの変更を反映して CHANGELOG.md を更新します。

コミットコマンド:

git add CHANGELOG.md && git commit -s -S -m "changelog: update for vX.Y.Z"

1. 新しいコミットを特定する

  • 最後の CHANGELOG エントリ以降のコミットを検索: git log --oneline <last_version_tag>..HEAD
  • タグが存在しない場合は以下を使用: git log --oneline --since="<last_release_date>"

2. PR 参照を見つける

  • マージコミットを解析して PR 番号を検出: git log --merges --oneline <last_version_tag>..HEAD
  • コミットメッセージ内の "Merge pull request #XXX" パターンを探す
  • コミットハッシュを PR マージコミットと相互参照する

3. 重要: PR の内容を確認する

各 PR に含まれるパッケージ/変更を確認するために、実際に変更されたファイルを常にチェックしてください:

git show <merge_commit_hash> --stat

以下に依存しないでください:

  • コミットメッセージの要約のみ
  • PR ブランチ名
  • PR の内容に関する仮定

混合 PR に注意: 単一の PR にファーストパーティの変更とサードパーティのパッケージ更新の両方が含まれる場合があります。同じ PR からの変更タイプごとに個別の CHANGELOG エントリを作成する必要があります。

混合 PR の例 (PR #760):

git show 70609d6a --stat
# 以下の変更が表示されます:
#   sources/host-ctr/...          <- ファーストパーティの変更 (host-ctr リゾルバ)
#   packages/amazon-vpc-cni-plugins/...  <- サードパーティの更新
#   packages/ecs-agent/...        <- サードパーティの更新

この PR には2つの CHANGELOG エントリが必要です:

  1. OS 変更: "Replace amazon-ecr-containerd-resolver with Docker resolver in host-ctr ([#760])"
  2. サードパーティパッケージ更新: "Update amazon-vpc-cni-plugins, ecs-agent ([#760])"

正しい確認の例:

# マージコミット 9656d841 (PR #795) の場合:
git show 9656d841 --stat
# 以下の変更が表示されます: libcap, liburcu, libxcrypt, readline の変更
# ブランチ名や要約が示唆する内容ではありません

4. CHANGELOG スタイルガイドライン

バージョンヘッダ形式

# v<バージョン> (<YYYY-MM-DD>)

セクション階層

  1. OS 変更 - コアシステムとファーストパーティパッケージの更新
    • ファーストパーティパッケージの更新 (必要に応じて詳細なサブ箇条書き)
    • サードパーティパッケージ更新 サブセクション (外部パッケージ用)
  2. ビルド変更 - ビルドシステム、ツール、インフラストラクチャの変更
  3. オーケストレーター変更 - コンテナオーケストレーション固有の変更
    • 該当する場合は Kubernetes サブセクション

エントリ形式

  • PR 参照付きの箇条書きを使用: - 説明 ([#XXX])
  • ファーストパーティパッケージの場合は、適宜詳細なサブ箇条書きを含める
  • サードパーティパッケージ更新の場合: バージョン番号を含めない
    • 正しい: - Update \docker-cli-29`, `docker-engine-29` ([#785])`
    • 間違い: - Update \docker-cli-29` to v29.0.4, `docker-engine-29` to v29.0.4 ([#785])`
  • パッチ/修正の場合は、"Update" ではなく "Patch" を使用:
    • 正しい: - Patch \containerd-2.1` to update GRPC ([#801])`

分類ルール

  • ファーストパーティパッケージ: Bottlerocket 固有のコードおよび内部依存関係
  • サードパーティパッケージ: 外部ライブラリおよびツール (glibc, docker-engine など)
  • ビルド変更: ビルドシステム、CI/CD、開発ツールに影響を与えるものすべて
  • オーケストレーター変更: Kubernetes、ECS、その他のコンテナオーケストレーション機能

5. 品質チェック

  • すべてのエントリに ([#XXX]) 形式の PR 参照があることを確認
  • 一貫したフォーマットとインデントを確認
  • 関連する変更をグループ化してエントリの重複を避ける
  • セクション内で時系列順を維持
  • サブセクションヘッダーが既存のパターンと一致することを確認
  • エントリを作成する前に、各 PR の実際の内容を確認すること

検証

検証コマンド

  • Git ログ範囲の確認: git log --oneline <range>
  • マージコミットの確認: git log --merges --grep="pull request" <range>
  • PR 内容の確認: git show <merge_hash> --stat
  • PR 番号がリポジトリに存在することを確認

リリース準備の成功条件:

  • 正しい順序の2つのコミット (最初にバージョン更新、次に CHANGELOG 更新)
  • Twoliter.toml に更新された release-version が設定されている
  • CHANGELOG.md に正しい日付の新しいバージョンセクションがある
  • すべてのエントリに ([#XXX]) 形式の PR 参照がある
  • サードパーティパッケージの更新にはバージョン番号が含まれていない
  • コミットが署名されている (-s -S フラグ)

よくある問題

PR 参照の欠落

マージコミットに PR 番号が表示されない場合、以下を確認:

git log --merges --oneline | head -20

"Merge pull request #XXX" パターンを探します。

誤ったパッケージ分類

ファーストパーティかサードパーティかを分類する前に、必ず git show <hash> --stat で実際に変更されたファイルを確認してください。

サードパーティ更新でのバージョン番号

注意: サードパーティのパッケージ更新エントリには、バージョン番号ではなくパッケージ名のみを含めてください。

出力構造の例

# v12.3.0 (2026-01-20)

## OS Changes
- Replace `amazon-ecr-containerd-resolver` with Docker resolver in `host-ctr` ([#760])
- Add MPS control daemon support to `nvidia-k8s-device-plugin` ([#789])

### Third Party Package Updates
- Update `docker-cli-29`, `docker-engine-29` ([#785])
- Patch `containerd-2.1` to update GRPC ([#801])
- Update `libnvme`, `xfsprogs`, `nvme-cli`, `makedumpfile`, `keyutils`, `e2fsprogs` ([#794])
- Update `readline`, `libxcrypt`, `liburcu`, `libcap` ([#795])

[#760]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/760
[#785]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/785
[#789]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/789
[#794]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/794
[#795]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/795
[#801]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/801

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

ad-hoc-implementation-plan

Transform a rough plan into implement-commit ready artifacts. Allows rigorous review while implementing.

build-kit-locally

Build a kit and publish it to a locally hosted registry for development testing

build-variant-from-local-kits

Build a variant using locally published kits for development validation

deep-research

Create educational documents that build understanding progressively with citations

edit-spec-file

Edit Bottlerocket RPM spec files following project style conventions

fact-find

Quick lookup of specific facts about Bottlerocket with citations

idea-honing

Clarify feature ideas through iterative Q&A, recording insights to guide concept development

implement-commit

Implement commits from an implementation plan using a TDD pipeline

local-registry

Start and manage a local OCI registry for Bottlerocket kit development

propose-feature-concept

Create a new feature concept document to pitch the idea and explain the problem/solution

propose-feature-design

Create or update feature technical design document with architecture and implementation guidance

propose-feature-requirements

Create or update feature requirements specification using EARS notation with examples and appendices

propose-feature-test-plan

Create a test plan mapping EARS requirements and Critical Constraints to specific tests

propose-implementation-plan

Create an implementation plan with atomic commits that build toward a complete feature

review-code

Deep code review generating PR comments via principled question-driven analysis

review-scope

Verify code changes match intended scope and requirements without exceeding boundaries

review-style

Verify code follows project style guides without providing improvement suggestions

test-local-twoliter

Build and test local changes to twoliter before releasing

update-twoliter

Update all Bottlerocket repositories to a new Twoliter version

関連スキル