[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6WZSH72TCPB5XBFYGAV8PXP":3,"skill-same:01M6WZSH72TCPB5XBFYGAV8PXP":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6WZSH72TCPB5XBFYGAV8PXP","bt-build",null,"Fast incremental C++\u002FMSBuild builds using bt. Use when the user wants to compile, build, check what's dirty, or query build dependencies in a repo that has .vcxproj files. Prefer bt over invoking MSBuild directly for inner-loop source changes (.cpp, .h, .idl, .xaml, .appxmanifest).","microsoft\u002Fmicrosoft-ui-xaml","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6WZRE552HV7ZQFPSHT97PZA",8604,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmicrosoft-ui-xaml\u002Fblob\u002Fmain\u002Fsrc\u002F.github\u002Fskills\u002Fbt-build\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"bt build","bt","build","files","when","inner","changes","for","inner-loop","c++","query","msbuild","use","check","repo","loop","shell","compile","xaml","cpp","2026-11-10 10:12:30",false,"---\nname: bt-build\ndescription: >-\n  Fast incremental C++\u002FMSBuild builds using bt. Use when the user wants to\n  compile, build, check what's dirty, or query build dependencies in a repo\n  that has .vcxproj files. Prefer bt over invoking MSBuild directly for\n  inner-loop source changes (.cpp, .h, .idl, .xaml, .appxmanifest).\nallowed-tools: shell\n---\n\n# bt — Fast Inner-Loop Builds\n\n`bt` reads an MSBuild binary log and replays only the dirty\ncompile\u002Flink\u002FMIDL\u002FXAML\u002Fmakepri steps directly — no MSBuild overhead.\n\n**Use bt for the edit-build-debug cycle on source files only.**\nFor anything else, use the `build` skill (MSBuild).\n\nHeaders not yet in the tlog (newly added `#include`s) bt won't trigger rebuilds\nuntil the next `msbuild -bl`.\n\n## Do NOT use bt when\n\nAny of these are true → use the `build` skill (MSBuild) instead:\n\n- `.vcxproj` or `.vcxitems` files were added, removed, or edited\n- `.props` or `.targets` files were changed\n- NuGet package dependencies changed\n- WinRT runtime classes were added or removed\n- Packaging, signing, or AppX bundling is needed\n- First build of the repo (no binlog exists yet)\n- You are unsure whether bt covers the change\n\nWhen in doubt, use MSBuild.\n\n## Before you start\n\n### 1. Check if bt is installed\n\nRun `bt --version`.  If bt is missing, run the `install-bt.ps1` script from\nthis skill's directory to download and install it.  Periodically run it to\nupdate bt as well.\n\n### 2. Pick the right binlog\n\nbt needs a binlog from a prior MSBuild build.  The repo's build scripts\nall write to `BuildOutput\\` with names like:\n\n| Binlog                                       | Scope                                                            |\n|----------------------------------------------|------------------------------------------------------------------|\n| `Microsoft.UI.Xaml.\u003Cflavor>.binlog`          | **full product** (incl. Controls DLL) — prefer for product code  |\n| `MUXControls.\u003Cflavor>.binlog`                | test apps + infra — prefer for test code                         |\n| `Microsoft.ui.xaml.\u003Cflavor>.binlog`          | `Microsoft.UI.Xaml.dll` only — **NOT** Controls (mux subset)     |\n| `Microsoft.UI.Xaml-Product.\u003Cflavor>.binlog`  | full product (alternate) — fallback for product code             |\n| `Microsoft.UI.Xaml.Controls.\u003Cflavor>.binlog` | Controls DLL only — narrow fallback                              |\n| `XamlCompilerPrerequisites.\u003Cflavor>.binlog`  | compiler tools — not used by bt                                  |\n\n`\u003Cflavor>` is `amd64chk`, `arm64fre`, etc.  Single-project builds via\n`msb`\u002F`build-clang` produce `\u003Cproject>.\u003Cflavor>.binlog` next to these.\n\nTo pick:\n\n1. **Classify the change** by edited paths — test (table below) \u002F mux\n   (`dxaml\u002Fxcp\u002F` only) \u002F **product** (everything else under `controls\u002Fdev`,\n   `controls\u002Fidl`, `dxaml\u002F`, `src\u002F`).\n2. **Pick the freshest binlog whose scope covers that classification**,\n   preferring broader scopes (product covers Controls, etc.).\n3. **Infer `\u003Cflavor>`** from the chosen filename.\n4. **Pass `--binlog BuildOutput\\\u003Cchosen>`** to every bt invocation.\n   bt has no useful default to fall back to.\n\nCaveats:\n\n- On NTFS, `Microsoft.UI.Xaml.\u003Cflavor>.binlog` and\n  `Microsoft.ui.xaml.\u003Cflavor>.binlog` collide — content is whoever wrote\n  last; trust mtime + size, not casing.\n- If product and test binlogs exist with mtimes >1h apart, warn that the\n  set may be inconsistent.\n- If no binlog exists, run the `build` skill.\n\n#### Test path classification\n\nAnything under these directories is **test** scope:\n\n- `controls\u002Ftest\u002FMUXControls.Test\u002F`\n- `controls\u002Ftest\u002FMUXControlsTestApp\u002F`\n- `controls\u002Ftest\u002FTabViewTearOutApp\u002F`\n- `controls\u002Ftest\u002FTestAppCX\u002F`\n- `controls\u002Ftest\u002FIXMPTestApp\u002F`\n- `controls\u002Ftest\u002FMUXTestInfra\u002F` *(if present)*\n- `Samples\u002FAppTestAutomationHelpers\u002F`\n\n## Common workflows\n\n| Command | What it does |\n|---------|--------------|\n| `bt build` | Build everything dirty (always pass `--binlog BuildOutput\\\u003Cx>.binlog`) |\n| `bt build MyFile.cpp` | Forward walk: compile + relink anything affected by this source |\n| `bt build MyApp.dll` | Backward walk: only what this target needs |\n| `bt build -c [target]` | Compile only — skip link\u002Flib |\n| `bt build -n` | Dry run — print commands without executing |\n| `bt watch [--run \u003Ccmd>]` | Build on file change; optionally run a command after |\n| `bt [--binlog some.binlog] dirty [target]` | What needs building now? |\n| `bt bins MyHeader.h` | What rebuilds when this header changes? |\n| `bt srcs [--headers] MyApp.dll` | Sources (and optionally `#include`d headers) feeding this target |\n\nRun `bt --help` for command options (`--binlog \u003Cpath>`),\n`bt \u003Csubcommand> --help` for subcommand options like `-j \u003CN>`,\n`--debounce \u003Cms>`, etc.\n","# bt — Fast Inner-Loop Builds\n\n`bt` reads an MSBuild binary log and replays only the dirty\ncompile\u002Flink\u002FMIDL\u002FXAML\u002Fmakepri steps directly — no MSBuild overhead.\n\n**Use bt for the edit-build-debug cycle on source files only.**\nFor anything else, use the `build` skill (MSBuild).\n\nHeaders not yet in the tlog (newly added `#include`s) bt won't trigger rebuilds\nuntil the next `msbuild -bl`.\n\n## Do NOT use bt when\n\nAny of these are true → use the `build` skill (MSBuild) instead:\n\n- `.vcxproj` or `.vcxitems` files were added, removed, or edited\n- `.props` or `.targets` files were changed\n- NuGet package dependencies changed\n- WinRT runtime classes were added or removed\n- Packaging, signing, or AppX bundling is needed\n- First build of the repo (no binlog exists yet)\n- You are unsure whether bt covers the change\n\nWhen in doubt, use MSBuild.\n\n## Before you start\n\n### 1. Check if bt is installed\n\nRun `bt --version`.  If bt is missing, run the `install-bt.ps1` script from\nthis skill's directory to download and install it.  Periodically run it to\nupdate bt as well.\n\n### 2. Pick the right binlog\n\nbt needs a binlog from a prior MSBuild build.  The repo's build scripts\nall write to `BuildOutput\\` with names like:\n\n| Binlog                                       | Scope                                                            |\n|----------------------------------------------|------------------------------------------------------------------|\n| `Microsoft.UI.Xaml.\u003Cflavor>.binlog`          | **full product** (incl. Controls DLL) — prefer for product code  |\n| `MUXControls.\u003Cflavor>.binlog`                | test apps + infra — prefer for test code                         |\n| `Microsoft.ui.xaml.\u003Cflavor>.binlog`          | `Microsoft.UI.Xaml.dll` only — **NOT** Controls (mux subset)     |\n| `Microsoft.UI.Xaml-Product.\u003Cflavor>.binlog`  | full product (alternate) — fallback for product code             |\n| `Microsoft.UI.Xaml.Controls.\u003Cflavor>.binlog` | Controls DLL only — narrow fallback                              |\n| `XamlCompilerPrerequisites.\u003Cflavor>.binlog`  | compiler tools — not used by bt                                  |\n\n`\u003Cflavor>` is `amd64chk`, `arm64fre`, etc.  Single-project builds via\n`msb`\u002F`build-clang` produce `\u003Cproject>.\u003Cflavor>.binlog` next to these.\n\nTo pick:\n\n1. **Classify the change** by edited paths — test (table below) \u002F mux\n   (`dxaml\u002Fxcp\u002F` only) \u002F **product** (everything else under `controls\u002Fdev`,\n   `controls\u002Fidl`, `dxaml\u002F`, `src\u002F`).\n2. **Pick the freshest binlog whose scope covers that classification**,\n   preferring broader scopes (product covers Controls, etc.).\n3. **Infer `\u003Cflavor>`** from the chosen filename.\n4. **Pass `--binlog BuildOutput\\\u003Cchosen>`** to every bt invocation.\n   bt has no useful default to fall back to.\n\nCaveats:\n\n- On NTFS, `Microsoft.UI.Xaml.\u003Cflavor>.binlog` and\n  `Microsoft.ui.xaml.\u003Cflavor>.binlog` collide — content is whoever wrote\n  last; trust mtime + size, not casing.\n- If product and test binlogs exist with mtimes >1h apart, warn that the\n  set may be inconsistent.\n- If no binlog exists, run the `build` skill.\n\n#### Test path classification\n\nAnything under these directories is **test** scope:\n\n- `controls\u002Ftest\u002FMUXControls.Test\u002F`\n- `controls\u002Ftest\u002FMUXControlsTestApp\u002F`\n- `controls\u002Ftest\u002FTabViewTearOutApp\u002F`\n- `controls\u002Ftest\u002FTestAppCX\u002F`\n- `controls\u002Ftest\u002FIXMPTestApp\u002F`\n- `controls\u002Ftest\u002FMUXTestInfra\u002F` *(if present)*\n- `Samples\u002FAppTestAutomationHelpers\u002F`\n\n## Common workflows\n\n| Command | What it does |\n|---------|--------------|\n| `bt build` | Build everything dirty (always pass `--binlog BuildOutput\\\u003Cx>.binlog`) |\n| `bt build MyFile.cpp` | Forward walk: compile + relink anything affected by this source |\n| `bt build MyApp.dll` | Backward walk: only what this target needs |\n| `bt build -c [target]` | Compile only — skip link\u002Flib |\n| `bt build -n` | Dry run — print commands without executing |\n| `bt watch [--run \u003Ccmd>]` | Build on file change; optionally run a command after |\n| `bt [--binlog some.binlog] dirty [target]` | What needs building now? |\n| `bt bins MyHeader.h` | What rebuilds when this header changes? |\n| `bt srcs [--headers] MyApp.dll` | Sources (and optionally `#include`d headers) feeding this target |\n\nRun `bt --help` for command options (`--binlog \u003Cpath>`),\n`bt \u003Csubcommand> --help` for subcommand options like `-j \u003CN>`,\n`--debounce \u003Cms>`, etc.\n",{"name":5,"description":7,"allowed-tools":35},"main","74c2cab127943565ca2a278cc8f64f472209dd14","src\u002F.github\u002Fskills\u002Fbt-build",965,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmicrosoft-ui-xaml","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-14 21:05:35",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add microsoft\u002Fmicrosoft-ui-xaml --skill bt-build",{"tool":59,"command":60},"bunx","bunx skills add microsoft\u002Fmicrosoft-ui-xaml --skill bt-build",{"tool":62,"command":63},"pnpm","pnpm dlx skills add microsoft\u002Fmicrosoft-ui-xaml --skill bt-build","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmicrosoft-ui-xaml\u002Fblob\u002Fmain\u002Fsrc\u002F.github\u002Fskills\u002Fbt-build\u002FSKILL.md",true,[67],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"install-bt.ps1","SCRIPT","脚本",3241,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmicrosoft-ui-xaml\u002Fblob\u002Fmain\u002Fsrc\u002F.github\u002Fskills\u002Fbt-build\u002Finstall-bt.ps1",[74,106,123,148],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":88,"publishedAt":39},"01M6WZSNKGE3MCZSF9DQXZYYS9","test-suite-setup","Complete end-to-end setup and execution of the WinUI3 test suite locally. Delegates building to the build skill, then handles test payload creation, machine setup, and running all tests.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmicrosoft-ui-xaml\u002Fblob\u002Fmain\u002Fsrc\u002F.github\u002Fskills\u002Ftest-suite-setup\u002FSKILL.md",[80,85],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":86,"categoryName":87,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发",[89,90,91,92,93,94,95,96,97,98,21,99,100,101,102,103,104,105],"test suite setup","suite","test suite","setup","test","machine setup","winui3","execution","build skill","payload","creation","tests","end","complete","machine","delegates","running",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":113,"publishedAt":39},"01M6WZSBKKYWVMMR5W8ZEWF3CP","test-on-vm","EXPERIMENTAL. Run locally built WinUI interaction tests on a Hyper-V VM through PowerShell Direct. Use when asked to run WinUI tests on a local VM.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmicrosoft-ui-xaml\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftest-on-vm\u002FSKILL.md",[112],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[114,115,93,31,116,100,117,23,118,119,120,121,122],"test on vm","vm","local","interaction","hyper","direct","run","winui","powershell",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":137,"publishedAt":39},"01M6WZS8FC8VE4M3V4W8N299Z8","code-review","Review changes in microsoft\u002Fmicrosoft-ui-xaml. Use when reviewing code or pull requests in this repository.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmicrosoft-ui-xaml\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fcode-review\u002FSKILL.md",[129,132],{"categoryNo":130,"categoryName":131,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[138,139,140,141,9,142,143,37,144,145,31,146,147,25,23],"code","review","code review","ui","pull requests","review changes","pull","repository","reviewing code","requests",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":156,"publishedAt":39},"01M6WZS15NPKE3ER8TS8ARD8A7","code-coverage-calculation","EXPERIMENTAL. Calculate code coverage of a WinUI control or component (for example \"calculate coverage of control TitleBar\") by running only that component's tests on a local Hyper-V VM against the local build. Supports controls in Microsoft.UI.Xaml.Controls.dll and Microsoft.UI.Xaml.Controls.Tabular.dll, and dxaml types in Microsoft.ui.xaml.dll. Reports per-file and per-function line coverage that matches the ADO Code Coverage tab. Use for \"calculate\u002Fmeasure\u002Fget coverage of \u003Ccontrol>\", \"how much do \u003Ccontrol>'s tests cover\", or \"coverage before\u002Fafter my tests\" when you have a local build and a VM.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmicrosoft-ui-xaml\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fcode-coverage-calculation\u002FSKILL.md",[154,155],{"categoryNo":86,"categoryName":87,"taxonomyType":83,"taxonomyTypeDesc":84},{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},[138,157,158,159,160,161,162,141,37,163,164,165,166,23,167,168,116,169,170,171],"code coverage calculation","calculation","code coverage","coverage","calculate","how","component","you","cover","my","line","get","types","reports","only"]