RE

release-branch

Creates dedicated release branches to trigger CI workflows.

Install

mkdir -p .claude/skills/release-branch && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4050" && unzip -o skill.zip -d .claude/skills/release-branch && rm skill.zip

Installs to .claude/skills/release-branch

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Create a release branch for SkiaSharp. Use when user says "release X", "start release X", "create release branch for X", "I want to release", or "release now". This is the FIRST step of releasing - creates branch and pushes to trigger CI. Can auto-detect next preview version from main branch.
293 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Advanced

Key capabilities

  • →Create release branches for SkiaSharp
  • →Auto-detect next preview version
  • →Update version labels in configuration files
  • →Create matching branches in mono/skia
  • →Bump integration branches for maintenance lines

How it works

The skill automates the creation of release branches from integration branches, updates versioning metadata, and ensures the Skia submodule is preserved via a counterpart branch.

Inputs & outputs

You give it
Release version or trigger phrase
You get back
New release branch and counterpart reference

When to use release-branch

  • →Creating a new release branch
  • →Starting the CI pipeline for a release
  • →Branching the main repository for deployment

About this skill

Release Branch

Use the Release - Prepare GitHub workflow for normal releases. In chat, dispatch it on main with push=false first, inspect the read-only plan, and obtain confirmation before dispatching the same inputs with push=true:

gh workflow run release-prepare.yml --repo mono/SkiaSharp --ref main \
  -f base=main -f release=4.153.0-preview.1 -f push=false

# After reviewing the plan and receiving confirmation:
gh workflow run release-prepare.yml --repo mono/SkiaSharp --ref main \
  -f base=main -f release=4.153.0-preview.1 -f push=true

Replace the example base and identity with the requested values. Locate and inspect each dispatched run; never infer success from a successful dispatch. Verify both release branches exist at the planned commits before proceeding. The branch push starts the internal skiasharp-package and skiasharp-tests chain. Package publication is a separate, explicitly requested release-publish action; Prepare must not queue it.

The Prepare workflow accepts:

  • base: a SkiaSharp branch or commit SHA;
  • release: X.Y.Z[-preview.N|-rc.N|-stable], or the corresponding four-part hotfix form X.Y.Z.F[-preview.N|-rc.N|-stable].

Local fallback

Use the local script only when the workflow is unavailable or the user explicitly requests local execution. It does not replace workflow verification:

# Read-only
./scripts/infra/publishing/prepare-release.ps1 -Base main -Release 4.153.0-preview.1 -Mode DryRun

# Create and validate local branches and commits
./scripts/infra/publishing/prepare-release.ps1 -Base main -Release 4.153.0-preview.1 -Mode Apply

# Create locally, push mono/skia then mono/SkiaSharp, and create a stable bump PR
./scripts/infra/publishing/prepare-release.ps1 -Base main -Release 4.153.0-preview.1 -Mode Push

Before -Mode Push, show the resolved base SHA and every planned ref to the user and obtain confirmation. Never force-update a release branch. Existing matching state is reused; conflicting state blocks the run.

Stable input deliberately uses the explicit -stable sentinel to prevent an accidental stable cut, but creates the bare release/X.Y.Z branch. A three-part stable release also prepares the next SkiaSharp patch and HarfBuzzSharp revision on bump-version-X.Y.Z. Its PR targets a manually created release/X.Y.x servicing line when one exists, otherwise main; release preparation never creates the .x line.

When not to use it

  • →When committing directly to main or protected branches
  • →When a stable release branch already exists for the version

Prerequisites

Git

Limitations

  • →Cannot perform major milestone updates
  • →Requires manual confirmation before pushing

How it compares

It enforces a strict, multi-step release pipeline that prevents direct commits to protected branches and ensures auditability of the Skia source.

Compared to similar skills

release-branch side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
release-branch (this skill)13moReviewAdvanced
github-release-management47moReviewAdvanced
agent-release-swarm17moReviewAdvanced
magerun-release17moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

add-api

mono

Add new C# APIs to SkiaSharp by wrapping Skia C++ functionality. Structured 6-phase workflow: C++ analysis → C API creation → submodule commits → binding generation → C# wrapper → testing. Triggers: - Issue classified as "New API" (after fetching and classification) - Direct request: "add DrawFoo method", "expose SkSurface::draw", "wrap sk_foo_bar" - Keywords: "add API", "expose function", "wrap method", "create binding for"

68

bug-fix

mono

Fix bugs in SkiaSharp C# bindings. Structured workflow for investigating, fixing, and testing bug reports. Triggers: Crash, exception, AccessViolationException, incorrect output, wrong behavior, memory leak, disposal issues, "fails", "broken", "doesn't work", "investigate issue", "fix issue", "look at #NNNN", any GitHub issue number referencing a bug. For adding new APIs, use `add-api` skill instead.

426

api-docs

mono

Write and review XML API documentation for SkiaSharp following .NET guidelines. Triggers: "document class", "add XML docs", "write XML documentation", "add triple-slash comments", "review documentation quality", "check docs for errors", "fix doc issues", "fill in missing docs", "remove To be added placeholders", API documentation requests.

110

native-dependency-update

mono

Update native dependencies (libpng, libexpat, zlib, libwebp, harfbuzz, freetype, libjpeg-turbo, etc.) in SkiaSharp's Skia fork. Handles security CVE fixes, bug fixes, and version bumps. Use when user asks to: - Bump/update a native dependency (libpng, zlib, expat, webp, etc.) - Fix a CVE or security vulnerability in a native library - Update Skia's DEPS file - Check what version of a dependency is currently used - Analyze breaking changes between dependency versions Triggers: "bump libpng", "update zlib", "fix CVE in expat", "update native deps", "what version of libpng", "check for breaking changes". For security audits (finding CVEs, checking PR coverage), use the `security-audit` skill instead.

11

release-publish

mono

Publish SkiaSharp packages and finalize the release. Use when user says "publish X", "finalize X", "tag X", or "finish release X". This is the FINAL step - after release-testing passes. Publishes to NuGet.org, creates tag, GitHub release, and closes milestone. Triggers: "publish the release", "push to nuget", "create github release", "tag the release", "close the milestone", "annotate release notes", "testing passed what's next", "finalize 3.119.2", "release is ready".

19

release-testing

mono

Run integration tests to verify SkiaSharp NuGet packages work correctly before publishing. Use when user asks to: - Test/verify packages before release - Run integration tests - Test on specific device (iPad, iPhone, Android emulator, Mac, Windows) - Verify SkiaSharp rendering works - Check if packages are ready for publishing - Run smoke/console/blazor/maui tests - Continue with release - Test version X Triggers: "test the release", "verify packages", "run tests on iPad", "check ios tests", "test mac catalyst", "run android tests", "continue", "test 3.119.2-preview.2".

14

Search skills

Search the agent skills registry