Skip to content

Fill and review API documentation#168

Closed
github-actions[bot] wants to merge 1 commit into
mainfrom
automation/write-api-docs
Closed

Fill and review API documentation#168
github-actions[bot] wants to merge 1 commit into
mainfrom
automation/write-api-docs

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Summary

Daily run of the api-docs skill (format → work → format). All deterministic findings from docs-format-docs have been resolved and every To be added. placeholder under the touched type files has been filled. Re-running the formatter after the edits reports 0 finding(s), 0 error(s).

What was filled (8 placeholders across 4 files)

  • SkiaSharp/SKSurface.xmlDisposeManaged()
  • SkiaSharp/SKColorFilter.xmlCreateOverdraw(SKColor[]), CreateOverdraw(ReadOnlySpan<SKColor>)
  • SkiaSharp/SKImageFilter.xmlCreateCrop(SKRect), CreateCrop(SKRect, SKShaderTileMode), CreateCrop(SKRect, SKShaderTileMode, SKImageFilter?), CreateEmpty()
  • SkiaSharp/SKPaint.xmlGetFastBounds(SKRect, out SKRect)

Each summary, parameter, returns, and remarks block was authored from the upstream C# source under mono/SkiaSharp binding/SkiaSharp/ (fetched on this run because the local clone is shallow).

What was reviewed and fixed (23 lint findings across 15 files)

  • Accessor-verb (17 properties): flipped "Gets" ↔ "Gets or sets" to match each property's actual accessor signature in SKBitmap.Pixels, SKFrontBufferedStream.Position, SKImageInfo.AlphaType, SKJpegEncoderOptions.{AlphaOption,Downsample,Quality}, SKNativeObject.{IgnorePublicDispose,IsDisposed}, SKPath.{Convexity,Handle}, SKPngEncoderOptions.{FilterFlags,ZLibLevel}, SKStream.Position, SKSurfaceProperties.{Flags,PixelGeometry}, SKWebpEncoderOptions.{Compression,Quality}.
  • Repeated-word (4): removed duplicated word in SKColorFilter.CreateBlendMode (mode mode), SKSize.op_Explicit, SKSize.op_Implicit, SKSizeI.op_Explicit (structure structure).
  • Spelling (1): SKColorspacePrimariesCicp remarks — "Colour primaries"color primaries to match .NET American-English convention used elsewhere in the file.
  • Invalid-cref (1): CustomRenderingView ctor <see cref> — added missing T: DocId prefix.

In addition, the deterministic formatter normalized whitespace in SkiaSharp/SKPathMeasure.xml and HarfBuzzSharp/HBColor.xml; those formatter-only changes are included in this commit (they only affect line-wrap around <see langword /> and are idempotent).

Findings summary by severity

Severity Count Status
ERROR (broken XML / CDATA) 0
CRITICAL (placeholders / accessor-verb / invalid-cref) 19 fixed
MAJOR (repeated-word / spelling) 5 fixed
MINOR 0

No findings were deferred — every defect reported by docs-format-docs on this run was addressed and the validation re-run is clean.

Machine-readable findings (resolved)

