Agent skill

Update Skia

by mono in mono/SkiaSharp

Update the Skia graphics library to a new Chrome milestone in SkiaSharp's mono/skia fork.

MITAuto-check passedDevelopment

Install Update Skia

skills CLI
$ npx skills add mono/SkiaSharp --skill update-skia -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mono/SkiaSharp update-skia --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mono/SkiaSharp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/update-skia .claude/skills/update-skia && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
update-skia
GitHub stars
5.6k
Token cost
~2.4k tokens
SKILL.md length
1,064 words
Files
18 (incl. scripts, references)
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Update the Skia graphics library to a new Chrome milestone in SkiaSharp's mono/skia fork.

  • The user asks to update/bump Skia
  • SKILL.md covers Start state, Definition of success, Working rules and Modes, plus 4 more sections
  • Runs Python scripts from its folder
  • Merge upstream Skia

What it does

Update Skia is an agent skill from mono/SkiaSharp. Update the Skia graphics library to a new Chrome milestone in SkiaSharp's mono/skia fork. Handles upstream merge, fork-patch preservation, dependency compatibility, C API adaptation, binding regeneration, full backend testing, and coordinated dual-repo PRs. Use whenever the user asks to update/bump Skia, merge upstream Skia, update the Skia submodule, sync a milestone or release line, merge upstream main, or check the current Skia milestone/version. For an individual dependency update, use native-dependency-update.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 20 other files, including scripts and reference files (for example `references/breaking-changes-checklist.md`, `references/known-gotchas.md` and `references/phases/01-03-research.md`).

It sits in Development, covering Project management and Dependency management. The repository describes itself as: SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile… The licence is MIT.

When your agent uses it

  • The user asks to update/bump Skia
  • Merge upstream Skia
  • Update the Skia submodule
  • Sync a milestone

Example prompts

  • “/update-skia”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit cb51ed5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 8 files in scripts/ (Python), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Update Skia loads about 2.4k tokens when it runs, and up to ~16k if it reads all its reference files. Until then it costs about 133 tokens; SKILL.md has 1,064 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~133
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~16k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from mono/SkiaSharp at commit cb51ed5, republished under its MIT licence (© mono). 1,064 words, ~2,407 tokens.

