prepare-core-kit-release

Prepara o repositório bottlerocket-core-kit para lançamento, incrementando a versão e atualizando o changelog.

O que é prepare-core-kit-release?

Essa skill automatiza o processo de preparação de release para o repositório `bottlerocket-core-kit`. Ela é projetada para desenvolvedores que trabalham no ecossistema Bottlerocket, garantindo que as etapas de bump de versão (no arquivo `Twoliter.toml`) e a atualização do `CHANGELOG.md` sejam executadas de forma consistente e correta. A skill orquestra um workflow que identifica novos commits desde o último release, analisa merge commits para extrair números de PRs e, **criticamente**, instrui o agente a verificar o conteúdo real de cada PR (com `git show <hash> --stat`) para diferenciar mudanças de primeira parte de atualizações de pacotes de terceiros. Isso evita erros comuns, como assumir que um PR contém apenas um tipo de alteração. A saída é uma sequência de dois commits assinados: o primeiro para o bump de versão e o segundo para o changelog, seguindo regras rígidas de formatação e categorização. A skill é compatível com ferramentas como Claude Code, Cursor e Codex, e seu documento de instruções (`SKILL.md`) contém exemplos, comandos de validação e dicas para resolver problemas comuns, como referências de PR ausentes ou categorização incorreta de pacotes.

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

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Preparar Release do Core Kit

Prepara o repositório bottlerocket-core-kit para um novo release, incrementando a versão no Twoliter.toml e atualizando o CHANGELOG.md.

Propósito

Automatizar o workflow de preparação de release para o bottlerocket-core-kit:

  • Incrementar a versão do release no Twoliter.toml
  • Gerar entradas de changelog a partir do histórico do git
  • Criar commits formatados corretamente para o release

Quando Usar

  • Preparando um novo release do bottlerocket-core-kit
  • Necessidade de atualizar o changelog com mudanças recentes
  • Criando commits de release com a formatação adequada

Pré-requisitos

  • Trabalhar em um grove com bottlerocket-core-kit baixado
  • Histórico do git disponível com merge commits e referências de PRs
  • Conhecimento da versão alvo do release

Procedimento

Workflow de Release

IMPORTANTE: O processo de release requer DOIS commits em ordem estrita:

Commit 1: Bump de Versão (DEVE vir primeiro)

Atualize Twoliter.toml para definir a nova versão do release:

# Em Twoliter.toml, atualize:
release-version = "X.Y.Z"

Comando de commit:

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

Commit 2: Atualização do Changelog (DEVE vir em segundo)

Atualize CHANGELOG.md com as mudanças da nova versão.

Comando de commit:

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

1. Identificar Novos Commits

  • Encontre commits desde a última entrada do changelog usando: git log --oneline <ultima_tag_versao>..HEAD
  • Se não houver tags, use: git log --oneline --since="<data_ultimo_release>"

2. Encontrar Referências de PRs

  • Analise merge commits para encontrar números de PRs: git log --merges --oneline <ultima_tag_versao>..HEAD
  • Procure por padrões como "Merge pull request #XXX" nas mensagens de commit
  • Faça referência cruzada dos hashes de commit com os merge commits dos PRs

3. CRÍTICO: Verificar Conteúdo dos PRs

SEMPRE verifique quais pacotes/alterações estão em cada PR checando os arquivos realmente modificados:

git show <hash_do_merge_commit> --stat

NÃO confie em:

  • Resumos de mensagens de commit sozinhos
  • Nomes de branches dos PRs
  • Suposições sobre o que um PR contém

CUIDADO COM PRs MISTOS: Um único PR pode conter TANTO mudanças de primeira parte QUANTO atualizações de pacotes de terceiros. Você deve criar entradas de changelog separadas para cada tipo de mudança do mesmo PR.

