Skip to content

Add ci-status skill for daily CI health dashboard#4094

Merged
mattleibow merged 7 commits into
mainfrom
mattleibow/dev-ci-status-skill
May 29, 2026
Merged

Add ci-status skill for daily CI health dashboard#4094
mattleibow merged 7 commits into
mainfrom
mattleibow/dev-ci-status-skill

Conversation

@mattleibow

@mattleibow mattleibow commented May 28, 2026

Copy link
Copy Markdown
Contributor

Adds a new ci-status skill that gives a broad, at-a-glance view of SkiaSharp CI health across main and the recent release/* branches, then layers AI analysis on top to turn raw red/green into actionable diagnosis. Unlike release-status (which tracks a single release through its pipeline chain), this is a daily dashboard across all branches at once.

Pipelines tracked

  • Public CI: SkiaSharp (Public) on xamarin/public (definition 4) — push/PR to main, release/*
  • Internal release chain: SkiaSharp-Native (26493) → SkiaSharp (10789) → SkiaSharp-Tests (15756) on devdiv/DevDiv

What it does

scripts/ci-status.py queries each pipeline once and renders three views from a single data-collection pass:

  • Console summary — quick terminal use
  • Markdown report (--output) — health matrix, per-branch commit info (SHA/author/message), build durations, pass-rate stats, and a green→red regression table
  • Structured JSON (--json) — consumed by the AI analysis step

It auto-discovers the N most recent release/* branches (including .x servicing branches), extracts errors/warnings from failed builds, caches the ADO token across requests, and pre-computes green→red regression transitions.

SKILL.md drives the AI layer: root-cause clustering by normalized error signature, a classification decision tree (infra / flake / regression / quota / chain blockage), mandatory pipeline-chain cascade analysis, flake detection, cross-branch correlation, release-risk assessment, and a capped top-5 prioritized action list — every claim tied to a real build ID and URL.

Usage

# Full report with AI-ready data
python3 .agents/skills/ci-status/scripts/ci-status.py \
  --output output/ai/ci-status-report.md \
  --json output/ai/ci-status-data.json

# Quick check (no timeline fetch)
python3 .agents/skills/ci-status/scripts/ci-status.py --no-issues

# Wider window
python3 .agents/skills/ci-status/scripts/ci-status.py --branches 5 --builds 10

Works well as a daily scheduled workflow.

Evaluation

Benchmarked with skill-creator's evaluator across three scenarios (daily health check, full report with analysis, release readiness). The eval surfaced one recurring miss — the analysis sometimes listed internal pipelines as independent failures instead of collapsing cascaded downstream failures to their upstream root cause — which is why Step 2.3 (chain cascade) is now mandatory and the chain verdict is surfaced in the presentation. Eval test cases are committed under evals/ so the skill stays benchmarkable.

Triggers: "CI status", "build health", "is main green", "CI dashboard", "daily build status", "why is CI red", "is release/X shippable"

Creates a new skill that collects build status across main and recent
release/* branches from both pipeline sources:

- Public CI: SkiaSharp (Public) on xamarin/public (def 4)
- Internal: SkiaSharp-Native (26493) → SkiaSharp (10789) → SkiaSharp-Tests (15756) on devdiv/DevDiv

Shows the last N builds per pipeline per branch for a quick health overview.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

📦 Try the packages from this PR

Warning

Do not run these scripts without first reviewing the code in this PR.

Step 1 — Download the packages

bash / macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.sh | bash -s -- 4094

PowerShell / Windows:

iex "& { $(irm https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.ps1) } 4094"

Step 2 — Add the local NuGet source

dotnet nuget add source ~/.skiasharp/hives/pr-4094/packages --name skiasharp-pr-4094
More options
Option Description
--successful-only / -SuccessfulOnly Only use successful builds
--force / -Force Overwrite previously downloaded packages
--list / -List List available artifacts without downloading
--build-id ID / -BuildId ID Download from a specific build

Or download manually from Azure Pipelines — look for the nuget artifact on the build for this PR.

Remove the source when you're done:

dotnet nuget remove source skiasharp-pr-4094

@github-actions

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

📖 Documentation Preview

The documentation for this PR has been deployed and is available at:

🔗 View Staging Site
🔗 View Staging Docs
🔗 View Staging Gallery (Blazor)
🔗 View Staging Gallery (Uno Platform)
🔗 View Staging SkiaFiddle

This preview will be updated automatically when you push new commits to this PR.


This comment is automatically updated by the documentation staging workflow.

mattleibow and others added 6 commits May 29, 2026 06:22
For the most recent failed or partially-succeeded build on each pipeline,
fetches the build timeline and displays errors and warnings inline.
Shows up to 5 errors and 5 warnings per build with task name context.

Use --no-issues to skip the timeline fetch for a faster overview.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the 5-issue cap — now collects and displays all errors and warnings
from the most recent run's timeline when it's failed or partially succeeded.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add --output flag to write a formatted markdown report with health
  summary table, per-branch build history, and collapsible error/warning
  sections
- Remove exclusion of .x servicing branches (they are the main equivalent
  for their respective major.minor)
- Refactor data collection into collect_data() for reuse by both renderers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Enrich data collection: commit info, duration, trigger reason, pass
  rates, and green→red regression detection per pipeline
- Add --json flag to output structured data for AI consumption
- Cache ADO auth token for script lifetime (fewer subprocess calls)
- Add get_build_changes() to fetch associated commits for failing builds
- Rewrite SKILL.md with comprehensive AI analysis instructions:
  root cause clustering, classification decision tree, pipeline chain
  analysis, flake detection, cross-branch correlation, release risk
  assessment, and prioritized recommendations
- Include regression detection table in markdown report
- Show commit SHA and build duration in detailed tables

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Eval revealed the AI analysis step sometimes listed internal pipelines
(Native/Managed/Tests) as independent failures instead of collapsing
cascaded downstream failures to their upstream root cause. Make Step 2.3
mandatory with explicit per-branch cascade-vs-independent statements, and
surface the chain verdict in the Step 3 presentation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
3 eval scenarios (daily health check, full report with analysis, release
readiness) used to benchmark the skill via skill-creator's evaluator.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mattleibow
mattleibow merged commit 313c23a into main May 29, 2026
3 of 4 checks passed
@mattleibow
mattleibow deleted the mattleibow/dev-ci-status-skill branch May 29, 2026 15:19
@mattleibow mattleibow added this to the 4.148.0-rc.1 milestone Jun 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant