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

This skill is Step 1 of 5:

release-branchrelease-statusrelease-testingrelease-publishrelease-milestones

Contract

  • Use scripts for detection, validation, reconciliation, and writes.
  • Treat remote release refs and the CI run triggered by the SkiaSharp push as irreversible. Never force-update or move an existing ref.
  • Keep the current checkout unchanged and never commit directly to protected main/skiasharp branches.
  • Audit the exact version first; execute only after the user approves every pending operation.
  • Preserve the audited base SHA and Skia gitlink SHA during execution.
  • The script may create matching release/{version} refs in both repositories.
  • A regular stable release may create a protected-branch bump PR. Automation opens it; a maintainer reviews and merges it.
  • This skill never merges PRs or publishes packages/releases.

Release model

Exact versionBase
X.Y.Z-preview.N / -rc.Nmain before line creation, otherwise release/X.Y.x
X.Y.Zrelease/X.Y.x
X.Y.Z.F-preview.N / -rc.NTag vX.Y.Z
X.Y.Z.FLatest matching hotfix preview/RC branch

Preview/RC iterations begin at 1. Every SkiaSharp release branch has an identically named mono/skia branch at the exact pinned gitlink. Stable public versions are bare X.Y.Z; CI test packages remain X.Y.Z-stable.{build} until publication.

Script contract

ScriptResponsibility
scripts/detect-release-version.pyRead-only next-preview calculation from main or release/X.Y.x.
scripts/create-release-branches.pyExact-version dry-run, validation, reconciliation, push, and stable bump PR.

Operation statuses:

StatusResponse
doneValidated; no write needed.
pendingInclude in approval and execution.
awaiting-userAutomation is complete; report the maintainer action.

Workflow

1. Resolve the exact version

Use a supplied exact version directly. When the user requests the next release, choose main or an exact release/X.Y.x integration branch, asking only when that line is ambiguous:

python3 .agents/skills/release-branch/scripts/detect-release-version.py \
  {integration-branch}

Pin the returned releaseVersion.

2. Audit

python3 .agents/skills/release-branch/scripts/create-release-branches.py \
  {exact-version} \
  --dry-run

Render:

## Release branch audit

**Release:** `{version}` ({type})
**Base:** `{baseRef}` at `{baseSha}`
**Skia:** `{skiaSha}`
**Branches:** `mono/SkiaSharp:{releaseBranch}`,
`mono/skia:{releaseBranch}`

| Operation | Status | Detail |
|-----------|--------|--------|
| `{operations[].id}` | `{operations[].status}` | `{operations[].detail}` |

Include every warning and call out that a pending SkiaSharp push starts CI.

3. Approve and execute

If no operation is pending, report any maintainer action and continue to the handoff. Otherwise obtain approval and run the emitted executionCommand, which pins baseSha and skiaSha.

If execution fails, rerun the dry-run to reconcile partial state before retrying the emitted command.

4. Hand off

Run the returned statusCommand with release-status. For stable releases, also report the bump PR URL and its maintainer-owned merge state.

See releasing.md for the complete release process.

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)11moReviewAdvanced
github-release-management46moReviewAdvanced
agent-release-swarm16moReviewAdvanced
magerun-release15moNo 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