CommunityCodierung & Entwicklunggithub.com

prepare-core-kit-release

Bereitet das bottlerocket-core-kit Repository für eine Veröffentlichung vor, indem die Version erhöht und das Changelog aktualisiert wird.

Was ist prepare-core-kit-release?

Dieses Skill automatisiert die Release-Vorbereitung für das „bottlerocket-core-kit“-Repository. Es erhöht systematisch die Release-Version in der Twoliter.toml-Datei, generiert aus dem Git-Verlauf die passenden Changelog-Einträge und erstellt die korrekt formatierten Commits für den Release-Prozess. Das Skill unterstützt Entwickler, die an Bottlerocket oder ähnlichen Git-basierten Release-Workflows arbeiten, und ist speziell für den Einsatz in einer „grove“-Umgebung mit ausgechecktem core-kit Repository konzipiert. Es führt den Benutzer durch einen strengen Zwei-Commit-Prozess (zuerst Version-Bump, dann Changelog-Update), stellt sicher, dass Pull-Request-Referenzen korrekt ermittelt werden, unterscheidet zuverlässig zwischen First-Party- und Third-Party-Änderungen, und validiert die finale Ausgabe auf Konsistenz und korrekte Formatierung. Die Anwendung dieses Skills reduziert manuelle Fehler und beschleunigt die Release-Vorbereitung erheblich.

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

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Prepare Core Kit Release

Bereitet das bottlerocket-core-kit Repository für eine neue Veröffentlichung vor, indem die Version in der Twoliter.toml erhöht und die CHANGELOG.md aktualisiert wird.

Zweck

Automatisiert den Release-Vorbereitungs-Workflow für bottlerocket-core-kit:

  • Erhöht die Release-Version in der Twoliter.toml
  • Generiert Changelog-Einträge aus dem Git-Verlauf
  • Erstellt korrekt formatierte Commits für die Veröffentlichung

Wann verwenden

  • Vorbereitung einer neuen Veröffentlichung von bottlerocket-core-kit
  • Changelog muss mit aktuellen Änderungen aktualisiert werden
  • Erstellung von Release-Commits mit korrekter Formatierung

Voraussetzungen

  • Arbeiten in einem Grove mit ausgechecktem bottlerocket-core-kit
  • Git-Verlauf verfügbar mit Merge-Commits und PR-Referenzen
  • Kenntnis der Ziel-Release-Version

Vorgehensweise

Release-Workflow

WICHTIG: Der Release-Prozess erfordert ZWEI Commits in strenger Reihenfolge:

Commit 1: Version-Bump (MUSS zuerst kommen)

Aktualisiert Twoliter.toml, um die neue Release-Version zu setzen:

# In Twoliter.toml, update:
release-version = "X.Y.Z"

Commit-Befehl:

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

Commit 2: Changelog-Update (MUSS als Zweites kommen)

Aktualisiert CHANGELOG.md mit den Änderungen der neuen Version.

Commit-Befehl:

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

1. Neue Commits identifizieren

  • Finde Commits seit dem letzten Changelog-Eintrag mit: git log --oneline <last_version_tag>..HEAD
  • Falls keine Tags existieren, verwende: git log --oneline --since="<last_release_date>"

2. PR-Referenzen finden

  • Analysiere Merge-Commits, um PR-Nummern zu finden: git log --merges --oneline <last_version_tag>..HEAD
  • Suche nach Mustern wie "Merge pull request #XXX" in Commit-Nachrichten
  • Gleiche Commit-Hashes mit PR-Merge-Commits ab

3. KRITISCH: PR-Inhalte überprüfen

Überprüfe IMMER, welche Pakete/Änderungen in jedem PR enthalten sind, indem du die tatsächlich geänderten Dateien ansiehst:

git show <merge_commit_hash> --stat

Verlasse dich NICHT auf:

  • Commit-Nachrichten-Zusammenfassungen allein
  • PR-Branch-Namen
  • Annahmen darüber, was ein PR enthält

ACHTE AUF GEMISCHTE PRs: Ein einzelner PR kann sowohl First-Party-Änderungen ALS AUCH Third-Party-Paket-Updates enthalten. Du musst für jede Änderungsart aus demselben PR separate Changelog-Einträge erstellen.

