Fill and review API documentation#168
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
PoliCheck Scan ReportThe 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 foundMore information about PoliCheckInformation: PoliCheck | Severity Guidance | Term |
|
Learn Build status updates of commit 5ff2fd0:
|
…, 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>
Summary
Daily run of the api-docs skill (format → work → format). All deterministic findings from
docs-format-docshave been resolved and everyTo be added.placeholder under the touched type files has been filled. Re-running the formatter after the edits reports0 finding(s), 0 error(s).What was filled (8 placeholders across 4 files)
SkiaSharp/SKSurface.xml—DisposeManaged()SkiaSharp/SKColorFilter.xml—CreateOverdraw(SKColor[]),CreateOverdraw(ReadOnlySpan<SKColor>)SkiaSharp/SKImageFilter.xml—CreateCrop(SKRect),CreateCrop(SKRect, SKShaderTileMode),CreateCrop(SKRect, SKShaderTileMode, SKImageFilter?),CreateEmpty()SkiaSharp/SKPaint.xml—GetFastBounds(SKRect, out SKRect)Each summary, parameter, returns, and remarks block was authored from the upstream C# source under
mono/SkiaSharpbinding/SkiaSharp/(fetched on this run because the local clone is shallow).What was reviewed and fixed (23 lint findings across 15 files)
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}.SKColorFilter.CreateBlendMode(mode mode),SKSize.op_Explicit,SKSize.op_Implicit,SKSizeI.op_Explicit(structure structure).SKColorspacePrimariesCicpremarks —"Colour primaries"→color primariesto match .NET American-English convention used elsewhere in the file.CustomRenderingViewctor<see cref>— added missingT:DocId prefix.In addition, the deterministic formatter normalized whitespace in
SkiaSharp/SKPathMeasure.xmlandHarfBuzzSharp/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
No findings were deferred — every defect reported by
docs-format-docson this run was addressed and the validation re-run is clean.Machine-readable findings (resolved)
Validation
Generated artifacts (
SkiaSharpAPI/index.xml,SkiaSharpAPI/ns-*.xml,SkiaSharpAPI/_filter.xml,SkiaSharpAPI/FrameworksIndex/) were excluded from the commit per the workflow contract.