Official agent skill

MAUI CI Investigator

by dotnet in dotnet/maui

Adds dotnet/maui-specific context for investigating failing PR checks and broken nightly builds: pipelines, Helix logs, binlogs and merge-readiness verdicts.

OfficialMITAuto-check passedTesting & QA

Install MAUI CI Investigator

skills CLI
$ npx skills add dotnet/maui --skill azdo-build-investigator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install dotnet/maui azdo-build-investigator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/dotnet/maui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/azdo-build-investigator .claude/skills/azdo-build-investigator && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
azdo-build-investigator
GitHub stars
23k
Token cost
~2k tokens
SKILL.md length
848 words
Files
1
Skills in repo
27
Repo updated
First seen
Licence
MIT

At a glance

Adds dotnet/maui-specific context for investigating failing PR checks and broken nightly builds: pipelines, Helix logs, binlogs and merge-readiness verdicts.

  • Works in 4 steps: Invoke ci-analysis to gather build/test… → Apply the MAUI corrections from… → When asked whether a PR is ready to… → …
  • Finding out why checks are failing on a dotnet/maui pull request
  • SKILL.md covers MAUI CI facts (canonical), Script location, Using this skill and Nightly / Official Signed…
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

This skill supports interactive answers to questions like why CI is red or whether a PR is ready to merge, for dotnet/maui pull requests and the nightly or official signed build. It sits on top of a general `ci-analysis` skill, which does the core investigation with `Get-CIStatus.ps1` and the `gh` CLI, and it supplies MAUI corrections and context. A separate automated path, triggered by a `/review tests` comment, relates failures to the PR diff and recent runs on the target branch and posts one attribution comment.

The MAUI facts live in one canonical doc, `.github/docs/maui-ci-facts.md`, which the agent reads instead of relying on memory. It covers pipeline names and definition IDs such as maui-pr (302), maui-pr-devicetests (314) and maui-pr-uitests (313), AzDO data sources, the XHarness exit-0 blind spot, Helix work items, container binlogs, test count deduplication, baseline comparison against the base branch, Gradle and Maven failure signatures, common failure patterns and the shared merge-readiness verdicts.

When your agent uses it

  • Finding out why checks are failing on a dotnet/maui pull request
  • Deciding whether a MAUI PR is ready to merge
  • Investigating a broken nightly or official signed build or a stale inflight feed
  • Reading Helix device-test failures that exited with code 0

Example prompts

  • “Why is CI red on this MAUI PR? Check the device tests and UI tests.”
  • “The nightly build is failing; figure out whether it is a Gradle or Maven problem.”
  • “Is this PR ready to merge, or are the failures already red on the base branch?”

