pybind11 Release Publication
pybind/pybind11
Walks a maintainer through publishing a pybind11 release after the preparation PR merges, with preflight checks, confirmations before each push and a GitHub release.
Analyze Skia features for SkiaSharp - produces a unified analysis of what shipped (upstream engine benefits, PR links, migration guides) and what's missing (impact/priority/effort scoring, hidden…
$ npx skills add mono/SkiaSharp --skill skia-analyst -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mono/SkiaSharp skia-analyst --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/mono/SkiaSharp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/skia-analyst .claude/skills/skia-analyst && rm -rf skills-srcUse ~/.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/
Install the "skia-analyst" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/skia-analyst into .claude/skills/skia-analyst/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skia-analyst", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mono/SkiaSharp/tree/main/.agents/skills/skia-analystType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mono/SkiaSharp --skill skia-analyst -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mono/SkiaSharp skia-analyst --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mono/SkiaSharp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/skia-analyst .agents/skills/skia-analyst && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "skia-analyst" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/skia-analyst into .agents/skills/skia-analyst/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skia-analyst", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mono/SkiaSharp --skill skia-analyst -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mono/SkiaSharp skia-analyst --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mono/SkiaSharp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/skia-analyst .cursor/skills/skia-analyst && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "skia-analyst" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/skia-analyst into .cursor/skills/skia-analyst/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skia-analyst", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mono/SkiaSharp.git --path .agents/skills/skia-analyst--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mono/SkiaSharp --skill skia-analyst -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mono/SkiaSharp skia-analyst --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mono/SkiaSharp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/skia-analyst .gemini/skills/skia-analyst && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "skia-analyst" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/skia-analyst into .gemini/skills/skia-analyst/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skia-analyst", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mono/SkiaSharp skia-analystInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mono/SkiaSharp --skill skia-analyst -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mono/SkiaSharp.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/skia-analyst .github/skills/skia-analyst && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "skia-analyst" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/skia-analyst into .github/skills/skia-analyst/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skia-analyst", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mono/SkiaSharp --skill skia-analyst -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mono/SkiaSharp skia-analyst --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mono/SkiaSharp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/skia-analyst .opencode/skills/skia-analyst && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "skia-analyst" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/skia-analyst into .opencode/skills/skia-analyst/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skia-analyst", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skia-analystAnalyze Skia features for SkiaSharp - produces a unified analysis of what shipped (upstream engine benefits, PR links, migration guides) and what's missing (impact/priority/effort scoring, hidden…
Skia Analyst is an agent skill from mono/SkiaSharp. Analyze Skia features for SkiaSharp - produces a unified analysis of what shipped (upstream engine benefits, PR links, migration guides) and what's missing (impact/priority/effort scoring, hidden APIs). Given any combination of git refs, milestones, or no input at all, it scans upstream Skia release notes, diffs bindings, and checks C++ headers to produce a unified report. Use whenever the user asks to "write release notes", "generate changelog", "what changed between versions", "what are we missing", "feature…
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts and reference files (for example `evals/evals.json`, `references/analysis-instructions.md` and `references/schema-cheatsheet.md`).
It sits in Development, covering Changelog and release notes, Project management and Code migrations. It works with Git, C++ and GitHub. 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.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cb51ed5. It shows what the files ask for, not the result of running them.
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.
Ships 3 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
ghpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Skia Analyst loads about 1.6k tokens when it runs, and up to ~6.5k if it reads all its reference files. Until then it costs about 231 tokens; SKILL.md has 578 words of instructions outside code blocks.
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.
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.
The full file from mono/SkiaSharp at commit cb51ed5, republished under its MIT licence (© mono). 578 words, ~1,629 tokens.
.claude/skills/skia-analyst/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.You analyze Skia features for SkiaSharp from two angles simultaneously:
Every run produces both. Output is structured JSON and rendered GitHub-flavored Markdown.
This skill always runs in a SkiaSharp checkout. It uses:
externals/skia/ submodule for the C API (our fork at mono/skia)binding/SkiaSharp/Generated for the C API reflected as P/Invoke externsbinding/SkiaSharp/*.cs for the C# wrappersgoogle/skia headers fetched via GitHub for hidden API comparisonThe user may specify anything — infer the scan mode:
| User says | Mode | What to do |
|---|---|---|
| Nothing, "scan everything" | full | All milestones, full gap analysis |
| "what's new since m133" | windowed | milestoneFrom=133, milestoneTo=current |
| "between m133 and m147" | windowed | milestoneFrom=133, milestoneTo=147 |
| "diff v3.119.4..origin/main" | diff | Git diff + milestone analysis |
| "what changed in v4.147.0" | diff | Auto-detect previous tag, diff |
If unclear, ask. But try to infer first.
Phase 1: Setup (determine scan range, prepare sources)
Phase 2: Launch independent GPT-5.6 Sol and Terra agents in parallel
Phase 3: Synthesize — merge findings, dedupe, both lenses
Phase 4: Generate outputs (JSON → validate → Markdown)
Phase 5: Present results1a. Determine scan range
Based on user input, establish:
scanMode: full, windowed, or diffmilestoneFrom and milestoneTorefFrom and refTo (resolve SHAs, dates, commit count)1b. Determine current milestone
cat externals/skia/include/core/SkMilestone.hOr check commit messages for the latest Skia bump PR.
1c. Fetch Skia release notes
Fetch RELEASE_NOTES.md from google/skia using the GitHub MCP tool or gh api:
gh api repos/google/skia/contents/RELEASE_NOTES.md -H "Accept: application/vnd.github.raw" > skia-release-notes.mdSave to a file in the working directory for agents to reference.
1d. Prepare upstream headers for hidden API scan
Agents will fetch upstream C++ headers directly from GitHub during their scan:
github-mcp-server-get_file_contents owner=google repo=skia path=include/core/SkImage.h1e. Locate binding sources
The C API is reflected in binding/SkiaSharp/Generated as P/Invoke extern methods.
The C# wrappers are in binding/SkiaSharp/*.cs. Both are in the worktree.
For the C API headers (our fork), check externals/skia/include/c/ and externals/skia/src/c/.
If the submodule isn't checked out, agents can grep Generated/ for sk_* and gr_*
extern function names — this reflects the full C API surface.
Launch two background agents simultaneously: Sol for maximum depth and Terra for a cost-effective independent perspective.
task agent_type=general-purpose mode=background model=gpt-5.6-sol name=analyst-sol:
task agent_type=general-purpose mode=background model=gpt-5.6-terra name=analyst-terra:Each agent does the complete job independently:
google/skia, compare against
binding/SkiaSharp/Generated for P/Invoke externs and binding/SkiaSharp/*.cs for wrappersFor EVERY finding, classify with BOTH lenses:
changeType + importancebindingStatus + impact + priority + effortWhen both agents complete, merge their findings:
4a. Generate JSON
Save to skia-analyst-report.json in the working directory.
4b. Validate
python3 .agents/skills/skia-analyst/scripts/validate-skia-analyst.py skia-analyst-report.json4c. Render Markdown
python3 .agents/skills/skia-analyst/scripts/render-skia-analyst.py skia-analyst-report.json skia-analyst-report.mdThis produces a GitHub-flavored Markdown file with collapsible details, suitable for pasting into a GitHub issue or sharing as a gist.
Show highlights inline:
importance: breakingThen offer next steps:
© mono, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 7 other files (scripts, references) in .agents/skills/skia-analyst of mono/SkiaSharp.
Open the folder on GitHubat commit cb51ed5
Skia Analyst 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Skia Analyst this skillmono/SkiaSharp | 5.6k | — | ~1.6k | Automated safety check: Pass | MIT | |
| pybind11 Release Publicationpybind/pybind11 | 18k | — | ~2.5k | Automated safety check: Pass | Custom licence | |
| OBS Plugin Dependency Upgradesorayuki/obs-multi-rtmp | 5.1k | — | ~609 | Automated safety check: Pass | GPL-2.0 | |
| ONNX Opset Bump Checklistmicrosoft/onnxruntime | 22k | — | ~12k | Automated safety check: Pass | MIT | |
| Draft Release Notesjamiepine/voicebox | 57k | — | ~941 | Automated safety check: Pass | MIT | |
| Mole Release Notes Publishertw93/Mole | 70k | — | ~1.9k | Automated safety check: Pass | GPL-3.0 |
pybind/pybind11
Walks a maintainer through publishing a pybind11 release after the preparation PR merges, with preflight checks, confirmations before each push and a GitHub release.
sorayuki/obs-multi-rtmp
Updates the obs-multi-rtmp plugin repo to the latest upstream plugin template and OBS Studio version, including dependency metadata, then rebuilds it with CMake.
microsoft/onnxruntime
A checklist for upgrading the pinned ONNX version and opset in ONNX Runtime, covering the files to change, archive hashes, patch rebasing and release-candidate handling.
jamiepine/voicebox
Writes or refreshes the Unreleased section of CHANGELOG.md as a themed narrative built from the commits, PRs and diff since the last version tag.
tw93/Mole
Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.
jamiepine/voicebox
Ends a release cycle by moving the Unreleased changelog notes under a dated version heading, bumping version files with bumpversion and tagging the commit.
mono/SkiaSharp
Fix bugs in SkiaSharp C bindings. An agent skill from mono/SkiaSharp.
mono/SkiaSharp
Reproduce a SkiaSharp issue systematically and capture structured reproduction results.
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.
mono/SkiaSharp
Update native dependencies (libpng, libexpat, zlib, libwebp, harfbuzz, freetype, libjpeg-turbo, etc.) in SkiaSharp's Skia fork.
mono/SkiaSharp
Review a Skia upstream merge PR in mono/skia. An agent skill from mono/SkiaSharp.
mono/SkiaSharp
Scout Skia GM (golden master) samples in the externals/skia submodule to find demos worth porting to the SkiaSharp Gallery.
Categories
Analyze Skia features for SkiaSharp - produces a unified analysis of what shipped (upstream engine benefits, PR links, migration guides) and what's missing (impact/priority/effort scoring, hidden…. Skia Analyst is an agent skill from mono/SkiaSharp. Analyze Skia features for SkiaSharp - produces a unified analysis of what shipped (upstream engine benefits, PR links, migration guides) and what's missing (impact/priority/effort scoring, hidden APIs).
Skia Analyst fits situations like: the user asks to write release notes; generate changelog; what changed between versions; what are we missing.
Run `npx skills add mono/SkiaSharp --skill skia-analyst -a claude-code`. Or copy the skill folder (.agents/skills/skia-analyst in mono/SkiaSharp) into .claude/skills/skia-analyst in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mono/SkiaSharp --skill skia-analyst -a codex`. Or copy the skill folder (.agents/skills/skia-analyst in mono/SkiaSharp) into .agents/skills/skia-analyst in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mono/SkiaSharp --skill skia-analyst -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skia-analyst, .gemini/skills/skia-analyst, .github/skills/skia-analyst and .opencode/skills/skia-analyst in your project.
Going by SKILL.md and its folder, Skia Analyst needs Python for the scripts in its folder and the command-line tools its instructions call (gh and python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Skia Analyst is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.5k 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 4.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Skia Analyst: pybind11 Release Publication (pybind/pybind11, 18k stars), OBS Plugin Dependency Upgrade (sorayuki/obs-multi-rtmp, 5.1k stars), ONNX Opset Bump Checklist (microsoft/onnxruntime, 22k stars) and Draft Release Notes (jamiepine/voicebox, 57k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
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.