microsoft / microsoft/win-dev-skills

winui-packaging: ship a tested GitHub Actions workflow file instead of an inline YAML snippet

Open
#99 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C#
Stars
442
Forks
33
Avg merge
2h 59m
Merged PRs (30d)
11

Description

97: #97

Problem

From Joe's blog post:

CI was next. The workflow the agent generated didn't work out of the box, so I just removed it.

The current winui-packaging skill embeds an example GitHub Actions YAML snippet as inline markdown (lines 67–90). The snippet has at least these problems:

  1. Hard-codes ./bin/x64/Release/ — actual output path varies by TargetFramework, Configuration, and RID, and is usually bin/x64/Release/<tfm>/win-x64/ or similar after RuntimeIdentifiers is set.
  2. Doesn't set up the .NET SDK before dotnet build (relies on whatever ships on the runner).
  3. Single-platform only — fails on Arm64.
  4. Never exercised by our own CI, so we have no signal when it drifts.

The result: the agent emits a workflow that looks right and doesn't run. Pattern is the deeper issue — every prose-embedded snippet we tell the agent to copy is unverified.

Proposed fix

  • Move the YAML to a real file: plugins/winui/skills/winui-packaging/references/github-actions/build-and-package.yml.
  • Make it a proper matrix workflow (x64, arm64), with actions/setup-dotnet, correct artifact globs, signing from a repo secret (and a graceful fallback to ephemeral dev cert for non-secret-bearing forks / first-time setup).
  • Exercise it against a sample WinUI app inside this repo's CI so any breakage is caught here, not by users.
  • Skill body instructs the agent to copy the file in (Copy-Item from the installed skill path, or gh repo clone of just that path) rather than emit YAML from scratch.

Acceptance criteria

  • Workflow lives as a real file under references/github-actions/.
  • CI in this repo runs it against a sample WinUI 3 app on every PR.
  • Skill instructs the agent to copy the file rather than regenerate it.
  • Both x64 and arm64 produce uploaded .msix artifacts on each run.
  • Inline YAML in SKILL.md is removed (or reduced to a 5-line "what it does" excerpt with a pointer to the real file).

Acknowledgments

Identified by Joe Finney in Building Fluent Icon Finder with the WinUI Copilot skill.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with plugins/winui/skills/winui-packaging/SKILL.md and the proposed references/github-actions/build-and-package.yml path; inspect the existing inline snippet and repository CI configuration. Define the sample WinUI app exercise from the acceptance criteria, then verify that x64 and arm64 produce uploaded .msix artifacts and that the skill points users to the real workflow file.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, github-actions, yaml
Domain
build-system, ci-cd, release
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.