home / skills / google-gemini / gemini-cli / docs-changelog

docs-changelog skill

/.gemini/skills/docs-changelog

This skill generates and formats release changelogs for new versions, producing concise highlights and updated files for index, latest, and preview pages.

npx playbooks add skill google-gemini/gemini-cli --skill docs-changelog

Review the files below or copy the command above to add this skill to your agents.

Files (5)
SKILL.md
7.2 KB
---
name: docs-changelog
description: >-
  Generates and formats changelog files for a new release based on provided
  version and raw changelog data.
---

# Procedure: Updating Changelog for New Releases

## Objective

To standardize the process of updating changelog files (`latest.md`,
`preview.md`, `index.md`) based on automated release information.

## Inputs

- **version**: The release version string (e.g., `v0.28.0`,
  `v0.29.0-preview.2`).
- **TIME**: The release timestamp (e.g., `2026-02-12T20:33:15Z`).
- **BODY**: The raw markdown release notes, containing a "What's Changed"
  section and a "Full Changelog" link.

## Guidelines for `latest.md` and `preview.md` Highlights

- Aim for **3-5 key highlight points**.
- Each highlight point must start with a bold-typed title that summarizes the
  change (e.g., `**New Feature:** A brief description...`).
- **Prioritize** summarizing new features over other changes like bug fixes or
  chores.
- **Avoid** mentioning features that are "experimental" or "in preview" in
  Stable Releases.
- **DO NOT** include PR numbers, links, or author names in these highlights.
- Refer to `.gemini/skills/docs-changelog/references/highlights_examples.md`
  for the correct style and tone.

## Initial Processing

1.  **Analyze Version**: Determine the release path based on the `version`
    string.
    - If `version` contains "nightly", **STOP**. No changes are made.
    - If `version` ends in `.0`, follow the **Path A: New Minor Version**
      procedure.
    - If `version` does not end in `.0`, follow the **Path B: Patch Version**
      procedure.
2.  **Process Time**: Convert the `TIME` input into two formats for later use:
    `yyyy-mm-dd` and `Month dd, yyyy`.
3.  **Process Body**:
    - Save the incoming `BODY` content to a temporary file for processing.
    - In the "What's Changed" section of the temporary file, reformat all pull
      request URLs to be markdown links with the PR number as the text (e.g.,
      `[#12345](URL)`).
    - If a "New Contributors" section exists, delete it.
    - Preserve the "**Full Changelog**" link. The processed content of this
      temporary file will be used in subsequent steps.

---

## Path A: New Minor Version

*Use this path if the version number ends in `.0`.*

**Important:** Based on the version, you must choose to follow either section
A.1 for stable releases or A.2 for preview releases. Do not follow the
instructions for the other section.

### A.1: Stable Release (e.g., `v0.28.0`)

For a stable release, you will generate two distinct summaries from the
changelog: a concise **announcement** for the main changelog page, and a more
detailed **highlights** section for the release-specific page.

1.  **Create the Announcement for `index.md`**:
    -   Generate a concise announcement summarizing the most important changes.
        Each announcement entry must start with a bold-typed title that
        summarizes the change.
    -   **Important**: The format for this announcement is unique. You **must**
        use the existing announcements in `docs/changelogs/index.md` and the
        example within
        `.gemini/skills/docs-changelog/references/index_template.md` as your
        guide. This format includes PR links and authors. Stick to 1 or 2 PR
        links and authors.
    -   Add this new announcement to the top of `docs/changelogs/index.md`.

2.  **Create Highlights and Update `latest.md`**:
    -   Generate a comprehensive "Highlights" section, following the guidelines
        in the "Guidelines for `latest.md` and `preview.md` Highlights" section
        above.
    -   Take the content from
        `.gemini/skills/docs-changelog/references/latest_template.md`.
    -   Populate the template with the `version`, `release_date`, generated
        `highlights`, and the processed content from the temporary file.
    -   **Completely replace** the contents of `docs/changelogs/latest.md` with
        the populated template.

### A.2: Preview Release (e.g., `v0.29.0-preview.0`)

1.  **Update `preview.md`**:
    -   Generate a comprehensive "Highlights" section, following the highlight
        guidelines.
    -   Take the content from
        `.gemini/skills/docs-changelog/references/preview_template.md`.
    -   Populate the template with the `version`, `release_date`, generated
        `highlights`, and the processed content from the temporary file.
    -   **Completely replace** the contents of `docs/changelogs/preview.md`
        with the populated template.

---

## Path B: Patch Version

*Use this path if the version number does **not** end in `.0`.*

**Important:** Based on the version, you must choose to follow either section
B.1 for stable patches or B.2 for preview patches. Do not follow the
instructions for the other section.

