[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-azsdk-common-live-and-recorded-tests":3,"mdc--wojzrt-key":35,"related-org-azure-azsdk-common-live-and-recorded-tests":670,"related-repo-azure-azsdk-common-live-and-recorded-tests":839},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"azsdk-common-live-and-recorded-tests","deploy resources and run Azure SDK tests","Deploy test resources and run Azure SDK tests in live, record, or playback mode. WHEN: \"run live tests\", \"run recorded tests\", \"deploy test resources\", \"record tests\", \"run tests in record mode\", \"clean up test resources\", \"run tests against live resources\". DO NOT USE FOR: writing new tests, authoring Bicep templates, playback-only test runs without resource deployment. INVOKES: azure-sdk-mcp:azsdk_package_run_tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"azure","Azure (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fazure.png","Azure",[13,15,18,21],{"name":11,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"Deployment","deployment",{"name":19,"slug":20,"type":14},"SDK","sdk",{"name":22,"slug":23,"type":14},"Testing","testing",133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:44.718943","MIT",248,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"Tools repository leveraged by the Azure SDK team.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools\u002Ftree\u002FHEAD\u002Fplugins\u002Fazure-sdk-tools\u002Fskills\u002Flive-and-recorded-tests","---\nname: azsdk-common-live-and-recorded-tests\nlicense: MIT\nmetadata:\n  version: \"0.1.0\"\n  distribution: shared\ndescription: \"Deploy test resources and run Azure SDK tests in live, record, or playback mode. WHEN: \\\"run live tests\\\", \\\"run recorded tests\\\", \\\"deploy test resources\\\", \\\"record tests\\\", \\\"run tests in record mode\\\", \\\"clean up test resources\\\", \\\"run tests against live resources\\\". DO NOT USE FOR: writing new tests, authoring Bicep templates, playback-only test runs without resource deployment. INVOKES: azure-sdk-mcp:azsdk_package_run_tests.\"\ncompatibility: \"azure-sdk-mcp server, Azure PowerShell (Az module), local azure-sdk-for-{language} clone\"\n---\n\n# Live and Recorded Tests\n\n## MCP Tools\n\n| Tool | Purpose |\n|------|---------|\n| `azure-sdk-mcp:azsdk_package_run_tests` | Run tests in playback, record, or live mode |\n\n> **IMPORTANT:** ALWAYS use the `azure-sdk-mcp:azsdk_package_run_tests` MCP tool to run tests. NEVER run test commands directly in the terminal (e.g., `pytest`, `dotnet test`, `mvn test`, `npm test`, `go test`). The MCP tool handles test mode configuration, environment setup, and automatic asset pushing in record mode.\n\n## Prerequisites\n\n- azure-sdk-mcp server must be running\n- Azure PowerShell module (`Az`) must be installed. If `Get-AzContext` fails with a command-not-found error, instruct the user to install it with `Install-Module Az -Scope CurrentUser -Force`.\n- For live\u002Frecord modes: an Azure subscription with permissions to create resources\n  - Use the Azure SDK Test Resources - TME (id: 4d042dc6-fe17-4698-a23f-ec6a8d1e98f4) subscription if not already authenticated and no other subscription is specified.\n\n## Steps\n\n1. **Identify service directory** — Determine the service directory for the package under test (e.g., `keyvault`, `storage`). This is required by the test resource deployment script.\n2. **Check for existing deployment** — Look for a `.env` file at either the service directory level  (next to `test-resources.bicep`, e.g. `sdk\u002Fstorage\u002F.env`) or at the package level (e.g. `sdk\u002Fstorage\u002Fstorage-blob\u002F.env`). If one exists, inform the user that a previous deployment appears to be available and ask whether to **reuse the existing deployment** or **redeploy test resources**. If reusing, skip to step 7.\n3. **Verify Azure context** — Run `Get-AzContext` to check for an active Azure PowerShell session. If the command fails because the Az module is not installed, instruct the user to run `Install-Module Az -Scope CurrentUser -Force` first. If no context exists, guide the user through `Connect-AzAccount -TenantId [TME tenant ID]`. If `Connect-AzAccount` appears to hang and no browser window opens for authentication, tell the user to copy and paste the command into a new PowerShell window. Confirm the correct subscription is selected.\n4. **Confirm deployment** — Even if no existing `.env` file is found, confirm with the user before proceeding to deploy test resources. Deployment creates Azure resources that may incur costs.\n5. **Deploy test resources** — Run `eng\u002Fcommon\u002FTestResources\u002FNew-TestResources.ps1` with the service directory, tenant ID, subscription ID, and any user-provided parameters. Use the TME tenant ID and subscription ID if one has not already been provided. See [deployment parameters](references\u002Ftest-resource-deployment.md) for details. The script outputs environment variables needed for live\u002Frecord test runs.\n6. **Save environment** — Capture the environment variables output by the deployment script. If the script writes a `.env` file, note its path. Otherwise, collect the environment variables from the script output. In azure-sdk-for-net, if the script outputs a file like `test-resources.bicep.env` instead of a `.env` file, move on to step 7 and call the MCP tool WITHOUT passing an env filepath. The test framework will automatically find and handle this special file type.\n7. **Run tests** — Call the `azure-sdk-mcp:azsdk_package_run_tests` MCP tool (do NOT run test commands directly in the terminal). Provide the appropriate test mode (`record`, `live`, or `playback`) and the path to the `.env` file containing test environment variables. When tests run in record mode and all tests pass, the tool automatically pushes recorded test assets to the assets repo.\n8. **Clean up** — Ask the user whether to clean up test resources. If yes, run `eng\u002Fcommon\u002FTestResources\u002FRemove-TestResources.ps1`. If no, inform the user that resources remain deployed for subsequent test runs. See [cleanup details](references\u002Ftest-resource-cleanup.md).\n\n## Examples\n\n- \"Deploy test resources and run live tests for this package\"\n- \"Run the tests in record mode using the live test deployment specified in .env\"\n- \"Clean up my test resources for keyvault\"\n- \"Run tests in record mode against my existing deployment\"\n- \"Set up live test resources for storage and run all tests\"\n\n## Troubleshooting\n\n- **No Azure context:** Run `Connect-AzAccount` and select the target subscription with `Set-AzContext -SubscriptionId \u003Cid>`. If the browser window for authentication fails to open and the command appears to hang, tell the user to copy and paste the `Connect-AzAccount` command into a new PowerShell window and run it there instead.\n- **Az module not installed:** If `Get-AzContext` fails with a command-not-found error, the Azure PowerShell module is not installed. Instruct the user to run `Install-Module Az -Scope CurrentUser -Force` and then retry.\n- **Deployment fails with auth error:** Verify that the signed-in account has Contributor or Owner role on the target subscription. Check `Get-AzContext` output.\n- **Deployment fails with resource conflict:** A previous deployment may still exist. Try running `Remove-TestResources.ps1` first, or use a different `BaseName`.\n- **Tests fail in record mode:** Check that all environment variables from the deployment are being passed correctly. Verify the `.env` file path is correct.\n- **Assets push fails after recording:** Ensure the assets repo is configured and accessible. Check git authentication.\n",{"data":36,"body":41},{"name":4,"license":27,"metadata":37,"description":6,"compatibility":40},{"version":38,"distribution":39},"0.1.0","shared","azure-sdk-mcp server, Azure PowerShell (Az module), local azure-sdk-for-{language} clone",{"type":42,"children":43},"root",[44,53,60,106,166,172,224,230,502,508,536,542],{"type":45,"tag":46,"props":47,"children":49},"element","h1",{"id":48},"live-and-recorded-tests",[50],{"type":51,"value":52},"text","Live and Recorded Tests",{"type":45,"tag":54,"props":55,"children":57},"h2",{"id":56},"mcp-tools",[58],{"type":51,"value":59},"MCP Tools",{"type":45,"tag":61,"props":62,"children":63},"table",{},[64,83],{"type":45,"tag":65,"props":66,"children":67},"thead",{},[68],{"type":45,"tag":69,"props":70,"children":71},"tr",{},[72,78],{"type":45,"tag":73,"props":74,"children":75},"th",{},[76],{"type":51,"value":77},"Tool",{"type":45,"tag":73,"props":79,"children":80},{},[81],{"type":51,"value":82},"Purpose",{"type":45,"tag":84,"props":85,"children":86},"tbody",{},[87],{"type":45,"tag":69,"props":88,"children":89},{},[90,101],{"type":45,"tag":91,"props":92,"children":93},"td",{},[94],{"type":45,"tag":95,"props":96,"children":98},"code",{"className":97},[],[99],{"type":51,"value":100},"azure-sdk-mcp:azsdk_package_run_tests",{"type":45,"tag":91,"props":102,"children":103},{},[104],{"type":51,"value":105},"Run tests in playback, record, or live mode",{"type":45,"tag":107,"props":108,"children":109},"blockquote",{},[110],{"type":45,"tag":111,"props":112,"children":113},"p",{},[114,120,122,127,129,135,137,143,144,150,151,157,158,164],{"type":45,"tag":115,"props":116,"children":117},"strong",{},[118],{"type":51,"value":119},"IMPORTANT:",{"type":51,"value":121}," ALWAYS use the ",{"type":45,"tag":95,"props":123,"children":125},{"className":124},[],[126],{"type":51,"value":100},{"type":51,"value":128}," MCP tool to run tests. NEVER run test commands directly in the terminal (e.g., ",{"type":45,"tag":95,"props":130,"children":132},{"className":131},[],[133],{"type":51,"value":134},"pytest",{"type":51,"value":136},", ",{"type":45,"tag":95,"props":138,"children":140},{"className":139},[],[141],{"type":51,"value":142},"dotnet test",{"type":51,"value":136},{"type":45,"tag":95,"props":145,"children":147},{"className":146},[],[148],{"type":51,"value":149},"mvn test",{"type":51,"value":136},{"type":45,"tag":95,"props":152,"children":154},{"className":153},[],[155],{"type":51,"value":156},"npm test",{"type":51,"value":136},{"type":45,"tag":95,"props":159,"children":161},{"className":160},[],[162],{"type":51,"value":163},"go test",{"type":51,"value":165},"). The MCP tool handles test mode configuration, environment setup, and automatic asset pushing in record mode.",{"type":45,"tag":54,"props":167,"children":169},{"id":168},"prerequisites",[170],{"type":51,"value":171},"Prerequisites",{"type":45,"tag":173,"props":174,"children":175},"ul",{},[176,182,211],{"type":45,"tag":177,"props":178,"children":179},"li",{},[180],{"type":51,"value":181},"azure-sdk-mcp server must be running",{"type":45,"tag":177,"props":183,"children":184},{},[185,187,193,195,201,203,209],{"type":51,"value":186},"Azure PowerShell module (",{"type":45,"tag":95,"props":188,"children":190},{"className":189},[],[191],{"type":51,"value":192},"Az",{"type":51,"value":194},") must be installed. If ",{"type":45,"tag":95,"props":196,"children":198},{"className":197},[],[199],{"type":51,"value":200},"Get-AzContext",{"type":51,"value":202}," fails with a command-not-found error, instruct the user to install it with ",{"type":45,"tag":95,"props":204,"children":206},{"className":205},[],[207],{"type":51,"value":208},"Install-Module Az -Scope CurrentUser -Force",{"type":51,"value":210},".",{"type":45,"tag":177,"props":212,"children":213},{},[214,216],{"type":51,"value":215},"For live\u002Frecord modes: an Azure subscription with permissions to create resources\n",{"type":45,"tag":173,"props":217,"children":218},{},[219],{"type":45,"tag":177,"props":220,"children":221},{},[222],{"type":51,"value":223},"Use the Azure SDK Test Resources - TME (id: 4d042dc6-fe17-4698-a23f-ec6a8d1e98f4) subscription if not already authenticated and no other subscription is specified.",{"type":45,"tag":54,"props":225,"children":227},{"id":226},"steps",[228],{"type":51,"value":229},"Steps",{"type":45,"tag":231,"props":232,"children":233},"ol",{},[234,259,315,355,372,398,430,477],{"type":45,"tag":177,"props":235,"children":236},{},[237,242,244,250,251,257],{"type":45,"tag":115,"props":238,"children":239},{},[240],{"type":51,"value":241},"Identify service directory",{"type":51,"value":243}," — Determine the service directory for the package under test (e.g., ",{"type":45,"tag":95,"props":245,"children":247},{"className":246},[],[248],{"type":51,"value":249},"keyvault",{"type":51,"value":136},{"type":45,"tag":95,"props":252,"children":254},{"className":253},[],[255],{"type":51,"value":256},"storage",{"type":51,"value":258},"). This is required by the test resource deployment script.",{"type":45,"tag":177,"props":260,"children":261},{},[262,267,269,275,277,283,285,291,293,299,301,306,308,313],{"type":45,"tag":115,"props":263,"children":264},{},[265],{"type":51,"value":266},"Check for existing deployment",{"type":51,"value":268}," — Look for a ",{"type":45,"tag":95,"props":270,"children":272},{"className":271},[],[273],{"type":51,"value":274},".env",{"type":51,"value":276}," file at either the service directory level  (next to ",{"type":45,"tag":95,"props":278,"children":280},{"className":279},[],[281],{"type":51,"value":282},"test-resources.bicep",{"type":51,"value":284},", e.g. ",{"type":45,"tag":95,"props":286,"children":288},{"className":287},[],[289],{"type":51,"value":290},"sdk\u002Fstorage\u002F.env",{"type":51,"value":292},") or at the package level (e.g. ",{"type":45,"tag":95,"props":294,"children":296},{"className":295},[],[297],{"type":51,"value":298},"sdk\u002Fstorage\u002Fstorage-blob\u002F.env",{"type":51,"value":300},"). If one exists, inform the user that a previous deployment appears to be available and ask whether to ",{"type":45,"tag":115,"props":302,"children":303},{},[304],{"type":51,"value":305},"reuse the existing deployment",{"type":51,"value":307}," or ",{"type":45,"tag":115,"props":309,"children":310},{},[311],{"type":51,"value":312},"redeploy test resources",{"type":51,"value":314},". If reusing, skip to step 7.",{"type":45,"tag":177,"props":316,"children":317},{},[318,323,325,330,332,337,339,345,347,353],{"type":45,"tag":115,"props":319,"children":320},{},[321],{"type":51,"value":322},"Verify Azure context",{"type":51,"value":324}," — Run ",{"type":45,"tag":95,"props":326,"children":328},{"className":327},[],[329],{"type":51,"value":200},{"type":51,"value":331}," to check for an active Azure PowerShell session. If the command fails because the Az module is not installed, instruct the user to run ",{"type":45,"tag":95,"props":333,"children":335},{"className":334},[],[336],{"type":51,"value":208},{"type":51,"value":338}," first. If no context exists, guide the user through ",{"type":45,"tag":95,"props":340,"children":342},{"className":341},[],[343],{"type":51,"value":344},"Connect-AzAccount -TenantId [TME tenant ID]",{"type":51,"value":346},". If ",{"type":45,"tag":95,"props":348,"children":350},{"className":349},[],[351],{"type":51,"value":352},"Connect-AzAccount",{"type":51,"value":354}," appears to hang and no browser window opens for authentication, tell the user to copy and paste the command into a new PowerShell window. Confirm the correct subscription is selected.",{"type":45,"tag":177,"props":356,"children":357},{},[358,363,365,370],{"type":45,"tag":115,"props":359,"children":360},{},[361],{"type":51,"value":362},"Confirm deployment",{"type":51,"value":364}," — Even if no existing ",{"type":45,"tag":95,"props":366,"children":368},{"className":367},[],[369],{"type":51,"value":274},{"type":51,"value":371}," file is found, confirm with the user before proceeding to deploy test resources. Deployment creates Azure resources that may incur costs.",{"type":45,"tag":177,"props":373,"children":374},{},[375,380,381,387,389,396],{"type":45,"tag":115,"props":376,"children":377},{},[378],{"type":51,"value":379},"Deploy test resources",{"type":51,"value":324},{"type":45,"tag":95,"props":382,"children":384},{"className":383},[],[385],{"type":51,"value":386},"eng\u002Fcommon\u002FTestResources\u002FNew-TestResources.ps1",{"type":51,"value":388}," with the service directory, tenant ID, subscription ID, and any user-provided parameters. Use the TME tenant ID and subscription ID if one has not already been provided. See ",{"type":45,"tag":390,"props":391,"children":393},"a",{"href":392},"references\u002Ftest-resource-deployment.md",[394],{"type":51,"value":395},"deployment parameters",{"type":51,"value":397}," for details. The script outputs environment variables needed for live\u002Frecord test runs.",{"type":45,"tag":177,"props":399,"children":400},{},[401,406,408,413,415,421,423,428],{"type":45,"tag":115,"props":402,"children":403},{},[404],{"type":51,"value":405},"Save environment",{"type":51,"value":407}," — Capture the environment variables output by the deployment script. If the script writes a ",{"type":45,"tag":95,"props":409,"children":411},{"className":410},[],[412],{"type":51,"value":274},{"type":51,"value":414}," file, note its path. Otherwise, collect the environment variables from the script output. In azure-sdk-for-net, if the script outputs a file like ",{"type":45,"tag":95,"props":416,"children":418},{"className":417},[],[419],{"type":51,"value":420},"test-resources.bicep.env",{"type":51,"value":422}," instead of a ",{"type":45,"tag":95,"props":424,"children":426},{"className":425},[],[427],{"type":51,"value":274},{"type":51,"value":429}," file, move on to step 7 and call the MCP tool WITHOUT passing an env filepath. The test framework will automatically find and handle this special file type.",{"type":45,"tag":177,"props":431,"children":432},{},[433,438,440,445,447,453,454,460,462,468,470,475],{"type":45,"tag":115,"props":434,"children":435},{},[436],{"type":51,"value":437},"Run tests",{"type":51,"value":439}," — Call the ",{"type":45,"tag":95,"props":441,"children":443},{"className":442},[],[444],{"type":51,"value":100},{"type":51,"value":446}," MCP tool (do NOT run test commands directly in the terminal). Provide the appropriate test mode (",{"type":45,"tag":95,"props":448,"children":450},{"className":449},[],[451],{"type":51,"value":452},"record",{"type":51,"value":136},{"type":45,"tag":95,"props":455,"children":457},{"className":456},[],[458],{"type":51,"value":459},"live",{"type":51,"value":461},", or ",{"type":45,"tag":95,"props":463,"children":465},{"className":464},[],[466],{"type":51,"value":467},"playback",{"type":51,"value":469},") and the path to the ",{"type":45,"tag":95,"props":471,"children":473},{"className":472},[],[474],{"type":51,"value":274},{"type":51,"value":476}," file containing test environment variables. When tests run in record mode and all tests pass, the tool automatically pushes recorded test assets to the assets repo.",{"type":45,"tag":177,"props":478,"children":479},{},[480,485,487,493,495,501],{"type":45,"tag":115,"props":481,"children":482},{},[483],{"type":51,"value":484},"Clean up",{"type":51,"value":486}," — Ask the user whether to clean up test resources. If yes, run ",{"type":45,"tag":95,"props":488,"children":490},{"className":489},[],[491],{"type":51,"value":492},"eng\u002Fcommon\u002FTestResources\u002FRemove-TestResources.ps1",{"type":51,"value":494},". If no, inform the user that resources remain deployed for subsequent test runs. See ",{"type":45,"tag":390,"props":496,"children":498},{"href":497},"references\u002Ftest-resource-cleanup.md",[499],{"type":51,"value":500},"cleanup details",{"type":51,"value":210},{"type":45,"tag":54,"props":503,"children":505},{"id":504},"examples",[506],{"type":51,"value":507},"Examples",{"type":45,"tag":173,"props":509,"children":510},{},[511,516,521,526,531],{"type":45,"tag":177,"props":512,"children":513},{},[514],{"type":51,"value":515},"\"Deploy test resources and run live tests for this package\"",{"type":45,"tag":177,"props":517,"children":518},{},[519],{"type":51,"value":520},"\"Run the tests in record mode using the live test deployment specified in .env\"",{"type":45,"tag":177,"props":522,"children":523},{},[524],{"type":51,"value":525},"\"Clean up my test resources for keyvault\"",{"type":45,"tag":177,"props":527,"children":528},{},[529],{"type":51,"value":530},"\"Run tests in record mode against my existing deployment\"",{"type":45,"tag":177,"props":532,"children":533},{},[534],{"type":51,"value":535},"\"Set up live test resources for storage and run all tests\"",{"type":45,"tag":54,"props":537,"children":539},{"id":538},"troubleshooting",[540],{"type":51,"value":541},"Troubleshooting",{"type":45,"tag":173,"props":543,"children":544},{},[545,577,601,618,643,660],{"type":45,"tag":177,"props":546,"children":547},{},[548,553,555,560,562,568,570,575],{"type":45,"tag":115,"props":549,"children":550},{},[551],{"type":51,"value":552},"No Azure context:",{"type":51,"value":554}," Run ",{"type":45,"tag":95,"props":556,"children":558},{"className":557},[],[559],{"type":51,"value":352},{"type":51,"value":561}," and select the target subscription with ",{"type":45,"tag":95,"props":563,"children":565},{"className":564},[],[566],{"type":51,"value":567},"Set-AzContext -SubscriptionId \u003Cid>",{"type":51,"value":569},". If the browser window for authentication fails to open and the command appears to hang, tell the user to copy and paste the ",{"type":45,"tag":95,"props":571,"children":573},{"className":572},[],[574],{"type":51,"value":352},{"type":51,"value":576}," command into a new PowerShell window and run it there instead.",{"type":45,"tag":177,"props":578,"children":579},{},[580,585,587,592,594,599],{"type":45,"tag":115,"props":581,"children":582},{},[583],{"type":51,"value":584},"Az module not installed:",{"type":51,"value":586}," If ",{"type":45,"tag":95,"props":588,"children":590},{"className":589},[],[591],{"type":51,"value":200},{"type":51,"value":593}," fails with a command-not-found error, the Azure PowerShell module is not installed. Instruct the user to run ",{"type":45,"tag":95,"props":595,"children":597},{"className":596},[],[598],{"type":51,"value":208},{"type":51,"value":600}," and then retry.",{"type":45,"tag":177,"props":602,"children":603},{},[604,609,611,616],{"type":45,"tag":115,"props":605,"children":606},{},[607],{"type":51,"value":608},"Deployment fails with auth error:",{"type":51,"value":610}," Verify that the signed-in account has Contributor or Owner role on the target subscription. Check ",{"type":45,"tag":95,"props":612,"children":614},{"className":613},[],[615],{"type":51,"value":200},{"type":51,"value":617}," output.",{"type":45,"tag":177,"props":619,"children":620},{},[621,626,628,634,636,642],{"type":45,"tag":115,"props":622,"children":623},{},[624],{"type":51,"value":625},"Deployment fails with resource conflict:",{"type":51,"value":627}," A previous deployment may still exist. Try running ",{"type":45,"tag":95,"props":629,"children":631},{"className":630},[],[632],{"type":51,"value":633},"Remove-TestResources.ps1",{"type":51,"value":635}," first, or use a different ",{"type":45,"tag":95,"props":637,"children":639},{"className":638},[],[640],{"type":51,"value":641},"BaseName",{"type":51,"value":210},{"type":45,"tag":177,"props":644,"children":645},{},[646,651,653,658],{"type":45,"tag":115,"props":647,"children":648},{},[649],{"type":51,"value":650},"Tests fail in record mode:",{"type":51,"value":652}," Check that all environment variables from the deployment are being passed correctly. Verify the ",{"type":45,"tag":95,"props":654,"children":656},{"className":655},[],[657],{"type":51,"value":274},{"type":51,"value":659}," file path is correct.",{"type":45,"tag":177,"props":661,"children":662},{},[663,668],{"type":45,"tag":115,"props":664,"children":665},{},[666],{"type":51,"value":667},"Assets push fails after recording:",{"type":51,"value":669}," Ensure the assets repo is configured and accessible. Check git authentication.",{"items":671,"total":838},[672,691,708,725,732,747,760,775,786,800,813,826],{"slug":673,"name":673,"fn":674,"description":675,"org":676,"tags":677,"stars":688,"repoUrl":689,"updatedAt":690},"azure-arg-external-evaluation-policy-author","author and test Azure Resource Graph policies","Use when the user wants to author, design, or test an Azure Policy that queries Azure Resource Graph (ARG) at request-time — i.e. a policy whose deny\u002Faudit decision depends on data from elsewhere in the subscription (sibling\u002Fparent resource state, RG-wide invariants, multi-hop relationships, etc.). Formally called Azure Policy External Evaluation; sometimes referred to colloquially as \"Invoke\". Drives an iterative KQL co-design loop against the user's real subscription via `az graph query`, then emits a policy definition, assignment, `.http` test flow, and an `EXPLANATION.md` companion. Read-only; never provisions anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[678,679,682,685],{"name":11,"slug":8,"type":14},{"name":680,"slug":681,"type":14},"Compliance","compliance",{"name":683,"slug":684,"type":14},"Governance","governance",{"name":686,"slug":687,"type":14},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":692,"name":692,"fn":693,"description":694,"org":695,"tags":696,"stars":705,"repoUrl":706,"updatedAt":707},"azure-blueprints-migration","migrate Azure Blueprints to Template Specs","Use when a user needs to migrate off Azure Blueprints (definitions and\u002For assignments) to Template Specs and Deployment Stacks before the January 31, 2027 retirement. Covers inventory, export, conversion to Bicep, policy decoupling, Template Spec publishing, Deployment Stack deployment with deny-settings, validation, and cutover.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[697,698,699,702],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":700,"slug":701,"type":14},"Infrastructure as Code","infrastructure-as-code",{"name":703,"slug":704,"type":14},"Migration","migration",260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":709,"name":709,"fn":710,"description":711,"org":712,"tags":713,"stars":24,"repoUrl":25,"updatedAt":724},"apiview-feedback-resolution","resolve APIView feedback on Azure SDKs","Analyze and resolve APIView review feedback on Azure SDK PRs. **UTILITY SKILL**. USE FOR: APIView comments, API review feedback, SDK API surface changes. DO NOT USE FOR: general code review, non-APIView feedback. INVOKES: azure-sdk-mcp:azsdk_apiview_get_comments, azure-sdk-mcp:azsdk_typespec_customized_code_update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[714,717,718,721],{"name":715,"slug":716,"type":14},"API Development","api-development",{"name":11,"slug":8,"type":14},{"name":719,"slug":720,"type":14},"Code Review","code-review",{"name":722,"slug":723,"type":14},"Documentation","documentation","2026-07-12T08:17:43.350876",{"slug":4,"name":4,"fn":5,"description":6,"org":726,"tags":727,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[728,729,730,731],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":19,"slug":20,"type":14},{"name":22,"slug":23,"type":14},{"slug":733,"name":733,"fn":734,"description":735,"org":736,"tags":737,"stars":24,"repoUrl":25,"updatedAt":746},"azsdk-common-prepare-release-plan","manage Azure SDK release plan work items","Create, get, update, abandon, and link SDK PRs to release plan work items for Azure SDK releases. **UTILITY SKILL**. USE FOR: \"create release plan\", \"get release plan\", \"update release plan\", \"update API spec in release plan\", \"update SDK details in release plan\", \"abandon release plan\", \"link SDK PR to plan\", \"namespace approval\", \"check release plan status\". DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[738,739,742,745],{"name":11,"slug":8,"type":14},{"name":740,"slug":741,"type":14},"GitHub","github",{"name":743,"slug":744,"type":14},"Project Management","project-management",{"name":19,"slug":20,"type":14},"2026-07-12T08:17:38.345387",{"slug":748,"name":748,"fn":749,"description":750,"org":751,"tags":752,"stars":24,"repoUrl":25,"updatedAt":759},"azsdk-common-sdk-release","release Azure SDK packages","Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: \"release SDK\", \"trigger release\", \"check release readiness\", \"release pipeline\", \"publish package\", \"ship SDK\". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[753,754,757,758],{"name":11,"slug":8,"type":14},{"name":755,"slug":756,"type":14},"CI\u002FCD","ci-cd",{"name":16,"slug":17,"type":14},{"name":19,"slug":20,"type":14},"2026-07-12T08:17:34.27607",{"slug":761,"name":761,"fn":762,"description":763,"org":764,"tags":765,"stars":24,"repoUrl":25,"updatedAt":774},"azure-typespec-author","author and modify Azure TypeSpec API specifications","Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec\u002Ftsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[766,767,768,771],{"name":715,"slug":716,"type":14},{"name":11,"slug":8,"type":14},{"name":769,"slug":770,"type":14},"OpenAPI","openapi",{"name":772,"slug":773,"type":14},"Technical Writing","technical-writing","2026-07-12T08:17:39.603232",{"slug":776,"name":776,"fn":777,"description":778,"org":779,"tags":780,"stars":24,"repoUrl":25,"updatedAt":785},"generate-sdk-locally","generate and test Azure SDKs locally","Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization. WHEN: \"generate SDK locally\", \"build SDK\", \"run SDK tests\", \"run CI checks\", \"validate package\", \"run checks\", \"update changelog\", \"fix SDK build errors\", \"fix breaking changes\", \"resolve SDK generation errors\", \"customize TypeSpec\", \"rename SDK client\", \"rename SDK model\", \"hide operation from SDK\", \"fix analyzer errors\", \"resolve customization drift\", \"create subclient\", \"update metadata\", \"update version\". DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API design review. INVOKES: azsdk_verify_setup, azsdk_package_generate_code, azsdk_package_build_code, azsdk_package_run_check, azsdk_package_run_tests, azsdk_customized_code_update, azsdk_package_update_changelog_content, azsdk_package_update_metadata, azsdk_package_update_version.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[781,782,783,784],{"name":11,"slug":8,"type":14},{"name":755,"slug":756,"type":14},{"name":19,"slug":20,"type":14},{"name":22,"slug":23,"type":14},"2026-07-12T08:17:37.08523",{"slug":787,"name":787,"fn":788,"description":789,"org":790,"tags":791,"stars":24,"repoUrl":25,"updatedAt":799},"markdown-token-optimizer","optimize markdown files for token efficiency","Analyze markdown files for token efficiency and reduce context-window bloat. **UTILITY SKILL**. DO NOT USE FOR: code optimization, general file editing, non-markdown files. TRIGGERS: optimize markdown, reduce tokens, token count, token bloat, too many tokens, make concise, shrink file, file too large, optimize for AI, token efficiency, verbose markdown, reduce file size. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[792,795,798],{"name":793,"slug":794,"type":14},"LLM","llm",{"name":796,"slug":797,"type":14},"Performance","performance",{"name":772,"slug":773,"type":14},"2026-07-12T08:17:42.080413",{"slug":801,"name":801,"fn":802,"description":803,"org":804,"tags":805,"stars":24,"repoUrl":25,"updatedAt":812},"pipeline-troubleshooting","troubleshoot Azure SDK CI pipelines","Diagnose and resolve failures in Azure SDK CI and generation pipelines. **UTILITY SKILL**. USE FOR: \"pipeline failed\", \"build failure\", \"CI check failing\", \"SDK generation error\", \"reproduce pipeline locally\", \"debug SDK pipeline\". DO NOT USE FOR: local build issues without pipeline context, API design review, SDK publishing. INVOKES: azure-sdk-mcp:azsdk_analyze_pipeline, azure-sdk-mcp:azsdk_package_build_code, azure-sdk-mcp:azsdk_package_run_check.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[806,807,808,811],{"name":11,"slug":8,"type":14},{"name":755,"slug":756,"type":14},{"name":809,"slug":810,"type":14},"Debugging","debugging",{"name":19,"slug":20,"type":14},"2026-07-12T08:17:40.821512",{"slug":814,"name":814,"fn":815,"description":816,"org":817,"tags":818,"stars":24,"repoUrl":25,"updatedAt":825},"sensei","improve skill frontmatter compliance","**WORKFLOW SKILL** — Iteratively improve skill frontmatter compliance using the Ralph loop pattern. WHEN: \"run sensei\", \"sensei help\", \"improve skill\", \"fix frontmatter\", \"skill compliance\", \"frontmatter audit\", \"score skill\", \"check skill tokens\". INVOKES: token counting tools, test runners, git commands. FOR SINGLE OPERATIONS: use token CLI directly for counts\u002Fchecks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[819,820,821,824],{"name":11,"slug":8,"type":14},{"name":680,"slug":681,"type":14},{"name":822,"slug":823,"type":14},"Process Optimization","process-optimization",{"name":772,"slug":773,"type":14},"2026-07-12T08:17:32.970921",{"slug":827,"name":827,"fn":828,"description":829,"org":830,"tags":831,"stars":24,"repoUrl":25,"updatedAt":837},"skill-authoring","author agent skills for agentskills.io","Write Agent Skills that comply with the agentskills.io specification. WHEN: \"create a skill\", \"new skill\", \"write a skill\", \"skill template\", \"skill structure\", \"review skill\", \"skill PR\", \"skill compliance\", \"SKILL.md format\", \"skill frontmatter\", \"skill best practices\". DO NOT USE FOR: improving existing skills (use sensei), general documentation. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[832,833,836],{"name":722,"slug":723,"type":14},{"name":834,"slug":835,"type":14},"Plugin Development","plugin-development",{"name":772,"slug":773,"type":14},"2026-07-12T08:17:35.873862",109,{"items":840,"total":889},[841,848,855,862,869,876,883],{"slug":709,"name":709,"fn":710,"description":711,"org":842,"tags":843,"stars":24,"repoUrl":25,"updatedAt":724},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[844,845,846,847],{"name":715,"slug":716,"type":14},{"name":11,"slug":8,"type":14},{"name":719,"slug":720,"type":14},{"name":722,"slug":723,"type":14},{"slug":4,"name":4,"fn":5,"description":6,"org":849,"tags":850,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[851,852,853,854],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":19,"slug":20,"type":14},{"name":22,"slug":23,"type":14},{"slug":733,"name":733,"fn":734,"description":735,"org":856,"tags":857,"stars":24,"repoUrl":25,"updatedAt":746},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[858,859,860,861],{"name":11,"slug":8,"type":14},{"name":740,"slug":741,"type":14},{"name":743,"slug":744,"type":14},{"name":19,"slug":20,"type":14},{"slug":748,"name":748,"fn":749,"description":750,"org":863,"tags":864,"stars":24,"repoUrl":25,"updatedAt":759},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[865,866,867,868],{"name":11,"slug":8,"type":14},{"name":755,"slug":756,"type":14},{"name":16,"slug":17,"type":14},{"name":19,"slug":20,"type":14},{"slug":761,"name":761,"fn":762,"description":763,"org":870,"tags":871,"stars":24,"repoUrl":25,"updatedAt":774},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[872,873,874,875],{"name":715,"slug":716,"type":14},{"name":11,"slug":8,"type":14},{"name":769,"slug":770,"type":14},{"name":772,"slug":773,"type":14},{"slug":776,"name":776,"fn":777,"description":778,"org":877,"tags":878,"stars":24,"repoUrl":25,"updatedAt":785},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[879,880,881,882],{"name":11,"slug":8,"type":14},{"name":755,"slug":756,"type":14},{"name":19,"slug":20,"type":14},{"name":22,"slug":23,"type":14},{"slug":787,"name":787,"fn":788,"description":789,"org":884,"tags":885,"stars":24,"repoUrl":25,"updatedAt":799},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[886,887,888],{"name":793,"slug":794,"type":14},{"name":796,"slug":797,"type":14},{"name":772,"slug":773,"type":14},10]