{"id":"ec7a7d5b-cff8-418f-b5c0-cb1805a93a40","shortId":"5cB74U","kind":"skill","title":"azure-resource-manager-playwright-dotnet","tagline":"Azure Resource Manager SDK for Microsoft Playwright Testing in .NET.","description":"# Azure.ResourceManager.Playwright (.NET)\n\nManagement plane SDK for provisioning and managing Microsoft Playwright Testing workspaces via Azure Resource Manager.\n\n> **⚠️ Management vs Test Execution**\n> - **This SDK (Azure.ResourceManager.Playwright)**: Create workspaces, manage quotas, check name availability\n> - **Test Execution SDK (Azure.Developer.MicrosoftPlaywrightTesting.NUnit)**: Run Playwright tests at scale on cloud browsers\n\n## Installation\n\n```bash\ndotnet add package Azure.ResourceManager.Playwright\ndotnet add package Azure.Identity\n```\n\n**Current Versions**: Stable v1.0.0, Preview v1.0.0-beta.1\n\n## Environment Variables\n\n```bash\nAZURE_SUBSCRIPTION_ID=<your-subscription-id>\n# For service principal auth (optional)\nAZURE_TENANT_ID=<tenant-id>\nAZURE_CLIENT_ID=<client-id>\nAZURE_CLIENT_SECRET=<client-secret>\n```\n\n## Authentication\n\n```csharp\nusing Azure.Identity;\nusing Azure.ResourceManager;\nusing Azure.ResourceManager.Playwright;\n\n// Always use DefaultAzureCredential\nvar credential = new DefaultAzureCredential();\nvar armClient = new ArmClient(credential);\n\n// Get subscription\nvar subscriptionId = Environment.GetEnvironmentVariable(\"AZURE_SUBSCRIPTION_ID\");\nvar subscription = armClient.GetSubscriptionResource(\n    new ResourceIdentifier($\"/subscriptions/{subscriptionId}\"));\n```\n\n## Resource Hierarchy\n\n```\nArmClient\n└── SubscriptionResource\n    ├── PlaywrightQuotaResource (subscription-level quotas)\n    └── ResourceGroupResource\n        └── PlaywrightWorkspaceResource\n            └── PlaywrightWorkspaceQuotaResource (workspace-level quotas)\n```\n\n## Core Workflow\n\n### 1. Create Playwright Workspace\n\n```csharp\nusing Azure.ResourceManager.Playwright;\nusing Azure.ResourceManager.Playwright.Models;\n\n// Get resource group\nvar resourceGroup = await subscription\n    .GetResourceGroupAsync(\"my-resource-group\");\n\n// Define workspace\nvar workspaceData = new PlaywrightWorkspaceData(AzureLocation.WestUS3)\n{\n    // Optional: Configure regional affinity and local auth\n    RegionalAffinity = PlaywrightRegionalAffinity.Enabled,\n    LocalAuth = PlaywrightLocalAuth.Enabled,\n    Tags =\n    {\n        [\"Team\"] = \"Dev Exp\",\n        [\"Environment\"] = \"Production\"\n    }\n};\n\n// Create workspace (long-running operation)\nvar workspaceCollection = resourceGroup.Value.GetPlaywrightWorkspaces();\nvar operation = await workspaceCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-playwright-workspace\",\n    workspaceData);\n\nPlaywrightWorkspaceResource workspace = operation.Value;\n\n// Get the data plane URI for running tests\nConsole.WriteLine($\"Data Plane URI: {workspace.Data.DataplaneUri}\");\nConsole.WriteLine($\"Workspace ID: {workspace.Data.WorkspaceId}\");\n```\n\n### 2. Get Existing Workspace\n\n```csharp\n// Get by name\nvar workspace = await workspaceCollection.GetAsync(\"my-playwright-workspace\");\n\n// Or check if exists first\nbool exists = await workspaceCollection.ExistsAsync(\"my-playwright-workspace\");\nif (exists)\n{\n    var existingWorkspace = await workspaceCollection.GetAsync(\"my-playwright-workspace\");\n    Console.WriteLine($\"Workspace found: {existingWorkspace.Value.Data.Name}\");\n}\n```\n\n### 3. List Workspaces\n\n```csharp\n// List in resource group\nawait foreach (var workspace in workspaceCollection.GetAllAsync())\n{\n    Console.WriteLine($\"Workspace: {workspace.Data.Name}\");\n    Console.WriteLine($\"  Location: {workspace.Data.Location}\");\n    Console.WriteLine($\"  State: {workspace.Data.ProvisioningState}\");\n    Console.WriteLine($\"  Data Plane URI: {workspace.Data.DataplaneUri}\");\n}\n\n// List across subscription\nawait foreach (var workspace in subscription.GetPlaywrightWorkspacesAsync())\n{\n    Console.WriteLine($\"Workspace: {workspace.Data.Name}\");\n}\n```\n\n### 4. Update Workspace\n\n```csharp\nvar patch = new PlaywrightWorkspacePatch\n{\n    Tags =\n    {\n        [\"Team\"] = \"Dev Exp\",\n        [\"Environment\"] = \"Staging\",\n        [\"UpdatedAt\"] = DateTime.UtcNow.ToString(\"o\")\n    }\n};\n\nvar updatedWorkspace = await workspace.Value.UpdateAsync(patch);\n```\n\n### 5. Check Name Availability\n\n```csharp\nusing Azure.ResourceManager.Playwright.Models;\n\nvar checkRequest = new PlaywrightCheckNameAvailabilityContent\n{\n    Name = \"my-new-workspace\",\n    ResourceType = \"Microsoft.LoadTestService/playwrightWorkspaces\"\n};\n\nvar result = await subscription.CheckPlaywrightNameAvailabilityAsync(checkRequest);\n\nif (result.Value.IsNameAvailable == true)\n{\n    Console.WriteLine(\"Name is available!\");\n}\nelse\n{\n    Console.WriteLine($\"Name unavailable: {result.Value.Message}\");\n    Console.WriteLine($\"Reason: {result.Value.Reason}\");\n}\n```\n\n### 6. Get Quota Information\n\n```csharp\n// Subscription-level quotas\nawait foreach (var quota in subscription.GetPlaywrightQuotasAsync(AzureLocation.WestUS3))\n{\n    Console.WriteLine($\"Quota: {quota.Data.Name}\");\n    Console.WriteLine($\"  Limit: {quota.Data.Limit}\");\n    Console.WriteLine($\"  Used: {quota.Data.Used}\");\n}\n\n// Workspace-level quotas\nvar workspaceQuotas = workspace.Value.GetAllPlaywrightWorkspaceQuota();\nawait foreach (var quota in workspaceQuotas.GetAllAsync())\n{\n    Console.WriteLine($\"Workspace Quota: {quota.Data.Name}\");\n}\n```\n\n### 7. Delete Workspace\n\n```csharp\n// Delete (long-running operation)\nawait workspace.Value.DeleteAsync(WaitUntil.Completed);\n```\n\n## Key Types Reference\n\n| Type | Purpose |\n|------|---------|\n| `ArmClient` | Entry point for all ARM operations |\n| `PlaywrightWorkspaceResource` | Represents a Playwright Testing workspace |\n| `PlaywrightWorkspaceCollection` | Collection for workspace CRUD |\n| `PlaywrightWorkspaceData` | Workspace creation/response payload |\n| `PlaywrightWorkspacePatch` | Workspace update payload |\n| `PlaywrightQuotaResource` | Subscription-level quota information |\n| `PlaywrightWorkspaceQuotaResource` | Workspace-level quota information |\n| `PlaywrightExtensions` | Extension methods for ARM resources |\n| `PlaywrightCheckNameAvailabilityContent` | Name availability check request |\n\n## Workspace Properties\n\n| Property | Description |\n|----------|-------------|\n| `DataplaneUri` | URI for running tests (e.g., `https://api.dataplane.{guid}.domain.com`) |\n| `WorkspaceId` | Unique workspace identifier (GUID) |\n| `RegionalAffinity` | Enable/disable regional affinity for test execution |\n| `LocalAuth` | Enable/disable local authentication (access tokens) |\n| `ProvisioningState` | Current provisioning state (Succeeded, Failed, etc.) |\n\n## Best Practices\n\n1. **Use `WaitUntil.Completed`** for operations that must finish before proceeding\n2. **Use `WaitUntil.Started`** when you want to poll manually or run operations in parallel\n3. **Always use `DefaultAzureCredential`** — never hardcode keys\n4. **Handle `RequestFailedException`** for ARM API errors\n5. **Use `CreateOrUpdateAsync`** for idempotent operations\n6. **Navigate hierarchy** via `Get*` methods (e.g., `resourceGroup.GetPlaywrightWorkspaces()`)\n7. **Store the DataplaneUri** after workspace creation for test execution configuration\n\n## Error Handling\n\n```csharp\nusing Azure;\n\ntry\n{\n    var operation = await workspaceCollection.CreateOrUpdateAsync(\n        WaitUntil.Completed, workspaceName, workspaceData);\n}\ncatch (RequestFailedException ex) when (ex.Status == 409)\n{\n    Console.WriteLine(\"Workspace already exists\");\n}\ncatch (RequestFailedException ex) when (ex.Status == 400)\n{\n    Console.WriteLine($\"Bad request: {ex.Message}\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n}\n```\n\n## Integration with Test Execution\n\nAfter creating a workspace, use the `DataplaneUri` to configure your Playwright tests:\n\n```csharp\n// 1. Create workspace (this SDK)\nvar workspace = await workspaceCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed, \"my-workspace\", workspaceData);\n\n// 2. Get the service URL\nvar serviceUrl = workspace.Value.Data.DataplaneUri;\n\n// 3. Set environment variable for test execution\nEnvironment.SetEnvironmentVariable(\"PLAYWRIGHT_SERVICE_URL\", serviceUrl.ToString());\n\n// 4. Run tests using Azure.Developer.MicrosoftPlaywrightTesting.NUnit\n// (separate package for test execution)\n```\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Azure.ResourceManager.Playwright` | Management plane (this SDK) | `dotnet add package Azure.ResourceManager.Playwright` |\n| `Azure.Developer.MicrosoftPlaywrightTesting.NUnit` | Run NUnit Playwright tests at scale | `dotnet add package Azure.Developer.MicrosoftPlaywrightTesting.NUnit --prerelease` |\n| `Azure.Developer.Playwright` | Playwright client library | `dotnet add package Azure.Developer.Playwright` |\n\n## API Information\n\n- **Resource Provider**: `Microsoft.LoadTestService`\n- **Default API Version**: `2025-09-01`\n- **Resource Type**: `Microsoft.LoadTestService/playwrightWorkspaces`\n\n## Documentation Links\n\n- [Azure.ResourceManager.Playwright API Reference](https://learn.microsoft.com/en-us/dotnet/api/azure.resourcemanager.playwright)\n- [Microsoft Playwright Testing Overview](https://learn.microsoft.com/en-us/azure/playwright-testing/overview-what-is-microsoft-playwright-testing)\n- [Quickstart: Run Playwright Tests at Scale](https://learn.microsoft.com/en-us/azure/playwright-testing/quickstart-run-end-to-end-tests)\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","resource","manager","playwright","dotnet","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills"],"capabilities":["skill","source-sickn33","skill-azure-resource-manager-playwright-dotnet","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-resource-manager-playwright-dotnet","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34928 github stars · SKILL.md body (9,632 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T18:50:33.285Z","embedding":null,"createdAt":"2026-04-18T21:32:59.672Z","updatedAt":"2026-04-24T18:50:33.285Z","lastSeenAt":"2026-04-24T18:50:33.285Z","tsv":"'-01':736 '-09':735 '/en-us/azure/playwright-testing/overview-what-is-microsoft-playwright-testing)':756 '/en-us/azure/playwright-testing/quickstart-run-end-to-end-tests)':765 '/en-us/dotnet/api/azure.resourcemanager.playwright)':749 '/playwrightworkspaces':357,741 '/subscriptions':129 '1':149,526,648 '2':233,536,662 '2025':734 '3':276,550,670 '4':316,557,682 '400':617 '409':607 '5':338,564 '6':378,570 '7':420,578 'access':515 'across':305 'action':778 'add':63,67,703,714,723 'affin':180,507 'alreadi':610 'alway':104,551 'api':562,726,732,745 'api.dataplane':496 'applic':772 'arm':442,479,561,626 'armclient':112,114,133,437 'armclient.getsubscriptionresource':126 'ask':816 'auth':85,183 'authent':96,514 'avail':47,341,369,483 'await':163,205,243,256,266,284,307,335,360,387,410,429,597,655 'azur':2,7,31,79,87,90,93,121,593 'azure-resource-manager-playwright-dotnet':1 'azure.developer.microsoftplaywrighttesting.nunit':51,686,706,716 'azure.developer.playwright':718,725 'azure.identity':69,99 'azure.resourcemanager':101 'azure.resourcemanager.playwright':17,40,65,103,155,697,705,744 'azure.resourcemanager.playwright.models':157,344 'azurelocation.westus3':176,393 'bad':619 'bash':61,78 'best':524 'bool':254 'boundari':824 'browser':59 'catch':602,612,622 'check':45,250,339,484 'checkrequest':346,362 'clarif':818 'clear':791 'client':91,94,720 'cloud':58 'collect':451 'configur':178,588,643 'console.writeline':224,229,272,290,293,296,299,313,366,371,375,394,397,400,416,608,618,625 'core':147 'creat':41,150,194,636,649 'createorupdateasync':566 'creation':584 'creation/response':457 'credenti':108,115 'criteria':827 'crud':454 'csharp':97,153,237,279,319,342,382,423,591,647 'current':70,518 'data':218,225,300 'dataplaneuri':490,581,641 'datetime.utcnow.tostring':331 'default':731 'defaultazurecredenti':106,110,553 'defin':170 'delet':421,424 'describ':779,795 'descript':489 'dev':190,326 'document':742 'domain.com':498 'dotnet':6,62,66,702,713,722 'e.g':495,576 'els':370 'enable/disable':505,512 'entri':438 'environ':76,192,328,672,807 'environment-specif':806 'environment.getenvironmentvariable':120 'environment.setenvironmentvariable':677 'error':563,589,627 'etc':523 'ex':604,614,624 'ex.errorcode':629 'ex.message':621,630 'ex.status':606,616,628 'execut':37,49,510,587,634,676,691,774 'exist':235,252,255,263,611 'existingworkspac':265 'existingworkspace.value.data.name':275 'exp':191,327 'expert':812 'extens':476 'fail':522 'finish':533 'first':253 'foreach':285,308,388,411 'found':274 'get':116,158,216,234,238,379,574,663 'getresourcegroupasync':165 'group':160,169,283 'guid':497,503 'handl':558,590 'hardcod':555 'hierarchi':132,572 'id':81,89,92,123,231 'idempot':568 'identifi':502 'inform':381,468,474,727 'input':821 'instal':60,696 'integr':631 'key':432,556 'learn.microsoft.com':748,755,764 'learn.microsoft.com/en-us/azure/playwright-testing/overview-what-is-microsoft-playwright-testing)':754 'learn.microsoft.com/en-us/azure/playwright-testing/quickstart-run-end-to-end-tests)':763 'learn.microsoft.com/en-us/dotnet/api/azure.resourcemanager.playwright)':747 'level':138,145,385,405,466,472 'librari':721 'limit':398,783 'link':743 'list':277,280,304 'local':182,513 'localauth':186,511 'locat':294 'long':197,426 'long-run':196,425 'manag':4,9,19,25,33,34,43,698 'manual':544 'match':792 'method':477,575 'microsoft':12,26,750 'microsoft.loadtestservice':356,730,740 'microsoft.loadtestservice/playwrightworkspaces':355,739 'miss':829 'must':532 'my-new-workspac':350 'my-playwright-workspac':208,245,258,268 'my-resource-group':166 'my-workspac':658 'name':46,240,340,349,367,372,482 'navig':571 'net':16,18 'never':554 'new':109,113,127,174,322,347,352 'nunit':708 'o':332 'oper':199,204,428,443,530,547,569,596 'operation.value':215 'option':86,177 'output':801 'overview':753,782 'packag':64,68,688,704,715,724 'parallel':549 'patch':321,337 'payload':458,462 'permiss':822 'plane':20,219,226,301,699 'playwright':5,13,27,53,151,210,247,260,270,447,645,678,709,719,751,759 'playwrightchecknameavailabilitycont':348,481 'playwrightextens':475 'playwrightlocalauth.enabled':187 'playwrightquotaresourc':135,463 'playwrightregionalaffinity.enabled':185 'playwrightworkspacecollect':450 'playwrightworkspacedata':175,455 'playwrightworkspacepatch':323,459 'playwrightworkspacequotaresourc':142,469 'playwrightworkspaceresourc':141,213,444 'point':439 'poll':543 'practic':525 'prereleas':717 'preview':74 'princip':84 'proceed':535 'product':193 'properti':487,488 'provid':729 'provis':23,519 'provisioningst':517 'purpos':436,695 'quickstart':757 'quota':44,139,146,380,386,390,395,406,413,418,467,473 'quota.data.limit':399 'quota.data.name':396,419 'quota.data.used':402 'reason':376 'refer':434,746 'region':179,506 'regionalaffin':184,504 'relat':692 'repres':445 'request':485,620 'requestfailedexcept':559,603,613,623 'requir':820 'resourc':3,8,32,131,159,168,282,480,728,737 'resourcegroup':162 'resourcegroup.getplaywrightworkspaces':577 'resourcegroup.value.getplaywrightworkspaces':202 'resourcegroupresourc':140 'resourceidentifi':128 'resourcetyp':354 'result':359 'result.value.isnameavailable':364 'result.value.message':374 'result.value.reason':377 'review':813 'run':52,198,222,427,493,546,683,707,758 'safeti':823 'scale':56,712,762 'scope':794 'sdk':10,21,39,50,652,694,701 'sdks':693 'secret':95 'separ':687 'servic':83,665,679 'serviceurl':668 'serviceurl.tostring':681 'set':671 'skill':770,786 'skill-azure-resource-manager-playwright-dotnet' 'source-sickn33' 'specif':808 'stabl':72 'stage':329 'state':297,520 'stop':814 'store':579 'subscript':80,117,122,125,137,164,306,384,465 'subscription-level':136,383,464 'subscription.checkplaywrightnameavailabilityasync':361 'subscription.getplaywrightquotasasync':392 'subscription.getplaywrightworkspacesasync':312 'subscriptionid':119,130 'subscriptionresourc':134 'substitut':804 'succeed':521 'success':826 'tag':188,324 'task':790 'team':189,325 'tenant':88 'test':14,28,36,48,54,223,448,494,509,586,633,646,675,684,690,710,752,760,810 'token':516 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':799 'tri':594 'true':365 'type':433,435,738 'unavail':373 'uniqu':500 'updat':317,461 'updatedat':330 'updatedworkspac':334 'uri':220,227,302,491 'url':666,680 'use':98,100,102,105,154,156,343,401,527,537,552,565,592,639,685,768,784 'v1.0.0':73 'v1.0.0-beta.1':75 'valid':809 'var':107,111,118,124,161,172,200,203,241,264,286,309,320,333,345,358,389,407,412,595,653,667 'variabl':77,673 'version':71,733 'via':30,573 'vs':35 'waituntil.completed':207,431,528,599,657 'waituntil.started':538 'want':541 'workflow':148,776 'workspac':29,42,144,152,171,195,211,214,230,236,242,248,261,271,273,278,287,291,310,314,318,353,404,417,422,449,453,456,460,471,486,501,583,609,638,650,654,660 'workspace-level':143,403,470 'workspace.data.dataplaneuri':228,303 'workspace.data.location':295 'workspace.data.name':292,315 'workspace.data.provisioningstate':298 'workspace.data.workspaceid':232 'workspace.value.data.dataplaneuri':669 'workspace.value.deleteasync':430 'workspace.value.getallplaywrightworkspacequota':409 'workspace.value.updateasync':336 'workspacecollect':201 'workspacecollection.createorupdateasync':206,598,656 'workspacecollection.existsasync':257 'workspacecollection.getallasync':289 'workspacecollection.getasync':244,267 'workspacedata':173,212,601,661 'workspaceid':499 'workspacenam':600 'workspacequota':408 'workspacequotas.getallasync':415","prices":[{"id":"7a41d94a-2e02-43cc-b7da-7b117854144c","listingId":"ec7a7d5b-cff8-418f-b5c0-cb1805a93a40","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:32:59.672Z"}],"sources":[{"listingId":"ec7a7d5b-cff8-418f-b5c0-cb1805a93a40","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-resource-manager-playwright-dotnet","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-resource-manager-playwright-dotnet","isPrimary":false,"firstSeenAt":"2026-04-18T21:32:59.672Z","lastSeenAt":"2026-04-24T18:50:33.285Z"}],"details":{"listingId":"ec7a7d5b-cff8-418f-b5c0-cb1805a93a40","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-resource-manager-playwright-dotnet","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34928,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"05fa380aa6c5092fb1fa2a6a84aaaf61cfb21f2d","skill_md_path":"skills/azure-resource-manager-playwright-dotnet/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-resource-manager-playwright-dotnet"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-resource-manager-playwright-dotnet","description":"Azure Resource Manager SDK for Microsoft Playwright Testing in .NET."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-resource-manager-playwright-dotnet"},"updatedAt":"2026-04-24T18:50:33.285Z"}}