[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699CFV4HPX44DBWJP82KS2R":3,"skill-same:01M699CFV4HPX44DBWJP82KS2R":56},{"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":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M699CFV4HPX44DBWJP82KS2R","binlog-generation",null,"Capture and verify unique MSBuild binlogs, quoting '-bl:{}' in PowerShell; not analysis of existing logs.","microsoft\u002Ftestfx","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M699C71CJ91B5WZ3AXG3GG2M",1059,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbinlog-generation\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27],"binlog generation","generation","msbuild","logs","powershell","analysis","verify","capture","Existing","2026-11-10 10:12:30",false,"---\nname: binlog-generation\ndescription: \"Capture and verify unique MSBuild binlogs, quoting '-bl:{}' in PowerShell; not analysis of existing logs.\"\nlicense: MIT\n---\n\n# Generate Binary Logs\n\n## Scope and routing\n\nGenerate MSBuild binary logs (binlogs) for build diagnostics and analysis. USE FOR: adding \u002Fbl:{} to any dotnet build, test, pack, publish, or restore command to capture a full build execution trace, prerequisite for binlog-failure-analysis and build-perf-diagnostics skills, enabling post-build investigation of errors or performance. Requires MSBuild 17.8+ \u002F .NET 8 SDK+ for {} placeholder; PowerShell must quote the complete switch as '-bl:{}'. DO NOT USE FOR: non-MSBuild build systems (npm, Maven, CMake), analyzing an existing binlog (use binlog-failure-analysis instead).\n\n**Pass the `\u002Fbl` switch when running any MSBuild-based command.** This is a non-negotiable requirement for all .NET builds.\n\n## Commands That Require \u002Fbl\n\nYou MUST add the `\u002Fbl:{}` flag to:\n- `dotnet build`\n- `dotnet test`\n- `dotnet pack`\n- `dotnet publish`\n- `dotnet restore`\n- `msbuild` or `msbuild.exe`\n- Any other command that invokes MSBuild\n\n## Preferred: Use `{}` for Automatic Unique Names\n\n> **Note:** The `{}` placeholder requires MSBuild 17.8+ \u002F .NET 8 SDK or later.\n\nThe `{}` placeholder in the binlog filename is replaced by MSBuild with a unique identifier, guaranteeing no two builds ever overwrite each other — without needing to track or check existing files.\n\n```bash\n# Every invocation produces a distinct file automatically\ndotnet build \u002Fbl:{}\ndotnet test \u002Fbl:{}\ndotnet build --configuration Release \u002Fbl:{}\n```\n\n**PowerShell requires quoting the complete switch:**\n\n```powershell\n# Keep the literal {} placeholder in one argument\ndotnet build '-bl:{}'\ndotnet test '-bl:{}'\n```\n\n## Why This Matters\n\n1. **Unique names prevent overwrites** - You can always go back and analyze previous builds\n2. **Failure analysis** - When a build fails, the binlog is already there for immediate analysis\n3. **Comparison** - You can compare builds before and after changes\n4. **No re-running builds** - You never need to re-run a failed build just to generate a binlog\n\n## Examples\n\n```bash\n# ✅ CORRECT - {} generates a unique name automatically (bash\u002Fcmd)\ndotnet build \u002Fbl:{}\ndotnet test \u002Fbl:{}\n\n# ✅ CORRECT - quote the complete PowerShell argument\ndotnet build '-bl:{}'\ndotnet test '-bl:{}'\n\n# ❌ WRONG - Missing \u002Fbl flag entirely\ndotnet build\ndotnet test\n\n# ❌ WRONG - No filename (overwrites the same msbuild.binlog every time)\ndotnet build \u002Fbl\ndotnet build \u002Fbl\n```\n\n## One build = one binlog\n\nAdd `\u002Fbl:{}` to **every** MSBuild invocation separately — never reuse a name and\nnever rely on bare `\u002Fbl`:\n\n- Building several configurations, projects, or retrying a failed build? Each\n  command still gets its own `\u002Fbl:{}` so the logs never overwrite each other.\n\n```bash\ndotnet build -c Debug   \u002Fbl:{}   # unique file\ndotnet build -c Release \u002Fbl:{}   # another unique file\n```\n\n## Verify the binlog exists\n\nAfter the build, confirm a `.binlog` was actually produced before moving on to\nanalysis — a build that fails *before* MSBuild starts (e.g. a bad argument)\nwrites no binlog:\n\n```bash\nls -1 *.binlog       # bash\ndir \u002Fb *.binlog      # Windows cmd\n```\n\n```powershell\nGet-ChildItem *.binlog   # PowerShell\n```\n\nNote the resulting path so `binlog-failure-analysis` or `build-perf-diagnostics`\ncan consume it.\n\n## When a Specific Filename Is Required\n\nIf the binlog filename needs to be known upfront (e.g., for CI artifact upload), or if `{}` is not available in the installed MSBuild version, pick a name that won't collide with existing files:\n\n1. Check for existing `*.binlog` files in the directory\n2. Choose a name not already taken (e.g., by incrementing a counter from the highest existing number)\n\n```bash\n# Example: directory contains 3.binlog — use 4.binlog\ndotnet build \u002Fbl:4.binlog\n```\n\n## Cleaning the Repository\n\nWhen cleaning the repository with `git clean`, **always exclude binlog files** to preserve your build history:\n\n```bash\n# ✅ CORRECT - Exclude binlog files from cleaning\ngit clean -fdx -e \"*.binlog\"\n\n# ❌ WRONG - This deletes binlog files (they're usually in .gitignore)\ngit clean -fdx\n```\n\nThis is especially important when iterating on build fixes - you need the binlogs to analyze what changed between builds.\n","# Generate Binary Logs\n\n## Scope and routing\n\nGenerate MSBuild binary logs (binlogs) for build diagnostics and analysis. USE FOR: adding \u002Fbl:{} to any dotnet build, test, pack, publish, or restore command to capture a full build execution trace, prerequisite for binlog-failure-analysis and build-perf-diagnostics skills, enabling post-build investigation of errors or performance. Requires MSBuild 17.8+ \u002F .NET 8 SDK+ for {} placeholder; PowerShell must quote the complete switch as '-bl:{}'. DO NOT USE FOR: non-MSBuild build systems (npm, Maven, CMake), analyzing an existing binlog (use binlog-failure-analysis instead).\n\n**Pass the `\u002Fbl` switch when running any MSBuild-based command.** This is a non-negotiable requirement for all .NET builds.\n\n## Commands That Require \u002Fbl\n\nYou MUST add the `\u002Fbl:{}` flag to:\n- `dotnet build`\n- `dotnet test`\n- `dotnet pack`\n- `dotnet publish`\n- `dotnet restore`\n- `msbuild` or `msbuild.exe`\n- Any other command that invokes MSBuild\n\n## Preferred: Use `{}` for Automatic Unique Names\n\n> **Note:** The `{}` placeholder requires MSBuild 17.8+ \u002F .NET 8 SDK or later.\n\nThe `{}` placeholder in the binlog filename is replaced by MSBuild with a unique identifier, guaranteeing no two builds ever overwrite each other — without needing to track or check existing files.\n\n```bash\n# Every invocation produces a distinct file automatically\ndotnet build \u002Fbl:{}\ndotnet test \u002Fbl:{}\ndotnet build --configuration Release \u002Fbl:{}\n```\n\n**PowerShell requires quoting the complete switch:**\n\n```powershell\n# Keep the literal {} placeholder in one argument\ndotnet build '-bl:{}'\ndotnet test '-bl:{}'\n```\n\n## Why This Matters\n\n1. **Unique names prevent overwrites** - You can always go back and analyze previous builds\n2. **Failure analysis** - When a build fails, the binlog is already there for immediate analysis\n3. **Comparison** - You can compare builds before and after changes\n4. **No re-running builds** - You never need to re-run a failed build just to generate a binlog\n\n## Examples\n\n```bash\n# ✅ CORRECT - {} generates a unique name automatically (bash\u002Fcmd)\ndotnet build \u002Fbl:{}\ndotnet test \u002Fbl:{}\n\n# ✅ CORRECT - quote the complete PowerShell argument\ndotnet build '-bl:{}'\ndotnet test '-bl:{}'\n\n# ❌ WRONG - Missing \u002Fbl flag entirely\ndotnet build\ndotnet test\n\n# ❌ WRONG - No filename (overwrites the same msbuild.binlog every time)\ndotnet build \u002Fbl\ndotnet build \u002Fbl\n```\n\n## One build = one binlog\n\nAdd `\u002Fbl:{}` to **every** MSBuild invocation separately — never reuse a name and\nnever rely on bare `\u002Fbl`:\n\n- Building several configurations, projects, or retrying a failed build? Each\n  command still gets its own `\u002Fbl:{}` so the logs never overwrite each other.\n\n```bash\ndotnet build -c Debug   \u002Fbl:{}   # unique file\ndotnet build -c Release \u002Fbl:{}   # another unique file\n```\n\n## Verify the binlog exists\n\nAfter the build, confirm a `.binlog` was actually produced before moving on to\nanalysis — a build that fails *before* MSBuild starts (e.g. a bad argument)\nwrites no binlog:\n\n```bash\nls -1 *.binlog       # bash\ndir \u002Fb *.binlog      # Windows cmd\n```\n\n```powershell\nGet-ChildItem *.binlog   # PowerShell\n```\n\nNote the resulting path so `binlog-failure-analysis` or `build-perf-diagnostics`\ncan consume it.\n\n## When a Specific Filename Is Required\n\nIf the binlog filename needs to be known upfront (e.g., for CI artifact upload), or if `{}` is not available in the installed MSBuild version, pick a name that won't collide with existing files:\n\n1. Check for existing `*.binlog` files in the directory\n2. Choose a name not already taken (e.g., by incrementing a counter from the highest existing number)\n\n```bash\n# Example: directory contains 3.binlog — use 4.binlog\ndotnet build \u002Fbl:4.binlog\n```\n\n## Cleaning the Repository\n\nWhen cleaning the repository with `git clean`, **always exclude binlog files** to preserve your build history:\n\n```bash\n# ✅ CORRECT - Exclude binlog files from cleaning\ngit clean -fdx -e \"*.binlog\"\n\n# ❌ WRONG - This deletes binlog files (they're usually in .gitignore)\ngit clean -fdx\n```\n\nThis is especially important when iterating on build fixes - you need the binlogs to analyze what changed between builds.\n",{"name":5,"license":15,"description":7},"main","f8f2bfd77819bb789d4736ce7db4a567a37fcf7e",".agents\u002Fskills\u002Fbinlog-generation",315,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-12 02:10:33",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add microsoft\u002Ftestfx --skill binlog-generation",{"tool":48,"command":49},"bunx","bunx skills add microsoft\u002Ftestfx --skill binlog-generation",{"tool":51,"command":52},"pnpm","pnpm dlx skills add microsoft\u002Ftestfx --skill binlog-generation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fbinlog-generation\u002FSKILL.md",true,[],[57,84,115,136,156,180],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":28},"01M70GYY0AV0JGMTHE2CN6TNYK","dotnet-breaking-changes","Use before changing .NET\u002FC# code whose callers you do not control: a NuGet library, or a repo with PublicAPI.Shipped\u002FUnshipped.txt, ApiCompat, multiple TargetFrameworks, InternalsVisibleTo, or generated (.g.cs) partials. Green builds miss silent breaks from optional parameters, parameter names, sealing, const values, nullability, and #if. USE FOR: \"without breaking existing callers\"; adding a public method, overload, optional parameter, or interface member to a shipped library; renaming a public method or an internal helper a friend assembly uses; consolidating duplicated logic; changing a signature, nullability, default, or attribute; adding a target framework; RS0016\u002FRS0017 or ApiCompat errors; \"is this PR breaking?\". For a rename, extract, or merge, also invoke csharp-refactoring. DO NOT USE FOR: an executable whose callers all live in one project; renaming a local variable or private member, even in a shipped library; formatting; framework\u002FSDK\u002FNuGet upgrades (use dotnet-upgrade).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fdotnet-breaking-changes\u002FSKILL.md",[],[64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83],"dotnet","dotnet breaking changes","changes","green","project","default","local","errors","interface","generated","upgrade","invoke","you","code","refactoring","merge","rename","library","live","assembly",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":95,"publishedAt":28},"01M699HHE9DTZWAMPB1ZR7ZKSW","testfx-test-value-evidence","Apply the vendored test-value-evidence skill with TestFx toolchain, assertion, parallel-safety, packed-consumer, and review conventions. Use when implementing or reviewing behavior-changing TestFx PRs or commits, including source-only changes.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-test-value-evidence\u002FSKILL.md",[90],{"categoryNo":91,"categoryName":92,"taxonomyType":93,"taxonomyTypeDesc":94},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,66,112,113,114],"test","testfx test value evidence","test value evidence","evidence","value","review","parallel","toolchain","commits","implementing","prs","only","use","when","apply","with","behavior","Safety","conventions",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":28},"01M699HEYWH1B9XGNBFY8J2FZS","testfx-parallel-safety-preflight","Check concurrency and isolation before implementing or refactoring TestFx tests, lifecycle code, helpers, shared-state declarations, or production paths those tests exercise. Use before narrowing DoNotParallelize or ResourceLock, changing parallelization settings, or introducing asynchronous workers; repeat against the final diff.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-parallel-safety-preflight\u002FSKILL.md",[],[122,113,123,102,124,125,105,126,77,127,78,128,129,130,131,132,133,134,108,135],"testfx parallel safety preflight","preflight","shared","asynchronous","exercise","concurrency","paths","isolation","helpers","diff","parallelization","lifecycle","tests","workers",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":28},"01M699HC61ZV9GJ2C8JV03951G","testfx-localization-validation","Validate generated TestFx localization catalogs, resource IDs, placeholders and locked tokens. Use for RESX\u002FXLF changes, OneLoc PRs, localization build failures, duplicate targets or units, and orphaned translation entries.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-localization-validation\u002FSKILL.md",[],[143,144,145,146,147,148,149,150,151,106,73,108,152,153,66,154,155],"testfx localization validation","validation","localization","validate","translation","ids","for","tokens","entries","units","duplicate","targets","build",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":163,"publishedAt":28},"01M699H9J2NWQXE4BDT6R0FH7S","testfx-acceptance-validation","Validate TestFx shipping paths and capable CI execution using packed consumers, package\u002Fcache provenance, exact exits and artifacts, and selected-versus-executed test evidence. Use for acceptance regressions, package\u002FMSBuild\u002Flauncher\u002Fprotocol changes, or skipped-only CI results; not for unrelated unit-only or documentation changes.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-acceptance-validation\u002FSKILL.md",[162],{"categoryNo":91,"categoryName":92,"taxonomyType":93,"taxonomyTypeDesc":94},[164,165,144,96,21,99,166,167,168,107,169,108,170,171,172,173,174,175,176,177,178,179,128,149],"testfx acceptance validation","acceptance","launcher","ci","execution","package","cache","artifacts","provenance","documentation","unrelated","shipping","results","protocol","unit","ci results",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":186,"publishedAt":28},"01M699H70BB999BT4F627T1PHE","session-delivery-hygiene","Gate local-session scope, persistent delivery, live PR state, integration provenance, and owned cleanup. Use before implementing guidance changes, changing or pushing PR work, diagnosing package\u002Foutput mismatches, or handing off implementation.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsession-delivery-hygiene\u002FSKILL.md",[],[187,188,189,190,191,105,70,192,193,82,194,169,108,172,195,196,66,197,198,199],"session delivery hygiene","delivery","session","hygiene","scope","cleanup","work","pr","output","state","integration","guidance","gate"]