[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71BEHJ2FP715H9CVDF7VDG8":3,"skill-same:01M71BEHJ2FP715H9CVDF7VDG8":75},{"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":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M71BEHJ2FP715H9CVDF7VDG8","azure-monitor-opentelemetry-ts",null,"Instrument applications with Azure Monitor and OpenTelemetry for JavaScript (@azure\u002Fmonitor-opentelemetry). Use when adding distributed tracing, metrics, and logs to Node.js applications with Application Insights.","strmt7\u002Fai_skills_collection_benchmarked","strmt7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F28989754?v=4","01M71929P914SWKQ7QJV24NBBY","Stratos","01M71929Q9VGKQ7PWYR95VSQQQ",1,"MIT","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fcloud-azure-microsoft-sdks\u002Fofficial-vendor-reference\u002Fazure-monitor-opentelemetry-ts\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"azure","azure monitor opentelemetry ts","monitor","azure monitor","OpenTelemetry","when","javascript","for","insights","with","instrument","use","node","applications","logs","tracing","metrics","distributed tracing","distributed","microsoft","2026-11-10 10:12:30",false,"---\nname: azure-monitor-opentelemetry-ts\ndescription: Instrument applications with Azure Monitor and OpenTelemetry for JavaScript (@azure\u002Fmonitor-opentelemetry). Use when adding distributed tracing, metrics, and logs to Node.js applications with Application Insights.\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.0\"\n  package: '@azure\u002Fmonitor-opentelemetry'\n---\n\n# Azure Monitor OpenTelemetry SDK for TypeScript\n\nAuto-instrument Node.js applications with distributed tracing, metrics, and logs.\n\n## Installation\n\n```bash\n# Distro (recommended - auto-instrumentation)\nnpm install @azure\u002Fmonitor-opentelemetry\n\n# Low-level exporters (custom OpenTelemetry setup)\nnpm install @azure\u002Fmonitor-opentelemetry-exporter\n\n# Custom logs ingestion\nnpm install @azure\u002Fmonitor-ingestion\n```\n\n## Environment Variables\n\n```bash\nAPPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=...;IngestionEndpoint=...\n```\n\n## Quick Start (Auto-Instrumentation)\n\n**IMPORTANT:** Call `useAzureMonitor()` BEFORE importing other modules.\n\n```typescript\nimport { useAzureMonitor } from \"@azure\u002Fmonitor-opentelemetry\";\n\nuseAzureMonitor({\n  azureMonitorExporterOptions: {\n    connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING\n  }\n});\n\n\u002F\u002F Now import your application\nimport express from \"express\";\nconst app = express();\n```\n\n## ESM Support (Node.js 18.19+)\n\n```bash\nnode --import @azure\u002Fmonitor-opentelemetry\u002Floader .\u002Fdist\u002Findex.js\n```\n\n**package.json:**\n```json\n{\n  \"scripts\": {\n    \"start\": \"node --import @azure\u002Fmonitor-opentelemetry\u002Floader .\u002Fdist\u002Findex.js\"\n  }\n}\n```\n\n## Full Configuration\n\n```typescript\nimport { useAzureMonitor, AzureMonitorOpenTelemetryOptions } from \"@azure\u002Fmonitor-opentelemetry\";\nimport { resourceFromAttributes } from \"@opentelemetry\u002Fresources\";\n\nconst options: AzureMonitorOpenTelemetryOptions = {\n  azureMonitorExporterOptions: {\n    connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING,\n    storageDirectory: \"\u002Fpath\u002Fto\u002Foffline\u002Fstorage\",\n    disableOfflineStorage: false\n  },\n\n  \u002F\u002F Sampling\n  samplingRatio: 1.0,  \u002F\u002F 0-1, percentage of traces\n\n  \u002F\u002F Features\n  enableLiveMetrics: true,\n  enableStandardMetrics: true,\n  enablePerformanceCounters: true,\n\n  \u002F\u002F Instrumentation libraries\n  instrumentationOptions: {\n    azureSdk: { enabled: true },\n    http: { enabled: true },\n    mongoDb: { enabled: true },\n    mySql: { enabled: true },\n    postgreSql: { enabled: true },\n    redis: { enabled: true },\n    bunyan: { enabled: false },\n    winston: { enabled: false }\n  },\n\n  \u002F\u002F Custom resource\n  resource: resourceFromAttributes({ \"service.name\": \"my-service\" })\n};\n\nuseAzureMonitor(options);\n```\n\n## Custom Traces\n\n```typescript\nimport { trace } from \"@opentelemetry\u002Fapi\";\n\nconst tracer = trace.getTracer(\"my-tracer\");\n\nconst span = tracer.startSpan(\"doWork\");\ntry {\n  span.setAttribute(\"component\", \"worker\");\n  span.setAttribute(\"operation.id\", \"42\");\n  span.addEvent(\"processing started\");\n\n  \u002F\u002F Your work here\n\n} catch (error) {\n  span.recordException(error as Error);\n  span.setStatus({ code: 2, message: (error as Error).message });\n} finally {\n  span.end();\n}\n```\n\n## Custom Metrics\n\n```typescript\nimport { metrics } from \"@opentelemetry\u002Fapi\";\n\nconst meter = metrics.getMeter(\"my-meter\");\n\n\u002F\u002F Counter\nconst counter = meter.createCounter(\"requests_total\");\ncounter.add(1, { route: \"\u002Fapi\u002Fusers\", method: \"GET\" });\n\n\u002F\u002F Histogram\nconst histogram = meter.createHistogram(\"request_duration_ms\");\nhistogram.record(150, { route: \"\u002Fapi\u002Fusers\" });\n\n\u002F\u002F Observable Gauge\nconst gauge = meter.createObservableGauge(\"active_connections\");\ngauge.addCallback((result) => {\n  result.observe(getActiveConnections(), { pool: \"main\" });\n});\n```\n\n## Manual Exporter Setup\n\n### Trace Exporter\n\n```typescript\nimport { AzureMonitorTraceExporter } from \"@azure\u002Fmonitor-opentelemetry-exporter\";\nimport { NodeTracerProvider, BatchSpanProcessor } from \"@opentelemetry\u002Fsdk-trace-node\";\n\nconst exporter = new AzureMonitorTraceExporter({\n  connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING\n});\n\nconst provider = new NodeTracerProvider({\n  spanProcessors: [new BatchSpanProcessor(exporter)]\n});\n\nprovider.register();\n```\n\n### Metric Exporter\n\n```typescript\nimport { AzureMonitorMetricExporter } from \"@azure\u002Fmonitor-opentelemetry-exporter\";\nimport { PeriodicExportingMetricReader, MeterProvider } from \"@opentelemetry\u002Fsdk-metrics\";\nimport { metrics } from \"@opentelemetry\u002Fapi\";\n\nconst exporter = new AzureMonitorMetricExporter({\n  connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING\n});\n\nconst meterProvider = new MeterProvider({\n  readers: [new PeriodicExportingMetricReader({ exporter })]\n});\n\nmetrics.setGlobalMeterProvider(meterProvider);\n```\n\n### Log Exporter\n\n```typescript\nimport { AzureMonitorLogExporter } from \"@azure\u002Fmonitor-opentelemetry-exporter\";\nimport { BatchLogRecordProcessor, LoggerProvider } from \"@opentelemetry\u002Fsdk-logs\";\nimport { logs } from \"@opentelemetry\u002Fapi-logs\";\n\nconst exporter = new AzureMonitorLogExporter({\n  connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING\n});\n\nconst loggerProvider = new LoggerProvider();\nloggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(exporter));\n\nlogs.setGlobalLoggerProvider(loggerProvider);\n```\n\n## Custom Logs Ingestion\n\n```typescript\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport { LogsIngestionClient, isAggregateLogsUploadError } from \"@azure\u002Fmonitor-ingestion\";\n\nconst endpoint = \"https:\u002F\u002F\u003Cdce>.ingest.monitor.azure.com\";\nconst ruleId = \"\u003Cdata-collection-rule-id>\";\nconst streamName = \"Custom-MyTable_CL\";\n\nconst client = new LogsIngestionClient(endpoint, new DefaultAzureCredential());\n\nconst logs = [\n  {\n    Time: new Date().toISOString(),\n    Computer: \"Server1\",\n    Message: \"Application started\",\n    Level: \"Information\"\n  }\n];\n\ntry {\n  await client.upload(ruleId, streamName, logs);\n} catch (error) {\n  if (isAggregateLogsUploadError(error)) {\n    for (const uploadError of error.errors) {\n      console.error(\"Failed logs:\", uploadError.failedLogs);\n    }\n  }\n}\n```\n\n## Custom Span Processor\n\n```typescript\nimport { SpanProcessor, ReadableSpan } from \"@opentelemetry\u002Fsdk-trace-base\";\nimport { Span, Context, SpanKind, TraceFlags } from \"@opentelemetry\u002Fapi\";\nimport { useAzureMonitor } from \"@azure\u002Fmonitor-opentelemetry\";\n\nclass FilteringSpanProcessor implements SpanProcessor {\n  forceFlush(): Promise\u003Cvoid> { return Promise.resolve(); }\n  shutdown(): Promise\u003Cvoid> { return Promise.resolve(); }\n  onStart(span: Span, context: Context): void {}\n\n  onEnd(span: ReadableSpan): void {\n    \u002F\u002F Add custom attributes\n    span.attributes[\"CustomDimension\"] = \"value\";\n\n    \u002F\u002F Filter out internal spans\n    if (span.kind === SpanKind.INTERNAL) {\n      span.spanContext().traceFlags = TraceFlags.NONE;\n    }\n  }\n}\n\nuseAzureMonitor({\n  spanProcessors: [new FilteringSpanProcessor()]\n});\n```\n\n## Sampling\n\n```typescript\nimport { ApplicationInsightsSampler } from \"@azure\u002Fmonitor-opentelemetry-exporter\";\nimport { NodeTracerProvider } from \"@opentelemetry\u002Fsdk-trace-node\";\n\n\u002F\u002F Sample 75% of traces\nconst sampler = new ApplicationInsightsSampler(0.75);\n\nconst provider = new NodeTracerProvider({ sampler });\n```\n\n## Shutdown\n\n```typescript\nimport { useAzureMonitor, shutdownAzureMonitor } from \"@azure\u002Fmonitor-opentelemetry\";\n\nuseAzureMonitor();\n\n\u002F\u002F On application shutdown\nprocess.on(\"SIGTERM\", async () => {\n  await shutdownAzureMonitor();\n  process.exit(0);\n});\n```\n\n## Key Types\n\n```typescript\nimport {\n  useAzureMonitor,\n  shutdownAzureMonitor,\n  AzureMonitorOpenTelemetryOptions,\n  InstrumentationOptions\n} from \"@azure\u002Fmonitor-opentelemetry\";\n\nimport {\n  AzureMonitorTraceExporter,\n  AzureMonitorMetricExporter,\n  AzureMonitorLogExporter,\n  ApplicationInsightsSampler,\n  AzureMonitorExporterOptions\n} from \"@azure\u002Fmonitor-opentelemetry-exporter\";\n\nimport {\n  LogsIngestionClient,\n  isAggregateLogsUploadError\n} from \"@azure\u002Fmonitor-ingestion\";\n```\n\n## Best Practices\n\n1. **Call useAzureMonitor() first** - Before importing other modules\n2. **Use ESM loader for ESM projects** - `--import @azure\u002Fmonitor-opentelemetry\u002Floader`\n3. **Enable offline storage** - For reliable telemetry in disconnected scenarios\n4. **Set sampling ratio** - For high-traffic applications\n5. **Add custom dimensions** - Use span processors for enrichment\n6. **Graceful shutdown** - Call `shutdownAzureMonitor()` to flush telemetry\n","# Azure Monitor OpenTelemetry SDK for TypeScript\n\nAuto-instrument Node.js applications with distributed tracing, metrics, and logs.\n\n## Installation\n\n```bash\n# Distro (recommended - auto-instrumentation)\nnpm install @azure\u002Fmonitor-opentelemetry\n\n# Low-level exporters (custom OpenTelemetry setup)\nnpm install @azure\u002Fmonitor-opentelemetry-exporter\n\n# Custom logs ingestion\nnpm install @azure\u002Fmonitor-ingestion\n```\n\n## Environment Variables\n\n```bash\nAPPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=...;IngestionEndpoint=...\n```\n\n## Quick Start (Auto-Instrumentation)\n\n**IMPORTANT:** Call `useAzureMonitor()` BEFORE importing other modules.\n\n```typescript\nimport { useAzureMonitor } from \"@azure\u002Fmonitor-opentelemetry\";\n\nuseAzureMonitor({\n  azureMonitorExporterOptions: {\n    connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING\n  }\n});\n\n\u002F\u002F Now import your application\nimport express from \"express\";\nconst app = express();\n```\n\n## ESM Support (Node.js 18.19+)\n\n```bash\nnode --import @azure\u002Fmonitor-opentelemetry\u002Floader .\u002Fdist\u002Findex.js\n```\n\n**package.json:**\n```json\n{\n  \"scripts\": {\n    \"start\": \"node --import @azure\u002Fmonitor-opentelemetry\u002Floader .\u002Fdist\u002Findex.js\"\n  }\n}\n```\n\n## Full Configuration\n\n```typescript\nimport { useAzureMonitor, AzureMonitorOpenTelemetryOptions } from \"@azure\u002Fmonitor-opentelemetry\";\nimport { resourceFromAttributes } from \"@opentelemetry\u002Fresources\";\n\nconst options: AzureMonitorOpenTelemetryOptions = {\n  azureMonitorExporterOptions: {\n    connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING,\n    storageDirectory: \"\u002Fpath\u002Fto\u002Foffline\u002Fstorage\",\n    disableOfflineStorage: false\n  },\n\n  \u002F\u002F Sampling\n  samplingRatio: 1.0,  \u002F\u002F 0-1, percentage of traces\n\n  \u002F\u002F Features\n  enableLiveMetrics: true,\n  enableStandardMetrics: true,\n  enablePerformanceCounters: true,\n\n  \u002F\u002F Instrumentation libraries\n  instrumentationOptions: {\n    azureSdk: { enabled: true },\n    http: { enabled: true },\n    mongoDb: { enabled: true },\n    mySql: { enabled: true },\n    postgreSql: { enabled: true },\n    redis: { enabled: true },\n    bunyan: { enabled: false },\n    winston: { enabled: false }\n  },\n\n  \u002F\u002F Custom resource\n  resource: resourceFromAttributes({ \"service.name\": \"my-service\" })\n};\n\nuseAzureMonitor(options);\n```\n\n## Custom Traces\n\n```typescript\nimport { trace } from \"@opentelemetry\u002Fapi\";\n\nconst tracer = trace.getTracer(\"my-tracer\");\n\nconst span = tracer.startSpan(\"doWork\");\ntry {\n  span.setAttribute(\"component\", \"worker\");\n  span.setAttribute(\"operation.id\", \"42\");\n  span.addEvent(\"processing started\");\n\n  \u002F\u002F Your work here\n\n} catch (error) {\n  span.recordException(error as Error);\n  span.setStatus({ code: 2, message: (error as Error).message });\n} finally {\n  span.end();\n}\n```\n\n## Custom Metrics\n\n```typescript\nimport { metrics } from \"@opentelemetry\u002Fapi\";\n\nconst meter = metrics.getMeter(\"my-meter\");\n\n\u002F\u002F Counter\nconst counter = meter.createCounter(\"requests_total\");\ncounter.add(1, { route: \"\u002Fapi\u002Fusers\", method: \"GET\" });\n\n\u002F\u002F Histogram\nconst histogram = meter.createHistogram(\"request_duration_ms\");\nhistogram.record(150, { route: \"\u002Fapi\u002Fusers\" });\n\n\u002F\u002F Observable Gauge\nconst gauge = meter.createObservableGauge(\"active_connections\");\ngauge.addCallback((result) => {\n  result.observe(getActiveConnections(), { pool: \"main\" });\n});\n```\n\n## Manual Exporter Setup\n\n### Trace Exporter\n\n```typescript\nimport { AzureMonitorTraceExporter } from \"@azure\u002Fmonitor-opentelemetry-exporter\";\nimport { NodeTracerProvider, BatchSpanProcessor } from \"@opentelemetry\u002Fsdk-trace-node\";\n\nconst exporter = new AzureMonitorTraceExporter({\n  connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING\n});\n\nconst provider = new NodeTracerProvider({\n  spanProcessors: [new BatchSpanProcessor(exporter)]\n});\n\nprovider.register();\n```\n\n### Metric Exporter\n\n```typescript\nimport { AzureMonitorMetricExporter } from \"@azure\u002Fmonitor-opentelemetry-exporter\";\nimport { PeriodicExportingMetricReader, MeterProvider } from \"@opentelemetry\u002Fsdk-metrics\";\nimport { metrics } from \"@opentelemetry\u002Fapi\";\n\nconst exporter = new AzureMonitorMetricExporter({\n  connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING\n});\n\nconst meterProvider = new MeterProvider({\n  readers: [new PeriodicExportingMetricReader({ exporter })]\n});\n\nmetrics.setGlobalMeterProvider(meterProvider);\n```\n\n### Log Exporter\n\n```typescript\nimport { AzureMonitorLogExporter } from \"@azure\u002Fmonitor-opentelemetry-exporter\";\nimport { BatchLogRecordProcessor, LoggerProvider } from \"@opentelemetry\u002Fsdk-logs\";\nimport { logs } from \"@opentelemetry\u002Fapi-logs\";\n\nconst exporter = new AzureMonitorLogExporter({\n  connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING\n});\n\nconst loggerProvider = new LoggerProvider();\nloggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(exporter));\n\nlogs.setGlobalLoggerProvider(loggerProvider);\n```\n\n## Custom Logs Ingestion\n\n```typescript\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport { LogsIngestionClient, isAggregateLogsUploadError } from \"@azure\u002Fmonitor-ingestion\";\n\nconst endpoint = \"https:\u002F\u002F\u003Cdce>.ingest.monitor.azure.com\";\nconst ruleId = \"\u003Cdata-collection-rule-id>\";\nconst streamName = \"Custom-MyTable_CL\";\n\nconst client = new LogsIngestionClient(endpoint, new DefaultAzureCredential());\n\nconst logs = [\n  {\n    Time: new Date().toISOString(),\n    Computer: \"Server1\",\n    Message: \"Application started\",\n    Level: \"Information\"\n  }\n];\n\ntry {\n  await client.upload(ruleId, streamName, logs);\n} catch (error) {\n  if (isAggregateLogsUploadError(error)) {\n    for (const uploadError of error.errors) {\n      console.error(\"Failed logs:\", uploadError.failedLogs);\n    }\n  }\n}\n```\n\n## Custom Span Processor\n\n```typescript\nimport { SpanProcessor, ReadableSpan } from \"@opentelemetry\u002Fsdk-trace-base\";\nimport { Span, Context, SpanKind, TraceFlags } from \"@opentelemetry\u002Fapi\";\nimport { useAzureMonitor } from \"@azure\u002Fmonitor-opentelemetry\";\n\nclass FilteringSpanProcessor implements SpanProcessor {\n  forceFlush(): Promise\u003Cvoid> { return Promise.resolve(); }\n  shutdown(): Promise\u003Cvoid> { return Promise.resolve(); }\n  onStart(span: Span, context: Context): void {}\n\n  onEnd(span: ReadableSpan): void {\n    \u002F\u002F Add custom attributes\n    span.attributes[\"CustomDimension\"] = \"value\";\n\n    \u002F\u002F Filter out internal spans\n    if (span.kind === SpanKind.INTERNAL) {\n      span.spanContext().traceFlags = TraceFlags.NONE;\n    }\n  }\n}\n\nuseAzureMonitor({\n  spanProcessors: [new FilteringSpanProcessor()]\n});\n```\n\n## Sampling\n\n```typescript\nimport { ApplicationInsightsSampler } from \"@azure\u002Fmonitor-opentelemetry-exporter\";\nimport { NodeTracerProvider } from \"@opentelemetry\u002Fsdk-trace-node\";\n\n\u002F\u002F Sample 75% of traces\nconst sampler = new ApplicationInsightsSampler(0.75);\n\nconst provider = new NodeTracerProvider({ sampler });\n```\n\n## Shutdown\n\n```typescript\nimport { useAzureMonitor, shutdownAzureMonitor } from \"@azure\u002Fmonitor-opentelemetry\";\n\nuseAzureMonitor();\n\n\u002F\u002F On application shutdown\nprocess.on(\"SIGTERM\", async () => {\n  await shutdownAzureMonitor();\n  process.exit(0);\n});\n```\n\n## Key Types\n\n```typescript\nimport {\n  useAzureMonitor,\n  shutdownAzureMonitor,\n  AzureMonitorOpenTelemetryOptions,\n  InstrumentationOptions\n} from \"@azure\u002Fmonitor-opentelemetry\";\n\nimport {\n  AzureMonitorTraceExporter,\n  AzureMonitorMetricExporter,\n  AzureMonitorLogExporter,\n  ApplicationInsightsSampler,\n  AzureMonitorExporterOptions\n} from \"@azure\u002Fmonitor-opentelemetry-exporter\";\n\nimport {\n  LogsIngestionClient,\n  isAggregateLogsUploadError\n} from \"@azure\u002Fmonitor-ingestion\";\n```\n\n## Best Practices\n\n1. **Call useAzureMonitor() first** - Before importing other modules\n2. **Use ESM loader for ESM projects** - `--import @azure\u002Fmonitor-opentelemetry\u002Floader`\n3. **Enable offline storage** - For reliable telemetry in disconnected scenarios\n4. **Set sampling ratio** - For high-traffic applications\n5. **Add custom dimensions** - Use span processors for enrichment\n6. **Graceful shutdown** - Call `shutdownAzureMonitor()` to flush telemetry\n",{"name":5,"license":15,"metadata":44,"description":7},{"author":45,"package":46,"version":47},"Microsoft","@azure\u002Fmonitor-opentelemetry","1.0.0","main","5c95bcac4646c5aed06bd9aed5235cfc7985aafc","included\u002Fskills\u002Fby-category\u002Fcloud-azure-microsoft-sdks\u002Fofficial-vendor-reference\u002Fazure-monitor-opentelemetry-ts",0,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked","https:\u002F\u002Fgithub.com\u002Fstrmt7","2026-11-11 04:18:12",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add strmt7\u002Fai_skills_collection_benchmarked --skill azure-monitor-opentelemetry-ts",{"tool":61,"command":62},"bunx","bunx skills add strmt7\u002Fai_skills_collection_benchmarked --skill azure-monitor-opentelemetry-ts",{"tool":64,"command":65},"pnpm","pnpm dlx skills add strmt7\u002Fai_skills_collection_benchmarked --skill azure-monitor-opentelemetry-ts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fcloud-azure-microsoft-sdks\u002Fofficial-vendor-reference\u002Fazure-monitor-opentelemetry-ts\u002FSKILL.md",true,[69],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Facceptance-criteria.md","REFERENCE","参考文档",9184,"https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fcloud-azure-microsoft-sdks\u002Fofficial-vendor-reference\u002Fazure-monitor-opentelemetry-ts\u002Freferences\u002Facceptance-criteria.md",[76,106,135,159,184,212],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":80,"licenseFileUrl":81,"sourceHtmlUrl":82,"categories":83,"keywords":92,"publishedAt":39},"01M71D4H3T6M57DFKN8HENAWRV","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fwebapp-testing\u002FSKILL.md",[84,89],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":90,"categoryName":91,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000009","前端开发",[93,94,95,26,32,96,97,98,99,33,100,28,101,102,103,104,105],"webapp","testing","webapp testing","local","frontend","debugging","toolkit","browser","playwright","web","behavior","ui","screenshots",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":80,"licenseFileUrl":110,"sourceHtmlUrl":111,"categories":112,"keywords":116,"publishedAt":39},"01M71D4CQR2A2TB7GASCR5ZBG3","skill-creator","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fskill-creator-anthropics\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Fofficial-reference\u002Fskill-creator-anthropics\u002FSKILL.md",[113],{"categoryNo":114,"categoryName":115,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000023","Skill与智能体开发",[117,118,119,120,121,122,24,123,124,125,126,127,128,129,130,131,132,133,26,134],"skill creator","creator","performance","improve","run evals","new","analysis","create","optimize","variance analysis","run","edit","benchmark","a skill","existing skill","evals","modify","accuracy",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":143,"publishedAt":39},"01M71D488XHEZVXXSXFYP8ENMH","playwright-skill","Complete browser automation with Playwright. Auto-detects dev servers, writes reusable test scripts, and supports screenshots, responsive checks, UX validation, login flows, link checks, and arbitrary browser automation. Use when the user wants to test a website, automate browser interactions, validate web functionality, or perform browser-based testing.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Ftesting-qa-benchmarking\u002Flatest-release-browser-automation\u002Fplaywright-skill\u002FSKILL.md",[141,142],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":114,"categoryName":115,"taxonomyType":87,"taxonomyTypeDesc":88},[101,144,145,146,94,147,148,24,149,100,150,151,152,153,154,155,31,156,157,158],"playwright skill","browser automation","flows","auto","access","Bash","website","ux","login","scripts","read","write","install","network","responsive",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":80,"licenseFileUrl":163,"sourceHtmlUrl":164,"categories":165,"keywords":167,"publishedAt":39},"01M71CY25GM939M6RES91QSG3T","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Fweb-artifacts-builder\u002FSKILL.md",[166],{"categoryNo":90,"categoryName":91,"taxonomyType":87,"taxonomyTypeDesc":88},[168,169,170,102,171,172,173,26,174,175,97,176,30,177,178,179,180,181,182,183],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","react","multi","state","routing","state management",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":80,"licenseFileUrl":188,"sourceHtmlUrl":189,"categories":190,"keywords":200,"publishedAt":39},"01M71CXZB60QJJ1H4S3NN94WMZ","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fsearch-retrieval-web-automation\u002Fofficial-reference\u002Ffrontend-design\u002FSKILL.md",[191,192,195],{"categoryNo":90,"categoryName":91,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":193,"categoryName":194,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":196,"categoryName":197,"taxonomyType":198,"taxonomyTypeDesc":199},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[97,201,202,173,203,204,205,32,206,207,30,24,170,208,178,209,179,210,211,28],"design","frontend design","ui design","generic","aesthetics","landing","pages","code","web ui","react components","examples",{"skillNo":213,"name":214,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":216,"categories":217,"keywords":218,"publishedAt":39},"01M71CVZ54WFBTVA7R16PFY1ZE","zarr-python","Chunked N-D arrays for cloud storage. Compressed arrays, parallel I\u002FO, S3\u002FGCS integration, NumPy\u002FDask\u002FXarray compatible, for large-scale scientific computing pipelines.","https:\u002F\u002Fgithub.com\u002Fstrmt7\u002Fai_skills_collection_benchmarked\u002Fblob\u002Fmain\u002Fincluded\u002Fskills\u002Fby-category\u002Fscience-research-data-analysis\u002Flatest-release-community\u002Fzarr-python\u002FSKILL.md",[],[219,220,221,222,223,224,225,226,227,26,228,229,230,231,232,233,234,235],"zarr python","python","zarr","arrays","Cloud Storage","scientific","storage","parallel","dask","numpy","gcs","s3","integration","scientific computing","cloud","scale","pipelines"]