Agent skill

Issue Repro

by mono in mono/SkiaSharp

Reproduce a SkiaSharp issue systematically and capture structured reproduction results.

MITAuto-check passedDevelopment

Install Issue Repro

skills CLI
$ npx skills add mono/SkiaSharp --skill issue-repro -a claude-code

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

GitHub CLI
$ gh skill install mono/SkiaSharp issue-repro --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/issue-repro .claude/skills/issue-repro && 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
issue-repro
GitHub stars
5.6k
Token cost
~4.7k tokens
SKILL.md length
1,964 words
Files
16 (incl. scripts, references)
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Reproduce a SkiaSharp issue systematically and capture structured reproduction results.

  • Works in 6 steps: Fetch Issue → Assess & Plan → Reproduce → …
  • Development work in your project
  • SKILL.md covers ⛔ MANDATORY FIRST STEPS (do…, Phase 1 — Fetch Issue, Phase 2 — Assess & Plan and Key Rules (read before Phase 3), plus 4 more sections
  • Runs PowerShell and Python scripts from its folder; calls dotnet, git and docker

What it does

Issue Repro is an agent skill from mono/SkiaSharp. Reproduce a SkiaSharp issue systematically and capture structured reproduction results. Handles bugs (verify reported behavior) and enhancements (confirm feature is missing). Produces schema-validated JSON with step-by-step commands, outputs, environment details, and conclusion. Triggers: "repro 123", "reproduce 123", "reproduce issue", "try to reproduce", "can you reproduce", "repro this bug", "create reproduction".

Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 17 other files, including scripts and reference files (for example `references/anti-patterns.md`, `references/bug-categories.md` and `references/conclusion-guide.md`).

It sits in Development. 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

  • Development work in your project

Example prompts

  • “repro 123”
  • “reproduce 123”
  • “reproduce issue”
  • “/issue-repro”

Requirements

  • Python 3
  • PowerShell
  • Docker

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Fetch Issue
  2. Assess & Plan
  3. Reproduce
  4. Generate JSON
  5. Validate
  6. Persist & Present

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 3 files in scripts/ (PowerShell and Python), which the agent can run.

    Shell commands in SKILL.md call:

    • dotnet
    • git
    • docker
    • pwsh
    • python3
    • gh
    • xcodebuild

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

  • Network

    No URLs in SKILL.md. Its commands use git, docker and gh, which can reach the network depending on how they are called.

    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

Issue Repro loads about 4.7k tokens when it runs, and up to ~34k if it reads all its reference files. Until then it costs about 109 tokens; SKILL.md has 1,964 words of instructions outside code blocks.

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

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,964 words, ~4,668 tokens.

Download SKILL.mdSave it as .claude/skills/issue-repro/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.
name
issue-repro
description
Reproduce a SkiaSharp issue systematically and capture structured reproduction results. Handles bugs (verify reported behavior) and enhancements (confirm feature is missing). Produces schema-validated JSON with step-by-step commands, outputs, environment details, and conclusion. Triggers: "repro #123", "reproduce #123", "reproduce issue", "try to reproduce", "can you reproduce", "repro this bug", "create reproduction".

Issue Reproduction

Issue pipeline: Step 2 of 3 (Repro). See documentation/dev/issue-pipeline.md.

Systematically reproduce a SkiaSharp issue and produce structured, schema-validated reproduction JSON.

⛔ MANDATORY FIRST STEPS (do not skip)

  1. Read THIS entire SKILL.md before any investigation
  2. Read references/schema-cheatsheet.md for required fields and enums
  3. Read references/anti-patterns.md for critical rules

These 3 reads are REQUIRED. Do not proceed to Phase 1 until all three are loaded.

Quick flow:

  1. Load issue + any prior triage JSON
  2. Read references: schema-cheatsheet, anti-patterns
  3. Create brief plan (5-10 lines: strategy, platform, expected outcome)
  4. Check environment: docker info, dotnet --version, available simulators
  5. Build repro project and attempt reproduction
  6. Test multiple SkiaSharp versions (3A reporter's → 3B latest → 3C main)
  7. Generate JSON → validate → persist
Phase 1 (Fetch) → Phase 2 (Assess) → Phase 3 (Reproduce) → Phase 4 (JSON + Output) → Phase 5 (Validate) → Phase 6 (Persist & Present)

Phase 1 — Fetch Issue

  1. Read the issue (preferred):
    bash
    CACHE=".data-cache/repos/mono-SkiaSharp"
    [ -d ".data-cache" ] || git worktree add .data-cache docs-data-cache
    git -C .data-cache pull --rebase origin docs-data-cache
    cat $CACHE/github/items/{number}.json
    Fallback: gh issue view {number} --repo mono/SkiaSharp --json title,body,labels,comments,state,createdAt,closedAt,author
  2. Triage boost — if $CACHE/ai-triage/{number}.json exists, extract classification.platforms[], evidence.bugSignals, analysis.nextQuestions[], and output.actionability.suggestedReproPlatform as hints (verify independently). The suggestedReproPlatform (linux|macos|windows) indicates which CI runner was selected for reproduction.

Phase 2 — Assess & Plan

1. Classify

Read references/bug-categories.md to classify the issue type and determine the reproduction strategy. That file covers bugs (Sections 1–6), enhancements (Section 7), platform parity gaps (Section 8), and documentation issues (Section 9) — including which conclusion values and layer to use for each.

2. Extract reporter's version & TFM
  • {reporter_version}: exact SkiaSharp NuGet version
  • {reporter_tfm}: target framework (e.g., net10.0)
  • {reporter_code}: reproduction code from the issue
  • Reporter's platform/OS

If not stated, use the latest stable release. .NET is forward-compatible — net8.0 libraries work on net10.0 apps. Never say "doesn't support .NET X" for newer TFMs.

3. Environment check

⚠️ Run dotnet --info in /tmp/skiasharp/repro/{timestamp}/{number}/ (NOT the SkiaSharp repo, which has global.json pinning SDK 8.0). Record SDK version, workload versions, and runtime version. {timestamp} is the current UTC time in yyyyMMdd-HHmmss format.

Also check: Docker (docker --version), Playwright MCP tools, GPU availability, .NET workloads (dotnet workload list). Install missing workloads now — don't wait.

4. Determine reproduction platform
PrioritySignalsPlatform file
1Blazor, WASM, WebAssembly, SKHtmlCanvas, browser errorplatform-wasm-blazor.md
2WPF, WinForms, WinUI, UWPplatform-windows-desktop.md
3iOS, Android, MAUI, Xamarinplatform-mobile.md
4Linux, Docker, container, NativeAssets.Linuxplatform-docker-linux.md
5(none)platform-console.md

All platform files fall back to platform-console.md for core SkiaSharp bugs.

Tie-breaking: If multiple platform signals (e.g., "WASM + WPF"), use the highest priority. If reporter says "works on X, fails on Y", reproduce on Y first, test X in Phase 3D.

Read the selected platform file. Follow its Create → Build → Run → Verify steps, substituting {reporter_version}, {reporter_tfm}, and {reporter_code}.

5. Plan

Output a brief plan before executing (5-10 lines: what platform, what version, what approach).


Key Rules (read before Phase 3)

Read references/anti-patterns.md for the full list. Critical rules:

  1. Source code investigation. Stop at "did it reproduce." Root cause is the issue-fix skill's job.
  2. Editorial judgment in conclusion. If the reported behavior occurred, it's reproduced — even if by-design.
  3. Stopping at build success. Many bugs manifest at RUNTIME. Build ≠ runtime.
  4. Stale build artifacts. Fresh project dirs or rm -rf bin/ obj/ between versions.
  5. Honesty over completion. not-reproduced and needs-platform are VALID SUCCESS conclusions. Reporting inability to reproduce is correct behavior, NOT failure. NEVER invent output you did not observe from an actual command execution.
  6. NEVER modify product source. Do not edit files in binding/, externals/, samples/, source/, tests/, utils/, or any other product source during reproduction. Repro creates NEW test projects in /tmp/skiasharp/repro/{timestamp}/ only ({timestamp} is the current UTC time in yyyyMMdd-HHmmss format). If you find yourself editing SkiaSharp source, you have crossed into fix territory — stop.
  7. NEVER use store_memory. Reproduction produces JSON artifacts, not memories. Storing unverified observations as permanent facts pollutes all future sessions.
  8. NEVER skip validation. You MUST run validate-repro.ps1 (or .py fallback) and see ✅ before persisting. Mentally checking fields is not validation. If the script isn't run, the reproduction is invalid.

Intermittent bugs: If results are inconsistent, run 3–5 times. Reproduced ≥1 time → reproduced with note "Intermittent: X/Y runs". Never reproduced after 5 → not-reproduced.

Effort budget: Phases 1–2: ~5 min. Phase 3A: ~15–20 min. Phases 3B–3D: ~10–15 min. Total: ~30–50 min. If stuck after 3+ substantially different approaches, conclude with what you have.


Pre-flight — confirm before reproducing:

  • Issue data loaded (cache JSON or GitHub API)
  • Prior triage JSON loaded (if exists in ai-triage/)
  • Read references/schema-cheatsheet.md for required fields and enums
  • Read references/anti-patterns.md — at least the critical rules
  • Environment checked: docker info (if needed), dotnet --version, xcodebuild -showsdks (if iOS)
  • Created a brief plan (5-10 lines: reproduction strategy, which platform, what you expect)
  • Never use sudo — if a command requires it, find an alternative approach

Phase 3 — Reproduce

Overview — you will test up to 4 configurations:

  • 3A: Reporter's version on primary platform (always)
  • 3B: Latest stable release (always)
  • 3C: Main branch source (MANDATORY if 3B still reproduced)
  • 3D: Cross-platform verification (conditional — see table below)

🛑 MINIMUM 2 VERSIONS REQUIRED. You must test at least the reporter's version (3A) AND latest stable (3B). Single-version reproductions are incomplete and will fail schema validation. This applies to ALL conclusion types — bugs (reproduced/not-reproduced) AND enhancements (confirmed/not-confirmed). For enhancements: a feature may exist in one version but not another, or may have been removed. Version testing reveals this.

3A. Reproduce with reporter's version

Follow the platform file from Phase 2.4. For each step, capture:

FieldLimit
commandExact command (redact paths)
exitCode0=success, non-zero=failure
output2KB success, 4KB failure
filesCreatedFilename + source code content for repro files
layersetup / csharp / c-api / native / deployment / investigation
resultsuccess / failure / wrong-output / skip

Step result = what actually happened (technical outcome), not whether it was expected. A build that fails is result: "failure" even if that confirms the bug. See references/anti-patterns.md for details.

Note: Use layer: "investigation" for source-code analysis steps in enhancement confirmations (grep, file reading). See Phase 2.1 for the full enhancement flow.

Push hard. Don't bail early. Only conclude not-reproduced after genuinely exhausting approaches.

3B. Test on latest release

⚠️ Clean build required: Create a fresh project directory per version (/tmp/skiasharp/repro/{timestamp}/{number}-latest/) or rm -rf bin/ obj/ before building. Never just sed the version — stale native binaries produce unreliable results. See references/anti-patterns.md #7.

Use the same platform strategy from 3A with the latest stable SkiaSharp. Record in versionResults.

3C. Test on main branch (if reproduced on latest)

🛑 Do NOT skip when reproduced on latest. If the bug reproduces on the latest stable release, testing main is MANDATORY — it tells us whether a fix exists but hasn't been released.

  1. Bootstrap: [ -d "output/native" ] && ls output/native/ | head -5 || dotnet cake --target=externals-download
  2. Build & run the platform-appropriate sample under samples/Basic/<platform>/. Each platform file has a "Main Source Testing (Phase 3C)" section — follow it.
  3. Record result. If fixed on main but not released, note the version gap.

Clean up: Revert sample file changes with git checkout -- samples/.

Show full SKILL.md (845 more words)Show less
3D. Cross-platform verification (conditional)
Primary resultRun 3D?
reproduced (platform-specific)Yes — test alternative platform
not-reproduced + reporter on different platformYes
reproduced (pure API bug, no platform signals)Skip — note why
not-reproduced + same platform as reporterNo

Time cap: 5 minutes. Default alternative: Docker Linux x64.

PrimaryBest alternative
Console macOSDocker Linux x64
WASM/BlazorConsole on host
Docker LinuxConsole on host
Windows (reported)Console + Docker Linux

Test reporter's version only. Derive scope: reproduced on ≥2 platforms → "universal", primary only → "platform-specific/{platform}", skipped → "unknown".

For confirmed/not-confirmed conclusions: Derive scope from your investigation — if the gap exists in ALL platform views → "universal", if the gap is specific to one platform's view (e.g., Blazor only) → "platform-specific/{platform}". Always set scope for confirmed conclusions (schema requires it).

Simulation Strategy (last resort)

Some bugs live in framework-specific code (MAUI views, WPF handlers, Uno controls) that can't be run in a console app. Use this escalation order — only move to the next level if the previous one fails:

  1. Direct run — Build and run the actual project type (MAUI, WPF, etc.)
  2. Real platform — Use a simulator/emulator (iOS Simulator, Android Emulator)
  3. Automation — Use Appium or Playwright to drive UI testing
  4. Docker — Run in a container (Linux-only scenarios)
  5. Simulate — Extract the logic into a console app and model the inputs

When to simulate: Only when steps 1-4 are impossible (wrong OS, no SDK, no device). Example: a WPF bug on a macOS host with no Windows VM.

How to simulate: Extract the suspect code path into a standalone console app. Model the framework inputs (e.g., resize events, binding updates) and verify the logic path triggers the bug.

Recording: Set reproProject.type: "simulation" in the JSON. The triage's classifiedPlatform vs repro's type: "simulation" shows the gap clearly.

Example: Opus reproduced SKXamlCanvas NRE (#3430) by extracting the resize handler logic into a console app, feeding 73 dimension combinations, and confirming 100% NRE rate when width/height were 0.


Phase 4 — Generate JSON

1. Choose conclusion

Read references/conclusion-guide.md. Key question: did the reported claim hold true?

ConclusionWhenIssue Types
reproducedReported behavior occurred, including wrong/incomplete output (even if by-design)Bugs
not-reproducedReported behavior did not occurBugs
confirmedReporter's claim verified (feature IS missing, docs ARE wrong)Enhancements, features, docs
not-confirmedReporter's claim not verified (feature exists, docs are correct)Enhancements, features, docs
needs-platform / needs-hardwareRequires unavailable platform/hardwareAny
partial / inconclusivePartial or ambiguous resultsAny
2. Generate JSON

Write to /tmp/skiasharp/repro/{timestamp}/{number}.json. Use the exact literal path /tmp/skiasharp/repro/{timestamp}/ — do NOT substitute $TMPDIR or any other variable. {timestamp} is the current UTC time in yyyyMMdd-HHmmss format. Run mkdir -p /tmp/skiasharp/repro/{timestamp} first if needed.

Schema: references/repro-schema.json. See references/repro-examples.md for full worked examples.

Key rules (schema enforces the rest):

  • Optional fields: OMIT entirely — do NOT set to null
  • environment.dotnetSdkVersion: exact SDK from dotnet --info. Include wasmToolsVersion for WASM.
  • versionResults: include platform field (e.g., "host-macos-arm64", "docker-linux-x64")
  • Redact paths (/Users/{name}/ → $HOME/), tokens, credentials.
3. Feedback (when triage was consumed)

If reproduction contradicts triage, record in feedback.corrections[]:

json
{ "source": "triage", "topic": "classification", "upstream": "...", "corrected": "..." }
4. Generate output (required for definitive conclusions)

When conclusion is reproduced, not-reproduced, confirmed, or not-confirmed, generate the output object with actionability, actions, and a proposed response. Skip for blocked conclusions (needs-platform, needs-hardware, partial, inconclusive).

Choosing suggestedAction
ScenariosuggestedActionConfidence
Reproduced on all versions including latest/mainneeds-investigation0.90+
Reproduced on reporter's version, fixed on latestclose-as-fixed0.85+
Reproduced on reporter's version, fixed on main (unreleased)keep-open0.80+
Not reproduced — likely environment/config issuerequest-info0.70+
Not reproduced — works on all tested versionsclose-as-fixed0.75+
Wrong output confirmedneeds-investigation0.85+
Reproduced but appears working-as-designedclose-with-docs0.70+
Confirmed — feature/docs gap verifiedneeds-investigation0.85+
Not confirmed — feature/docs actually existclose-with-docs0.75+
Writing proposedResponse

See references/response-guidelines.md for tone, evidence requirements, status thresholds (ready/needs-human-edit/do-not-post), and conclusion-specific templates.

Workarounds

If reproduction testing reveals a workaround (version upgrade, config change, workload install, API alternative), add to output.workarounds[] as simple strings and include in the proposed response body.

Missing info

When conclusion is not-reproduced or the response asks for more details, populate output.missingInfo[] with specific items needed (e.g., "Exact .NET SDK version", "Full exception stack trace", "Minimal reproduction project"). Reference these in proposedResponse.body.

Actions

Use the same action types as triage. Common repro actions:

ActionWhenRisk
update-labelsAdd platform labels confirmed by repro, remove incorrect oneslow
close-issueBug fixed in latest + reporter can upgrademedium
set-milestoneBug confirmed, target a releaselow
link-relatedDiscovered related issue during reprolow

Phase 5 — Validate

🛑 PHASE GATE: You CANNOT persist without passing validation. Skipping validation = INVALID reproduction. The task is incomplete.

1. Validate (MANDATORY — run first)
bash
# Try pwsh first, fall back to python3
pwsh .agents/skills/issue-repro/scripts/validate-repro.ps1 /tmp/skiasharp/repro/{timestamp}/{number}.json \
  || python3 .agents/skills/issue-repro/scripts/validate-repro.py /tmp/skiasharp/repro/{timestamp}/{number}.json
  • Exit 0 = ✅ valid → proceed to Phase 6
  • Exit 1 = ❌ fix the errors listed in the output, then re-run. Repeat up to 3 times.
  • Exit 2 = fatal error, stop and report

⚠️ NEVER hand-roll your own validation. NEVER assume it passes. RUN THE SCRIPT. If you have not seen ✅ from the validator, DO NOT proceed to Phase 6.

🛑 PHASE GATE: Validator MUST have printed ✅ before proceeding to Phase 6.

Phase 6 — Persist & Present

1. Persist (only after validator prints ✅)

Copy the validated JSON to output/ai/ for collection.

bash
pwsh .agents/skills/issue-repro/scripts/persist-repro.ps1 /tmp/skiasharp/repro/{timestamp}/{number}.json

This copies the JSON to output/ai/ mirroring the data-cache structure.

2. Present summary
✅ Reproduction: ai-repro/{number}.json

Conclusion:  reproduced
Steps:       5 (3 success, 1 failure, 1 skip)
Environment: macOS arm64, SDK 10.0.102

Version results:
  SkiaSharp 2.88.9 (reporter): ❌ REPRODUCED
  SkiaSharp 3.116.1 (latest):  ❌ REPRODUCED
  main (source):               ✅ not-reproduced

© 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 15 other files (scripts, references) in .agents/skills/issue-repro of mono/SkiaSharp.

  • SKILL.md
  • references/anti-patterns.md
  • references/bug-categories.md
  • references/conclusion-guide.md
  • references/platform-console.md
  • references/platform-docker-linux.md
  • references/platform-mobile.md
  • references/platform-wasm-blazor.md
  • references/platform-windows-desktop.md
  • references/repro-examples.md
  • references/repro-schema.json
  • references/response-guidelines.md
  • references/schema-cheatsheet.md
  • scripts/persist-repro.ps1
  • scripts/validate-repro.ps1
  • scripts/validate-repro.py

Open the folder on GitHubat commit cb51ed5

Compare with similar skills

Issue Repro 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.

Issue Repro compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Issue Repro this skillmono/SkiaSharp5.6k—~4.7kAutomated safety check: PassMIT
Vercel Composition Patternssupabase/supabase111k58 repos~726Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 58 repos~726 tokens
    DevelopmentAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    onyx-dot-app/onyx

    Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed

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 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
  • Skia Analyst

    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…

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

Categories

Questions about Issue Repro

What does Issue Repro do?

Reproduce a SkiaSharp issue systematically and capture structured reproduction results. Issue Repro is an agent skill from mono/SkiaSharp. Reproduce a SkiaSharp issue systematically and capture structured reproduction results.

When should I use Issue Repro?

Issue Repro fits situations like: development work in your project.

How do I install Issue Repro in Claude Code?

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

How do I install Issue Repro in Codex?

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

Can I use Issue Repro 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 issue-repro -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-repro, .gemini/skills/issue-repro, .github/skills/issue-repro and .opencode/skills/issue-repro in your project.

What does Issue Repro need to run?

Going by SKILL.md and its folder, Issue Repro needs PowerShell and Python for the scripts in its folder and the command-line tools its instructions call (dotnet, git, docker, pwsh, python3 and gh). Our summary lists: Python 3; PowerShell; Docker.

Does Issue Repro access the network?

SKILL.md contains no URLs. Its commands use git, docker and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Issue Repro 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 Issue Repro use?

Issue Repro 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 Issue Repro use?

About 4.7k tokens (SKILL.md is roughly 19k 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 29k tokens, read only when the agent opens those files.

What are the alternatives to Issue Repro?

Skills that share tags, products or a category with Issue Repro: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Issue Repro?

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.