Download SKILL.mdSave it as .claude/skills/update-skia/SKILL.md (or your agent's skills folder). This skill also uses 17 other files; get the full folder from GitHub.
name
update-skia
description
Update the Skia graphics library to a new Chrome milestone in SkiaSharp's mono/skia fork. Handles upstream merge, fork-patch preservation, dependency compatibility, C API adaptation, binding regeneration, full backend testing, and coordinated dual-repo PRs. Use whenever the user asks to update/bump Skia, merge upstream Skia, update the Skia submodule, sync a milestone or release line, merge upstream main, or check the current Skia milestone/version. For an individual dependency update, use native-dependency-update.

Update Skia

Use this skill as the source of truth for both a developer-run update and the automated sync. The workflow only supplies resolved inputs, a prepared host, and automated PR delivery.

Skia C++ -> SkiaSharp C API -> generated P/Invoke -> managed wrappers

Run from the mono/SkiaSharp repository root. Each phase lives in a separate reference so only the current work enters context.

Start state

Automation exports the SKIA_SYNC_* variables below. A local run resolves them in Phase 01. Never replace supplied automation values with assumptions about main, skiasharp, or branch names.

Runtime valueEnvironment variableMeaning
{CURRENT}SKIA_SYNC_CURRENTMilestone on the parent base
{TARGET}SKIA_SYNC_TARGETRequested target milestone
{UPSTREAM_REF}SKIA_SYNC_UPSTREAM_REFchrome/m{TARGET} or main
{BASE_BRANCH}SKIA_SYNC_BASE_BRANCHParent PR base
{PARENT_BASE_SHA}SKIA_SYNC_PARENT_BASE_SHAExact parent base commit used for metadata comparison
{SKIA_BASE_BRANCH}SKIA_SYNC_SKIA_BASE_BRANCHmono/skia PR base
{SKIA_BASE_SHA}SKIA_SYNC_SKIA_BASE_SHAExact mono/skia commit recorded by the parent base
{HEAD_BRANCH}SKIA_SYNC_HEAD_BRANCHFeature branch used in both repositories
{IS_RELEASE}SKIA_SYNC_IS_RELEASEWhether the selected base is a release line
{BASE_UPSTREAM_SHA}SKIA_SYNC_BASE_UPSTREAM_SHAExact upstream commit recorded by the parent base
{TARGET_UPSTREAM_SHA}SKIA_SYNC_TARGET_UPSTREAM_SHAExact fetched target upstream commit
{PLATFORM}SKIA_SYNC_PLATFORMNative Cake target suffix
{ARCH}SKIA_SYNC_ARCHNative architecture

SKIA_SYNC_AUTOMATION=1 selects the automation handoff in Phase 11. Without it, use the repository PR templates and normal developer pushes.

Initialize the artifact directory once:

bash
ARTIFACT_DIR="${SKIA_SYNC_ARTIFACT_DIR:-${TMPDIR:-/tmp}/skia-sync-agent}"
mkdir -p "$ARTIFACT_DIR"

Definition of success

An update is complete only when:

  • The authoritative old-upstream-to-target range was analyzed before merging.
  • The mono/skia result is a genuine two-parent merge with every fork patch and dependency decision accounted for.
  • The updated native source builds; downloaded old native artifacts were never substituted.
  • Bindings were regenerated and every required managed wrapper was reviewed.
  • The final unfiltered tests/SkiaSharp.Tests.Console.slnx run passes every host, including every GPU backend required by GpuPolicy on the validation host.
  • The parent points to the exact tested mono/skia commit.
  • Both PR descriptions identify untested platforms and are ready for human review.

Working rules

  • Create feature branches in both repositories before changes; never commit to protected branches.
  • Use a genuine two-parent merge in mono/skia; never use a tree-override merge.
  • Preserve every fork patch unless upstream contains an equivalent or improved form.
  • Mark a removed patch upstreamed only after enumerating every independent behavior in its old delta and locating each one in the target; one upstreamed hunk does not cover another lost hunk.
  • Classify dependency revisions against the fork base, not only the prior upstream milestone.
  • Treat final DEPS as ground truth: every enabled revision that differs from the fork base must have a matching final decision, exact-SHA evidence, and reconciled Component Governance metadata. A dependency recorded as preserved must still equal the fork-base revision.
  • Let update_versions.py identify dependency changes from exact base/final DEPS. For every tracked changed dependency, and every legacy tracked registration missing verification evidence, derive the semantic version from checked-out source and complete the skia_dependency fields before the helper can pass. Never update a manifest version when its DEPS identity did not change.
  • Components not sourced from Skia DEPS, including ANGLE and its dependencies, are updated in separate dependency PRs rather than bundled into a Skia upstream sync.
  • Never use externals-download after a submodule/native/C API change.
  • Never manually edit generated declarations or interop code. Direct edits to source-controlled /// comment trivia are allowed when regeneration preserves them.
  • Keep public managed ABI additive.
  • A focused project test is diagnostic only; it never satisfies the final gate.
  • GPU bring-up failures are test failures. The validation environment must provide every backend required by GpuPolicy for its platform.
  • Diagnose failures from repository evidence. Do not add one-off compiler/GN flags, skip tests, weaken assertions, or encode milestone-specific answers to make one run green.
  • Execute the update phases in this agent. Do not delegate the full update, or any mutating, build, test, or delivery phase, to a general-purpose/background agent. Only Phase 03's explicitly read-only discrepancy review may be delegated.
  • Run long builds and full test suites in the foreground as one shell invocation. Do not use nohup, &, or agent-turn progress polling. If the shell tool keeps a command running, block on that existing session and inspect its output once after it exits.
  • Keep complete logs and broad diffs in $ARTIFACT_DIR; inspect bounded excerpts instead of streaming large generated files, manifests, or successful build/test logs into model context.
  • Do not create PRs, write automation handoff files, or report completion while any gate fails.
  • In automation, no-work is handled before the agent starts. A started agent that cannot complete must fail rather than return success-shaped output.
Show full SKILL.md (330 more words)Show less

Modes

ModeVersion behavior
Normal milestoneAdvance milestone, soname, assembly/file, and package versions
Release-line bug-fixKeep versions; advance Skia hashes only
Upstream main tipKeep versions; still regenerate, build, and test because APIs may change

CURRENT == TARGET means bug-fix behavior only when {UPSTREAM_REF} != main.

Phase router

Open the router's exact linked phase file once, complete its gate, then move to the next row. Do not glob for alternate phase names or reread an unchanged phase file.

PhasesRead when startingRequired outcome
01–03 Resolve & researchreferences/phases/01-03-research.mdAuthoritative runtime state, diff analysis, and independent review
04–05 Branch & mergereferences/phases/04-05-branch-and-merge.mdCorrect branches and audited two-parent upstream merge
06–07 Update & native buildreferences/phases/06-07-update-and-build.mdVersion files consistent and updated native source builds
08–10 Bindings & testsreferences/phases/08-10-bindings-and-tests.mdBindings reviewed and final unfiltered solution green
11–11 Shipreferences/phases/11-11-ship.mdLocal PRs or automation handoff; no merge without approval

Do not preload other phase files. The current phase file names any narrower reference section needed for that phase.

Deterministic helpers

  • Automation stages this entire skill outside the mutable product checkout and exports its path as SKIA_SYNC_SKILL_DIR. After changing the product branch, continue reading phase references and running helpers from that staged directory rather than the branch-local .agents tree.
  • scripts/update_versions.py updates and validates version surfaces, Skia hashes, and deterministic DEPS-to-Component-Governance identity/review signals.
  • scripts/regenerate_bindings.py runs every binding configuration from the checked-out source and reports new native functions.
  • scripts/audit_fork_patches.py compares the old and new fork deltas and fails while any added, removed, or changed patch lacks a final evidence-backed disposition.

These scripts are idempotent and are the source of truth for their phases. Do not manually recreate their behavior.

Additional references

Completion

Report the upstream ref/SHA, fork-patch and dependency decisions, C API/binding changes, exact build and per-host test results, both PR links, and unresolved cross-platform review. Do not merge either PR without explicit approval.

© mono, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 17 other files (scripts, references) in .agents/skills/update-skia of mono/SkiaSharp.

  • SKILL.md
  • references/breaking-changes-checklist.md
  • references/known-gotchas.md
  • references/phases/01-03-research.md
  • references/phases/04-05-branch-and-merge.md
  • references/phases/06-07-update-and-build.md
  • references/phases/08-10-bindings-and-tests.md
  • references/phases/11-11-ship.md
  • references/typical-changes.md
  • references/validation-prompt.md
  • scripts/audit_fork_patches.py
  • scripts/audit_fork_patches_test.py
  • scripts/prepare_branches.py
  • scripts/prepare_branches_test.py
  • scripts/regenerate_bindings.py
  • scripts/regenerate_bindings_test.py
  • scripts/update_versions.py
  • scripts/update_versions_test.py

Open the folder on GitHubat commit cb51ed5

Compare with similar skills

Update Skia next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Update Skia compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Update Skia this skillmono/SkiaSharp5.6k—~2.4kAutomated safety check: PassMIT
LoopX PR Program Managerloopx-project/loopx6.2k—~1.9kAutomated safety check: PassApache-2.0
Code Reviewcroffasia/itsaplan913—~2kAutomated safety check: PassAGPL-3.0
GitHub Issue Bulk Assignercodewhale-hq/Codewhale41k—~953Automated safety check: PassMIT
Maintainability Reviewpmndrs/glyph395—~1.7kAutomated safety check: PassMIT
Releases-morgan-jeffries/apple-mail-fast-mcp104—~1.3kAutomated safety check: PassMIT

Similar skills

  • LoopX PR Program Manager

    loopx-project/loopx

    Tracks a group of pull or merge requests across repositories as durable LoopX state: inventory, reconcile changes, keep priorities and a roadmap, and monitor over time.

    6.2k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Code Review

    croffasia/itsaplan

    A skill your agent uses when reviewing code — a diff, a merge request, a file, a directory, or a feature.

    913 GitHub stars~2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • GitHub Issue Bulk Assigner

    codewhale-hq/Codewhale

    Moves a list of GitHub issues into a milestone or assigns them to owners with the gh CLI, checking each one before and after the change.

    41k GitHub stars~953 tokensUpdated today
    DevelopmentAuto-check passed
  • Audit and improve repository code milestone by milestone for correctness, clarity, local reasoning, DRY design, explicit state modeling, panic resistance, and trustworthy TypeScript boundaries.

    395 GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Release

    s-morgan-jeffries/apple-mail-fast-mcp

    A skill your agent uses when the user wants to release a new version.

    104 GitHub stars~1.3k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Liaison

    curiositech/some_claude_skills

    Translate multi-agent ecosystem activity into human-readable status briefings, decision requests, and progress summaries.

    243 GitHub stars~1.4k tokensUpdated 1 mo ago
    DevelopmentAuto-check: notes

More from mono/SkiaSharp

All 21 skills in this repo
  • Issue Fix

    mono/SkiaSharp

    Fix bugs in SkiaSharp C bindings. An agent skill from mono/SkiaSharp.

    5.6k GitHub stars~5.1k tokensUpdated today
    Auto-check passed
  • Issue Repro

    mono/SkiaSharp

    Reproduce a SkiaSharp issue systematically and capture structured reproduction results.

    5.6k GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Issue Triage

    mono/SkiaSharp

    Triage a SkiaSharp GitHub issue or PR into structured JSON with classification (type, area, platform, severity), suggested response, automatable actions, and companion Markdown/HTML reports.

    5.6k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Update native dependencies (libpng, libexpat, zlib, libwebp, harfbuzz, freetype, libjpeg-turbo, etc.) in SkiaSharp's Skia fork.

    5.6k GitHub stars~4.1k tokensUpdated today
    Auto-check passed
  • Review Skia Update

    mono/SkiaSharp

    Review a Skia upstream merge PR in mono/skia. An agent skill from mono/SkiaSharp.

    5.6k GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Sample Scout

    mono/SkiaSharp

    Scout Skia GM (golden master) samples in the externals/skia submodule to find demos worth porting to the SkiaSharp Gallery.

    5.6k GitHub stars~1.5k tokensUpdated today
    Auto-check passed

Questions about Update Skia

What does Update Skia do?

Update the Skia graphics library to a new Chrome milestone in SkiaSharp's mono/skia fork. Update Skia is an agent skill from mono/SkiaSharp. Update the Skia graphics library to a new Chrome milestone in SkiaSharp's mono/skia fork.

When should I use Update Skia?

Update Skia fits situations like: the user asks to update/bump Skia; merge upstream Skia; update the Skia submodule; sync a milestone.

How do I install Update Skia in Claude Code?

Run `npx skills add mono/SkiaSharp --skill update-skia -a claude-code`. Or copy the skill folder (.agents/skills/update-skia in mono/SkiaSharp) into .claude/skills/update-skia in your project. Claude Code loads it when a task matches its description.

How do I install Update Skia in Codex?

Run `npx skills add mono/SkiaSharp --skill update-skia -a codex`. Or copy the skill folder (.agents/skills/update-skia in mono/SkiaSharp) into .agents/skills/update-skia in your project. Codex loads it when a task matches its description.

Can I use Update Skia in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mono/SkiaSharp --skill update-skia -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/update-skia, .gemini/skills/update-skia, .github/skills/update-skia and .opencode/skills/update-skia in your project.

What does Update Skia need to run?

Going by SKILL.md and its folder, Update Skia needs Python for the scripts in its folder. Our summary lists: Python 3.

Does Update Skia access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Update Skia safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Update Skia use?

Update Skia is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Update Skia use?

About 2.4k tokens (SKILL.md is roughly 9.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 14k tokens, read only when the agent opens those files.

What are the alternatives to Update Skia?

Skills that share tags, products or a category with Update Skia: LoopX PR Program Manager (loopx-project/loopx, 6.2k stars), Code Review (croffasia/itsaplan, 913 stars), GitHub Issue Bulk Assigner (codewhale-hq/Codewhale, 41k stars) and Maintainability Review (pmndrs/glyph, 395 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Update Skia?

mono (a GitHub organization) maintains it in mono/SkiaSharp, which has 5,587 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 9, 2026.

Source: mono/SkiaSharp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.