What "bump the version" means in this repo
This repo is a dotnet new template published to NuGet as SSW.VerticalSliceArchitecture.Template. The release is push-triggered, not tag-triggered.
.github/workflows/package.yml runs only when a push to main changes VerticalSliceArchitecture.nuspec. When it does, it:
- Packs the template with
nuget pack. - Pushes the
.nupkgto NuGet.org. - Reads
<version>from the nuspec and creates a matching git tag. - Publishes a GitHub release on that tag with auto-generated notes.
So the <version> value in VerticalSliceArchitecture.nuspec is the release. Changing it and merging to main ships a new package. Nothing else cuts a release.
Versioning scheme: CalVer
Versions are calendar dates, YYYY.MM.DD (e.g. 2025.12.10, 2026.06.12). There is no SemVer major/minor/patch decision — the new version is simply today's date.
To find the latest published version, use gh release view --json tagName -q .tagName — that's authoritative. Don't trust git tag --sort=-v:refname | head: the repo has both v-prefixed and bare tags (v2025.10.24 and 2025.12.10), and the mixed namespace makes that sort return a stale tag above the real latest.
Steps
- Read the current
<version>fromVerticalSliceArchitecture.nuspec. - Compute today's date as
YYYY.MM.DD. That is the new version. - Guard against a same-day re-release: run
git fetch --tagsfirst (release tags are created by CI on the remote, so a local-onlygit tagcan miss one shipped earlier today), then check the date isn't already a tag. If it is, a release already shipped today — append a numeric suffix (YYYY.MM.DD.1) or ask the user how they want to disambiguate. Don't silently overwrite. - Update
<version>to the new value. - Refresh
<releaseNotes>: summarise what changed since the last release. The<version>you read in step 1 (before bumping) is the previous release's tag, so use it as the changelog base:git log --oneline <previous-version>..HEAD. Distil that into a short, human summary (one or two sentences). This is the NuGet page blurb — GitHub generates the full PR-list notes separately, so keep it terse. - Run the
humanizerskill over the release-notes prose before finishing (per the repo/global content-writing rule).
Guardrails
- Don't push. Don't open a PR. Don't merge to
main. Editing the nuspec onmainis what triggers the publish, so that final step is the user's call — leave the change as a reviewable diff. - Only touch
VerticalSliceArchitecture.nuspec. The package versions inDirectory.Packages.propsare unrelated to the template's release version. - Don't edit the workflow.
Verify
The change is metadata only — no build or test impact. Re-read the nuspec diff to confirm the version and notes are right. CI runs nuget pack (which needs mono) on merge, so there's nothing useful to run locally.