Requirements

  • The ci-analysis skill from the dotnet-arcade-skills plugin
  • The GitHub CLI (gh)

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Invoke ci-analysis to gather build/test status for the PR.
  2. Apply the MAUI corrections from .github/docs/maui-ci-facts.md — especially the
  3. When asked whether a PR is ready to merge, compare failures against the base branch
  4. Escalation: for deep Helix log analysis (recurring failures, machine-specific

What it can do on your machine

Read from SKILL.md and the folder at commit 54ab39e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

MAUI CI Investigator loads about 2k tokens when it runs. Until then it costs about 119 tokens; SKILL.md has 848 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~119
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from dotnet/maui at commit 54ab39e, republished under its MIT licence (© dotnet). 848 words, ~1,970 tokens.

Download SKILL.mdSave it as .claude/skills/azdo-build-investigator/SKILL.md (or your agent's skills folder).
name
azdo-build-investigator
description
Investigate CI failures for dotnet/maui PRs and the nightly/official signed build — build errors, Helix test logs, and binlog analysis. Use when asked about failing checks, CI status, test failures, 'why is CI red', 'build failed', 'what's failing on PR', 'is this PR ready to merge', Helix failures, device test failures, or 'nightly is broken', 'nightly build failing', 'inflight feed stale', 'dogfood feed stopped updating', 'official build failed'.
metadata.author
dotnet-maui
metadata.version
3.0

dotnet/maui CI Investigation Context

This skill provides MAUI-specific context for interactive CI investigation — answering "why is CI red?" and "is this PR ready to merge?". Use it together with the ci-analysis skill (loaded from the dotnet-dnceng@dotnet-arcade-skills plugin via .github/copilot/settings.json).

First: invoke the ci-analysis skill — it handles the core investigation workflow using Get-CIStatus.ps1 and gh CLI (with MCP tools as optional enhancements if available). This skill provides MAUI-specific corrections and context on top of that.

For the automated path (a maintainer comments /review tests on a PR), the review-test-failures skill relates failures to the PR diff and the latest five completed runs per pipeline on the PR's target branch, then posts one compact attribution comment. It does not issue merge approval. Both use the operational facts below.

MAUI CI facts (canonical)

All MAUI-specific facts live in .github/docs/maui-ci-facts.md — read it. It covers:

  • Pipeline names + definition IDs (maui-pr 302, maui-pr-devicetests 314, maui-pr-uitests 313), org/project, and investigation priority order.
  • AzDO data sources (anonymous public build/timeline/log REST APIs; _apis/test is optional enrichment).
  • XHarness exit-0 blind spot, Helix work items, and actual result files for hidden device-test failures.
  • Container artifact binlogs (Bearer token + File Container API; mcp-binlog-tool).
  • Test count deduplication (group by test name + OS platform).
  • Baseline comparison (is the failure already red on the base branch?).
  • Visual baseline and platform mismatch guidance.
  • Gradle / Maven / CFSClean signatures and the ./eng/ingest-maven-deps.sh fix.
  • Common failure patterns table.
  • Merge-readiness criteria — the shared definition of Ready to merge / Not ready / Needs human investigation / Insufficient data / No failures found.

Do not restate those facts from memory; change them in the canonical doc only.

Script location

The ci-analysis skill and its Get-CIStatus.ps1 script are loaded automatically from the dotnet/arcade-skills plugin (configured in .github/copilot/settings.json via enabledPlugins). The CLI caches scripts to ~/.copilot/installed-plugins/dotnet-arcade-skills/. No manual download is needed.

⚠️ The ci-analysis skill's reference doc lists maui-public as the MAUI pipeline — this is outdated. Use the pipeline names in .github/docs/maui-ci-facts.md.

Using this skill

  1. Invoke ci-analysis to gather build/test status for the PR.
  2. Apply the MAUI corrections from .github/docs/maui-ci-facts.md — especially the correct pipeline names, the XHarness exit-0 cross-check on maui-pr-devicetests, and test-count deduplication.
  3. When asked whether a PR is ready to merge, compare failures against the base branch and apply the merge-readiness criteria from the canonical doc.
  4. Escalation: for deep Helix log analysis (recurring failures, machine-specific issues, comparing passing vs. failing runs), escalate to the helix-investigation skill.

When CI hasn't run: community PRs require a maintainer to trigger builds — see the canonical doc.

Show full SKILL.md (438 more words)Show less

Nightly / Official Signed Build (inflight dogfood feed)

When asked about the nightly build, the inflight feed, or the dogfood feed being broken or stale — e.g. "nightly is broken please fix", "the dogfood feed stopped updating", or the release-readiness ❌ staleness banner fired — the pipeline to investigate is NOT maui-pr. It's the official signed build:

Pipelinedotnet-maui
Definition ID1095
Org / Projectdnceng / internal — requires internal access (not the anonymous dnceng-public org the PR pipelines use)
Defined byeng/pipelines/ci-official.yml
Scheduledaily cron 0 5 * * * (05:00 UTC) on main, net*.0, and inflight/current
Feedsthe ci.inflight dogfood NuGet stream — the official build on inflight/current produces the "shipping next" bits that release-readiness tracks. When this build is red, that feed goes stale and the release-readiness banner turns ❌.

Investigate (the AzDO MCP tools accept this internal pipeline — pass org: dnceng, project: internal):

  • azdo_builds with definitionId: 1095, branch: refs/heads/inflight/current → find the newest failed run (and confirm whether it's a one-off or a multi-day streak)
  • azdo_search_timeline (filter failed) on that build → identifies the failing job/step + its logId
  • azdo_search_log on that logId → the actual error

Known failure surface: the most common nightly break is the Pack Windows job → "Build Workloads, Sign & Publish" step (eng/pipelines/arcade/stage-pack.yml, building src/Workload/workloads.csproj). Recurring signature:

src\Workload\workloads.csproj(30,3): error MSB4019: The imported project
"...\artifacts\packages\Release\Shipping\vs-workload.props" was not found

vs-workload.props is generated by the _GenerateVSWorkloadProps target in src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Microsoft.NET.Sdk.Maui.Manifest.csproj (AfterTargets="Build") during the preceding Pack, Sign step, then imported by workloads.csproj. If it's missing at import time, the manifest pack didn't stage it to ArtifactsShippingPackagesDir. Note the macOS Pack job can succeed while Pack Windows fails — a green macOS leg does NOT mean the dogfood feed is healthy.

Root cause of the Jun 2026 inflight/current outage (binlog-proven, fixed by #36089): the workload packs (Microsoft.NET.Sdk.Maui.Manifest, Microsoft.Maui.Sdk) target netstandard but are shipping packages, so they set <IsPackable>true</IsPackable> explicitly. PR #32203 ("Don't pack .NET Standard") added a blanket <IsPackable Condition="$(TargetFramework.Contains('netstandard'))">false</IsPackable> to Directory.Build.targets — which is auto-imported at the end of every project, so it overrode the packs' explicit true → IsPackable=false. With IsPackable=false, NuGet Pack no-ops; and because the "Pack, Sign" step runs -pack without -build (only the later workloads step uses -build), the Build target never ran → _GenerateVSWorkloadProps (AfterTargets="Build") never ran → vs-workload.props was never written → the line-30 import threw MSB4019. The fix guards the blanket rule with and '$(IsPackable)' == '' so explicit opt-ins survive. This regression was inflight/current-only (#32203's commit 543b1ebeb7 is not yet on main/net10.0) — so when it forward-ports, it must carry the guard or the break reappears. The general lesson when triaging this failure: confirm IsPackable actually evaluates true for the workload packs in the pack.binlog, and that the pack step's Build (hence _GenerateVSWorkloadProps) actually ran.

Distinguish from the release pipeline: ci-official-release.yml is used for shipping releases, not the nightly inflight dogfood build.

© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/azdo-build-investigator of dotnet/maui.

Open the folder on GitHubat commit 54ab39e

Compare with similar skills

MAUI CI Investigator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

MAUI CI Investigator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
MAUI CI Investigator this skilldotnet/maui23k—~2kAutomated safety check: PassMIT
GreptimeDB Fuzz CI Failure InvestigationGreptimeTeam/greptimedb6.7k—~4.4kAutomated safety check: PassApache-2.0
Megatron-LM CI Failure TriageNVIDIA/Megatron-LM18k—~1.6kAutomated safety check: PassApache-2.0
CI Triagecanton-network/splice117—~1.4kAutomated safety check: PassApache-2.0
Macios CI Postmortemdotnet/macios2.9k—~7.8kAutomated safety check: PassCustom licence
Babysit PRZenUml/web-sequence150—~871Automated safety check: PassMIT

Similar skills

  • Diagnoses a failed GreptimeDB fuzz CI job by pulling its GitHub Actions logs and fuzz artifacts, then matching the evidence to the local source code.

    6.7k GitHub stars~4.4k tokensUpdated today
    Testing & QAAuto-check passed
  • Official

    Investigates a failing GitHub Actions run or job for Megatron-LM, finds the root cause plus the PR and test author involved, and files a structured bug issue.

    18k GitHub stars~1.6k tokensUpdated today
    DevOps & CloudAuto-check passed
  • CI Triage

    canton-network/splice

    Triage a failed splice GitHub Actions job (cn-test-failures ref) into a reproducible evidence packet - fetch job log and artifact, isolate the flagged lines, check the known flake families for…

    117 GitHub stars~1.4k tokensUpdated today
    Testing & QAAuto-check passed
  • Official

    Post-mortem analysis of CI failures across recent PRs in dotnet/macios.

    2.9k GitHub stars~7.8k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Babysit PR

    ZenUml/web-sequence

    Monitor and diagnose GitHub Actions checks on ZenUML web-sequence PRs, fixing code-caused CI failures when appropriate.

    150 GitHub stars~871 tokensUpdated 5 days ago
    Testing & QAAuto-check passed
  • CI Failure Triage

    NewFuture/DDNS

    Diagnose and fix required CI failures for the current DDNS branch without weakening tests, platform coverage, caches, or repository policy.

    4.7k GitHub stars~327 tokensUpdated 2 days ago
    Testing & QAAuto-check passed

More from dotnet/maui

All 27 skills in this repo
  • Mines local Copilot CLI session logs for dotnet/maui to rank costly or failing runs, tag recurring failure modes, propose repo edits and emit guard evals.

    23k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Official

    Reviews the tests added in a pull request for fix coverage, quality, edge cases and test type, and recommends lighter test types where they would do.

    23k GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Official

    Produces evidence-backed ship-readiness verdicts for .NET MAUI Servicing Releases and Previews, and drafts public-safe release handoff pages from the result.

    23k GitHub stars~15k tokensUpdated today
    Auto-check passed
  • Official

    Interprets pinned managed benchmark evidence for a dotnet/maui pull request and writes a narrative for the performance review workflow, without running or publishing anything.

    23k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • PR Finalize

    dotnet/maui

    Official

    Checks that a pull request's title and description match its implementation and reviews the code for best practices before merge, without posting anything.

    23k GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Official

    Adds MAUI-specific guardrails on top of the maestro-cli skill and Maestro MCP tools for darc, BAR, and channel or feed lookups in dotnet/maui.

    23k GitHub stars~10k tokensUpdated today
    Auto-check passed

Works with

Questions about MAUI CI Investigator

What does MAUI CI Investigator do?

Adds dotnet/maui-specific context for investigating failing PR checks and broken nightly builds: pipelines, Helix logs, binlogs and merge-readiness verdicts. This skill supports interactive answers to questions like why CI is red or whether a PR is ready to merge, for dotnet/maui pull requests and the nightly or official signed build.ps1` and the `gh` CLI, and it supplies MAUI corrections and context.

When should I use MAUI CI Investigator?

MAUI CI Investigator fits situations like: finding out why checks are failing on a dotnet/maui pull request; deciding whether a MAUI PR is ready to merge; investigating a broken nightly or official signed build or a stale inflight feed; reading Helix device-test failures that exited with code 0.

How do I install MAUI CI Investigator in Claude Code?

Run `npx skills add dotnet/maui --skill azdo-build-investigator -a claude-code`. Or copy the skill folder (.github/skills/azdo-build-investigator in dotnet/maui) into .claude/skills/azdo-build-investigator in your project. Claude Code loads it when a task matches its description.

How do I install MAUI CI Investigator in Codex?

Run `npx skills add dotnet/maui --skill azdo-build-investigator -a codex`. Or copy the skill folder (.github/skills/azdo-build-investigator in dotnet/maui) into .agents/skills/azdo-build-investigator in your project. Codex loads it when a task matches its description.

Can I use MAUI CI Investigator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/maui --skill azdo-build-investigator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/azdo-build-investigator, .gemini/skills/azdo-build-investigator, .github/skills/azdo-build-investigator and .opencode/skills/azdo-build-investigator in your project.

What does MAUI CI Investigator need to run?

SKILL.md names no scripts, command-line tools or credentials: MAUI CI Investigator is instructions for the agent only. Our summary lists: The ci-analysis skill from the dotnet-arcade-skills plugin; The GitHub CLI (gh).

Does MAUI CI Investigator access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is MAUI CI Investigator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does MAUI CI Investigator use?

MAUI CI Investigator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does MAUI CI Investigator use?

About 2k tokens (SKILL.md is roughly 7.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to MAUI CI Investigator?

Skills that share tags, products or a category with MAUI CI Investigator: GreptimeDB Fuzz CI Failure Investigation (GreptimeTeam/greptimedb, 6.7k stars), Megatron-LM CI Failure Triage (NVIDIA/Megatron-LM, 18k stars), CI Triage (canton-network/splice, 117 stars) and Macios CI Postmortem (dotnet/macios, 2.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains MAUI CI Investigator?

dotnet (a GitHub organization, an official publisher) maintains it in dotnet/maui, which has 23,321 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 10, 2026.

Source: dotnet/maui on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.