.agents/skills/release-branch/SKILL.md
Create release branches for SkiaSharp versions.
⚠️ NO UNDO: This is step 1 of 3. See releasing.md for full workflow.
🛑 NEVER commit directly to
mainorskiasharpbranches. This is a policy violation.
| Repository | Protected Branches | Required Action |
|---|---|---|
| SkiaSharp (parent) | main | Create release/X.Y.Z branch, never commit to main |
| externals/skia (submodule) | main, skiasharp | Must use feature branch if submodule changes needed |
Release branches are created FROM main, but never modify main directly.
SKIASHARP_VERSION from scripts/azure-templates-variables.ymlgit branch -r | grep "release/{version}-preview"release/{version} branch exists — if it does, the stable release is already cut and you should NOT create another preview. Ask the user to confirm.X.Y.Z-preview.N. Proceed?"Use the provided version directly.
⚠️ Semver ordering: A bare version X.Y.Z is ALWAYS newer than X.Y.Z-preview.N. When listing
branches to find the latest, remember that release/3.119.2 > release/3.119.2-preview.3.
Do NOT use alphabetical sorting — it gives wrong results for semver.
| Version Format | Type | Base | PREVIEW_LABEL |
|---|---|---|---|
X.Y.Z-preview.N | Preview | main | preview.N |
X.Y.Z | Stable | release/X.Y.Z-preview.{latest} | stable |
X.Y.Z.F-preview.N | Hotfix Preview | tag vX.Y.Z | preview.N |
X.Y.Z.F | Hotfix Stable | release/X.Y.Z.F-preview.{latest} | stable |
For stable releases, find latest preview: git branch -r | grep "release/X.Y.Z-preview" | sort -V | tail -1
NuGet version format by release type:
{base}-{PREVIEW_LABEL}.{build} (e.g., 3.119.2-preview.2.3) — build number is part of the prerelease tag{base} only (e.g., 3.119.2) — the build number is NEVER appended to stable versions. On the internal feed, stable builds appear as {base}-stable.{build} but the published version is just {base}.release/{version}scripts/azure-templates-variables.yml: set PREVIEW_LABELgit commit -m "Bump the version to {version}"ask_user before pushinggit push -u origin release/{version}
This triggers CI build (2-4 hours).
Skip for stable and hotfix releases.
Create branch bump-version-{next} from main
Edit scripts/azure-templates-variables.yml:
SKIASHARP_VERSION to next versionPREVIEW_LABEL to preview.0Edit scripts/VERSIONS.txt:
SkiaSharp file → {next}.0SkiaSharp ... nuget lines → {next}HarfBuzzSharp file → increment 4th digit (e.g., 8.3.1.4 → 8.3.1.5)HarfBuzzSharp ... nuget lines → same as file versionCommit: git commit -m "Bump to the next version ({next}) after release"
Show diff to user, then:
git push -u origin bump-version-{next}
gh pr create --title "Bump to the next version ({next}) after release" --body ""
gh pr merge --merge --delete-branch