{"data":{"skill":{"slug":"sickn33-azure-resource-manager-playwright-dotnet","name":"azure-resource-manager-playwright-dotnet","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-resource-manager-playwright-dotnet","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"6e0d5ea4-0bb6-4a44-9bbf-3c8d6221c049","skill_id":"9bfa4b8b-56c0-4ce8-99f2-a7a86e76970a","version":5,"content_hash":"v3:f9e2c34b4f19c7f3e6b0a1e93227b5f77cc12526:18ce2a356c717343c094590102eef3cdf6e4b84a0be5140bc42c4ef8f727e5be:8bd26f9d687fc2424a51b15fe4d82b2cc7479f52317cd566632e8c2f631951fa:736b696c6c732f7369636b6e33332f617a7572652d7265736f757263652d6d616e616765722d706c61797772696768742d646f746e6574:1c13f88c0862d341b75971cd6546e856","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 59 static findings are false positives caused by Markdown formatting, documentation links, or placeholder credential variables. Two semantic concerns remain: the production example enables local authentication, and the deletion example lacks confirmation guidance.","remediation":[{"issue":"The production workspace example enables local authentication.","severity":"medium","suggestion":"Disable local authentication by default and explain when an exception is justified."},{"issue":"The deletion example lacks target verification and confirmation guidance.","severity":"medium","suggestion":"Require explicit confirmation and display the subscription, resource group, and workspace before deletion."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":22,"line_start":19},{"file":"SKILL.md","line_end":28,"line_start":22},{"file":"SKILL.md","line_end":34,"line_start":28},{"file":"SKILL.md","line_end":38,"line_start":34},{"file":"SKILL.md","line_end":51,"line_start":38},{"file":"SKILL.md","line_end":55,"line_start":51},{"file":"SKILL.md","line_end":62,"line_start":55},{"file":"SKILL.md","line_end":68,"line_start":62},{"file":"SKILL.md","line_end":101,"line_start":68},{"file":"SKILL.md","line_end":105,"line_start":101},{"file":"SKILL.md","line_end":116,"line_start":105},{"file":"SKILL.md","line_end":120,"line_start":116},{"file":"SKILL.md","line_end":135,"line_start":120},{"file":"SKILL.md","line_end":139,"line_start":135},{"file":"SKILL.md","line_end":151,"line_start":139},{"file":"SKILL.md","line_end":155,"line_start":151},{"file":"SKILL.md","line_end":175,"line_start":155},{"file":"SKILL.md","line_end":179,"line_start":175},{"file":"SKILL.md","line_end":194,"line_start":179},{"file":"SKILL.md","line_end":198,"line_start":194},{"file":"SKILL.md","line_end":201,"line_start":198},{"file":"SKILL.md","line_end":207,"line_start":201},{"file":"SKILL.md","line_end":208,"line_start":207},{"file":"SKILL.md","line_end":209,"line_start":208},{"file":"SKILL.md","line_end":210,"line_start":209},{"file":"SKILL.md","line_end":211,"line_start":210},{"file":"SKILL.md","line_end":212,"line_start":211},{"file":"SKILL.md","line_end":213,"line_start":212},{"file":"SKILL.md","line_end":214,"line_start":213},{"file":"SKILL.md","line_end":215,"line_start":214},{"file":"SKILL.md","line_end":221,"line_start":215},{"file":"SKILL.md","line_end":221,"line_start":221},{"file":"SKILL.md","line_end":223,"line_start":222},{"file":"SKILL.md","line_end":224,"line_start":223},{"file":"SKILL.md","line_end":225,"line_start":224},{"file":"SKILL.md","line_end":229,"line_start":225},{"file":"SKILL.md","line_end":230,"line_start":229},{"file":"SKILL.md","line_end":231,"line_start":230},{"file":"SKILL.md","line_end":232,"line_start":231},{"file":"SKILL.md","line_end":233,"line_start":232},{"file":"SKILL.md","line_end":234,"line_start":233},{"file":"SKILL.md","line_end":234,"line_start":234},{"file":"SKILL.md","line_end":259,"line_start":239},{"file":"SKILL.md","line_end":263,"line_start":259},{"file":"SKILL.md","line_end":265,"line_start":263},{"file":"SKILL.md","line_end":278,"line_start":265},{"file":"SKILL.md","line_end":284,"line_start":278},{"file":"SKILL.md","line_end":284,"line_start":284},{"file":"SKILL.md","line_end":285,"line_start":285},{"file":"SKILL.md","line_end":286,"line_start":286}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":221,"line_start":221},{"file":"SKILL.md","line_end":296,"line_start":296},{"file":"SKILL.md","line_end":297,"line_start":297},{"file":"SKILL.md","line_end":298,"line_start":298}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":31,"line_start":31},{"file":"SKILL.md","line_end":32,"line_start":32},{"file":"SKILL.md","line_end":33,"line_start":33}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Local Authentication Enabled in Production Example","locations":[{"file":"SKILL.md","line_end":85,"line_start":79}],"confidence":0.94,"description":"The production-tagged workspace example enables local authentication, allowing access-token authentication instead of an identity-only posture.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The example explicitly sets LocalAuth to Enabled and tags the resource as Production. This is clear guidance that can weaken authentication controls."},{"title":"Workspace Deletion Lacks Confirmation Guidance","locations":[{"file":"SKILL.md","line_end":200,"line_start":196}],"confidence":0.92,"description":"The skill provides a completed Azure workspace deletion operation without requiring target verification or explicit user confirmation.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The documented call waits for deletion to complete, and the surrounding guidance contains no confirmation or resource identity safeguard."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":307,"audit_model":"codex","audited_at":"2026-07-23T22:26:03.673+00:00","created_at":"2026-07-26T06:21:48.25771+00:00","static_findings":[{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":22,"severity":"medium","line_start":19},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":28,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":34,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":38,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":51,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":55,"severity":"medium","line_start":51},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":62,"severity":"medium","line_start":55},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":68,"severity":"medium","line_start":62},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":101,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":105,"severity":"medium","line_start":101},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":116,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":120,"severity":"medium","line_start":116},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":135,"severity":"medium","line_start":120},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":139,"severity":"medium","line_start":135},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":151,"severity":"medium","line_start":139},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":155,"severity":"medium","line_start":151},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":175,"severity":"medium","line_start":155},{"id":"external_commands:SKILL.md:175:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":179,"severity":"medium","line_start":175},{"id":"external_commands:SKILL.md:179:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":194,"severity":"medium","line_start":179},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":198,"severity":"medium","line_start":194},{"id":"external_commands:SKILL.md:198:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":201,"severity":"medium","line_start":198},{"id":"external_commands:SKILL.md:201:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":207,"severity":"medium","line_start":201},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `ArmClient` | Entry point for all ARM operations |","category":"external_commands","line_end":208,"severity":"medium","line_start":207},{"id":"external_commands:SKILL.md:208:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PlaywrightWorkspaceResource` | Represents a Playwright Testing workspace |","category":"external_commands","line_end":209,"severity":"medium","line_start":208},{"id":"external_commands:SKILL.md:209:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PlaywrightWorkspaceCollection` | Collection for workspace CRUD |","category":"external_commands","line_end":210,"severity":"medium","line_start":209},{"id":"external_commands:SKILL.md:210:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PlaywrightWorkspaceData` | Workspace creation/response payload |","category":"external_commands","line_end":211,"severity":"medium","line_start":210},{"id":"external_commands:SKILL.md:211:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PlaywrightWorkspacePatch` | Workspace update payload |","category":"external_commands","line_end":212,"severity":"medium","line_start":211},{"id":"external_commands:SKILL.md:212:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PlaywrightQuotaResource` | Subscription-level quota information |","category":"external_commands","line_end":213,"severity":"medium","line_start":212},{"id":"external_commands:SKILL.md:213:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PlaywrightWorkspaceQuotaResource` | Workspace-level quota information |","category":"external_commands","line_end":214,"severity":"medium","line_start":213},{"id":"external_commands:SKILL.md:214:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PlaywrightExtensions` | Extension methods for ARM resources |","category":"external_commands","line_end":215,"severity":"medium","line_start":214},{"id":"external_commands:SKILL.md:215:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `PlaywrightCheckNameAvailabilityContent` | Name availability check request |","category":"external_commands","line_end":221,"severity":"medium","line_start":215},{"id":"external_commands:SKILL.md:221:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `DataplaneUri` | URI for running tests (e.g., `https://api.dataplane.{guid}.domain.com`) |","category":"external_commands","line_end":221,"severity":"medium","line_start":221},{"id":"external_commands:SKILL.md:222:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `WorkspaceId` | Unique workspace identifier (GUID) |","category":"external_commands","line_end":223,"severity":"medium","line_start":222},{"id":"external_commands:SKILL.md:223:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `RegionalAffinity` | Enable/disable regional affinity for test execution |","category":"external_commands","line_end":224,"severity":"medium","line_start":223},{"id":"external_commands:SKILL.md:224:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `LocalAuth` | Enable/disable local authentication (access tokens) |","category":"external_commands","line_end":225,"severity":"medium","line_start":224},{"id":"external_commands:SKILL.md:225:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `ProvisioningState` | Current provisioning state (Succeeded, Failed, etc.) |","category":"external_commands","line_end":229,"severity":"medium","line_start":225},{"id":"external_commands:SKILL.md:229:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **Use `WaitUntil.Completed`** for operations that must finish before proceeding","category":"external_commands","line_end":230,"severity":"medium","line_start":229},{"id":"external_commands:SKILL.md:230:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. **Use `WaitUntil.Started`** when you want to poll manually or run operations in parallel","category":"external_commands","line_end":231,"severity":"medium","line_start":230},{"id":"external_commands:SKILL.md:231:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **Always use `DefaultAzureCredential`** — never hardcode keys","category":"external_commands","line_end":232,"severity":"medium","line_start":231},{"id":"external_commands:SKILL.md:232:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. **Handle `RequestFailedException`** for ARM API errors","category":"external_commands","line_end":233,"severity":"medium","line_start":232},{"id":"external_commands:SKILL.md:233:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. **Use `CreateOrUpdateAsync`** for idempotent operations","category":"external_commands","line_end":234,"severity":"medium","line_start":233},{"id":"external_commands:SKILL.md:234:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"6. **Navigate hierarchy** via `Get*` methods (e.g., `resourceGroup.GetPlaywrightWorkspaces()`)","category":"external_commands","line_end":234,"severity":"medium","line_start":234},{"id":"external_commands:SKILL.md:239:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":259,"severity":"medium","line_start":239},{"id":"external_commands:SKILL.md:259:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":263,"severity":"medium","line_start":259},{"id":"external_commands:SKILL.md:263:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"After creating a workspace, use the `DataplaneUri` to configure your Playwright tests:","category":"external_commands","line_end":265,"severity":"medium","line_start":263},{"id":"external_commands:SKILL.md:265:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```csharp","category":"external_commands","line_end":278,"severity":"medium","line_start":265},{"id":"external_commands:SKILL.md:278:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":284,"severity":"medium","line_start":278},{"id":"external_commands:SKILL.md:284:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Azure.ResourceManager.Playwright` | Management plane (this SDK) | `dotnet add package Azure.Resou","category":"external_commands","line_end":284,"severity":"medium","line_start":284},{"id":"external_commands:SKILL.md:285:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Azure.Developer.MicrosoftPlaywrightTesting.NUnit` | Run NUnit Playwright tests at scale | `dotnet","category":"external_commands","line_end":285,"severity":"medium","line_start":285},{"id":"external_commands:SKILL.md:286:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Azure.Developer.Playwright` | Playwright client library | `dotnet add package Azure.Developer.Pla","category":"external_commands","line_end":286,"severity":"medium","line_start":286},{"id":"external_commands:SKILL.md:290:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Resource Provider**: `Microsoft.LoadTestService`","category":"external_commands","line_end":291,"severity":"medium","line_start":290},{"id":"external_commands:SKILL.md:291:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Default API Version**: `2025-09-01`","category":"external_commands","line_end":292,"severity":"medium","line_start":291},{"id":"network:SKILL.md:221:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"| `DataplaneUri` | URI for running tests (e.g., `https://api.dataplane.{guid}.domain.com`) |","category":"network","line_end":221,"severity":"low","line_start":221},{"id":"network:SKILL.md:296:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Azure.ResourceManager.Playwright API Reference](https://learn.microsoft.com/en-us/dotnet/api/azur","category":"network","line_end":296,"severity":"low","line_start":296},{"id":"network:SKILL.md:297:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Microsoft Playwright Testing Overview](https://learn.microsoft.com/en-us/azure/playwright-testing","category":"network","line_end":297,"severity":"low","line_start":297},{"id":"network:SKILL.md:298:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Quickstart: Run Playwright Tests at Scale](https://learn.microsoft.com/en-us/azure/playwright-tes","category":"network","line_end":298,"severity":"low","line_start":298},{"id":"env_access:SKILL.md:31:azure-credential-environment-variables","file":"SKILL.md","pattern":"Azure credential environment variables","snippet":"AZURE_TENANT_ID=<tenant-id>","category":"env_access","line_end":31,"severity":"high","line_start":31},{"id":"env_access:SKILL.md:32:azure-credential-environment-variables","file":"SKILL.md","pattern":"Azure credential environment variables","snippet":"AZURE_CLIENT_ID=<client-id>","category":"env_access","line_end":32,"severity":"high","line_start":32},{"id":"env_access:SKILL.md:33:azure-credential-environment-variables","file":"SKILL.md","pattern":"Azure credential environment variables","snippet":"AZURE_CLIENT_SECRET=<client-secret>","category":"env_access","line_end":33,"severity":"high","line_start":33}],"finding_verdicts":[{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:175:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:179:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:198:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:201:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:208:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:209:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:210:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:211:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:212:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:213:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:214:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:215:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:221:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:222:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:223:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:224:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:225:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:229:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:230:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:231:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:232:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:233:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:234:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:239:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:259:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:263:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:265:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:278:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:284:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:285:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:286:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:290:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:291:ruby-shell-backtick-execution","reason":"The backticks are Markdown fencing or inline code formatting in documentation. SKILL.md contains no executable Ruby backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:221:hardcoded-url","reason":"This is an illustrative data-plane URI in a property reference. It does not initiate a network request or identify an exfiltration destination.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:296:hardcoded-url","reason":"This URL is a visible link to official Microsoft Learn documentation. It is not used for an automatic request or data transfer.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:297:hardcoded-url","reason":"This URL is a visible link to official Microsoft Learn documentation. It is not used for an automatic request or data transfer.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:298:hardcoded-url","reason":"This URL is a visible link to official Microsoft Learn documentation. It is not used for an automatic request or data transfer.","verdict":"false_positive","confidence":0.99},{"id":"env_access:SKILL.md:31:azure-credential-environment-variables","reason":"This is a placeholder variable assignment in a documentation example. It contains no credential and does not read, transmit, or expose an environment value.","verdict":"false_positive","confidence":0.99},{"id":"env_access:SKILL.md:32:azure-credential-environment-variables","reason":"This is a placeholder variable assignment in a documentation example. It contains no credential and does not read, transmit, or expose an environment value.","verdict":"false_positive","confidence":0.99},{"id":"env_access:SKILL.md:33:azure-credential-environment-variables","reason":"This is a placeholder variable assignment in a documentation example. It contains no credential and does not read, transmit, or expose an environment value.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Local Authentication Enabled in Production Example","severity":"medium","locations":[{"file":"SKILL.md","line_end":85,"line_start":79}],"confidence":0.94,"description":"The production-tagged workspace example enables local authentication, allowing access-token authentication instead of an identity-only posture.","confidence_reasoning":"The example explicitly sets LocalAuth to Enabled and tags the resource as Production. This is clear guidance that can weaken authentication controls."},{"title":"Workspace Deletion Lacks Confirmation Guidance","severity":"medium","locations":[{"file":"SKILL.md","line_end":200,"line_start":196}],"confidence":0.92,"description":"The skill provides a completed Azure workspace deletion operation without requiring target verification or explicit user confirmation.","confidence_reasoning":"The documented call waits for deletion to complete, and the surrounding guidance contains no confirmation or resource identity safeguard."}],"subject_marketplace_commit_sha":"f9e2c34b4f19c7f3e6b0a1e93227b5f77cc12526","subject_content_hash":"18ce2a356c717343c094590102eef3cdf6e4b84a0be5140bc42c4ef8f727e5be","subject_tree_hash":"8bd26f9d687fc2424a51b15fe4d82b2cc7479f52317cd566632e8c2f631951fa","subject_plugin_path":"skills/sickn33/azure-resource-manager-playwright-dotnet","audit_payload_hash":"1c13f88c0862d341b75971cd6546e856","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"f9e2c34b4f19c7f3e6b0a1e93227b5f77cc12526","contentHash":"18ce2a356c717343c094590102eef3cdf6e4b84a0be5140bc42c4ef8f727e5be","treeHash":"8bd26f9d687fc2424a51b15fe4d82b2cc7479f52317cd566632e8c2f631951fa","pluginPath":"skills/sickn33/azure-resource-manager-playwright-dotnet","auditPayloadHash":"1c13f88c0862d341b75971cd6546e856"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/sickn33-azure-resource-manager-playwright-dotnet/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}