AP

Writes and maintains XML documentation comments for SkiaSharp APIs. Ensures code remains compliant with .NET documentation standards.

Install

mkdir -p .claude/skills/api-docs && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/2986" && unzip -o skill.zip -d .claude/skills/api-docs && rm skill.zip

Installs to .claude/skills/api-docs

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Write AND review XML API documentation for SkiaSharp (ECMA/mdoc XML in the docs submodule). Two modes: (1) ADD docs for new APIs with "To be added." placeholders; (2) REVIEW existing docs by scope for accuracy, freshness, examples, and hygiene. Triggers: "document class", "add XML docs", "write XML documentation", "fill in missing docs", "remove To be added placeholders", "review documentation", "check docs for errors", "fix doc issues", "audit the docs", "review the font docs", "are the examples correct", "update out-of-date docs", any request to add, validate, correct, or expand SkiaSharp API documentation.
616 charsno explicit “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Add XML documentation to SkiaSharp classes
  • Review existing documentation for accuracy
  • Apply .NET XML comment conventions
  • Validate documentation format and hygiene

How it works

The skill routes documentation tasks to specific procedures that edit ECMA/mdoc XML files, ensuring compliance with .NET standards and SkiaSharp patterns.

Inputs & outputs

You give it
API type or namespace
You get back
Formatted XML documentation files

When to use api-docs

  • Add XML documentation to classes and methods
  • Review existing documentation for errors
  • Apply standard .NET XML comment conventions
  • Document API class structures

About this skill

API Documentation

Add and review SkiaSharp API documentation. This file is a router: it picks a procedure and points to the reference and tooling files that do the work. The detailed instructions live in references/ so they load only when needed.

Key facts

  • docs/ is the mono/SkiaSharp-API-docs submodule — one ECMA/mdoc .xml per type, generated from NuGet assemblies via mdoc. CDATA <remarks> may hold csharp code fences. Run git submodule update --init docs if it is empty.
  • Each <Type>.xml maps 1:1 to binding/SkiaSharp/<Type>.cs (or binding/HarfBuzzSharp/) → always read source before documenting.
  • Edit the XML directly. Safety comes from docs-format-docs, which formats every file and fails the build on broken XML/CDATA (references/validation.md).
  • Never edit generated files: index.xml, ns-*.xml, _filter.xml, FrameworksIndex/.

How to work

One agent does the whole pass. Read the relevant reference, resolve scope into an explicit file list, then work in batches of ~25–40 files so each pass stays auditable and resumable.

If the task is…Read
Documenting new APIs / filling To be added. placeholdersreferences/adding.md
Reviewing/correcting/expanding existing docs (one type, a theme, what changed, or all)references/reviewing.md

The user asks in plain language ("review the font docs", "fill in what's missing"). The docs live at docs/SkiaSharpAPI/<Namespace>/<Type>.xml; list them directly, and use git -C docs diff --name-only origin/main...HEAD for "what changed". Each <Type>.xml maps to its source at binding/<Namespace>/<Type>.cs, and you pick the files a request covers — for a theme, scan the list and select the matching types yourself; the chosen procedure file covers the rest.

All findings use one machine-parseable contract: SEVERITY | class | file | docId | message.

References (canonical facts)

DRY rule: the procedures describe what to do; the reference tables hold the facts. Procedures point to references — they must not restate the tables. Keep reference chains one level deep.