Beispiel eines gemischten PRs (PR #760):

git show 70609d6a --stat
# Zeigt Änderungen an:
#   sources/host-ctr/...          <- First-Party-Änderung (host-ctr Resolver)
#   packages/amazon-vpc-cni-plugins/...  <- Third-Party-Update
#   packages/ecs-agent/...        <- Third-Party-Update

Dieser PR erfordert ZWEI Changelog-Einträge:

  1. OS Changes: "Replace amazon-ecr-containerd-resolver with Docker resolver in host-ctr ([#760])"
  2. Third Party Package Updates: "Update amazon-vpc-cni-plugins, ecs-agent ([#760])"

Beispiel für korrekte Überprüfung:

# Für Merge-Commit 9656d841 (PR #795):
git show 9656d841 --stat
# Zeigt: libcap, liburcu, libxcrypt, readline Änderungen
# NICHT das, was Branch-Name oder Zusammenfassung suggerieren

4. Changelog-Stilrichtlinien

Abschnitts-Header

# v<VERSION> (<YYYY-MM-DD>)

Gliederung der Abschnitte

  1. OS Changes - Core-System- und First-Party-Paket-Updates
    • First-Party-Paketupdates (mit detaillierten Unterpunkten)
    • Third Party Package Updates Unterabschnitt für externe Pakete
  2. Build Changes - Build-System-, Tooling- und Infrastrukturänderungen
  3. Orchestrator Changes - Container-Orchestrierungsspezifische Änderungen
    • Kubernetes Unterabschnitt, falls zutreffend

Eintragsformat

  • Verwende Aufzählungspunkte mit PR-Referenzen: - Description ([#XXX])
  • Füge bei First-Party-Paketen bei Bedarf detaillierte Unterpunkte hinzu
  • Bei Third-Party-Paketupdates: KEINE Versionsnummern angeben
    • RICHTIG: - Update \docker-cli-29`, `docker-engine-29` ([#785])`
    • FALSCH: - Update \docker-cli-29` auf v29.0.4, `docker-engine-29` auf v29.0.4 ([#785])`
  • Bei Patches/Fixes verwende "Patch" anstelle von "Update":
    • RICHTIG: - Patch \containerd-2.1` to update GRPC ([#801])`

Kategorisierungsregeln

  • First-Party-Pakete: Bottlerocket-spezifischer Code und interne Abhängigkeiten
  • Third-Party-Pakete: Externe Bibliotheken und Tools (glibc, docker-engine, usw.)
  • Build changes: Alles, was das Build-System, CI/CD oder Entwicklungswerkzeuge betrifft
  • Orchestrator changes: Kubernetes, ECS oder andere Container-Orchestrierungsfunktionen

5. Qualitätsprüfungen

  • Stelle sicher, dass alle Einträge PR-Referenzen im Format ([#XXX]) haben
  • Überprüfe konsistente Formatierung und Einrückung
  • Gruppiere zusammenhängende Änderungen, um repetitive Einträge zu vermeiden
  • Halte die chronologische Reihenfolge innerhalb der Abschnitte ein
  • Überprüfe, ob die Unterabschnitts-Header den vorhandenen Mustern entsprechen
  • Überprüfe den tatsächlichen Inhalt jedes PR, bevor du den Eintrag schreibst

Validierung

Validierungsbefehle

  • Überprüfe den Git-Log-Bereich: git log --oneline <range>
  • Überprüfe Merge-Commits: git log --merges --grep="pull request" <range>
  • Überprüfe PR-Inhalte: git show <merge_hash> --stat
  • Validiere, dass die PR-Nummern im Repository existieren

Eine erfolgreiche Release-Vorbereitung umfasst:

  • Zwei Commits in korrekter Reihenfolge (zuerst Version-Bump, dann Changelog)
  • Twoliter.toml enthält die aktualisierte release-version
  • CHANGELOG.md enthält einen neuen Versionsabschnitt mit korrektem Datum
  • Alle Einträge haben PR-Referenzen im ([#XXX]) Format
  • Third-Party-Paketupdates enthalten KEINE Versionsnummern
  • Commits sind signiert (-s -S Flags)

Häufige Probleme

Fehlende PR-Referenzen

Wenn Merge-Commits keine PR-Nummern anzeigen, überprüfe:

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

Suche nach "Merge pull request #XXX" Mustern.

Falsche Paketkategorisierung

Überprüfe immer mit git show <hash> --stat, um die tatsächlich geänderten Dateien zu sehen, bevor du als First-Party vs. Third-Party kategorisierst.

Versionsnummer in Third-Party-Updates

Denke daran: Einträge für Third-Party-Paketupdates sollten KEINE Versionsnummern enthalten, sondern nur Paketnamen.

Beispiel Ausgabestruktur

# 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

Verwandte Skills