Skip to content

Commit 7b7cfbf

Browse files
nmetulevlei9444dependabot[bot]Copilotniels9001
authored
Release 0.4.0 (#115)
* run pr-validation on staging prs * winui-search: batched CLI, background refresh, ranking + Gallery/Toolkit fetch upgrades (#83) * winui-search: batched CLI, background refresh, ranking + Gallery/Toolkit fetch upgrades * fix comments * fix time * fix comments * change verions back * fix local pr review --------- Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com> * deps: Bump coverlet.collector from 10.0.0 to 10.0.1 (#87) --- updated-dependencies: - dependency-name: coverlet.collector dependency-version: 10.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com> * winui: window sizing rubric, screenshot validation, anti-self-delegation (#84) * winui: window sizing rubric, screenshot validation, anti-self-delegation Three connected improvements to the WinUI dev skills, motivated by repeated failure modes when building small apps: 1. winui-design SKILL.md - new Step 4 'Size the Window to the App' WinUI 3 has no SizeToContent, so apps default to ~1024x768 regardless of content - which makes utilities feel oversized. Adds an 8-step reasoning rubric (inventory rows, derive widest-row width, sum heights, round up, sanity-check ranges, prefer compact-but-not-clipping, aspect-ratio follows content, validate after running) and a worked example. Old 'Step 4: Design Anti-Patterns' renumbered to Step 5. 2. winui-ui-testing SKILL.md - new Step 3.5 'Look at the Screenshots' UIA assertions can't see clipping, overlap, cramped layout, or theming bugs. Adds explicit guidance to capture screenshots at multiple states (initial, post-interaction, per mode), view them after each run, and apply a visual checklist. Test-script template now creates a screenshots/ directory and captures intermediate state, not just a single final shot. 3. winui-dev.agent.md - 'Do The Work Yourself' section Agents kept re-delegating user requests to a fresh winui-dev sub-agent, wasting context and hiding progress. Adds an explicit prohibition against self-delegation while still permitting narrow helpers (explore for unfamiliar codebases, rubber-duck for plan critique). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: replace PInvoke.User32 with framework DllImport; drop misleading fallback The DPI-aware snippet in Step 4 had two real correctness issues that surfaced in PR review and were confirmed by an empirical two-monitor test: 1. PInvoke.User32.GetDpiForWindow is a third-party NuGet not in the default WinUI 3 scaffold; agents copying the snippet hit "type or namespace PInvoke not found". Replace with a one-line [DllImport("user32.dll")] — no NuGet, no CsWin32 source-generator plumbing, works in the constructor. 2. SetTitleBar(AppTitleBar) referenced an XAML element the snippet never declares; orthogonal to sizing anyway. Removed. Also drop the "Simpler fallback if PInvoke.User32 isn't available (ignores DPI; fine for prototypes)" block — the empirical test showed AppWindow.Resize takes physical pixels, so Resize(new SizeInt32(460, 860)) on a 1.25-scale monitor (the default on many Windows laptops) produces only ~368x688 DIPs of usable space and guarantees the clipping the rubric is designed to prevent. The "fallback" was actively misleading. Replaced with a one-line "Why this shape" explaining why XamlRoot.RasterizationScale (the managed WinUI 3 API) isn't viable here (null in ctor, stale after AppWindow.Move). Strengthened the "Pattern" header with the concrete failure mode so future readers see why the DPI math is needed, not just that it's needed. Also fixes a small bug in winui-dev.agent.md: "rubber-duck" was named as if it were a real agent_type. Rephrased to "a general-purpose agent for a rubber-duck critique" so the named agent_type is valid. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: extract worked example to references/, dedupe visual checklist with winui-ui-testing M2: The focus-timer walkthrough (460 x 860 derivation + 440 x 720 anti-pattern) moves out of SKILL.md prose and into references/window-sizing-examples.md, with SKILL.md keeping only a 1-line schematic of the rubric and a pointer to the reference. Concrete worked numbers stay out of every loaded skill payload but remain on-demand when an agent wants a full example to anchor against. M6: Step 4 step 8's bulleted symptom list (5 bullets that were a strict subset of the 9-item visual checklist in winui-ui-testing Step 3.5) collapses to a 1-paragraph pointer with inline symptom hints. The authoritative checklist lives in winui-ui-testing, which is the skill that owns 'look at screenshots'. Net: -11 / +50 (the +50 is the new on-demand reference file, not loaded by default), with no change in covered guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui: ultra-lean rewrite of window-sizing + screenshot-validation + anti-self-delegation prose Apply the Team Lead Test more aggressively across all three files. Cuts redundant enforcement, scenario-specific filler, and restated rubric positives. Preserves every operational imperative. winui-dev.agent.md (anti-self-delegation): 11 → 2 lines. The two banned sub-types collapse into one parenthetical; the scoped-helpers ✅ shrinks to one clause; the redundant closing 'if you catch yourself' paragraph drops (the rule above it already says it). winui-ui-testing/SKILL.md (Step 3.5): 33 → ~16 lines. Drops the duplicate script example (the State Screenshots block in the script template above already shows the pattern), the 3-bullet 'what counts as a state' list (one sentence covers it), and the 'How to view' paragraph (tool-agnostic: the agent picks its own view tool). Visual checklist trimmed from 9 → 9 items but with one merged pair (right-edge + overlap kept as separate bullets after all) and one new item added: 'Content uses the available width — no asymmetric dead zones' covers the bug where content gets pinned to one edge with empty space on the other. winui-design/SKILL.md (Step 4): 76 → ~30 lines. The 8-step rubric collapses to one paragraph + a sanity-check list — the formula Sigma(row heights) forces enumeration without needing a dedicated 'inventory' step, 'widest row' encodes max-not-average, and 'round up' speaks for itself. Drops the aspect-ratio step (tall→portrait is obvious), the 'compactness vs clipping' step (subsumed by 'round up — clipped is worse'), and the 6-bullet Anti-patterns section (5 of 6 restated the rubric's positives; the one novel trap — Width on root Grid clips, not sizes — folds into a one-line note after the snippet). The 3-line 'Pattern — apply the size you derived' intro collapses to one line. Snippet using-statement comments removed. Closing line goes tool-agnostic: 'Validate visually after build via winui-ui-testing Step 3.5' (no longer says 'capture a screenshot' — that's a layering violation, design owns the rubric, testing owns the validation mechanism). 'Iterate the size or layout' covers both grow-the-window and fix-asymmetric-padding failure modes. Net for default-loaded payloads: -58 lines on top of the previous M2+M6 commit, total PR addition shrinks from +176 to +88 lines (-50%). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: drop window-sizing-examples reference, make ui-testing validation user-opt-in The reference file was 47 lines of one focus-timer instantiation of a 2-line formula. An LLM agent given the formula can derive any layout without seeing a worked example first — 'see one, do one' is human pedagogy, not LLM pedagogy. A single example also risks anchoring toward focus-timer-shaped solutions. Drop the file, drop the references-table row, drop the trailing 'See references/...' sentence in Step 4. The rubric stands on its own. Also reframe the Step 4 closing line: instead of prescribing 'validate visually after build' (which would auto-trigger the ui-testing pipeline — spawn the app, capture UIA, take screenshots, run the checklist), make it user-opt-in: 'If the user asks for UI validation, see winui-ui-testing Step 3.5'. This matches the policy already stated in winui-dev.agent.md that the user might ask for ui-testing 'if desired only'. The ui-testing skill is expensive to run; it shouldn't be the default follow-up to every window-sizing exercise. Net: -49 lines of repo (47 file + 2 default-loaded payload), no loss of operational guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Nikola Metulev <711864+nmetulev@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Back-merge main into staging after 0.3.1 (+ backmerge/* CI fix) (#92) * Release 0.3.1 (#90) * run pr-validation on staging prs * winui-search: batched CLI, background refresh, ranking + Gallery/Toolkit fetch upgrades (#83) * winui-search: batched CLI, background refresh, ranking + Gallery/Toolkit fetch upgrades * fix comments * fix time * fix comments * change verions back * fix local pr review --------- Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com> * deps: Bump coverlet.collector from 10.0.0 to 10.0.1 (#87) --- updated-dependencies: - dependency-name: coverlet.collector dependency-version: 10.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com> * winui: window sizing rubric, screenshot validation, anti-self-delegation (#84) * winui: window sizing rubric, screenshot validation, anti-self-delegation Three connected improvements to the WinUI dev skills, motivated by repeated failure modes when building small apps: 1. winui-design SKILL.md - new Step 4 'Size the Window to the App' WinUI 3 has no SizeToContent, so apps default to ~1024x768 regardless of content - which makes utilities feel oversized. Adds an 8-step reasoning rubric (inventory rows, derive widest-row width, sum heights, round up, sanity-check ranges, prefer compact-but-not-clipping, aspect-ratio follows content, validate after running) and a worked example. Old 'Step 4: Design Anti-Patterns' renumbered to Step 5. 2. winui-ui-testing SKILL.md - new Step 3.5 'Look at the Screenshots' UIA assertions can't see clipping, overlap, cramped layout, or theming bugs. Adds explicit guidance to capture screenshots at multiple states (initial, post-interaction, per mode), view them after each run, and apply a visual checklist. Test-script template now creates a screenshots/ directory and captures intermediate state, not just a single final shot. 3. winui-dev.agent.md - 'Do The Work Yourself' section Agents kept re-delegating user requests to a fresh winui-dev sub-agent, wasting context and hiding progress. Adds an explicit prohibition against self-delegation while still permitting narrow helpers (explore for unfamiliar codebases, rubber-duck for plan critique). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: replace PInvoke.User32 with framework DllImport; drop misleading fallback The DPI-aware snippet in Step 4 had two real correctness issues that surfaced in PR review and were confirmed by an empirical two-monitor test: 1. PInvoke.User32.GetDpiForWindow is a third-party NuGet not in the default WinUI 3 scaffold; agents copying the snippet hit "type or namespace PInvoke not found". Replace with a one-line [DllImport("user32.dll")] — no NuGet, no CsWin32 source-generator plumbing, works in the constructor. 2. SetTitleBar(AppTitleBar) referenced an XAML element the snippet never declares; orthogonal to sizing anyway. Removed. Also drop the "Simpler fallback if PInvoke.User32 isn't available (ignores DPI; fine for prototypes)" block — the empirical test showed AppWindow.Resize takes physical pixels, so Resize(new SizeInt32(460, 860)) on a 1.25-scale monitor (the default on many Windows laptops) produces only ~368x688 DIPs of usable space and guarantees the clipping the rubric is designed to prevent. The "fallback" was actively misleading. Replaced with a one-line "Why this shape" explaining why XamlRoot.RasterizationScale (the managed WinUI 3 API) isn't viable here (null in ctor, stale after AppWindow.Move). Strengthened the "Pattern" header with the concrete failure mode so future readers see why the DPI math is needed, not just that it's needed. Also fixes a small bug in winui-dev.agent.md: "rubber-duck" was named as if it were a real agent_type. Rephrased to "a general-purpose agent for a rubber-duck critique" so the named agent_type is valid. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: extract worked example to references/, dedupe visual checklist with winui-ui-testing M2: The focus-timer walkthrough (460 x 860 derivation + 440 x 720 anti-pattern) moves out of SKILL.md prose and into references/window-sizing-examples.md, with SKILL.md keeping only a 1-line schematic of the rubric and a pointer to the reference. Concrete worked numbers stay out of every loaded skill payload but remain on-demand when an agent wants a full example to anchor against. M6: Step 4 step 8's bulleted symptom list (5 bullets that were a strict subset of the 9-item visual checklist in winui-ui-testing Step 3.5) collapses to a 1-paragraph pointer with inline symptom hints. The authoritative checklist lives in winui-ui-testing, which is the skill that owns 'look at screenshots'. Net: -11 / +50 (the +50 is the new on-demand reference file, not loaded by default), with no change in covered guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui: ultra-lean rewrite of window-sizing + screenshot-validation + anti-self-delegation prose Apply the Team Lead Test more aggressively across all three files. Cuts redundant enforcement, scenario-specific filler, and restated rubric positives. Preserves every operational imperative. winui-dev.agent.md (anti-self-delegation): 11 → 2 lines. The two banned sub-types collapse into one parenthetical; the scoped-helpers ✅ shrinks to one clause; the redundant closing 'if you catch yourself' paragraph drops (the rule above it already says it). winui-ui-testing/SKILL.md (Step 3.5): 33 → ~16 lines. Drops the duplicate script example (the State Screenshots block in the script template above already shows the pattern), the 3-bullet 'what counts as a state' list (one sentence covers it), and the 'How to view' paragraph (tool-agnostic: the agent picks its own view tool). Visual checklist trimmed from 9 → 9 items but with one merged pair (right-edge + overlap kept as separate bullets after all) and one new item added: 'Content uses the available width — no asymmetric dead zones' covers the bug where content gets pinned to one edge with empty space on the other. winui-design/SKILL.md (Step 4): 76 → ~30 lines. The 8-step rubric collapses to one paragraph + a sanity-check list — the formula Sigma(row heights) forces enumeration without needing a dedicated 'inventory' step, 'widest row' encodes max-not-average, and 'round up' speaks for itself. Drops the aspect-ratio step (tall→portrait is obvious), the 'compactness vs clipping' step (subsumed by 'round up — clipped is worse'), and the 6-bullet Anti-patterns section (5 of 6 restated the rubric's positives; the one novel trap — Width on root Grid clips, not sizes — folds into a one-line note after the snippet). The 3-line 'Pattern — apply the size you derived' intro collapses to one line. Snippet using-statement comments removed. Closing line goes tool-agnostic: 'Validate visually after build via winui-ui-testing Step 3.5' (no longer says 'capture a screenshot' — that's a layering violation, design owns the rubric, testing owns the validation mechanism). 'Iterate the size or layout' covers both grow-the-window and fix-asymmetric-padding failure modes. Net for default-loaded payloads: -58 lines on top of the previous M2+M6 commit, total PR addition shrinks from +176 to +88 lines (-50%). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: drop window-sizing-examples reference, make ui-testing validation user-opt-in The reference file was 47 lines of one focus-timer instantiation of a 2-line formula. An LLM agent given the formula can derive any layout without seeing a worked example first — 'see one, do one' is human pedagogy, not LLM pedagogy. A single example also risks anchoring toward focus-timer-shaped solutions. Drop the file, drop the references-table row, drop the trailing 'See references/...' sentence in Step 4. The rubric stands on its own. Also reframe the Step 4 closing line: instead of prescribing 'validate visually after build' (which would auto-trigger the ui-testing pipeline — spawn the app, capture UIA, take screenshots, run the checklist), make it user-opt-in: 'If the user asks for UI validation, see winui-ui-testing Step 3.5'. This matches the policy already stated in winui-dev.agent.md that the user might ask for ui-testing 'if desired only'. The ui-testing skill is expensive to run; it shouldn't be the default follow-up to every window-sizing exercise. Net: -49 lines of repo (47 file + 2 default-loaded payload), no loss of operational guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Nikola Metulev <711864+nmetulev@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Release 0.3.1 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Nikola Metulev <711864+nmetulev@users.noreply.github.com> Co-authored-by: leileizhang <leilzh@microsoft.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * release: introduce backmerge/* convention and fix CI for back-merge PRs - version-sync skips backmerge/* (legitimately carries main's version-bump commit forward into staging). - staging-up-to-date now checks PR head contains every commit on main, not current staging — strictly stronger, and passes naturally for backmerge PRs (the chicken-and-egg before required staging to already contain main before the very PR that would bring it there could merge). - Document backmerge/* branch convention in CONTRIBUTING.md and RELEASING.md. - Update hotfix back-merge reminder issue body to use the new convention. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * ci: force re-run on backmerge/0.3.1 (stale check from pre-rename) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Nikola Metulev <711864+nmetulev@users.noreply.github.com> Co-authored-by: leileizhang <leilzh@microsoft.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Trimming design skill (#96) * winui-design: clean-room rewrite from public sources, ~60% size reduction Rebuilt the skill from scratch using only public Microsoft Learn design docs (learn.microsoft.com/en-us/windows/apps/design/) and the WinUI Gallery (github.com/microsoft/WinUI-Gallery). Independent fresh-design experiment confirmed both topic coverage and content density. Structure (29 KB total, down from 73 KB): - SKILL.md (always loaded) - references/control-selection.md (control/pattern picking) - references/theme-accessibility.md (brushes, theme dicts, HC, a11y) - references/layout-review.md (page design, responsive, typography) - references/sources.md (public source URLs) Inline runnable samples are deferred to winui-search.exe (already shipped with the skill); exhaustive brush catalogues are deferred to Microsoft Learn. Unique high-signal items preserved: - WinUI 3 window-sizing rubric + GetDpiForWindow DllImport - TextBox x:Bind TwoWay + UpdateSourceTrigger=PropertyChanged gotcha - Attached-property C# setter pattern (vs object-initializer trap) - Acrylic BackgroundSizing + ThemeShadow Translation/padding rules Verification: line-overlap scan against windows-hivemind/windows-xaml plugin shows 9 lines of accidental match across all 5 files, all of which are syntactically-required XAML scaffolding tags and InitializeComponent() — zero copyrightable content shared. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: re-graft 3 SKILL.md items + add brushes-and-icons reference Grafted back from public Microsoft Learn sources after audit identified high-value losses worth restoring: SKILL.md: - App-shape anchors table with Reference-App column (Settings, Terminal, File Explorer, Dev Home, Calculator) - x:Bind static-method pattern for bool->Visibility, with explicit 'never use Converter={x:Null}' runtime-crash warning - Anti-patterns table replaces bullet list (13 rows, contrastive) New reference: - references/brushes-and-icons.md (12 KB): brush catalogue + IconElement taxonomy, sourced from learn.microsoft.com xaml-theme-resources and design/style/icons pages Total skill now 43.7 KB (vs 51.5 KB original = 15% smaller, vs 29 KB after the initial trim = + grafted high-value content). Verified zero prose overlap with windows-xaml plugin via 8-gram shingle scan (only shared content is learn.microsoft.com URL fragments). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: trim skill ~36% after 5-model review panel A 5-model review panel (Sonnet 4.6, GPT-5.4, GPT-5.3-Codex, Opus 4.6, Opus 4.7) unanimously rated the skill USEFUL-BUT-OVERSIZED and asked for roughly half cut. This commit delivers that, focused on the consensus findings. SKILL.md (15.5 -> 10.1 KB): - Cut typography section, generic a11y checklist, generic MVVM bullets, control-choice bias table, review-output-format ceremony, and fast- triage table — all duplicated training data or process-theater - Added: sidebar XAML skeleton (NavigationView + SettingsCard + ScrollViewer), Mica/SystemBackdrop wiring with the don't-paint-root trap, CommunityToolkit.WinUI.Controls.SettingsControls package note, PaneDisplayMode enumeration — all were gaps the panel flagged - Promoted the high-signal landmines (x:Bind OneTime default, TextBox UpdateSourceTrigger, attached-property setters, Converter={x:Null}, acrylic+ThemeShadow) into a dedicated 'XAML landmines' section references/control-selection.md: DELETED (~90% duplicated SKILL.md; unique custom-UI gate merged into anti-patterns) references/sources.md: DELETED (bibliography agents can't click; citations live inline in brushes-and-icons.md) references/layout-review.md (4 -> 2.5 KB): kept page-planning template, responsive-techniques table, state-coverage checklist, sidebar sizing heuristics; cut typography (model knows the type ramp), spacing duplication, navigation review, XAML binding duplication references/theme-accessibility.md (6.2 -> 3.1 KB): lead with deep ThemeDictionary patterns (ResourceKey redirect, runtime theme switching, BasedOn discipline); generic a11y/keyboard/media checklists removed (now in training) references/brushes-and-icons.md: trimmed the Smoke section (one brush, ContentDialog applies it automatically) Verified zero prose overlap with the windows-xaml plugin via 8-gram shingle scan (only shared content is XAML scaffolding tokens and learn.microsoft.com URL fragments). Independent verification (Opus 4.7, blind to panel recs): verdict USEFUL, trim successful, sidebar skeleton + SettingsCard package note + Mica wiring + window-sizing DPI code each materially change generated output. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: add identity-beat nudge to break NavView-grey-cards reflex Feedback from real usage: agent-generated WinUI apps all look 'samey' — same NavigationView Left + system grey Mica + default accent + grey cards, regardless of app purpose. Diagnosed as ~60% skill bias (anchors exclusively to Microsoft first-party apps, bans the moves that create identity) and ~40% platform (Fluent is consistency by design). Minimal middle-ground intervention, ~800 bytes: 1. Anchors table: added one row (media/canvas/hero — no NavView) and non-Microsoft reference apps in every row (Slack, VS Code, Outlook, GitHub Desktop, Spotify, Clipchamp). Three of six rows still anchor on NavigationView — this isn't anti-NavView, just not exclusively. 2. New short section 'Before reaching for defaults — one identity beat': forces ONE backdrop+accent decision before coding. Names overriding SystemAccentColor and tinted DesktopAcrylicBackdrop as on-pattern (Microsoft's own apps do this). Explicit permission to skip for utilities so we don't over-engineer brand identity for a calculator. 3. Anti-patterns table: replaced first two rows with two new ones that bless silhouette variety and brand customisation. Doesn't add new rows, doesn't remove the substantive bans below. No new files, no new references, no worked code (agent knows syntax once told the pattern is on-pattern — the unlock is permission). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: drop baked-in sidebar skeleton — winui-search owns examples SKILL.md contradicted itself: a whole section tells the agent to front-load winui-search.exe lookups *before* writing XAML, then handed them a baked-in NavigationView + SettingsCard skeleton that pre-empted the search. That skeleton was the proximate cause of the 'every app looks like Settings' feedback — it's always-loaded into context. Verified the tool returns rich samples for both ('gallery-navigationview-1' for the shell + 'toolkit-settingsexpander-*' for the cards), so the skeleton is fully redundant. Skill teaches decisions; tool provides samples. Restore that boundary. PaneDisplayMode guidance dropped with the snippet — also redundant with gallery-navigationview-1's full sample which shows all four modes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: shape-neutral pass — remove silhouette bias from generic guidance Full audit of remaining over-specific examples after the sidebar-skeleton removal. Seven biasing items found, six fixed (one was acceptable API description in brushes-and-icons.md and was left alone). SKILL.md: - Mica wiring section: dropped 'MicaBackdrop { Kind = Base }' headline code (it's the default — showing it as 'the example' undoes the identity beat two paragraphs up). Replaced with a 3-option bullet list matching the identity-beat choices: Mica, tinted Acrylic, no backdrop. - Window-sizing DPI snippet: replaced literal '460 * scale, 860 * scale' (a portrait sidebar-shaped utility window) with widthDip/heightDip placeholders so the agent derives values from the rubric. - Anti-pattern 'Centered floating card on empty background': re-scoped to the actual bug (tiny island on oversized window). The previous framing banned hero/welcome/empty-state surfaces, which are legitimate. - Anti-pattern '50/50 split → fixed sidebar 280-360 px': removed the Shell-prescriptive correction. Now reads 'stable size for structural pane, flexible for content — only if a structural pane is part of the silhouette at all'. references/layout-review.md: - Page-planning silhouette list: aligned with SKILL.md anchors table (added canvas-hero, dense-grid; removed redundant 'tabs', 'menu+command'). - DELETED 'Sidebar / content sizing rules of thumb' section entirely. It was Shell-specific (OpenPaneLength, settings cards, 'matches Windows Settings') sitting in a generic responsive-review reference. Same kind of bias as the deleted sidebar skeleton; winui-search owns those values. references/theme-accessibility.md: - ThemeDictionary example renamed 'CardBackgroundBrush' to 'AppSurfaceBrush' so the example doesn't quietly assume cards are the surface vocabulary. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: correct XAML landmines section against analyzer + MS Learn Validated all 5 landmines against authoritative sources (Microsoft Learn, the in-repo WinUI analyzer's own RULES.md, and a built-and-run WinUI 3 test app). Four needed corrections: * TextBox UpdateSourceTrigger: dropped the 'silently breaks UI Automation set-value' framing. WinUI 3 TextBox does not implement IValueProvider (uses ITextProvider2). Replaced with the real concern: VM is stale until LostFocus, breaking UIA keyboard-simulation tests (WinAppDriver SendKeys, etc.). * Attached-property initializer: changed 'compiles, does nothing' to the truth — does not compile (CS0117). 'Button' has no 'AutomationProperties' instance member; it's a static accessor class. This matches the in-repo WUI2030 analyzer rule, which already says 'Doesn't compile' — SKILL.md was internally inconsistent. * Converter={x:Null}: clarified this hits {x:Bind} specifically (compiles, then LookupConverter(\\\) returns null, NullReferenceException at activation). Added the actual error string from WUI2012 so agents can recognize it in crash logs. * Acrylic + ThemeShadow: BackgroundSizing=InnerBorderEdge IS the default — old text implied you had to add it. Translation=0,0,32 is the recommended popup elevation, not a hard requirement (tooltips use 16, dialogs use 128). Removed the '>=12 px parent padding' rule — fabricated, not in any MS doc; replaced with the real non-popup gotcha (must populate ThemeShadow.Receivers). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: regraft control-mapping bullets (Navigation / Data display / Input) Benchmark on this branch showed agents reaching for CommunityToolkit DataGrid for tabular scenarios. Root cause: the clean-room rewrite dropped the three short 'requirement -> platform control' mapping sentences that main branch had, so nothing in SKILL.md was steering agents away from cross-framework instincts (WPF DataGrid, web <select>, HTML date input). Re-add them as a compact 'Reach-for-this control map' section with a tighter framing line. The tabular bullet now explicitly calls out the anti-pattern by package name (CommunityToolkit.WinUI.Controls.DataGrid) and the concrete reason agents should not reach for it (column bindings can't use x:Bind), and redirects to ListView + Grid-based ItemTemplate + header Grid above. Closes the regression vs main without restoring the full deleted control-selection.md reference. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: close benchmark-identified gaps (Feedback row, destructive-action rule, search discoverability) Three surgical additions based on a comparative benchmark run against main: * Feedback bullet in the Reach-for-this control map (ContentDialog / Flyout / TeachingTip / InfoBar / AppNotification). Mirrors main; addresses ContentDialog and InfoBar regressions observed on this branch where agents were not picking the right feedback surface. * Anti-patterns row for destructive actions without confirmation. This is a pre-existing gap on BOTH branches — the benchmark's 'delete with confirmation dialog' requirement was failing 4/4 trials on main and nm alike. Net new improvement, not a regression fix. * One sentence after the winui-search quick-start naming the integration-pattern categories the tool covers (file pickers, Share, JumpList, drag-drop, app lifecycle, dialogs) and stating the don't-interleave rule explicitly. Agents were burning extra tool calls rediscovering scope of the search tool. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * winui-design: experiment — remove 'identity beat' section Test branch for benchmark experiment: does the 'Before reaching for defaults' section produce any visible difference in generated app identity? Compare against nm/cleanup-design-skill (control) and nm/exp-push-identity (stronger prescription). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * trim * Apply suggestion from @niels9001 --------- Co-authored-by: Nikola Metulev <711864+nmetulev@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Niels Laute <niels.laute@live.nl> * ci(deps): bump actions/checkout from 6 to 7 (#113) Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v6...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com> * adding .gitattributes (#110) Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com> * deps: Bump Microsoft.NET.Test.Sdk from 18.5.1 to 18.6.0 (#106) --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.6.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com> * Add native OpenClaw support for the winui plugin (#114) * Add native OpenClaw plugin support for winui Adds openclaw.plugin.json, package.json, and a no-op plugin entry point so the winui skills load as a native OpenClaw plugin (format: openclaw). Verified all 8 winui skills load ready with no plugin issues on OpenClaw 2026.6.10. Resolves #107. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: document OpenClaw install in README Adds an OpenClaw install block to the per-host setup options, covering the no-pre-registration marketplace install and a local-clone path, with a note that OpenClaw maps skills (not agents). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: add CHANGELOG entry for OpenClaw support Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com> * Release 0.4.0 * Apply suggestions from code review Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Nikola Metulev <711864+nmetulev@users.noreply.github.com> Co-authored-by: leileizhang <leilzh@microsoft.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Niels Laute <niels.laute@live.nl> Co-authored-by: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Co-authored-by: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com>
1 parent c98bc78 commit 7b7cfbf

29 files changed

Lines changed: 629 additions & 1199 deletions

.claude-plugin/marketplace.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
"url": "https://github.com/microsoft/win-dev-skills"
66
},
77
"description": "Agents and skills for native Windows app development with WinUI 3 and the Windows App SDK.",
8-
"version": "0.3.1",
8+
"version": "0.4.0",
99
"plugins": [
1010
{
1111
"name": "winui",
1212
"description": "Agents and skills for WinUI 3 app development. Create new WinUI 3 desktop apps, convert from other frameworks to WinUI 3, or add features to existing WinUI 3 applications.",
13-
"version": "0.3.1",
13+
"version": "0.4.0",
1414
"source": "./plugins/winui",
1515
"category": "windows-development",
1616
"tags": [

.gitattributes

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
* text=auto eol=lf
2+
3+
*.md text eol=lf
4+
*.json text eol=lf
5+
*.txt text eol=lf
6+
7+
*.ps1 eol=lf
8+
*.ts eol=lf
9+
*.cs eol=lf
10+
*.csproj eol=lf
11+
12+
13+
*.png binary
14+
*.jpg binary
15+
*.ico binary
16+
*.zip binary

.github/plugin/marketplace.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
},
77
"metadata": {
88
"description": "Agents and skills for native Windows app development with WinUI 3 and the Windows App SDK.",
9-
"version": "0.3.1"
9+
"version": "0.4.0"
1010
},
1111
"plugins": [
1212
{
1313
"name": "winui",
1414
"description": "Agents and skills for WinUI 3 app development. Create new WinUI 3 desktop apps, convert from other frameworks to WinUI 3, or add features to existing WinUI 3 applications.",
15-
"version": "0.3.1",
15+
"version": "0.4.0",
1616
"source": "./plugins/winui"
1717
}
1818
]

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
build-mode: none
3434
steps:
3535
- name: Checkout repository
36-
uses: actions/checkout@v6
36+
uses: actions/checkout@v7
3737

3838
- name: Initialize CodeQL
3939
uses: github/codeql-action/init@v4

.github/workflows/dependency-review.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
runs-on: ubuntu-latest
1414
steps:
1515
- name: Checkout repository
16-
uses: actions/checkout@v6
16+
uses: actions/checkout@v7
1717

1818
- name: Dependency Review
1919
uses: actions/dependency-review-action@v5

.github/workflows/pr-validation.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
runs-on: ubuntu-latest
1717
steps:
1818
- name: Checkout
19-
uses: actions/checkout@v6
19+
uses: actions/checkout@v7
2020

2121
- name: Setup .NET
2222
uses: actions/setup-dotnet@v5
@@ -54,7 +54,7 @@ jobs:
5454
runs-on: ubuntu-latest
5555
steps:
5656
- name: Checkout
57-
uses: actions/checkout@v6
57+
uses: actions/checkout@v7
5858

5959
- name: Download CI-built analyzer DLL
6060
uses: actions/download-artifact@v8
@@ -109,7 +109,7 @@ jobs:
109109
runs-on: windows-latest
110110
steps:
111111
- name: Checkout
112-
uses: actions/checkout@v6
112+
uses: actions/checkout@v7
113113

114114
- name: Setup .NET
115115
uses: actions/setup-dotnet@v5
@@ -194,7 +194,7 @@ jobs:
194194
runs-on: ubuntu-latest
195195
steps:
196196
- name: Checkout
197-
uses: actions/checkout@v6
197+
uses: actions/checkout@v7
198198

199199
- name: Validate plugin.json structure
200200
shell: bash
@@ -231,7 +231,7 @@ jobs:
231231
runs-on: ubuntu-latest
232232
steps:
233233
- name: Checkout
234-
uses: actions/checkout@v6
234+
uses: actions/checkout@v7
235235

236236
- name: Check every SKILL.md has valid YAML frontmatter
237237
shell: bash
@@ -269,7 +269,7 @@ jobs:
269269
runs-on: ubuntu-latest
270270
steps:
271271
- name: Checkout
272-
uses: actions/checkout@v6
272+
uses: actions/checkout@v7
273273

274274
- name: Compare duplicated analyzer .targets files
275275
shell: bash

.github/workflows/release-policy.yml

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ name: Release policy
44
# See CONTRIBUTING.md and RELEASING.md for the human-side flow.
55
#
66
# Job matrix:
7-
# pr-target-policy PR → main | head_ref must be staging or hotfix/*
8-
# version-sync PR → staging | NO version field changed
7+
# pr-target-policy PR → main | head_ref must be staging, release/*, or hotfix/*
8+
# version-sync PR → staging | NO version field changed (skipped for backmerge/*)
99
# version-bump PR → main | all 5 version fields bumped, in sync, valid semver, strictly greater
1010
# changelog-entry PR → main | top-most CHANGELOG section matches new version, has bullets
11-
# staging-up-to-date PR → staging | staging contains every commit on main
11+
# staging-up-to-date PR → staging | PR head contains every commit on main
12+
# (passes naturally for backmerge/* PRs)
1213

1314
on:
1415
pull_request:
@@ -51,11 +52,15 @@ jobs:
5152
5253
version-sync:
5354
name: No version bump in feature PR
54-
if: github.event.pull_request.base.ref == 'staging'
55+
# Skip on backmerge/* PRs: those legitimately carry main's version-bump
56+
# commit forward into staging. See CONTRIBUTING.md § Back-merge path.
57+
if: >
58+
github.event.pull_request.base.ref == 'staging' &&
59+
!startsWith(github.event.pull_request.head.ref, 'backmerge/')
5560
runs-on: ubuntu-latest
5661
steps:
5762
- name: Checkout (full depth)
58-
uses: actions/checkout@v6
63+
uses: actions/checkout@v7
5964
with:
6065
fetch-depth: 0
6166
ref: ${{ github.event.pull_request.head.sha }}
@@ -95,33 +100,45 @@ jobs:
95100
runs-on: ubuntu-latest
96101
steps:
97102
- name: Checkout (full depth)
98-
uses: actions/checkout@v6
103+
uses: actions/checkout@v7
99104
with:
100105
fetch-depth: 0
101106

102-
- name: Verify staging contains every commit on main
107+
- name: Verify PR head contains every commit on main
108+
env:
109+
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
110+
HEAD_REF: ${{ github.event.pull_request.head.ref }}
103111
shell: bash
104112
run: |
105113
set -euo pipefail
106-
git fetch origin main staging --quiet
107-
# Find commits on main that are not on staging.
108-
MISSING=$(git rev-list --count origin/main ^origin/staging)
114+
git fetch origin main --quiet
115+
# We check the PR head (not origin/staging) so back-merge PRs — which
116+
# bring main into staging — pass naturally: after they merge, staging
117+
# will contain main. Any other PR that doesn't already include main
118+
# will fail here exactly as it would have under the old "staging vs
119+
# main" check.
120+
MISSING=$(git rev-list --count origin/main ^"$HEAD_SHA")
109121
if [[ "$MISSING" -gt 0 ]]; then
110-
echo "::error::'staging' is behind 'main' by $MISSING commit(s)."
111-
echo "::error::This usually means a hotfix landed on main and was not back-merged into staging."
112-
echo "::error::A maintainer must run: git checkout staging && git merge origin/main && git push"
113-
echo "::error::Then this PR can proceed. See CONTRIBUTING.md § Hotfix path."
122+
echo "::error::PR head ('$HEAD_REF') is missing $MISSING commit(s) from 'main'."
123+
echo "::error::This usually means a hotfix landed on main and was not back-merged into staging,"
124+
echo "::error::and this PR was branched from a stale staging."
125+
echo "::error::Fix: open a back-merge PR first."
126+
echo "::error:: git checkout -b backmerge/<topic> origin/staging"
127+
echo "::error:: git merge origin/main"
128+
echo "::error:: git push -u origin backmerge/<topic>"
129+
echo "::error:: gh pr create --base staging --head backmerge/<topic>"
130+
echo "::error::Then rebase this PR on the updated staging. See CONTRIBUTING.md § Back-merge path."
114131
exit 1
115132
fi
116-
echo "::notice::'staging' contains every commit on 'main' — OK."
133+
echo "::notice::PR head contains every commit on 'main' — OK."
117134
118135
version-bump:
119136
name: Version bump (5 fields in sync)
120137
if: github.event.pull_request.base.ref == 'main'
121138
runs-on: ubuntu-latest
122139
steps:
123140
- name: Checkout (full depth)
124-
uses: actions/checkout@v6
141+
uses: actions/checkout@v7
125142
with:
126143
fetch-depth: 0
127144
ref: ${{ github.event.pull_request.head.sha }}
@@ -202,7 +219,7 @@ jobs:
202219
runs-on: ubuntu-latest
203220
steps:
204221
- name: Checkout
205-
uses: actions/checkout@v6
222+
uses: actions/checkout@v7
206223
with:
207224
ref: ${{ github.event.pull_request.head.sha }}
208225

.github/workflows/release-post-merge.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
runs-on: ubuntu-latest
3232
steps:
3333
- name: Checkout
34-
uses: actions/checkout@v6
34+
uses: actions/checkout@v7
3535
with:
3636
fetch-depth: 0
3737

@@ -114,20 +114,22 @@ jobs:
114114
BODY=$(cat <<EOF
115115
Hotfix PR #$PR_NUMBER ('$PR_TITLE') merged into \`main\` at $MERGE_SHA.
116116
117-
Per [CONTRIBUTING.md § Hotfix path](../blob/main/CONTRIBUTING.md#hotfix-path),
117+
Per [CONTRIBUTING.md § Back-merge path](../blob/main/CONTRIBUTING.md#back-merge-path),
118118
this commit must be back-merged into \`staging\` immediately so the fix is
119119
not lost on the next release.
120120
121121
To do this:
122122
123123
\`\`\`
124124
git fetch origin
125-
git checkout staging
125+
git checkout -b backmerge/hotfix-${HEAD_REF#hotfix/} origin/staging
126126
git merge origin/main
127-
git push
127+
git push -u origin backmerge/hotfix-${HEAD_REF#hotfix/}
128+
gh pr create --base staging --head backmerge/hotfix-${HEAD_REF#hotfix/}
128129
\`\`\`
129130
130-
Or open a PR from \`main\` into \`staging\` if you prefer the review trail.
131+
The branch **must** be named \`backmerge/*\` — the \`version-sync\` CI
132+
check skips that prefix.
131133
132134
The \`staging-up-to-date-with-main\` CI check will block all new feature
133135
PRs until this back-merge happens.

CHANGELOG.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,15 @@ The `version-bump` and `changelog-entry` CI jobs enforce this.
2424
### Added
2525

2626
### Changed
27+
## [0.4.0] — 2026-06-25
2728

28-
### Fixed
29+
### Added
2930

30-
### Removed
31+
- OpenClaw support: the `winui` plugin now ships a native OpenClaw manifest
32+
(`openclaw.plugin.json`) and `package.json` entry point so all eight skills
33+
load in OpenClaw (`Format: openclaw`). README documents the marketplace and
34+
local-clone install routes.
3135

32-
### Deprecated
3336

3437
## [0.3.1] — 2026-05-19
3538

@@ -63,3 +66,4 @@ release process was introduced. Future releases will list per-PR changes here.
6366
against source drift.
6467
- Marketplace manifest under `.github/plugin/marketplace.json` and Claude Code
6568
marketplace manifest under `.claude-plugin/marketplace.json`.
69+

CONTRIBUTING.md

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ contributor flow. For the maintainer-side release process see
1515

1616
```
1717
your-feature ──PR──▶ staging ──promotion PR──▶ main ──auto-tag──▶ vX.Y.Z
18-
hotfix/* ──PR──▶ main (must back-merge to staging)
18+
hotfix/* ──PR──▶ main ──backmerge/* ──▶ staging
19+
release/X.Y.Z ──PR──▶ main ──backmerge/X.Y.Z ▶ staging
1920
```
2021

2122
- **`main`** is the released branch. Marketplace consumers install from `main`,
@@ -26,6 +27,12 @@ hotfix/* ──PR──▶ main (must back-merge to staging)
2627
for genuine emergencies (security, broken-on-install). They must include the
2728
version bump + changelog entry themselves and be back-merged to `staging`
2829
immediately after.
30+
- **`release/X.Y.Z`** branches are the staging→main promotion PRs (opened by
31+
`scripts/open-release-pr.ps1`). They carry the version bump + CHANGELOG
32+
promotion for the release.
33+
- **`backmerge/*`** branches are the only ones allowed to bring main's history
34+
into `staging` (without tripping the `version-sync` check). Open one right
35+
after every promotion PR or hotfix merges into `main`.
2936

3037
## Opening a PR
3138

@@ -86,18 +93,48 @@ release:
8693
4. PR against `main`. CI will run the same `version-bump` + `changelog-entry`
8794
checks the promotion PR runs.
8895
5. Once merged, immediately open a back-merge PR `main → staging` to get the
89-
fix into the integration branch. The `back-merge-reminder` workflow opens a
90-
tracking issue if you forget.
96+
fix into the integration branch:
97+
98+
```powershell
99+
git fetch origin
100+
git checkout -b backmerge/hotfix-short-description origin/staging
101+
git merge origin/main
102+
git push -u origin backmerge/hotfix-short-description
103+
gh pr create --base staging --head backmerge/hotfix-short-description `
104+
--title "Back-merge hotfix into staging" `
105+
--body "Brings #<hotfix PR> back into staging."
106+
```
107+
108+
The branch **must** be named `backmerge/*` — the `version-sync` CI check
109+
skips that prefix so the version-bump diff doesn't trip the gate. The
110+
`back-merge-reminder` workflow opens a tracking issue if you forget.
111+
112+
## Back-merge path
113+
114+
Whenever `main` advances (promotion PR merge, hotfix merge, revert) `staging`
115+
must be caught up before any new feature PR can merge. Open a back-merge:
116+
117+
```powershell
118+
git fetch origin
119+
git checkout -b backmerge/<topic> origin/staging
120+
git merge origin/main
121+
git push -u origin backmerge/<topic>
122+
gh pr create --base staging --head backmerge/<topic>
123+
```
124+
125+
Naming: use `backmerge/X.Y.Z` after a release, `backmerge/hotfix-<short>` after
126+
a hotfix. The `backmerge/` prefix is required — without it the `version-sync`
127+
check will (correctly) refuse to let the version-bump diff land on staging.
91128

92129
## CI checks you'll see
93130

94131
| Check | When it runs | What it wants |
95132
|---|---|---|
96133
| `pr-target-policy` | PR targets `main` | Your branch is `staging`, `release/*`, or `hotfix/*`, AND comes from this repo (not a fork). |
97-
| `version-sync` | PR targets `staging` | You did NOT change any version field. |
134+
| `version-sync` | PR targets `staging` | You did NOT change any version field. (Skipped on `backmerge/*`.) |
98135
| `version-bump` | PR targets `main` | All 5 version fields bumped, valid semver, strictly greater, identical. |
99136
| `changelog-entry` | PR targets `main` | Top-most `## [X.Y.Z]` section matches the bumped version, has at least one bullet. |
100-
| `staging-up-to-date-with-main` | PR targets `staging` | `staging` contains every commit on `main` (so hotfixes aren't lost). |
137+
| `staging-up-to-date-with-main` | PR targets `staging` | PR head contains every commit on `main` (back-merge PRs satisfy this naturally). |
101138
| `build-tools` + provenance | Any PR | C# tools build, analyzer tests pass, committed payloads match source. |
102139
| `validate-plugin-manifest` + `validate-skill-frontmatter` | Any PR | Manifests are well-formed, every `SKILL.md` has valid frontmatter. |
103140

0 commit comments

Comments
 (0)