Exemplo de PR misto (PR #760):

git show 70609d6a --stat
# Mostra mudanças em:
#   sources/host-ctr/...          <- Mudança de primeira parte (resolver host-ctr)
#   packages/amazon-vpc-cni-plugins/...  <- Atualização de terceiros
#   packages/ecs-agent/...        <- Atualização de terceiros

Este PR requer DUAS entradas de changelog:

  1. Mudanças no SO: "Substituir amazon-ecr-containerd-resolver pelo resolver Docker em host-ctr ([#760])"
  2. Atualizações de Pacotes de Terceiros: "Atualizar amazon-vpc-cni-plugins, ecs-agent ([#760])"

Exemplo de verificação correta:

# Para o merge commit 9656d841 (PR #795):
git show 9656d841 --stat
# Mostra mudanças em: libcap, liburcu, libxcrypt, readline
# NÃO o que o nome da branch ou resumo poderia sugerir

4. Diretrizes de Estilo do Changelog

Formato do Cabeçalho de Versão

# v<VERSÃO> (<AAAA-MM-DD>)

Hierarquia de Seções

  1. Mudanças no SO - Atualizações do sistema central e pacotes de primeira parte
    • Atualizações de pacotes de primeira parte (com subitens detalhados)
    • Subseção Atualizações de Pacotes de Terceiros para pacotes externos
  2. Mudanças na Build - Mudanças no sistema de build, ferramentas e infraestrutura
  3. Mudanças no Orquestrador - Mudanças específicas de orquestração de contêineres
    • Subseção Kubernetes quando aplicável

Formato de Entrada

  • Use marcadores com referências de PRs: - Descrição ([#XXX])
  • Para pacotes de primeira parte, inclua subitens detalhados quando apropriado
  • Para atualizações de pacotes de terceiros: NÃO inclua números de versão
    • CORRETO: - Atualizar \docker-cli-29`, `docker-engine-29` ([#785])`
    • ERRADO: - Atualizar \docker-cli-29` para v29.0.4, `docker-engine-29` para v29.0.4 ([#785])`
  • Para patches/correções, use "Corrigir" em vez de "Atualizar":
    • CORRETO: - Corrigir \containerd-2.1` para atualizar GRPC ([#801])`

Regras de Categorização

  • Pacotes de primeira parte: Código específico do Bottlerocket e dependências internas
  • Pacotes de terceiros: Bibliotecas e ferramentas externas (glibc, docker-engine, etc.)
  • Mudanças na build: Qualquer coisa que afete o sistema de build, CI/CD ou ferramentas de desenvolvimento
  • Mudanças no orquestrador: Kubernetes, ECS ou outros recursos de orquestração de contêineres

5. Verificações de Qualidade

  • Garanta que todas as entradas tenham referências de PRs no formato ([#XXX])
  • Verifique formatação e indentação consistentes
  • Agrupe mudanças relacionadas para evitar entradas repetitivas
  • Mantenha ordem cronológica dentro das seções
  • Verifique se os cabeçalhos das subseções correspondem aos padrões existentes
  • VERIFIQUE o conteúdo real de cada PR antes de escrever a entrada

Validação

Comandos de Validação

  • Verifique o intervalo do git log: git log --oneline <intervalo>
  • Cheque merge commits: git log --merges --grep="pull request" <intervalo>
  • Cheque o conteúdo dos PRs: git show <hash_merge> --stat
  • Valide se os números dos PRs existem no repositório

Uma preparação de release bem-sucedida inclui:

  • Dois commits na ordem correta (bump de versão primeiro, changelog segundo)
  • Twoliter.toml com release-version atualizado
  • CHANGELOG.md com nova seção de versão e data correta
  • Todas as entradas com referências de PRs no formato ([#XXX])
  • Atualizações de pacotes de terceiros NÃO incluem números de versão
  • Commits estão assinados (flags -s -S)

Problemas Comuns

Referências de PRs Ausentes

Se merge commits não mostrarem números de PRs, verifique:

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

Procure por padrões "Merge pull request #XXX".

Categorização Incorreta de Pacotes

Sempre verifique com git show <hash> --stat para ver os arquivos reais alterados antes de categorizar como primeira parte vs. terceiros.

Número de Versão em Atualizações de Terceiros

Lembre-se: entradas de atualização de pacotes de terceiros NÃO devem incluir números de versão, apenas nomes de pacotes.

Exemplo de Estrutura de Saída

# v12.3.0 (2026-01-20)

## Mudanças no SO
- Substituir `amazon-ecr-containerd-resolver` pelo resolver Docker em `host-ctr` ([#760])
- Adicionar suporte ao daemon de controle MPS em `nvidia-k8s-device-plugin` ([#789])

### Atualizações de Pacotes de Terceiros
- Atualizar `docker-cli-29`, `docker-engine-29` ([#785])
- Corrigir `containerd-2.1` para atualizar GRPC ([#801])
- Atualizar `libnvme`, `xfsprogs`, `nvme-cli`, `makedumpfile`, `keyutils`, `e2fsprogs` ([#794])
- Atualizar `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

Habilidades Relacionadas