[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-testertesting-patterns":3,"mdc-rbv26-key":37,"related-repo-microsoft-testertesting-patterns":772,"related-org-microsoft-testertesting-patterns":802},{"slug":4,"name":5,"fn":6,"description":7,"org":8,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":33,"sourceUrl":35,"mdContent":36},"testertesting-patterns","tester.testing-patterns","apply xUnit testing patterns for DataFactory","xUnit testing patterns and conventions for DataFactory.MCP. Use when writing tests, fixing test failures, or adding test coverage.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[13,17,18,21,24],{"name":14,"slug":15,"type":16},"QA","qa","tag",{"name":10,"slug":9,"type":16},{"name":19,"slug":20,"type":16},"MCP","mcp",{"name":22,"slug":23,"type":16},"Engineering","engineering",{"name":25,"slug":26,"type":16},"Testing","testing",40,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FDataFactory.MCP","2026-05-13T06:14:37.157165",null,16,[],{"repoUrl":28,"stars":27,"forks":31,"topics":34,"description":30},[],"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FDataFactory.MCP\u002Ftree\u002FHEAD\u002F.github\u002Fskills\u002Ftester.testing-patterns","---\nname: tester.testing-patterns\ndescription: \"xUnit testing patterns and conventions for DataFactory.MCP. Use when writing tests, fixing test failures, or adding test coverage.\"\n---\n\n# Testing in DataFactory.MCP\n\n## Test Stack\n\n- **Framework:** xUnit (`[Fact]`, `[Theory]`, `[InlineData]`)\n- **Runner:** `xunit.runner.visualstudio`\n- **Skippable:** `Xunit.SkippableFact` (`[SkippableFact]`, `Skip.If(...)`)\n- **Coverage:** coverlet\n- **Target:** net10.0\n\n## Test Location\n\nAll tests live in `DataFactory.MCP.Tests\u002F`.\n\n## Commands\n\n| Task | Command |\n|------|---------|\n| Run all | `dotnet test` |\n| Verbose | `dotnet test -v normal` |\n| Filter | `dotnet test --filter \"FullyQualifiedName~TestName\"` |\n| Coverage | `dotnet test --collect:\"XPlat Code Coverage\"` |\n\n## Naming Convention\n\n```\nMethodName_Scenario_ExpectedResult\n```\n\nExamples:\n- `Authenticate_WithValidCredentials_ReturnsToken`\n- `ListGateways_WhenNotAuthenticated_ThrowsException`\n- `CreateConnection_WithInvalidType_ReturnsError`\n\n## Test Patterns\n\n### Unit Test (Arrange-Act-Assert)\n\n```csharp\npublic class MyServiceTests\n{\n    [Fact]\n    public void MethodName_Scenario_ExpectedResult()\n    {\n        \u002F\u002F Arrange\n        var service = new MyService();\n\n        \u002F\u002F Act\n        var result = service.DoSomething();\n\n        \u002F\u002F Assert\n        Assert.NotNull(result);\n        Assert.Equal(\"expected\", result.Value);\n    }\n}\n```\n\n### Parameterized Tests\n\n```csharp\n[Theory]\n[InlineData(\"input1\", \"expected1\")]\n[InlineData(\"input2\", \"expected2\")]\npublic void MethodName_WithVariousInputs_ReturnsExpected(string input, string expected)\n{\n    var result = MyService.Process(input);\n    Assert.Equal(expected, result);\n}\n```\n\n### Skippable Tests (for environment-dependent tests)\n\n```csharp\n[SkippableFact]\npublic void IntegrationTest_RequiresAuth()\n{\n    Skip.If(string.IsNullOrEmpty(Environment.GetEnvironmentVariable(\"AZURE_CLIENT_ID\")),\n        \"Requires Azure credentials\");\n    \u002F\u002F test body\n}\n```\n\n## What to Test\n\n- **Tools:** Parameter validation, response formatting, error handling\n- **Services:** API call construction, response parsing, error translation\n- **Models:** Serialization\u002Fdeserialization roundtrips\n- **Edge cases:** Null inputs, empty collections, unauthenticated state, API errors\n\n## Evaluation Scenarios\n\nReference `evals\u002F` for integration test scenarios:\n- `authentication.eval.md`, `connections.eval.md`, `dataflows.eval.md`\n- `gateways.eval.md`, `pipelines.eval.md`, `multi-step.eval.md`\n",{"data":38,"body":39},{"name":5,"description":7},{"type":40,"children":41},"root",[42,51,58,165,171,185,191,287,293,305,310,340,346,353,507,513,582,588,649,655,698,704,717,766],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"testing-in-datafactorymcp",[48],{"type":49,"value":50},"text","Testing in DataFactory.MCP",{"type":43,"tag":52,"props":53,"children":55},"h2",{"id":54},"test-stack",[56],{"type":49,"value":57},"Test Stack",{"type":43,"tag":59,"props":60,"children":61},"ul",{},[62,98,114,145,155],{"type":43,"tag":63,"props":64,"children":65},"li",{},[66,72,74,81,83,89,90,96],{"type":43,"tag":67,"props":68,"children":69},"strong",{},[70],{"type":49,"value":71},"Framework:",{"type":49,"value":73}," xUnit (",{"type":43,"tag":75,"props":76,"children":78},"code",{"className":77},[],[79],{"type":49,"value":80},"[Fact]",{"type":49,"value":82},", ",{"type":43,"tag":75,"props":84,"children":86},{"className":85},[],[87],{"type":49,"value":88},"[Theory]",{"type":49,"value":82},{"type":43,"tag":75,"props":91,"children":93},{"className":92},[],[94],{"type":49,"value":95},"[InlineData]",{"type":49,"value":97},")",{"type":43,"tag":63,"props":99,"children":100},{},[101,106,108],{"type":43,"tag":67,"props":102,"children":103},{},[104],{"type":49,"value":105},"Runner:",{"type":49,"value":107}," ",{"type":43,"tag":75,"props":109,"children":111},{"className":110},[],[112],{"type":49,"value":113},"xunit.runner.visualstudio",{"type":43,"tag":63,"props":115,"children":116},{},[117,122,123,129,131,137,138,144],{"type":43,"tag":67,"props":118,"children":119},{},[120],{"type":49,"value":121},"Skippable:",{"type":49,"value":107},{"type":43,"tag":75,"props":124,"children":126},{"className":125},[],[127],{"type":49,"value":128},"Xunit.SkippableFact",{"type":49,"value":130}," (",{"type":43,"tag":75,"props":132,"children":134},{"className":133},[],[135],{"type":49,"value":136},"[SkippableFact]",{"type":49,"value":82},{"type":43,"tag":75,"props":139,"children":141},{"className":140},[],[142],{"type":49,"value":143},"Skip.If(...)",{"type":49,"value":97},{"type":43,"tag":63,"props":146,"children":147},{},[148,153],{"type":43,"tag":67,"props":149,"children":150},{},[151],{"type":49,"value":152},"Coverage:",{"type":49,"value":154}," coverlet",{"type":43,"tag":63,"props":156,"children":157},{},[158,163],{"type":43,"tag":67,"props":159,"children":160},{},[161],{"type":49,"value":162},"Target:",{"type":49,"value":164}," net10.0",{"type":43,"tag":52,"props":166,"children":168},{"id":167},"test-location",[169],{"type":49,"value":170},"Test Location",{"type":43,"tag":172,"props":173,"children":174},"p",{},[175,177,183],{"type":49,"value":176},"All tests live in ",{"type":43,"tag":75,"props":178,"children":180},{"className":179},[],[181],{"type":49,"value":182},"DataFactory.MCP.Tests\u002F",{"type":49,"value":184},".",{"type":43,"tag":52,"props":186,"children":188},{"id":187},"commands",[189],{"type":49,"value":190},"Commands",{"type":43,"tag":192,"props":193,"children":194},"table",{},[195,214],{"type":43,"tag":196,"props":197,"children":198},"thead",{},[199],{"type":43,"tag":200,"props":201,"children":202},"tr",{},[203,209],{"type":43,"tag":204,"props":205,"children":206},"th",{},[207],{"type":49,"value":208},"Task",{"type":43,"tag":204,"props":210,"children":211},{},[212],{"type":49,"value":213},"Command",{"type":43,"tag":215,"props":216,"children":217},"tbody",{},[218,236,253,270],{"type":43,"tag":200,"props":219,"children":220},{},[221,227],{"type":43,"tag":222,"props":223,"children":224},"td",{},[225],{"type":49,"value":226},"Run all",{"type":43,"tag":222,"props":228,"children":229},{},[230],{"type":43,"tag":75,"props":231,"children":233},{"className":232},[],[234],{"type":49,"value":235},"dotnet test",{"type":43,"tag":200,"props":237,"children":238},{},[239,244],{"type":43,"tag":222,"props":240,"children":241},{},[242],{"type":49,"value":243},"Verbose",{"type":43,"tag":222,"props":245,"children":246},{},[247],{"type":43,"tag":75,"props":248,"children":250},{"className":249},[],[251],{"type":49,"value":252},"dotnet test -v normal",{"type":43,"tag":200,"props":254,"children":255},{},[256,261],{"type":43,"tag":222,"props":257,"children":258},{},[259],{"type":49,"value":260},"Filter",{"type":43,"tag":222,"props":262,"children":263},{},[264],{"type":43,"tag":75,"props":265,"children":267},{"className":266},[],[268],{"type":49,"value":269},"dotnet test --filter \"FullyQualifiedName~TestName\"",{"type":43,"tag":200,"props":271,"children":272},{},[273,278],{"type":43,"tag":222,"props":274,"children":275},{},[276],{"type":49,"value":277},"Coverage",{"type":43,"tag":222,"props":279,"children":280},{},[281],{"type":43,"tag":75,"props":282,"children":284},{"className":283},[],[285],{"type":49,"value":286},"dotnet test --collect:\"XPlat Code Coverage\"",{"type":43,"tag":52,"props":288,"children":290},{"id":289},"naming-convention",[291],{"type":49,"value":292},"Naming Convention",{"type":43,"tag":294,"props":295,"children":299},"pre",{"className":296,"code":298,"language":49},[297],"language-text","MethodName_Scenario_ExpectedResult\n",[300],{"type":43,"tag":75,"props":301,"children":303},{"__ignoreMap":302},"",[304],{"type":49,"value":298},{"type":43,"tag":172,"props":306,"children":307},{},[308],{"type":49,"value":309},"Examples:",{"type":43,"tag":59,"props":311,"children":312},{},[313,322,331],{"type":43,"tag":63,"props":314,"children":315},{},[316],{"type":43,"tag":75,"props":317,"children":319},{"className":318},[],[320],{"type":49,"value":321},"Authenticate_WithValidCredentials_ReturnsToken",{"type":43,"tag":63,"props":323,"children":324},{},[325],{"type":43,"tag":75,"props":326,"children":328},{"className":327},[],[329],{"type":49,"value":330},"ListGateways_WhenNotAuthenticated_ThrowsException",{"type":43,"tag":63,"props":332,"children":333},{},[334],{"type":43,"tag":75,"props":335,"children":337},{"className":336},[],[338],{"type":49,"value":339},"CreateConnection_WithInvalidType_ReturnsError",{"type":43,"tag":52,"props":341,"children":343},{"id":342},"test-patterns",[344],{"type":49,"value":345},"Test Patterns",{"type":43,"tag":347,"props":348,"children":350},"h3",{"id":349},"unit-test-arrange-act-assert",[351],{"type":49,"value":352},"Unit Test (Arrange-Act-Assert)",{"type":43,"tag":294,"props":354,"children":358},{"className":355,"code":356,"language":357,"meta":302,"style":302},"language-csharp shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","public class MyServiceTests\n{\n    [Fact]\n    public void MethodName_Scenario_ExpectedResult()\n    {\n        \u002F\u002F Arrange\n        var service = new MyService();\n\n        \u002F\u002F Act\n        var result = service.DoSomething();\n\n        \u002F\u002F Assert\n        Assert.NotNull(result);\n        Assert.Equal(\"expected\", result.Value);\n    }\n}\n","csharp",[359],{"type":43,"tag":75,"props":360,"children":361},{"__ignoreMap":302},[362,373,382,391,400,409,418,427,437,446,455,463,472,481,490,499],{"type":43,"tag":363,"props":364,"children":367},"span",{"class":365,"line":366},"line",1,[368],{"type":43,"tag":363,"props":369,"children":370},{},[371],{"type":49,"value":372},"public class MyServiceTests\n",{"type":43,"tag":363,"props":374,"children":376},{"class":365,"line":375},2,[377],{"type":43,"tag":363,"props":378,"children":379},{},[380],{"type":49,"value":381},"{\n",{"type":43,"tag":363,"props":383,"children":385},{"class":365,"line":384},3,[386],{"type":43,"tag":363,"props":387,"children":388},{},[389],{"type":49,"value":390},"    [Fact]\n",{"type":43,"tag":363,"props":392,"children":394},{"class":365,"line":393},4,[395],{"type":43,"tag":363,"props":396,"children":397},{},[398],{"type":49,"value":399},"    public void MethodName_Scenario_ExpectedResult()\n",{"type":43,"tag":363,"props":401,"children":403},{"class":365,"line":402},5,[404],{"type":43,"tag":363,"props":405,"children":406},{},[407],{"type":49,"value":408},"    {\n",{"type":43,"tag":363,"props":410,"children":412},{"class":365,"line":411},6,[413],{"type":43,"tag":363,"props":414,"children":415},{},[416],{"type":49,"value":417},"        \u002F\u002F Arrange\n",{"type":43,"tag":363,"props":419,"children":421},{"class":365,"line":420},7,[422],{"type":43,"tag":363,"props":423,"children":424},{},[425],{"type":49,"value":426},"        var service = new MyService();\n",{"type":43,"tag":363,"props":428,"children":430},{"class":365,"line":429},8,[431],{"type":43,"tag":363,"props":432,"children":434},{"emptyLinePlaceholder":433},true,[435],{"type":49,"value":436},"\n",{"type":43,"tag":363,"props":438,"children":440},{"class":365,"line":439},9,[441],{"type":43,"tag":363,"props":442,"children":443},{},[444],{"type":49,"value":445},"        \u002F\u002F Act\n",{"type":43,"tag":363,"props":447,"children":449},{"class":365,"line":448},10,[450],{"type":43,"tag":363,"props":451,"children":452},{},[453],{"type":49,"value":454},"        var result = service.DoSomething();\n",{"type":43,"tag":363,"props":456,"children":458},{"class":365,"line":457},11,[459],{"type":43,"tag":363,"props":460,"children":461},{"emptyLinePlaceholder":433},[462],{"type":49,"value":436},{"type":43,"tag":363,"props":464,"children":466},{"class":365,"line":465},12,[467],{"type":43,"tag":363,"props":468,"children":469},{},[470],{"type":49,"value":471},"        \u002F\u002F Assert\n",{"type":43,"tag":363,"props":473,"children":475},{"class":365,"line":474},13,[476],{"type":43,"tag":363,"props":477,"children":478},{},[479],{"type":49,"value":480},"        Assert.NotNull(result);\n",{"type":43,"tag":363,"props":482,"children":484},{"class":365,"line":483},14,[485],{"type":43,"tag":363,"props":486,"children":487},{},[488],{"type":49,"value":489},"        Assert.Equal(\"expected\", result.Value);\n",{"type":43,"tag":363,"props":491,"children":493},{"class":365,"line":492},15,[494],{"type":43,"tag":363,"props":495,"children":496},{},[497],{"type":49,"value":498},"    }\n",{"type":43,"tag":363,"props":500,"children":501},{"class":365,"line":31},[502],{"type":43,"tag":363,"props":503,"children":504},{},[505],{"type":49,"value":506},"}\n",{"type":43,"tag":347,"props":508,"children":510},{"id":509},"parameterized-tests",[511],{"type":49,"value":512},"Parameterized Tests",{"type":43,"tag":294,"props":514,"children":516},{"className":355,"code":515,"language":357,"meta":302,"style":302},"[Theory]\n[InlineData(\"input1\", \"expected1\")]\n[InlineData(\"input2\", \"expected2\")]\npublic void MethodName_WithVariousInputs_ReturnsExpected(string input, string expected)\n{\n    var result = MyService.Process(input);\n    Assert.Equal(expected, result);\n}\n",[517],{"type":43,"tag":75,"props":518,"children":519},{"__ignoreMap":302},[520,528,536,544,552,559,567,575],{"type":43,"tag":363,"props":521,"children":522},{"class":365,"line":366},[523],{"type":43,"tag":363,"props":524,"children":525},{},[526],{"type":49,"value":527},"[Theory]\n",{"type":43,"tag":363,"props":529,"children":530},{"class":365,"line":375},[531],{"type":43,"tag":363,"props":532,"children":533},{},[534],{"type":49,"value":535},"[InlineData(\"input1\", \"expected1\")]\n",{"type":43,"tag":363,"props":537,"children":538},{"class":365,"line":384},[539],{"type":43,"tag":363,"props":540,"children":541},{},[542],{"type":49,"value":543},"[InlineData(\"input2\", \"expected2\")]\n",{"type":43,"tag":363,"props":545,"children":546},{"class":365,"line":393},[547],{"type":43,"tag":363,"props":548,"children":549},{},[550],{"type":49,"value":551},"public void MethodName_WithVariousInputs_ReturnsExpected(string input, string expected)\n",{"type":43,"tag":363,"props":553,"children":554},{"class":365,"line":402},[555],{"type":43,"tag":363,"props":556,"children":557},{},[558],{"type":49,"value":381},{"type":43,"tag":363,"props":560,"children":561},{"class":365,"line":411},[562],{"type":43,"tag":363,"props":563,"children":564},{},[565],{"type":49,"value":566},"    var result = MyService.Process(input);\n",{"type":43,"tag":363,"props":568,"children":569},{"class":365,"line":420},[570],{"type":43,"tag":363,"props":571,"children":572},{},[573],{"type":49,"value":574},"    Assert.Equal(expected, result);\n",{"type":43,"tag":363,"props":576,"children":577},{"class":365,"line":429},[578],{"type":43,"tag":363,"props":579,"children":580},{},[581],{"type":49,"value":506},{"type":43,"tag":347,"props":583,"children":585},{"id":584},"skippable-tests-for-environment-dependent-tests",[586],{"type":49,"value":587},"Skippable Tests (for environment-dependent tests)",{"type":43,"tag":294,"props":589,"children":591},{"className":355,"code":590,"language":357,"meta":302,"style":302},"[SkippableFact]\npublic void IntegrationTest_RequiresAuth()\n{\n    Skip.If(string.IsNullOrEmpty(Environment.GetEnvironmentVariable(\"AZURE_CLIENT_ID\")),\n        \"Requires Azure credentials\");\n    \u002F\u002F test body\n}\n",[592],{"type":43,"tag":75,"props":593,"children":594},{"__ignoreMap":302},[595,603,611,618,626,634,642],{"type":43,"tag":363,"props":596,"children":597},{"class":365,"line":366},[598],{"type":43,"tag":363,"props":599,"children":600},{},[601],{"type":49,"value":602},"[SkippableFact]\n",{"type":43,"tag":363,"props":604,"children":605},{"class":365,"line":375},[606],{"type":43,"tag":363,"props":607,"children":608},{},[609],{"type":49,"value":610},"public void IntegrationTest_RequiresAuth()\n",{"type":43,"tag":363,"props":612,"children":613},{"class":365,"line":384},[614],{"type":43,"tag":363,"props":615,"children":616},{},[617],{"type":49,"value":381},{"type":43,"tag":363,"props":619,"children":620},{"class":365,"line":393},[621],{"type":43,"tag":363,"props":622,"children":623},{},[624],{"type":49,"value":625},"    Skip.If(string.IsNullOrEmpty(Environment.GetEnvironmentVariable(\"AZURE_CLIENT_ID\")),\n",{"type":43,"tag":363,"props":627,"children":628},{"class":365,"line":402},[629],{"type":43,"tag":363,"props":630,"children":631},{},[632],{"type":49,"value":633},"        \"Requires Azure credentials\");\n",{"type":43,"tag":363,"props":635,"children":636},{"class":365,"line":411},[637],{"type":43,"tag":363,"props":638,"children":639},{},[640],{"type":49,"value":641},"    \u002F\u002F test body\n",{"type":43,"tag":363,"props":643,"children":644},{"class":365,"line":420},[645],{"type":43,"tag":363,"props":646,"children":647},{},[648],{"type":49,"value":506},{"type":43,"tag":52,"props":650,"children":652},{"id":651},"what-to-test",[653],{"type":49,"value":654},"What to Test",{"type":43,"tag":59,"props":656,"children":657},{},[658,668,678,688],{"type":43,"tag":63,"props":659,"children":660},{},[661,666],{"type":43,"tag":67,"props":662,"children":663},{},[664],{"type":49,"value":665},"Tools:",{"type":49,"value":667}," Parameter validation, response formatting, error handling",{"type":43,"tag":63,"props":669,"children":670},{},[671,676],{"type":43,"tag":67,"props":672,"children":673},{},[674],{"type":49,"value":675},"Services:",{"type":49,"value":677}," API call construction, response parsing, error translation",{"type":43,"tag":63,"props":679,"children":680},{},[681,686],{"type":43,"tag":67,"props":682,"children":683},{},[684],{"type":49,"value":685},"Models:",{"type":49,"value":687}," Serialization\u002Fdeserialization roundtrips",{"type":43,"tag":63,"props":689,"children":690},{},[691,696],{"type":43,"tag":67,"props":692,"children":693},{},[694],{"type":49,"value":695},"Edge cases:",{"type":49,"value":697}," Null inputs, empty collections, unauthenticated state, API errors",{"type":43,"tag":52,"props":699,"children":701},{"id":700},"evaluation-scenarios",[702],{"type":49,"value":703},"Evaluation Scenarios",{"type":43,"tag":172,"props":705,"children":706},{},[707,709,715],{"type":49,"value":708},"Reference ",{"type":43,"tag":75,"props":710,"children":712},{"className":711},[],[713],{"type":49,"value":714},"evals\u002F",{"type":49,"value":716}," for integration test scenarios:",{"type":43,"tag":59,"props":718,"children":719},{},[720,743],{"type":43,"tag":63,"props":721,"children":722},{},[723,729,730,736,737],{"type":43,"tag":75,"props":724,"children":726},{"className":725},[],[727],{"type":49,"value":728},"authentication.eval.md",{"type":49,"value":82},{"type":43,"tag":75,"props":731,"children":733},{"className":732},[],[734],{"type":49,"value":735},"connections.eval.md",{"type":49,"value":82},{"type":43,"tag":75,"props":738,"children":740},{"className":739},[],[741],{"type":49,"value":742},"dataflows.eval.md",{"type":43,"tag":63,"props":744,"children":745},{},[746,752,753,759,760],{"type":43,"tag":75,"props":747,"children":749},{"className":748},[],[750],{"type":49,"value":751},"gateways.eval.md",{"type":49,"value":82},{"type":43,"tag":75,"props":754,"children":756},{"className":755},[],[757],{"type":49,"value":758},"pipelines.eval.md",{"type":49,"value":82},{"type":43,"tag":75,"props":761,"children":763},{"className":762},[],[764],{"type":49,"value":765},"multi-step.eval.md",{"type":43,"tag":767,"props":768,"children":769},"style",{},[770],{"type":49,"value":771},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":773,"total":375},[774,794],{"slug":775,"name":775,"fn":776,"description":777,"org":778,"tags":779,"stars":27,"repoUrl":28,"updatedAt":793},"datafactory-tips","apply best practices for Fabric Data Factory","Operational tips and best practices for working with Microsoft Fabric Data Factory MCP tools. Use when executing queries, troubleshooting timeouts, creating dataflows end-to-end, or working with large datasets via the DataFactory.MCP tools.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[780,783,786,789,790],{"name":781,"slug":782,"type":16},"Data Engineering","data-engineering",{"name":784,"slug":785,"type":16},"Data Pipeline","data-pipeline",{"name":787,"slug":788,"type":16},"ETL","etl",{"name":10,"slug":9,"type":16},{"name":791,"slug":792,"type":16},"Microsoft Fabric","microsoft-fabric","2026-04-06T18:35:35.985857",{"slug":4,"name":5,"fn":6,"description":7,"org":795,"tags":796,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[797,798,799,800,801],{"name":22,"slug":23,"type":16},{"name":19,"slug":20,"type":16},{"name":10,"slug":9,"type":16},{"name":14,"slug":15,"type":16},{"name":25,"slug":26,"type":16},{"items":803,"total":996},[804,824,845,866,881,898,909,922,937,952,971,984],{"slug":805,"name":805,"fn":806,"description":807,"org":808,"tags":809,"stars":821,"repoUrl":822,"updatedAt":823},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[810,811,814,815,818],{"name":22,"slug":23,"type":16},{"name":812,"slug":813,"type":16},"Local Development","local-development",{"name":10,"slug":9,"type":16},{"name":816,"slug":817,"type":16},"Project Management","project-management",{"name":819,"slug":820,"type":16},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":825,"name":825,"fn":826,"description":827,"org":828,"tags":829,"stars":842,"repoUrl":843,"updatedAt":844},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[830,833,836,839],{"name":831,"slug":832,"type":16},".NET","net",{"name":834,"slug":835,"type":16},"Agents","agents",{"name":837,"slug":838,"type":16},"Azure","azure",{"name":840,"slug":841,"type":16},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":846,"name":846,"fn":847,"description":848,"org":849,"tags":850,"stars":842,"repoUrl":843,"updatedAt":865},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[851,854,855,858,861,862],{"name":852,"slug":853,"type":16},"Analytics","analytics",{"name":837,"slug":838,"type":16},{"name":856,"slug":857,"type":16},"Data Analysis","data-analysis",{"name":859,"slug":860,"type":16},"Java","java",{"name":10,"slug":9,"type":16},{"name":863,"slug":864,"type":16},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":867,"name":867,"fn":868,"description":869,"org":870,"tags":871,"stars":842,"repoUrl":843,"updatedAt":880},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[872,875,876,877],{"name":873,"slug":874,"type":16},"AI Infrastructure","ai-infrastructure",{"name":837,"slug":838,"type":16},{"name":859,"slug":860,"type":16},{"name":878,"slug":879,"type":16},"Security","security","2026-07-07T06:53:31.293235",{"slug":882,"name":882,"fn":883,"description":884,"org":885,"tags":886,"stars":842,"repoUrl":843,"updatedAt":897},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[887,888,891,892,893,896],{"name":837,"slug":838,"type":16},{"name":889,"slug":890,"type":16},"Compliance","compliance",{"name":840,"slug":841,"type":16},{"name":10,"slug":9,"type":16},{"name":894,"slug":895,"type":16},"Python","python",{"name":878,"slug":879,"type":16},"2026-07-18T05:14:23.017504",{"slug":899,"name":899,"fn":900,"description":901,"org":902,"tags":903,"stars":842,"repoUrl":843,"updatedAt":908},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[904,905,906,907],{"name":852,"slug":853,"type":16},{"name":837,"slug":838,"type":16},{"name":840,"slug":841,"type":16},{"name":894,"slug":895,"type":16},"2026-07-31T05:54:29.068751",{"slug":910,"name":910,"fn":911,"description":912,"org":913,"tags":914,"stars":842,"repoUrl":843,"updatedAt":921},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[915,918,919,920],{"name":916,"slug":917,"type":16},"API Development","api-development",{"name":837,"slug":838,"type":16},{"name":10,"slug":9,"type":16},{"name":894,"slug":895,"type":16},"2026-07-18T05:14:16.988376",{"slug":923,"name":923,"fn":924,"description":925,"org":926,"tags":927,"stars":842,"repoUrl":843,"updatedAt":936},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[928,929,932,935],{"name":837,"slug":838,"type":16},{"name":930,"slug":931,"type":16},"Computer Vision","computer-vision",{"name":933,"slug":934,"type":16},"Images","images",{"name":894,"slug":895,"type":16},"2026-07-18T05:14:18.007737",{"slug":938,"name":938,"fn":939,"description":940,"org":941,"tags":942,"stars":842,"repoUrl":843,"updatedAt":951},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[943,944,947,950],{"name":837,"slug":838,"type":16},{"name":945,"slug":946,"type":16},"Configuration","configuration",{"name":948,"slug":949,"type":16},"Feature Flags","feature-flags",{"name":859,"slug":860,"type":16},"2026-07-03T16:32:01.278468",{"slug":953,"name":953,"fn":954,"description":955,"org":956,"tags":957,"stars":842,"repoUrl":843,"updatedAt":970},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[958,961,964,967],{"name":959,"slug":960,"type":16},"Cosmos DB","cosmos-db",{"name":962,"slug":963,"type":16},"Database","database",{"name":965,"slug":966,"type":16},"NoSQL","nosql",{"name":968,"slug":969,"type":16},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":972,"name":972,"fn":954,"description":973,"org":974,"tags":975,"stars":842,"repoUrl":843,"updatedAt":983},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[976,977,978,979,980],{"name":959,"slug":960,"type":16},{"name":962,"slug":963,"type":16},{"name":10,"slug":9,"type":16},{"name":965,"slug":966,"type":16},{"name":981,"slug":982,"type":16},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":985,"name":985,"fn":986,"description":987,"org":988,"tags":989,"stars":842,"repoUrl":843,"updatedAt":995},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":9},[990,991,992,993,994],{"name":837,"slug":838,"type":16},{"name":959,"slug":960,"type":16},{"name":962,"slug":963,"type":16},{"name":859,"slug":860,"type":16},{"name":965,"slug":966,"type":16},"2026-05-13T06:14:17.582229",267]