bump-nuget-version

$npx mdskill add vchelaru/Gum/bump-nuget-version

Increments NuGet versions and pushes release branches.

  • Updates 12 Gum project files with incremented version numbers.
  • Integrates with NuGet API to fetch current version data.
  • Calculates next version by parsing existing version strings.
  • Creates and pushes a release branch with the new version.
SKILL.md
.github/skills/bump-nuget-versionView on GitHub ↗
---
name: bump-nuget-version
description: Bump the NuGet package versions for all 12 Gum projects (11 libraries + GumCli). Queries NuGet to check if a version exists for today, then sets the new version to YYYY.M.D.V where V increments from the latest published version today (or starts at 1). Creates a release branch named ReleaseCode_YYYY_M_D_V, commits the changes, and pushes. Run this before triggering the nuget release workflow.
disable-model-invocation: true
---

Invoking coder agent to bump NuGet package versions.

You are bumping the NuGet `<Version>` tag in all 12 Gum `.csproj` files (11 libraries + GumCli), then creating a release branch and pushing it. Follow these steps in order:

## Step 1: Get today's date

The current date is available in your system context. Use the year, month, and day as integers (no leading zeros) to form:
- The version prefix: `YYYY.M.D` (e.g., `2026.2.23`)

## Step 2: Query NuGet for today's highest V

Fetch the version list for `FlatRedBall.GumCommon` from the NuGet flat container API (package ID must be all-lowercase in the URL):

`https://api.nuget.org/v3-flatcontainer/flatredball.gumcommon/index.json`

The response has a `versions` array of strings. Filter for entries starting with `{today_prefix}.` (e.g., `2026.2.23.`). Parse the last segment of each match as an integer and find the maximum. The new version is `{today_prefix}.{max+1}`. If no versions for today exist, use `{today_prefix}.1`.

## Step 3: Create the release branch

From main, create and check out the new branch. The branch name includes the full version with underscores:
`ReleaseCode_YYYY_M_D_V` (e.g., `ReleaseCode_2026_2_23_2`)

```bash
git checkout main
git checkout -b ReleaseCode_YYYY_M_D_V
```

## Step 4: Update all 12 .csproj files

Read each file first, then use the Edit tool to replace the `<Version>...</Version>` line with the new version string.

The repo root is `C:\Users\vchel\Documents\GitHub\Gum`. The 12 files are:

1. `GumCommon\GumCommon.csproj`
2. `MonoGameGum\MonoGameGum.csproj`
3. `MonoGameGum\KniGum\KniGum.csproj`
4. `MonoGameGum\FnaGum\FnaGum.csproj`
5. `Runtimes\SkiaGum\SkiaGum.csproj`
6. `Runtimes\SkiaGum.Maui\SkiaGum.Maui.csproj`
7. `Runtimes\GumShapes\MonoGameGumShapes.csproj`
8. `Runtimes\GumShapes\KniGumShapes.csproj`
9. `Runtimes\RaylibGum\RaylibGum.csproj`
10. `Gum.Cli\Gum.Cli.csproj`
11. `Themes\Gum.Themes.Editor.MonoGame\Gum.Themes.Editor.MonoGame.csproj`
12. `Themes\Gum.Themes.Editor.Kni\Gum.Themes.Editor.Kni.csproj`

## Step 5: Commit and push the branch

Stage only the 12 csproj files and commit:

```bash
git add GumCommon/GumCommon.csproj MonoGameGum/MonoGameGum.csproj MonoGameGum/KniGum/KniGum.csproj MonoGameGum/FnaGum/FnaGum.csproj Runtimes/SkiaGum/SkiaGum.csproj Runtimes/SkiaGum.Maui/SkiaGum.Maui.csproj Runtimes/GumShapes/MonoGameGumShapes.csproj Runtimes/GumShapes/KniGumShapes.csproj Runtimes/RaylibGum/RaylibGum.csproj Gum.Cli/Gum.Cli.csproj Themes/Gum.Themes.Editor.MonoGame/Gum.Themes.Editor.MonoGame.csproj Themes/Gum.Themes.Editor.Kni/Gum.Themes.Editor.Kni.csproj
```

Commit message should be `Bump version to {new_version}`.

Then push:

```bash
git push -u origin ReleaseCode_YYYY_M_D_V
```

## Step 6: Report

Print a summary:
- New version string
- Whether today already had a published version (and what the previous V was) or if this is the first release today
- Branch name

$ARGUMENTS
More from vchelaru/Gum