[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JMT87KWSD71PHJV40KFDPF":3,"skill-same:01M6JMT87KWSD71PHJV40KFDPF":100},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":29,"publishedAt":50,"linkOnly":51,"markdownContent":52,"markdownBody":53,"frontMatter":54,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":64,"ownerHtmlUrl":65,"ownerBlogUrl":66,"ownerDescription":6,"updatedAt":67,"install":68,"resources":81},"01M6JMT87KWSD71PHJV40KFDPF","azure_microsoft_playwright_testing_ts",null,"Run Playwright tests at scale using Azure Playwright Workspaces (formerly Microsoft Playwright Testing). Use when scaling browser tests across cloud-hosted browsers, integrating with CI\u002FCD pipelines, or publishing test results to the Azure portal.","LongLeo287\u002FOmniClaw","LongLeo287","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F141803367?v=4","01M6JK75C62VCNZKR5BRZ386YV","LongLeo","01M6JK75GQ78TSP1ZPXNKK3MCH",9,"MIT","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_microsoft_playwright_testing_ts\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"playwright","microsoft","azure","azure microsoft playwright testing ts","testing","playwright testing","at","with","CI\u002FCD","azure portal","azure playwright workspaces","tests","scaling","across","workspaces","publishing","use","ci","browser","run","2026-11-10 10:12:30",false,"---\nname: azure_microsoft_playwright_testing_ts\n\ndescription: Run Playwright tests at scale using Azure Playwright Workspaces (formerly Microsoft Playwright Testing). Use when scaling browser tests across cloud-hosted browsers, integrating with CI\u002FCD pipelines, or publishing test results to the Azure portal.\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.0\"\n  package: '@azure\u002Fplaywright'\n---\n\n# Azure Playwright Workspaces SDK for TypeScript\n\nRun Playwright tests at scale with cloud-hosted browsers and integrated Azure portal reporting.\n\n> **Migration Notice:** `@azure\u002Fmicrosoft-playwright-testing` is retired on **March 8, 2026**. Use `@azure\u002Fplaywright` instead. See [migration guide](https:\u002F\u002Faka.ms\u002Fmpt\u002Fmigration-guidance).\n\n## Installation\n\n```bash\n# Recommended: Auto-generates config\nnpm init @azure\u002Fplaywright@latest\n\n# Manual installation\nnpm install @azure\u002Fplaywright --save-dev\nnpm install @playwright\u002Ftest@^1.47 --save-dev\nnpm install @azure\u002Fidentity --save-dev\n```\n\n**Requirements:**\n- Playwright version 1.47+ (basic usage)\n- Playwright version 1.57+ (Azure reporter features)\n\n## Environment Variables\n\n```bash\nPLAYWRIGHT_SERVICE_URL=wss:\u002F\u002Feastus.api.playwright.microsoft.com\u002Fplaywrightworkspaces\u002F{workspace-id}\u002Fbrowsers\n```\n\n## Authentication\n\n### Microsoft Entra ID (Recommended)\n\n```bash\n# Sign in with Azure CLI\naz login\n```\n\n```typescript\n\u002F\u002F playwright.service.config.ts\nimport { defineConfig } from \"@playwright\u002Ftest\";\nimport { createAzurePlaywrightConfig, ServiceOS } from \"@azure\u002Fplaywright\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport config from \".\u002Fplaywright.config\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    os: ServiceOS.LINUX,\n    credential: new DefaultAzureCredential(),\n  })\n);\n```\n\n### Custom Credential\n\n```typescript\nimport { ManagedIdentityCredential } from \"@azure\u002Fidentity\";\nimport { createAzurePlaywrightConfig } from \"@azure\u002Fplaywright\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    credential: new ManagedIdentityCredential(),\n  })\n);\n```\n\n## Core Workflow\n\n### Service Configuration\n\n```typescript\n\u002F\u002F playwright.service.config.ts\nimport { defineConfig } from \"@playwright\u002Ftest\";\nimport { createAzurePlaywrightConfig, ServiceOS } from \"@azure\u002Fplaywright\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport config from \".\u002Fplaywright.config\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    os: ServiceOS.LINUX,\n    connectTimeout: 30000,\n    exposeNetwork: \"\u003Cloopback>\",\n    credential: new DefaultAzureCredential(),\n  })\n);\n```\n\n### Run Tests\n\n```bash\nnpx playwright test --config=playwright.service.config.ts --workers=20\n```\n\n### With Azure Reporter\n\n```typescript\nimport { defineConfig } from \"@playwright\u002Ftest\";\nimport { createAzurePlaywrightConfig, ServiceOS } from \"@azure\u002Fplaywright\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport config from \".\u002Fplaywright.config\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    os: ServiceOS.LINUX,\n    credential: new DefaultAzureCredential(),\n  }),\n  {\n    reporter: [\n      [\"html\", { open: \"never\" }],\n      [\"@azure\u002Fplaywright\u002Freporter\"],\n    ],\n  }\n);\n```\n\n### Manual Browser Connection\n\n```typescript\nimport playwright, { test, expect, BrowserType } from \"@playwright\u002Ftest\";\nimport { getConnectOptions } from \"@azure\u002Fplaywright\";\n\ntest(\"manual connection\", async ({ browserName }) => {\n  const { wsEndpoint, options } = await getConnectOptions();\n  const browser = await (playwright[browserName] as BrowserType).connect(wsEndpoint, options);\n  const context = await browser.newContext();\n  const page = await context.newPage();\n\n  await page.goto(\"https:\u002F\u002Fexample.com\");\n  await expect(page).toHaveTitle(\u002FExample\u002F);\n\n  await browser.close();\n});\n```\n\n## Configuration Options\n\n```typescript\ntype PlaywrightServiceAdditionalOptions = {\n  serviceAuthType?: \"ENTRA_ID\" | \"ACCESS_TOKEN\";  \u002F\u002F Default: ENTRA_ID\n  os?: \"linux\" | \"windows\";                        \u002F\u002F Default: linux\n  runName?: string;                                \u002F\u002F Custom run name for portal\n  connectTimeout?: number;                         \u002F\u002F Default: 30000ms\n  exposeNetwork?: string;                          \u002F\u002F Default: \u003Cloopback>\n  credential?: TokenCredential;                    \u002F\u002F REQUIRED for Entra ID\n};\n```\n\n### ServiceOS Enum\n\n```typescript\nimport { ServiceOS } from \"@azure\u002Fplaywright\";\n\n\u002F\u002F Available values\nServiceOS.LINUX   \u002F\u002F \"linux\" - default\nServiceOS.WINDOWS \u002F\u002F \"windows\"\n```\n\n### ServiceAuth Enum\n\n```typescript\nimport { ServiceAuth } from \"@azure\u002Fplaywright\";\n\n\u002F\u002F Available values\nServiceAuth.ENTRA_ID      \u002F\u002F Recommended - uses credential\nServiceAuth.ACCESS_TOKEN  \u002F\u002F Use PLAYWRIGHT_SERVICE_ACCESS_TOKEN env var\n```\n\n## CI\u002FCD Integration\n\n### GitHub Actions\n\n```yaml\nname: playwright-ts\non: [push, pull_request]\n\npermissions:\n  id-token: write\n  contents: read\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - name: Azure Login\n        uses: azure\u002Flogin@v2\n        with:\n          client-id: ${{ secrets.AZURE_CLIENT_ID }}\n          tenant-id: ${{ secrets.AZURE_TENANT_ID }}\n          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}\n\n      - run: npm ci\n      \n      - name: Run Tests\n        env:\n          PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}\n        run: npx playwright test -c playwright.service.config.ts --workers=20\n```\n\n### Azure Pipelines\n\n```yaml\n- task: AzureCLI@2\n  displayName: Run Playwright Tests\n  env:\n    PLAYWRIGHT_SERVICE_URL: $(PLAYWRIGHT_SERVICE_URL)\n  inputs:\n    azureSubscription: My_Service_Connection\n    scriptType: pscore\n    inlineScript: |\n      npx playwright test -c playwright.service.config.ts --workers=20\n    addSpnToEnvironment: true\n```\n\n## Key Types\n\n```typescript\nimport {\n  createAzurePlaywrightConfig,\n  getConnectOptions,\n  ServiceOS,\n  ServiceAuth,\n  ServiceEnvironmentVariable,\n} from \"@azure\u002Fplaywright\";\n\nimport type {\n  OsType,\n  AuthenticationType,\n  BrowserConnectOptions,\n  PlaywrightServiceAdditionalOptions,\n} from \"@azure\u002Fplaywright\";\n```\n\n## Migration from Old Package\n\n| Old (`@azure\u002Fmicrosoft-playwright-testing`) | New (`@azure\u002Fplaywright`) |\n|---------------------------------------------|---------------------------|\n| `getServiceConfig()` | `createAzurePlaywrightConfig()` |\n| `timeout` option | `connectTimeout` option |\n| `runId` option | `runName` option |\n| `useCloudHostedBrowsers` option | Removed (always enabled) |\n| `@azure\u002Fmicrosoft-playwright-testing\u002Freporter` | `@azure\u002Fplaywright\u002Freporter` |\n| Implicit credential | Explicit `credential` parameter |\n\n### Before (Old)\n\n```typescript\nimport { getServiceConfig, ServiceOS } from \"@azure\u002Fmicrosoft-playwright-testing\";\n\nexport default defineConfig(\n  config,\n  getServiceConfig(config, {\n    os: ServiceOS.LINUX,\n    timeout: 30000,\n    useCloudHostedBrowsers: true,\n  }),\n  {\n    reporter: [[\"@azure\u002Fmicrosoft-playwright-testing\u002Freporter\"]],\n  }\n);\n```\n\n### After (New)\n\n```typescript\nimport { createAzurePlaywrightConfig, ServiceOS } from \"@azure\u002Fplaywright\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    os: ServiceOS.LINUX,\n    connectTimeout: 30000,\n    credential: new DefaultAzureCredential(),\n  }),\n  {\n    reporter: [\n      [\"html\", { open: \"never\" }],\n      [\"@azure\u002Fplaywright\u002Freporter\"],\n    ],\n  }\n);\n```\n\n## Best Practices\n\n1. **Use Entra ID auth** — More secure than access tokens\n2. **Provide explicit credential** — Always pass `credential: new DefaultAzureCredential()`\n3. **Enable artifacts** — Set `trace: \"on-first-retry\"`, `video: \"retain-on-failure\"` in config\n4. **Scale workers** — Use `--workers=20` or higher for parallel execution\n5. **Region selection** — Choose region closest to your test targets\n6. **HTML reporter first** — When using Azure reporter, list HTML reporter before Azure reporter\n","# Azure Playwright Workspaces SDK for TypeScript\n\nRun Playwright tests at scale with cloud-hosted browsers and integrated Azure portal reporting.\n\n> **Migration Notice:** `@azure\u002Fmicrosoft-playwright-testing` is retired on **March 8, 2026**. Use `@azure\u002Fplaywright` instead. See [migration guide](https:\u002F\u002Faka.ms\u002Fmpt\u002Fmigration-guidance).\n\n## Installation\n\n```bash\n# Recommended: Auto-generates config\nnpm init @azure\u002Fplaywright@latest\n\n# Manual installation\nnpm install @azure\u002Fplaywright --save-dev\nnpm install @playwright\u002Ftest@^1.47 --save-dev\nnpm install @azure\u002Fidentity --save-dev\n```\n\n**Requirements:**\n- Playwright version 1.47+ (basic usage)\n- Playwright version 1.57+ (Azure reporter features)\n\n## Environment Variables\n\n```bash\nPLAYWRIGHT_SERVICE_URL=wss:\u002F\u002Feastus.api.playwright.microsoft.com\u002Fplaywrightworkspaces\u002F{workspace-id}\u002Fbrowsers\n```\n\n## Authentication\n\n### Microsoft Entra ID (Recommended)\n\n```bash\n# Sign in with Azure CLI\naz login\n```\n\n```typescript\n\u002F\u002F playwright.service.config.ts\nimport { defineConfig } from \"@playwright\u002Ftest\";\nimport { createAzurePlaywrightConfig, ServiceOS } from \"@azure\u002Fplaywright\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport config from \".\u002Fplaywright.config\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    os: ServiceOS.LINUX,\n    credential: new DefaultAzureCredential(),\n  })\n);\n```\n\n### Custom Credential\n\n```typescript\nimport { ManagedIdentityCredential } from \"@azure\u002Fidentity\";\nimport { createAzurePlaywrightConfig } from \"@azure\u002Fplaywright\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    credential: new ManagedIdentityCredential(),\n  })\n);\n```\n\n## Core Workflow\n\n### Service Configuration\n\n```typescript\n\u002F\u002F playwright.service.config.ts\nimport { defineConfig } from \"@playwright\u002Ftest\";\nimport { createAzurePlaywrightConfig, ServiceOS } from \"@azure\u002Fplaywright\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport config from \".\u002Fplaywright.config\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    os: ServiceOS.LINUX,\n    connectTimeout: 30000,\n    exposeNetwork: \"\u003Cloopback>\",\n    credential: new DefaultAzureCredential(),\n  })\n);\n```\n\n### Run Tests\n\n```bash\nnpx playwright test --config=playwright.service.config.ts --workers=20\n```\n\n### With Azure Reporter\n\n```typescript\nimport { defineConfig } from \"@playwright\u002Ftest\";\nimport { createAzurePlaywrightConfig, ServiceOS } from \"@azure\u002Fplaywright\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport config from \".\u002Fplaywright.config\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    os: ServiceOS.LINUX,\n    credential: new DefaultAzureCredential(),\n  }),\n  {\n    reporter: [\n      [\"html\", { open: \"never\" }],\n      [\"@azure\u002Fplaywright\u002Freporter\"],\n    ],\n  }\n);\n```\n\n### Manual Browser Connection\n\n```typescript\nimport playwright, { test, expect, BrowserType } from \"@playwright\u002Ftest\";\nimport { getConnectOptions } from \"@azure\u002Fplaywright\";\n\ntest(\"manual connection\", async ({ browserName }) => {\n  const { wsEndpoint, options } = await getConnectOptions();\n  const browser = await (playwright[browserName] as BrowserType).connect(wsEndpoint, options);\n  const context = await browser.newContext();\n  const page = await context.newPage();\n\n  await page.goto(\"https:\u002F\u002Fexample.com\");\n  await expect(page).toHaveTitle(\u002FExample\u002F);\n\n  await browser.close();\n});\n```\n\n## Configuration Options\n\n```typescript\ntype PlaywrightServiceAdditionalOptions = {\n  serviceAuthType?: \"ENTRA_ID\" | \"ACCESS_TOKEN\";  \u002F\u002F Default: ENTRA_ID\n  os?: \"linux\" | \"windows\";                        \u002F\u002F Default: linux\n  runName?: string;                                \u002F\u002F Custom run name for portal\n  connectTimeout?: number;                         \u002F\u002F Default: 30000ms\n  exposeNetwork?: string;                          \u002F\u002F Default: \u003Cloopback>\n  credential?: TokenCredential;                    \u002F\u002F REQUIRED for Entra ID\n};\n```\n\n### ServiceOS Enum\n\n```typescript\nimport { ServiceOS } from \"@azure\u002Fplaywright\";\n\n\u002F\u002F Available values\nServiceOS.LINUX   \u002F\u002F \"linux\" - default\nServiceOS.WINDOWS \u002F\u002F \"windows\"\n```\n\n### ServiceAuth Enum\n\n```typescript\nimport { ServiceAuth } from \"@azure\u002Fplaywright\";\n\n\u002F\u002F Available values\nServiceAuth.ENTRA_ID      \u002F\u002F Recommended - uses credential\nServiceAuth.ACCESS_TOKEN  \u002F\u002F Use PLAYWRIGHT_SERVICE_ACCESS_TOKEN env var\n```\n\n## CI\u002FCD Integration\n\n### GitHub Actions\n\n```yaml\nname: playwright-ts\non: [push, pull_request]\n\npermissions:\n  id-token: write\n  contents: read\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - name: Azure Login\n        uses: azure\u002Flogin@v2\n        with:\n          client-id: ${{ secrets.AZURE_CLIENT_ID }}\n          tenant-id: ${{ secrets.AZURE_TENANT_ID }}\n          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}\n\n      - run: npm ci\n      \n      - name: Run Tests\n        env:\n          PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}\n        run: npx playwright test -c playwright.service.config.ts --workers=20\n```\n\n### Azure Pipelines\n\n```yaml\n- task: AzureCLI@2\n  displayName: Run Playwright Tests\n  env:\n    PLAYWRIGHT_SERVICE_URL: $(PLAYWRIGHT_SERVICE_URL)\n  inputs:\n    azureSubscription: My_Service_Connection\n    scriptType: pscore\n    inlineScript: |\n      npx playwright test -c playwright.service.config.ts --workers=20\n    addSpnToEnvironment: true\n```\n\n## Key Types\n\n```typescript\nimport {\n  createAzurePlaywrightConfig,\n  getConnectOptions,\n  ServiceOS,\n  ServiceAuth,\n  ServiceEnvironmentVariable,\n} from \"@azure\u002Fplaywright\";\n\nimport type {\n  OsType,\n  AuthenticationType,\n  BrowserConnectOptions,\n  PlaywrightServiceAdditionalOptions,\n} from \"@azure\u002Fplaywright\";\n```\n\n## Migration from Old Package\n\n| Old (`@azure\u002Fmicrosoft-playwright-testing`) | New (`@azure\u002Fplaywright`) |\n|---------------------------------------------|---------------------------|\n| `getServiceConfig()` | `createAzurePlaywrightConfig()` |\n| `timeout` option | `connectTimeout` option |\n| `runId` option | `runName` option |\n| `useCloudHostedBrowsers` option | Removed (always enabled) |\n| `@azure\u002Fmicrosoft-playwright-testing\u002Freporter` | `@azure\u002Fplaywright\u002Freporter` |\n| Implicit credential | Explicit `credential` parameter |\n\n### Before (Old)\n\n```typescript\nimport { getServiceConfig, ServiceOS } from \"@azure\u002Fmicrosoft-playwright-testing\";\n\nexport default defineConfig(\n  config,\n  getServiceConfig(config, {\n    os: ServiceOS.LINUX,\n    timeout: 30000,\n    useCloudHostedBrowsers: true,\n  }),\n  {\n    reporter: [[\"@azure\u002Fmicrosoft-playwright-testing\u002Freporter\"]],\n  }\n);\n```\n\n### After (New)\n\n```typescript\nimport { createAzurePlaywrightConfig, ServiceOS } from \"@azure\u002Fplaywright\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nexport default defineConfig(\n  config,\n  createAzurePlaywrightConfig(config, {\n    os: ServiceOS.LINUX,\n    connectTimeout: 30000,\n    credential: new DefaultAzureCredential(),\n  }),\n  {\n    reporter: [\n      [\"html\", { open: \"never\" }],\n      [\"@azure\u002Fplaywright\u002Freporter\"],\n    ],\n  }\n);\n```\n\n## Best Practices\n\n1. **Use Entra ID auth** — More secure than access tokens\n2. **Provide explicit credential** — Always pass `credential: new DefaultAzureCredential()`\n3. **Enable artifacts** — Set `trace: \"on-first-retry\"`, `video: \"retain-on-failure\"` in config\n4. **Scale workers** — Use `--workers=20` or higher for parallel execution\n5. **Region selection** — Choose region closest to your test targets\n6. **HTML reporter first** — When using Azure reporter, list HTML reporter before Azure reporter\n",{"name":5,"license":15,"metadata":55,"description":7},{"author":56,"package":57,"version":58},"Microsoft","@azure\u002Fplaywright","1.0.0","main","c173cdffe08e788a99b91928a831b476b8434838","ecosystem\u002Fskills\u002Fazure_microsoft_playwright_testing_ts",0,"https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw","https:\u002F\u002Fportfolio-longleo.vercel.app\u002Flabs\u002Fomniclaw.html","https:\u002F\u002Fgithub.com\u002FLongLeo287","https:\u002F\u002Fwww.facebook.com\u002FResourceRookie2023","2026-11-14 08:48:28",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add LongLeo287\u002FOmniClaw --skill azure_microsoft_playwright_testing_ts",{"tool":74,"command":75},"bunx","bunx skills add LongLeo287\u002FOmniClaw --skill azure_microsoft_playwright_testing_ts",{"tool":77,"command":78},"pnpm","pnpm dlx skills add LongLeo287\u002FOmniClaw --skill azure_microsoft_playwright_testing_ts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_microsoft_playwright_testing_ts\u002FSKILL.md",true,[82,88,92,96],{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"_DIR_IDENTITY.md","REFERENCE","参考文档",196,"https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_microsoft_playwright_testing_ts\u002F_DIR_IDENTITY.md",{"path":89,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":90,"sourceHtmlUrl":91},"README.md",509,"https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_microsoft_playwright_testing_ts\u002FREADME.md",{"path":93,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Facceptance_criteria.md",10309,"https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_microsoft_playwright_testing_ts\u002Freferences\u002Facceptance_criteria.md",{"path":97,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":98,"sourceHtmlUrl":99},"schema.json",513,"https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_microsoft_playwright_testing_ts\u002Fschema.json",[101,140,161,187,203,230],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":119,"publishedAt":50},"01M6JR0KQP4MHT32TN40D9CBFX","UI-UX Pro Max","Advanced UI\u002FUX analysis and generation skills with data-driven patterns. Python scripts (core.py, search.py) for systematic UI pattern extraction, design system generation, and component search from curated data sources.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fui_components\u002Fui_ux_pro_max\u002FSKILL.md",[107,110,111,116],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":112,"categoryName":113,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",{"categoryNo":117,"categoryName":118,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000033","数据分析师",[120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],"ux","ui","ui ux pro max","max","pro","ui ux","design","component","search","analysis","team","rd","ui-ux","active","systematic","scripts","pattern extraction","sources","advanced","data-driven",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":147,"publishedAt":50},"01M6JR0EF5AEQHP2FSTB57H05P","shadcn-ui","Expert guidance for integrating and building applications with shadcn\u002Fui components, including component discovery, installation, customization, and best practices.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fui_components\u002Fshadcn_ui\u002FSKILL.md",[146],{"categoryNo":112,"categoryName":113,"taxonomyType":114,"taxonomyTypeDesc":115},[148,121,149,150,127,151,152,153,154,130,155,156,157,133,158,159,37,160],"shadcn","shadcn ui","components","core","best practices","applications","discovery","customization","guidance","expert","installation","ui components","for",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":170,"publishedAt":50},"01M6JR08F51BEN17RHFYX65WVE","zustand_store_ts","Create Zustand stores with TypeScript, subscribeWithSelector middleware, and proper state\u002Faction separation. Use when building React state management, creating global stores, or implementing reactive state patterns with Zustand.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fzustand_store_ts\u002FSKILL.md",[167],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[171,172,173,174,31,175,176,177,178,179,180,181,46,182,183,184,37,185,186],"zustand store ts","zustand","store","typescript","react","create","state management","state","react state management","management","global","patterns","separation","middleware","action","implementing",{"skillNo":188,"name":172,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":50},"01M6JR00TDMVAFFCZXZ04AN7Q7","Zustand state management guide. Use when working with store code (src\u002Fstore\u002F**), implementing actions, managing state, or creating slices. Triggers on Zustand store development, state management questions, or action implementation.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fzustand\u002FSKILL.md",[],[172,193,177,194,178,195,196,180,197,46,198,199,200,173,37,201,202,185,186],"development","code","actions","src","guide","implementation","zustand state","triggers","questions","zustand state management",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":213,"publishedAt":50},"01M6JQZSWV4KWJP112G6XHEP44","youtube_summarizer","Automatically fetch YouTube video transcripts, generate structured summaries, and send full transcripts to messaging platforms. Detects YouTube URLs and provides metadata, key insights, and downloadable transcripts.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fyoutube_summarizer\u002FSKILL.md",[209,212],{"categoryNo":210,"categoryName":211,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229],"youtube","youtube summarizer","summarizer","generate","metadata","messaging","Video","fetch","telegram","transcription","summarization","structured","full","insights","transcripts","summaries",{"skillNo":231,"name":232,"nameZh":6,"description":233,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":234,"categories":235,"keywords":236,"publishedAt":50},"01M6JQZN3QJB6B77JGKJD62DQT","youtube_clipper","YouTube 视频智能剪辑工具。下载视频和字幕，AI 分析生成精细章节（几分钟级别）， 用户选择片段后自动剪辑、翻译字幕为中英双语、烧录字幕到视频，并生成总结文案。 使用场景：当用户需要剪辑 YouTube 视频、生成短视频片段、制作双语字幕版本时。 关键词：视频剪辑、YouTube、字幕翻译、双语字幕、视频下载、clip video","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fyoutube_clipper\u002FSKILL.md",[],[214,237,238,220,239,240,241,242,243,244,245,246,247,248,249,250,251],"clipper","youtube clipper","Bash","下载","视频","生成","关键词","翻译","read","write","clip","总结","工具","文案","sonnet"]