Tooling & validation

  • Format + checks (one Cake target in scripts/infra/docs/docs.cake): docs-format-docs formats every type file and runs the deterministic content checks — warnings for missing/quality issues, build-failing errors for broken XML/CDATA. See references/validation.md.
  • Snippet build (C#-only, download is fine): dotnet cake --target=externals-download then dotnet build binding/SkiaSharp/SkiaSharp.csproj.

Landing changes

The docs submodule protects main — commit on a dev/... branch and open a PR (per-wave). Skill asset changes land in the parent mono/SkiaSharp repo; the auto-api-docs-writer agentic workflow that runs this skill on CI lives in mono/SkiaSharp-API-docs.

When not to use it

  • For non-SkiaSharp API documentation
  • When editing generated index files

Prerequisites

SkiaSharp source repositorymdoc tooling

Limitations

  • Only supports SkiaSharp/HarfBuzzSharp components
  • Requires manual submodule initialization

How it compares

It enforces a structured, machine-validated documentation workflow compared to manual, ad-hoc comment writing.

Compared to similar skills

api-docs side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
api-docs (this skill)11moNo flagsIntermediate
csharp-developer432moNo flagsAdvanced
csharp-pro94moNo flagsIntermediate
performance-benchmark34moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

add-api

mono

Add new C# APIs to SkiaSharp by wrapping Skia C++ functionality. Structured 6-phase workflow: C++ analysis → C API creation → submodule commits → binding generation → C# wrapper → testing. Triggers: - Issue classified as "New API" (after fetching and classification) - Direct request: "add DrawFoo method", "expose SkSurface::draw", "wrap sk_foo_bar" - Keywords: "add API", "expose function", "wrap method", "create binding for"

68

bug-fix

mono

Fix bugs in SkiaSharp C# bindings. Structured workflow for investigating, fixing, and testing bug reports. Triggers: Crash, exception, AccessViolationException, incorrect output, wrong behavior, memory leak, disposal issues, "fails", "broken", "doesn't work", "investigate issue", "fix issue", "look at #NNNN", any GitHub issue number referencing a bug. For adding new APIs, use `add-api` skill instead.

426

native-dependency-update

mono

Update native dependencies (libpng, libexpat, zlib, libwebp, harfbuzz, freetype, libjpeg-turbo, etc.) in SkiaSharp's Skia fork. Handles security CVE fixes, bug fixes, and version bumps. Use when user asks to: - Bump/update a native dependency (libpng, zlib, expat, webp, etc.) - Fix a CVE or security vulnerability in a native library - Update Skia's DEPS file - Check what version of a dependency is currently used - Analyze breaking changes between dependency versions Triggers: "bump libpng", "update zlib", "fix CVE in expat", "update native deps", "what version of libpng", "check for breaking changes". For security audits (finding CVEs, checking PR coverage), use the `security-audit` skill instead.

11

release-branch

mono

Create a release branch for SkiaSharp. Use when user says "release X", "start release X", "create release branch for X", "I want to release", or "release now". This is the FIRST step of releasing - creates branch and pushes to trigger CI. Can auto-detect next preview version from main branch.

12

release-publish

mono

Publish SkiaSharp packages and finalize the release. Use when user says "publish X", "finalize X", "tag X", or "finish release X". This is the FINAL step - after release-testing passes. Publishes to NuGet.org, creates tag, GitHub release, and closes milestone. Triggers: "publish the release", "push to nuget", "create github release", "tag the release", "close the milestone", "annotate release notes", "testing passed what's next", "finalize 3.119.2", "release is ready".

19

release-testing

mono

Run integration tests to verify SkiaSharp NuGet packages work correctly before publishing. Use when user asks to: - Test/verify packages before release - Run integration tests - Test on specific device (iPad, iPhone, Android emulator, Mac, Windows) - Verify SkiaSharp rendering works - Check if packages are ready for publishing - Run smoke/console/blazor/maui tests - Continue with release - Test version X Triggers: "test the release", "verify packages", "run tests on iPad", "check ios tests", "test mac catalyst", "run android tests", "continue", "test 3.119.2-preview.2".

14

You might also like

csharp-developer

zenobi-us

Expert C# developer specializing in modern .NET development, ASP.NET Core, and cloud-native applications. Masters C# 12 features, Blazor, and cross-platform development with emphasis on performance and clean architecture.

43151

csharp-pro

sickn33

Write modern C# code with advanced features like records, pattern matching, and async/await. Optimizes .NET applications, implements enterprise patterns, and ensures comprehensive testing. Use PROACTIVELY for C# refactoring, performance optimization, or complex .NET solutions.

953

performance-benchmark

dotnet

Generate and run ad hoc performance benchmarks to validate code changes. Use this when asked to benchmark, profile, or validate the performance impact of a code change in dotnet/runtime.

328

dotnet-backend-patterns

wshobson

Master C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications. Covers async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit. Use when developing .NET backends, reviewing C# code, or designing API architectures.

722

azure-servicebus-dotnet

microsoft

Azure Service Bus SDK for .NET. Enterprise messaging with queues, topics, subscriptions, and sessions. Use for reliable message delivery, pub/sub patterns, dead letter handling, and background processing. Triggers: "Service Bus", "ServiceBusClient", "ServiceBusSender", "ServiceBusReceiver", "ServiceBusProcessor", "message queue", "pub/sub .NET", "dead letter queue".

316

backend-testing

exceptionless

Backend testing with xUnit, Foundatio.Xunit, integration tests with AppWebHostFactory, FluentClient, ProxyTimeProvider for time manipulation, and test data builders. Keywords: xUnit, Fact, Theory, integration tests, AppWebHostFactory, FluentClient, ProxyTimeProvider, TimeProvider, Foundatio.Xunit, TestWithLoggingBase, test data builders

316

Search skills

Search the agent skills registry