.agents/skills/api-docs/SKILL.md
Write and review XML API documentation for SkiaSharp.
docs/ directory is a Git submodule pointing to mono/SkiaSharp-API-docs — changes must be committed and PR'd to that repositorymdoc — if new APIs were added, regenerate before editing (see Regenerating Docs)docs/SkiaSharpAPI/
├── SkiaSharp/ # Main namespace
│ ├── SKCanvas.xml # One XML file per type
│ ├── SKPaint.xml
│ ├── SKImage.xml
│ └── ...
├── HarfBuzzSharp/ # HarfBuzz namespace
├── SkiaSharp.Views.*/ # Platform-specific views
└── index.xml # Extension methods (auto-synced, don't edit)
docs/SkiaSharpAPI/<Namespace>/<TypeName>.xml<summary>, <param>, <returns>, <value> tags within <Docs> sectionsdotnet cake --target=docs-format-docs to validate and formatdotnet cake --target=docs-format-docs to validate# Find placeholders
grep -r "To be added" docs/SkiaSharpAPI/
# Find empty tags (self-closing)
grep -rE "<(summary|value|returns)\s*/>" docs/SkiaSharpAPI/
# Find empty tags (open/close with optional whitespace)
grep -rE "<(summary|value|returns)>\s*</" docs/SkiaSharpAPI/
# Find spelling errors (common ones)
grep -riE "teh|recieve|seperate|occured|paramter" docs/SkiaSharpAPI/
# Find whitespace issues
grep -rE " </| </" docs/SkiaSharpAPI/
When new APIs have been added (new classes, methods, properties), the XML doc files must be regenerated before you can document them. A daily GitHub Actions workflow does this automatically from the latest CI NuGet packages.
To regenerate locally (e.g., after adding new APIs):
dotnet tool restore
dotnet cake --target=docs-download-output # Download latest NuGets
dotnet cake --target=update-docs # Regenerate XML docs
New members will appear with "To be added." placeholders. See documentation/dev/writing-docs.md for full details.
To edit existing docs (no regeneration needed): just edit the XML files directly and run dotnet cake --target=docs-format-docs to format and validate.
CRITICAL: After completing all edits to an XML file, validate its XML syntax before moving to the next file.
# Validate a single file
xmllint --noout docs/SkiaSharpAPI/SkiaSharp/SKCanvas.xml
# Validate all XML files in a namespace
find docs/SkiaSharpAPI/SkiaSharp -name "*.xml" -exec xmllint --noout {} \;
# Validate entire docs directory
find docs/SkiaSharpAPI -name "*.xml" -exec xmllint --noout {} \;
</param></param> - happens when copy/pasting<summary>...</param> - tag names must match<, >, & must be <, >, &<summary>text without </summary>xmllint --noout <file> to validate