### B.1: Stable Patch (e.g., `v0.28.1`)

- **Target File**: `docs/changelogs/latest.md`
- Perform the following edits on the target file:
    1.  Update the version in the main header. The line should read,
        `# Latest stable release: {{version}}`
    2.  Update the rease date. The line should read,
        `Released: {{release_date_month_dd_yyyy}}`
    3.  Determine if a "What's Changed" section exists in the temporary file
        If so, continue to step 4. Otherwise, skip to step 5.
    4.  **Prepend** the processed "What's Changed" list from the temporary file
        to the existing "What's Changed" list in `latest.md`. Do not change or
        replace the existing list, **only add** to the beginning of it.
    5.  In the "Full Changelog", edit **only** the end of the URL. Identify the
        last part of the URL that looks like `...{previous_version}` and update
        it to be `...{version}`.

        Example: assume the patch version is `v0.29.1`. Change
        `Full Changelog: https://github.com/google-gemini/gemini-cli/compare/v0.28.2…v0.29.0`
        to
        `Full Changelog: https://github.com/google-gemini/gemini-cli/compare/v0.28.2…v0.29.1`

### B.2: Preview Patch (e.g., `v0.29.0-preview.3`)

- **Target File**: `docs/changelogs/preview.md`
- Perform the following edits on the target file:
    1.  Update the version in the main header. The line should read,
        `# Preview release: {{version}}`
    2.  Update the rease date. The line should read,
        `Released: {{release_date_month_dd_yyyy}}`
    3.  Determine if a "What's Changed" section exists in the temporary file
        If so, continue to step 4. Otherwise, skip to step 5.
    4.  **Prepend** the processed "What's Changed" list from the temporary file
        to the existing "What's Changed" list in `preview.md`. Do not change or
        replace the existing list, **only add** to the beginning of it.
    5.  In the "Full Changelog", edit **only** the end of the URL. Identify the
        last part of the URL that looks like `...{previous_version}` and update
        it to be `...{version}`.

        Example: assume the patch version is `v0.29.0-preview.1`. Change
        `Full Changelog: https://github.com/google-gemini/gemini-cli/compare/v0.28.2…v0.29.0-preview.0`
        to
        `Full Changelog: https://github.com/google-gemini/gemini-cli/compare/v0.28.2…v0.29.0-preview.1`

---

## Finalize

- After making changes, run `npm run format` ONLY to ensure consistency.
- Delete any temporary files created during the process.

Overview

This skill generates and formats changelog files for a new release using a provided version, timestamp, and raw changelog body. It automates choosing the correct release path (new minor, patch, preview, nightly) and updates index, latest, or preview changelogs according to project conventions.

How this skill works

The skill parses the version string to select the correct workflow, converts the timestamp into yyyy-mm-dd and Month dd, yyyy formats, and normalizes the raw markdown. It reformats PR URLs to markdown links with PR numbers, removes any New Contributors section, preserves the Full Changelog link, then either replaces or prepends content in target files following the defined templates and rules. Finally it runs code formatting and cleans up temporary files.

When to use it

  • When preparing release notes for a new minor or patch release (stable or preview).
  • When you need consistent, template-driven changelog updates across index, latest, and preview files.
  • When you have raw GitHub release markdown and need PR links normalized and non-essential sections removed.
  • When you want to prepend patch change lists without losing existing release history.
  • When automating changelog updates as part of a release CI pipeline.

Best practices

  • Provide the exact version string and an ISO8601 UTC timestamp to ensure correct path selection and date formatting.
  • Supply raw BODY containing a "What's Changed" section and a Full Changelog link for optimal processing.
  • Prefer summarizing new features when authoring highlights; aim for 3–5 bold-titled highlight points.
  • Avoid including experimental/preview language in stable release highlights and omit PR numbers/authors in latest/preview highlights.
  • Run the skill from a branch with write access to docs/changelogs and ensure npm formatting is available.

Example use cases

  • Release v0.28.0 (stable minor): generate an index announcement and fully replace docs/changelogs/latest.md with populated highlights and processed full changelog.
  • Release v0.29.0-preview.2: produce a preview.md replacement that contains 3–5 bold highlight points and the processed body.
  • Patch v0.28.1: update latest.md header and release date, prepend processed "What's Changed" content, and update the trailing compare URL.
  • Patch preview v0.29.0-preview.3: update preview.md header/date, prepend new changes, and edit only the end of the Full Changelog URL.
  • Automated CI: skip operation for nightly builds and remove temporary files after formatting.

FAQ

What happens if the version contains "nightly"?

The skill stops and makes no changes for nightly versions.

How are PR links handled inside the raw BODY?

All PR URLs in the "What's Changed" section are converted to markdown links using the PR number as the link text, e.g. [#12345](URL).