FINDING | CRITICAL | SkiaSharp.SKSurface | SkiaSharpAPI/SkiaSharp/SKSurface.xml | M:SkiaSharp.SKSurface.DisposeManaged | placeholder filled (managed-dispose override)
FINDING | CRITICAL | SkiaSharp.SKColorFilter | SkiaSharpAPI/SkiaSharp/SKColorFilter.xml | M:SkiaSharp.SKColorFilter.CreateOverdraw(SkiaSharp.SKColor[]) | placeholder filled
FINDING | CRITICAL | SkiaSharp.SKColorFilter | SkiaSharpAPI/SkiaSharp/SKColorFilter.xml | M:SkiaSharp.SKColorFilter.CreateOverdraw(System.ReadOnlySpan{SkiaSharp.SKColor}) | placeholder filled
FINDING | CRITICAL | SkiaSharp.SKImageFilter | SkiaSharpAPI/SkiaSharp/SKImageFilter.xml | M:SkiaSharp.SKImageFilter.CreateCrop(SkiaSharp.SKRect) | placeholder filled
FINDING | CRITICAL | SkiaSharp.SKImageFilter | SkiaSharpAPI/SkiaSharp/SKImageFilter.xml | M:SkiaSharp.SKImageFilter.CreateCrop(SkiaSharp.SKRect,SkiaSharp.SKShaderTileMode) | placeholder filled
FINDING | CRITICAL | SkiaSharp.SKImageFilter | SkiaSharpAPI/SkiaSharp/SKImageFilter.xml | M:SkiaSharp.SKImageFilter.CreateCrop(SkiaSharp.SKRect,SkiaSharp.SKShaderTileMode,SkiaSharp.SKImageFilter) | placeholder filled
FINDING | CRITICAL | SkiaSharp.SKImageFilter | SkiaSharpAPI/SkiaSharp/SKImageFilter.xml | M:SkiaSharp.SKImageFilter.CreateEmpty | placeholder filled
FINDING | CRITICAL | SkiaSharp.SKPaint | SkiaSharpAPI/SkiaSharp/SKPaint.xml | M:SkiaSharp.SKPaint.GetFastBounds(SkiaSharp.SKRect,SkiaSharp.SKRect@) | placeholder filled
FINDING | CRITICAL | SkiaSharp.SKBitmap | SkiaSharpAPI/SkiaSharp/SKBitmap.xml | P:SkiaSharp.SKBitmap.Pixels | accessor-verb fixed (Gets→Gets or sets)
FINDING | CRITICAL | SkiaSharp.SKFrontBufferedStream | SkiaSharpAPI/SkiaSharp/SKFrontBufferedStream.xml | P:SkiaSharp.SKFrontBufferedStream.Position | accessor-verb fixed (Gets→Gets or sets)
FINDING | CRITICAL | SkiaSharp.SKImageInfo | SkiaSharpAPI/SkiaSharp/SKImageInfo.xml | P:SkiaSharp.SKImageInfo.AlphaType | accessor-verb fixed (Gets→Gets or sets)
FINDING | CRITICAL | SkiaSharp.SKJpegEncoderOptions | SkiaSharpAPI/SkiaSharp/SKJpegEncoderOptions.xml | P:SkiaSharp.SKJpegEncoderOptions.AlphaOption | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKJpegEncoderOptions | SkiaSharpAPI/SkiaSharp/SKJpegEncoderOptions.xml | P:SkiaSharp.SKJpegEncoderOptions.Downsample | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKJpegEncoderOptions | SkiaSharpAPI/SkiaSharp/SKJpegEncoderOptions.xml | P:SkiaSharp.SKJpegEncoderOptions.Quality | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKNativeObject | SkiaSharpAPI/SkiaSharp/SKNativeObject.xml | P:SkiaSharp.SKNativeObject.IgnorePublicDispose | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKNativeObject | SkiaSharpAPI/SkiaSharp/SKNativeObject.xml | P:SkiaSharp.SKNativeObject.IsDisposed | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKPath | SkiaSharpAPI/SkiaSharp/SKPath.xml | P:SkiaSharp.SKPath.Convexity | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKPath | SkiaSharpAPI/SkiaSharp/SKPath.xml | P:SkiaSharp.SKPath.Handle | accessor-verb fixed (Gets→Gets or sets)
FINDING | CRITICAL | SkiaSharp.SKPngEncoderOptions | SkiaSharpAPI/SkiaSharp/SKPngEncoderOptions.xml | P:SkiaSharp.SKPngEncoderOptions.FilterFlags | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKPngEncoderOptions | SkiaSharpAPI/SkiaSharp/SKPngEncoderOptions.xml | P:SkiaSharp.SKPngEncoderOptions.ZLibLevel | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKStream | SkiaSharpAPI/SkiaSharp/SKStream.xml | P:SkiaSharp.SKStream.Position | accessor-verb fixed (Gets→Gets or sets)
FINDING | CRITICAL | SkiaSharp.SKSurfaceProperties | SkiaSharpAPI/SkiaSharp/SKSurfaceProperties.xml | P:SkiaSharp.SKSurfaceProperties.Flags | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKSurfaceProperties | SkiaSharpAPI/SkiaSharp/SKSurfaceProperties.xml | P:SkiaSharp.SKSurfaceProperties.PixelGeometry | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKWebpEncoderOptions | SkiaSharpAPI/SkiaSharp/SKWebpEncoderOptions.xml | P:SkiaSharp.SKWebpEncoderOptions.Compression | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.SKWebpEncoderOptions | SkiaSharpAPI/SkiaSharp/SKWebpEncoderOptions.xml | P:SkiaSharp.SKWebpEncoderOptions.Quality | accessor-verb fixed (Gets or sets→Gets)
FINDING | CRITICAL | SkiaSharp.Views.Tizen.CustomRenderingView | SkiaSharpAPI/SkiaSharp.Views.Tizen/CustomRenderingView.xml | M:SkiaSharp.Views.Tizen.CustomRenderingView.#ctor(ElmSharp.EvasObject) | invalid-cref fixed (added T: prefix)
FINDING | MAJOR | SkiaSharp.SKColorFilter | SkiaSharpAPI/SkiaSharp/SKColorFilter.xml | M:SkiaSharp.SKColorFilter.CreateBlendMode(SkiaSharp.SKColor,SkiaSharp.SKBlendMode) | repeated-word fixed (mode mode→mode)
FINDING | MAJOR | SkiaSharp.SKSize | SkiaSharpAPI/SkiaSharp/SKSize.xml | M:SkiaSharp.SKSize.op_Explicit(SkiaSharp.SKSize)~SkiaSharp.SKPoint | repeated-word fixed (structure structure→structure)
FINDING | MAJOR | SkiaSharp.SKSize | SkiaSharpAPI/SkiaSharp/SKSize.xml | M:SkiaSharp.SKSize.op_Implicit(SkiaSharp.SKSizeI)~SkiaSharp.SKSize | repeated-word fixed (structure structure→structure)
FINDING | MAJOR | SkiaSharp.SKSizeI | SkiaSharpAPI/SkiaSharp/SKSizeI.xml | M:SkiaSharp.SKSizeI.op_Explicit(SkiaSharp.SKSizeI)~SkiaSharp.SKPointI | repeated-word fixed (structure structure→structure)
FINDING | MAJOR | SkiaSharp.SKColorspacePrimariesCicp | SkiaSharpAPI/SkiaSharp/SKColorspacePrimariesCicp.xml | T:SkiaSharp.SKColorspacePrimariesCicp | spelling fixed (colour→color)

