--- 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, if `npm run format` fails, it may be necessary to run `npm install` first to ensure all formatting dependencies are available. Then, run `npm run format` to ensure consistency. - Delete any temporary files created during the process.