Herdr Issue Triage
herdrdev/herdr
Triages open herdr GitHub issues into a short decision-first Markdown table with a priority light, recommendation, age, reactions and a reason for each.
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.
$ npx skills add mono/SkiaSharp --skill issue-triage -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mono/SkiaSharp issue-triage --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/issue-triage .claude/skills/issue-triage && 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 "issue-triage" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/issue-triage into .claude/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-triage", 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/issue-triageType 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 issue-triage -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mono/SkiaSharp issue-triage --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/issue-triage .agents/skills/issue-triage && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "issue-triage" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/issue-triage into .agents/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-triage", 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 issue-triage -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mono/SkiaSharp issue-triage --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/issue-triage .cursor/skills/issue-triage && 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 "issue-triage" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/issue-triage into .cursor/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-triage", 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/issue-triage--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 issue-triage -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mono/SkiaSharp issue-triage --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/issue-triage .gemini/skills/issue-triage && 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 "issue-triage" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/issue-triage into .gemini/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-triage", 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 issue-triageInstalls 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 issue-triage -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/issue-triage .github/skills/issue-triage && 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 "issue-triage" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/issue-triage into .github/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-triage", 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 issue-triage -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 issue-triage --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/issue-triage .opencode/skills/issue-triage && 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 "issue-triage" agent skill from https://github.com/mono/SkiaSharp/tree/main/.agents/skills/issue-triage into .opencode/skills/issue-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "issue-triage", 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.
issue-triageTriage a SkiaSharp GitHub issue or PR into structured JSON with classification (type, area, platform, severity), suggested response, automatable actions, and companion Markdown/HTML reports.
Issue Triage is an agent skill from 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. Triggers: "triage 123", "triage issue", "classify issue", "analyze issue", "what's this issue about". Also triggered when an issue number is given after the issue-triage skill is already mentioned.
Its SKILL.md is about 3.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 `evals/evals.json`, `references/anti-patterns.md` and `references/labels.md`).
It sits in Development, covering Issue triage. It works with GitHub and Model Context Protocol. 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.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 51e2097. 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 6 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
ghpython3pip3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh and pip3, 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.
Issue Triage loads about 3.4k tokens when it runs, and up to ~26k if it reads all its reference files. Until then it costs about 101 tokens; SKILL.md has 1,309 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 51e2097, republished under its MIT licence (© mono). 1,309 words, ~3,395 tokens.
.claude/skills/issue-triage/SKILL.md (or your agent's skills folder). This skill also uses 17 other files; get the full folder from GitHub.Issue pipeline: Step 1 of 3 (Triage). See documentation/dev/issue-pipeline.md.
Analyze a SkiaSharp GitHub issue and produce a structured, schema-validated triage JSON.
These 3 reads are REQUIRED. Do not proceed to Phase 1 until all three are loaded.
Quick flow:
- Load issue data from GitHub (prefer
gh, or GitHub MCP when available)- Read references: schema-cheatsheet, labels, triage-examples, anti-patterns
- Create brief plan (5-10 lines)
- Investigate code — READ-ONLY, never edit source files
- Generate JSON
- Validate with script
- Persist JSON + Markdown + HTML reports
Primary source: GitHub itself. Prefer gh CLI for repeatable issue/PR fetches and searches. If the environment exposes GitHub MCP issue/PR lookup tools, those are also valid. Do not set up or depend on a cache worktree or cache branch for this skill.
Phase 1 (Setup) → Phase 2 (Investigate) → Phase 3 (Analyze) → Phase 4 (Workarounds) → Phase 5 (Validate) → Phase 6 (Persist & Render)Run once per session:
pip3 install -r .agents/skills/issue-triage/scripts/requirements.txt --quiet
python3 --version # Requires 3.9+
python3 -c "import jinja2; print('jinja2', jinja2.__version__)" # pip3 install jinja2
gh --version
gh auth statusIf gh is unavailable or unauthenticated, use the GitHub MCP issue/PR retrieval and search tools available in the environment.
gh issue view {number} --repo mono/SkiaSharp \
--json number,title,body,labels,comments,state,createdAt,updatedAt,closedAt,author,milestone \
> /tmp/{number}.issue.jsonGitHub MCP issue/PR retrieval tools are equally valid if the environment exposes them.
Scope: READ code, don't WRITE code. Grep, read files, trace call chains. Never create files, compile, or execute.
Before ANY classification, search the source code for the types, methods, APIs, or behaviors mentioned in the issue. Read the relevant files. Record every finding in analysis.codeInvestigation as {file, finding, relevance} (with optional lines).
Do NOT classify until you have examined source code. For bugs, include at least one codeInvestigation entry. Close-* actions should include at least two.
Steps:
gh CLI or GitHub MCP directly:# Search issues (finds duplicates, prior reports, related discussions)
gh search issues "{keywords from issue}" --repo mono/SkiaSharp --limit 10 \
--json number,title,state,url
# Search PRs (finds fixes, prior attempts, reverted changes)
gh pr list --search '{keywords from issue}' --state all --repo mono/SkiaSharp --limit 10 --json number,title,state,mergedAtevidence.reproEvidence.repoLinks — both duplicate/related issues AND closed/unmerged PRs, as they reveal prior reports and maintainer decisions. Duplicate issues are especially important for close-as-duplicate classification.| Signal in issue | Source to consult |
|---|---|
| NativeAssets, DllNotFoundException, container, WASM | documentation/dev/packages.md |
| Platform quirks, common traps | references/skia-patterns.md |
| Specific SkiaSharp types or methods | C# /// comments and compiler XML from a matching package; use Microsoft Learn for published reference |
| How-to about drawing, paths, bitmaps | documentation/docfx/guides/ and samples/ |
| Non-SkiaSharp tech (MAUI, Blazor, WPF) | mslearn/microsoft_docs_search MCP tool |
Pre-flight — confirm before analyzing:
- Issue data loaded from
ghCLI or GitHub MCP- Read references/schema-cheatsheet.md for required fields and enums
- Read references/labels.md for valid label values
- Read references/triage-examples.md for calibration
- Read references/anti-patterns.md — at least the critical rules
- Created a brief plan (5-10 lines: what to investigate, what type you suspect)
Reminder: Triage is READ-ONLY. Do NOT edit any source files (.cs, .cpp, .csproj, .json).
Read references/labels.md for valid label values and cardinality, references/triage-examples.md for calibration, and references/schema-cheatsheet.md for required fields.
Write brief internal analysis (3–5 sentences), classify the type, then read references/research-by-type.md for type-specific research. Conduct the research, then generate the JSON. Write to /tmp/{number}.json. Use this exact literal path structure, do NOT substitute $TMPDIR or any other variable. Do NOT use mkdir — write directly to /tmp/.
⚠️ Schema Compliance:
- Read references/schema-cheatsheet.md — This is the authoritative source for structure, fields, and enums.
- Review references/labels.md — Use only valid label values.
- Follow these critical constraints:
meta.schemaVersionmust be"1.0"- Optional fields: OMIT entirely if not applicable. Do NOT set to
null.- String Arrays:
platforms,backends,tenets,perfare simple string arrays (no confidence wrapper). Anyperf/*value impliestenet/performance— include it intenets.- Investigation:
analysis.codeInvestigationis MANDATORY. At least one entry for bugs, two for close-* actions.- Rationale:
analysis.rationaleis a single summary string (not per-field).- Validation: No extra properties allowed (
additionalProperties: false).
| Group | Content |
|---|---|
summary | One-sentence description of the issue (top-level string, required). |
meta | Version "1.0", issue number, repo, analyzedAt (ISO 8601). |
classification | type and area (required objects with confidence). platforms, backends (optional string arrays). |
evidence | bugSignals (for bugs), reproEvidence (all attachments/links), regression (if claimed), fixStatus (if fixed). |
analysis | summary (required), codeInvestigation (findings from Phase 2), keySignals (quotes), rationale (decision summary), resolution (proposals). |
output | actionability (suggested action + suggestedReproPlatform) and actions (automatable tasks). |
Refer to the cheatsheet for the exact field structure and enum values.
For bugs, questions, and feature requests: actively search for workarounds the reporter can use now. Follow references/workaround-search.md — 9 sources in priority order (existing triages → closed issues → known patterns → source code → docs → web).
category to "workaround" / "fix" / "alternative" / "investigation"codeSnippet on any proposal with copy-paste-ready codeSkip this phase for duplicates and abandoned issues (omit analysis.resolution).
If any proposal includes a codeSnippet or the add-comment comment contains code: you must validate it with 3 parallel agents per references/workaround-validation.md. Do not suggest code that has not been checked.
Agents (parallel explore type, GPT-5.6 Luna model):
Synthesis: All pass → validated: "yes". Any warn → add caveats to comment, reduce confidence. Any fail → fix or strip code, set validated: "no".
If no proposals contain code, set validated: "untested".
🛑 PHASE GATE: You CANNOT proceed to Phase 6 without passing validation. Skipping validation = INVALID triage. The task is incomplete.
python3 .agents/skills/issue-triage/scripts/validate-triage.py /tmp/{number}.json⚠️ NEVER hand-roll your own validation. NEVER assume it passes. RUN THE SCRIPT.
🛑 PHASE GATE: Phase 5 validator MUST have printed ✅ before you reach this step. If you have not run the validation script, GO BACK and run it now.
Copy the validated JSON to output/ai-triage/ for collection, then render companion Markdown and HTML reports that wrap the same JSON data.
python3 .agents/skills/issue-triage/scripts/persist-triage.py /tmp/{number}.jsonThis produces:
output/ai-triage/{number}/triage.jsonoutput/ai-triage/{number}/triage.mdoutput/ai-triage/{number}/triage.html✅ Triage: ai-triage/{number}/triage.json
✅ Report: ai-triage/{number}/triage.md
✅ Viewer: ai-triage/{number}/triage.html
Type: type/bug (0.98) Area: area/SkiaSharp
Severity: critical Action: needs-investigation
Actions:
labels-1 update-labels [low] Add type/bug, area/SkiaSharp
comment-1 add-comment [high] ⚠️ requires human edit
link-1 link-related [low] Cross-ref #1234Pipeline hint:
classification.type.value == "type/bug" and output.actionability.suggestedAction == "needs-investigation": next step is issue-repro (ai-repro/{number}/repro.json).classification.type.value is type/enhancement or type/feature-request and suggestedAction == "needs-investigation": next step is also issue-repro, but repro will use confirmed/not-confirmed instead of reproduced/not-reproduced.output.actionability.suggestedReproPlatform tells CI which runner to use for reproduction:macos — for os/iOS, os/macOS, os/tvOS, os/watchOS issueswindows — for os/Windows-Classic, os/Windows-WinUI, os/Windows-Universal-UWP, os/Windows-Nano-Server issueslinux — for everything else (os/Linux, os/WASM, os/Android, os/Tizen, or no platform specified)linux even if the reporter tests on other platforms.If add-comment exists, show comment in a copy-paste block. ⚠️ NEVER post via GitHub API.
See references/anti-patterns.md — read this file on first triage in session.
#0 (CRITICAL): Triage is READ-ONLY. If you edit a source file during triage, you have FAILED. See the anti-patterns reference for the full list.
#1 (CRITICAL): NEVER use store_memory during triage. Triage produces JSON artifacts, not memories. Storing unverified facts pollutes all future sessions.
#2 (CRITICAL): NEVER skip the validation script. You MUST run validate-triage.py and see ✅ before persisting. Mentally checking fields is not validation. If the script isn't run, the triage is invalid.
scripts/validate-triage.py <triage.json> — Validate against schema + rationale coverage + action integrityscripts/persist-triage.py <triage.json> — Copy validated JSON to output/ai-triage/{number}/ and invoke rendererscripts/render-triage-report.py <triage.json> — Render validated triage JSON → .md + .html (uses Jinja2 template for markdown)scripts/triage-report.md.jinja2 — Jinja2 template for the Markdown reportscripts/viewer.html — Bootstrap 5 HTML template for the interactive viewer© 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 17 other files (scripts, references) in .agents/skills/issue-triage of mono/SkiaSharp.
Open the folder on GitHubat commit 51e2097
Issue Triage 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 |
|---|---|---|---|---|---|---|
| Issue Triage this skillmono/SkiaSharp | 5.6k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Herdr Issue Triageherdrdev/herdr | 43k | — | ~517 | Automated safety check: Pass | Apache-2.0 | |
| Issue Triage Loopcobusgreyling/loop-engineering | 11k | — | ~522 | Automated safety check: Pass | MIT | |
| Triagearcee-ai/nac | 280 | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| TMDb Backlog Triageradamayoung/TMDb | 178 | — | ~5k | Automated safety check: Pass | Apache-2.0 | |
| GitHub IssuesCybereason-Public/owLSM | 280 | — | ~1.8k | Automated safety check: Pass | GPL-2.0 |
herdrdev/herdr
Triages open herdr GitHub issues into a short decision-first Markdown table with a priority light, recommendation, age, reactions and a reason for each.
cobusgreyling/loop-engineering
Scans open GitHub issues and discussions, flags duplicates, scores priority and proposes labels into issue-triage-state.md without ever labeling or closing.
arcee-ai/nac
Triage a GitHub repository's open issues by finding exact duplicates, rejecting evidenceably off-base requests, requesting concrete clarification, applying only existing labels, and opening a linked…
adamayoung/TMDb
Grooms the Backlog column of a GitHub project board by re-verifying each issue against current main, closing dead ones, promoting actionable ones to Ready and naming the decision the rest need.
Cybereason-Public/owLSM
Manage GitHub issues - create, edit, close, comment, assign, and delegate to Copilot.
ruvnet/ruflo
Agent skill for issue-tracker - invoke with $agent-issue-tracker
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
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.
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…
Works with
Categories
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. Issue Triage is an agent skill from 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.
Issue Triage fits situations like: tasks that involve Issue triage.
Run `npx skills add mono/SkiaSharp --skill issue-triage -a claude-code`. Or copy the skill folder (.agents/skills/issue-triage in mono/SkiaSharp) into .claude/skills/issue-triage in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mono/SkiaSharp --skill issue-triage -a codex`. Or copy the skill folder (.agents/skills/issue-triage in mono/SkiaSharp) into .agents/skills/issue-triage 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 issue-triage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/issue-triage, .gemini/skills/issue-triage, .github/skills/issue-triage and .opencode/skills/issue-triage in your project.
Going by SKILL.md and its folder, Issue Triage needs Python for the scripts in its folder and the command-line tools its instructions call (gh, python3 and pip3). 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.
Issue Triage is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k 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 22k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Issue Triage: Herdr Issue Triage (herdrdev/herdr, 43k stars), Issue Triage Loop (cobusgreyling/loop-engineering, 11k stars), Triage (arcee-ai/nac, 280 stars) and TMDb Backlog Triager (adamayoung/TMDb, 178 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,585 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 8, 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.