Validation

Documentation missing in 0/430 (0.0%) types and 0/5022 (0.0%) members.
Docs lint: scanned 406 type file(s), 0 finding(s), 0 error(s).

Generated artifacts (SkiaSharpAPI/index.xml, SkiaSharpAPI/ns-*.xml, SkiaSharpAPI/_filter.xml, SkiaSharpAPI/FrameworksIndex/) were excluded from the commit per the workflow contract.

Generated by Auto API Docs Writer · ● 32.1M ·

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

PoliCheck Scan Report

The following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans.

✅ No issues found

More information about PoliCheck

Information: PoliCheck | Severity Guidance | Term
For any questions: Try searching the learn.microsoft.com contributor guides or post your question in the Learn support channel.

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit 5ff2fd0:

⚠️ Validation status: warnings

File Status Preview URL Details
SkiaSharpAPI/SkiaSharp.Views.Tizen/CustomRenderingView.xml ⚠️Warning Details
SkiaSharpAPI/HarfBuzzSharp/HBColor.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKBitmap.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorFilter.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorspacePrimariesCicp.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKFrontBufferedStream.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKImageFilter.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKImageInfo.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKJpegEncoderOptions.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKNativeObject.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPaint.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPath.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPathMeasure.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPngEncoderOptions.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSize.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSizeI.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKStream.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSurface.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSurfaceProperties.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKWebpEncoderOptions.xml ✅Succeeded

SkiaSharpAPI/SkiaSharp.Views.Tizen/CustomRenderingView.xml

  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.Rect'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.Widget'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.EvasObject'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.EvasObject'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.EvasObject'.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@mattleibow mattleibow closed this Jun 30, 2026
@mattleibow mattleibow deleted the automation/write-api-docs branch June 30, 2026 07:36
mattleibow added a commit that referenced this pull request Jun 30, 2026
…, thin trigger (#155)

Harden auto-api-docs-writer: single Opus 4.7 agent, branch-safe clone, thin trigger (#155)

Context: runs the api-docs skill from mono/SkiaSharp#4242 (skill is the source of truth)

Hardens and simplifies the `auto-api-docs-writer` agentic (gh-aw) workflow so it
reliably formats, fills, reviews, and opens a PR for API docs without clobbering
branches or duplicating the docs tree. The workflow now carries only gh-aw wiring;
the how-to-write-docs procedure lives in the skill.

~~ Single agent on Opus 4.7 ~~
engine.model -> claude-opus-4.7, and one agent does add + review + fix + validate +
PR. The gh-aw sandbox does not honor per-sub-agent model routing (the task tool's
model param is not plumbed to the API call — verified via the api-proxy
token-usage log), so the multi-agent fan-out only added complexity and a no-PR
failure mode when a terminal "fixer" sub-agent was backgrounded at end of turn.

~~ Branch safety and clone hygiene ~~
The host prepares a dedicated throwaway PR branch before the agent runs, so the
agent never commits on (and recreate_ref never clobbers) the dispatch ref. The
SkiaSharp clone uses --no-recurse-submodules + rm -rf + a file-count assertion and
echoes the resolved HEAD, and the docs-tree symlink duplication is eliminated
(workspace == linked) so the lint scans each file once. Git is quieted in the
agent run.

~~ Configurable refs ~~
Adds workflow_dispatch inputs skiasharp_branch (where the skill lives),
docs_base_branch (default main), and docs_head_branch (default
automation/write-api-docs). The primary checkout and stub regeneration both pin to
docs_base_branch (via FETCH_HEAD, so arbitrary/shallow branches work) and the PR
targets it — keeping base, working tree, and stubs in agreement instead of
reviewing the wrong base when dispatched on a feature branch.

~~ Cleanup ~~
Slims the workflow to a thin trigger, removes the stale review_scope input and the
obsolete-in-example prompt line that the skill no longer collects, points skill
references at the collapsed layout, and unstages generated files (index.xml,
ns-*.xml, _filter.xml, FrameworksIndex/) that stub regeneration rewrites so they
stay out of the PR.

Validated on CI: two consecutive runs produced clean PRs (#168, #169) — dedup held,
host gate 0 errors, agent ran format-first / source-first / three reviewers / no
build, and MS Learn OpenPublishing reported Errors:0.

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant