[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F8Z39MJMZ3DM72EKJS637H":3,"skill-same:01M6F8Z39MJMZ3DM72EKJS637H":80},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6F8Z39MJMZ3DM72EKJS637H","cohere-observability",null,"Set up comprehensive observability for Cohere API v2 with metrics, traces, and alerts.\nUse when implementing monitoring for Chat\u002FEmbed\u002FRerank operations,\nsetting up dashboards, or configuring alerts for Cohere integrations.\nTrigger with phrases like \"cohere monitoring\", \"cohere metrics\",\n\"cohere observability\", \"monitor cohere\", \"cohere alerts\", \"cohere tracing\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fcohere-observability\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"cohere observability","cohere","observability","integrations","trigger","io","alerts","up","edit","write","read","nlp","dashboards","api","SET","monitoring","tracing","metrics","code","monitor","2026-11-10 10:12:30",false,"---\nname: cohere-observability\ndescription: |\n  Set up comprehensive observability for Cohere API v2 with metrics, traces, and alerts.\n  Use when implementing monitoring for Chat\u002FEmbed\u002FRerank operations,\n  setting up dashboards, or configuring alerts for Cohere integrations.\n  Trigger with phrases like \"cohere monitoring\", \"cohere metrics\",\n  \"cohere observability\", \"monitor cohere\", \"cohere alerts\", \"cohere tracing\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, ai, nlp, cohere]\ncompatible-with: claude-code\n---\n\n# Cohere Observability\n\n## Overview\nSet up production observability for Cohere API v2 with Prometheus metrics, OpenTelemetry tracing, and AlertManager rules. Tracks per-endpoint latency, token usage, error rates, and costs.\n\n## Prerequisites\n- Prometheus or compatible metrics backend\n- OpenTelemetry SDK installed\n- `cohere-ai` SDK v7+\n\n## Instructions\n\n### Step 1: Metrics Collection\n\n```typescript\nimport { Registry, Counter, Histogram, Gauge } from 'prom-client';\n\nconst registry = new Registry();\n\n\u002F\u002F Per-endpoint request counter\nconst requestCounter = new Counter({\n  name: 'cohere_requests_total',\n  help: 'Total Cohere API requests',\n  labelNames: ['endpoint', 'model', 'status'],\n  registers: [registry],\n});\n\n\u002F\u002F Latency histogram\nconst requestDuration = new Histogram({\n  name: 'cohere_request_duration_seconds',\n  help: 'Cohere request duration',\n  labelNames: ['endpoint', 'model'],\n  buckets: [0.1, 0.25, 0.5, 1, 2.5, 5, 10, 30],\n  registers: [registry],\n});\n\n\u002F\u002F Token usage tracking\nconst tokenCounter = new Counter({\n  name: 'cohere_tokens_total',\n  help: 'Total tokens consumed',\n  labelNames: ['endpoint', 'model', 'direction'], \u002F\u002F direction: input|output\n  registers: [registry],\n});\n\n\u002F\u002F Error counter by type\nconst errorCounter = new Counter({\n  name: 'cohere_errors_total',\n  help: 'Cohere errors by status code',\n  labelNames: ['endpoint', 'status_code'],\n  registers: [registry],\n});\n\n\u002F\u002F Rate limit headroom\nconst rateLimitGauge = new Gauge({\n  name: 'cohere_rate_limit_remaining',\n  help: 'Remaining rate limit capacity',\n  labelNames: ['endpoint'],\n  registers: [registry],\n});\n```\n\n### Step 2: Instrumented Client Wrapper\n\n```typescript\nimport { CohereClientV2, CohereError, CohereTimeoutError } from 'cohere-ai';\n\nconst cohere = new CohereClientV2();\n\nasync function instrumentedCall\u003CT>(\n  endpoint: string,\n  model: string,\n  operation: () => Promise\u003CT>\n): Promise\u003CT> {\n  const timer = requestDuration.startTimer({ endpoint, model });\n\n  try {\n    const result = await operation();\n    requestCounter.inc({ endpoint, model, status: 'success' });\n    timer();\n\n    \u002F\u002F Track tokens from response\n    const usage = (result as any)?.usage?.billedUnits;\n    if (usage) {\n      if (usage.inputTokens) {\n        tokenCounter.inc({ endpoint, model, direction: 'input' }, usage.inputTokens);\n      }\n      if (usage.outputTokens) {\n        tokenCounter.inc({ endpoint, model, direction: 'output' }, usage.outputTokens);\n      }\n    }\n\n    return result;\n  } catch (err) {\n    requestCounter.inc({ endpoint, model, status: 'error' });\n    timer();\n\n    if (err instanceof CohereError) {\n      errorCounter.inc({ endpoint, status_code: String(err.statusCode) });\n    } else if (err instanceof CohereTimeoutError) {\n      errorCounter.inc({ endpoint, status_code: 'timeout' });\n    }\n\n    throw err;\n  }\n}\n\n\u002F\u002F Usage\nconst response = await instrumentedCall('chat', 'command-a-03-2025', () =>\n  cohere.chat({\n    model: 'command-a-03-2025',\n    messages: [{ role: 'user', content: query }],\n  })\n);\n```\n\n### Step 3: OpenTelemetry Tracing\n\n```typescript\nimport { trace, SpanStatusCode, SpanKind } from '@opentelemetry\u002Fapi';\n\nconst tracer = trace.getTracer('cohere-client', '1.0.0');\n\nasync function tracedCohereCall\u003CT>(\n  endpoint: string,\n  model: string,\n  operation: () => Promise\u003CT>\n): Promise\u003CT> {\n  return tracer.startActiveSpan(\n    `cohere.${endpoint}`,\n    { kind: SpanKind.CLIENT },\n    async (span) => {\n      span.setAttribute('cohere.model', model);\n      span.setAttribute('cohere.endpoint', endpoint);\n\n      try {\n        const result = await operation();\n\n        \u002F\u002F Add token usage to span\n        const usage = (result as any)?.usage?.billedUnits;\n        if (usage) {\n          span.setAttribute('cohere.tokens.input', usage.inputTokens ?? 0);\n          span.setAttribute('cohere.tokens.output', usage.outputTokens ?? 0);\n        }\n\n        span.setStatus({ code: SpanStatusCode.OK });\n        return result;\n      } catch (err: any) {\n        span.setStatus({ code: SpanStatusCode.ERROR, message: err.message });\n        span.recordException(err);\n\n        if (err instanceof CohereError) {\n          span.setAttribute('cohere.error.status', err.statusCode ?? 0);\n        }\n        throw err;\n      } finally {\n        span.end();\n      }\n    }\n  );\n}\n```\n\n### Step 4: Structured Logging\n\n```typescript\nimport pino from 'pino';\n\nconst logger = pino({ name: 'cohere', level: process.env.LOG_LEVEL ?? 'info' });\n\nfunction logCohereCall(\n  endpoint: string,\n  model: string,\n  durationMs: number,\n  status: 'success' | 'error',\n  meta?: Record\u003Cstring, unknown>\n) {\n  logger[status === 'error' ? 'error' : 'info']({\n    service: 'cohere',\n    endpoint,\n    model,\n    durationMs,\n    status,\n    ...meta,\n  });\n}\n\n\u002F\u002F Combined instrumentation\nasync function observedCall\u003CT>(\n  endpoint: string,\n  model: string,\n  fn: () => Promise\u003CT>\n): Promise\u003CT> {\n  return tracedCohereCall(endpoint, model, () =>\n    instrumentedCall(endpoint, model, async () => {\n      const start = Date.now();\n      try {\n        const result = await fn();\n        logCohereCall(endpoint, model, Date.now() - start, 'success', {\n          tokens: (result as any)?.usage?.billedUnits,\n        });\n        return result;\n      } catch (err) {\n        logCohereCall(endpoint, model, Date.now() - start, 'error', {\n          error: err instanceof CohereError ? err.statusCode : 'timeout',\n        });\n        throw err;\n      }\n    })\n  );\n}\n```\n\n### Step 5: Alert Rules\n\n```yaml\n# prometheus\u002Fcohere-alerts.yml\ngroups:\n  - name: cohere\n    rules:\n      - alert: CohereHighErrorRate\n        expr: |\n          rate(cohere_errors_total[5m]) \u002F\n          rate(cohere_requests_total[5m]) > 0.05\n        for: 5m\n        labels:\n          severity: warning\n        annotations:\n          summary: \"Cohere error rate > 5%\"\n          description: \"{{ $labels.endpoint }} error rate: {{ $value | humanizePercentage }}\"\n\n      - alert: CohereRateLimited\n        expr: rate(cohere_errors_total{status_code=\"429\"}[5m]) > 0.1\n        for: 2m\n        labels:\n          severity: warning\n        annotations:\n          summary: \"Cohere rate limiting detected\"\n\n      - alert: CohereHighLatency\n        expr: |\n          histogram_quantile(0.95,\n            rate(cohere_request_duration_seconds_bucket[5m])\n          ) > 10\n        for: 5m\n        labels:\n          severity: warning\n        annotations:\n          summary: \"Cohere P95 latency > 10s\"\n\n      - alert: CohereAuthFailure\n        expr: cohere_errors_total{status_code=\"401\"} > 0\n        for: 1m\n        labels:\n          severity: critical\n        annotations:\n          summary: \"Cohere authentication failure — check API key\"\n\n      - alert: CohereHighTokenBurn\n        expr: rate(cohere_tokens_total[1h]) > 100000\n        for: 15m\n        labels:\n          severity: warning\n        annotations:\n          summary: \"Cohere token burn rate > 100K\u002Fhour\"\n```\n\n### Step 6: Metrics Endpoint\n\n```typescript\n\u002F\u002F GET \u002Fmetrics\nimport express from 'express';\n\nconst app = express();\n\napp.get('\u002Fmetrics', async (req, res) => {\n  res.set('Content-Type', registry.contentType);\n  res.send(await registry.metrics());\n});\n```\n\n## Dashboard Panels (Grafana)\n\n| Panel | Query | Type |\n|-------|-------|------|\n| Request Rate | `rate(cohere_requests_total[5m])` | Time series |\n| Error Rate | `rate(cohere_errors_total[5m]) \u002F rate(cohere_requests_total[5m])` | Stat |\n| P50\u002FP95 Latency | `histogram_quantile(0.95, rate(cohere_request_duration_seconds_bucket[5m]))` | Time series |\n| Token Usage | `rate(cohere_tokens_total[1h])` | Bar chart |\n| Errors by Code | `sum by (status_code)(rate(cohere_errors_total[5m]))` | Pie chart |\n\n## Output\n- Prometheus metrics for requests, latency, tokens, and errors\n- OpenTelemetry traces with Cohere-specific attributes\n- Structured JSON logging with pino\n- AlertManager rules for error rate, latency, auth, and cost\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Missing token metrics | Usage not in response | Check `response.usage.billedUnits` |\n| High cardinality | Too many model labels | Use model family, not exact version |\n| Alert storm | Threshold too low | Tune thresholds for your traffic |\n| Trace gaps | Missing context propagation | Ensure OTel context flows through async |\n\n## Resources\n- [Prometheus Naming Conventions](https:\u002F\u002Fprometheus.io\u002Fdocs\u002Fpractices\u002Fnaming\u002F)\n- [OpenTelemetry JS](https:\u002F\u002Fopentelemetry.io\u002Fdocs\u002Flanguages\u002Fjs\u002F)\n- [Cohere API Reference](https:\u002F\u002Fdocs.cohere.com\u002Freference\u002Fabout)\n\n## Next Steps\nFor incident response, see `cohere-incident-runbook`.\n\n","# Cohere Observability\n\n## Overview\nSet up production observability for Cohere API v2 with Prometheus metrics, OpenTelemetry tracing, and AlertManager rules. Tracks per-endpoint latency, token usage, error rates, and costs.\n\n## Prerequisites\n- Prometheus or compatible metrics backend\n- OpenTelemetry SDK installed\n- `cohere-ai` SDK v7+\n\n## Instructions\n\n### Step 1: Metrics Collection\n\n```typescript\nimport { Registry, Counter, Histogram, Gauge } from 'prom-client';\n\nconst registry = new Registry();\n\n\u002F\u002F Per-endpoint request counter\nconst requestCounter = new Counter({\n  name: 'cohere_requests_total',\n  help: 'Total Cohere API requests',\n  labelNames: ['endpoint', 'model', 'status'],\n  registers: [registry],\n});\n\n\u002F\u002F Latency histogram\nconst requestDuration = new Histogram({\n  name: 'cohere_request_duration_seconds',\n  help: 'Cohere request duration',\n  labelNames: ['endpoint', 'model'],\n  buckets: [0.1, 0.25, 0.5, 1, 2.5, 5, 10, 30],\n  registers: [registry],\n});\n\n\u002F\u002F Token usage tracking\nconst tokenCounter = new Counter({\n  name: 'cohere_tokens_total',\n  help: 'Total tokens consumed',\n  labelNames: ['endpoint', 'model', 'direction'], \u002F\u002F direction: input|output\n  registers: [registry],\n});\n\n\u002F\u002F Error counter by type\nconst errorCounter = new Counter({\n  name: 'cohere_errors_total',\n  help: 'Cohere errors by status code',\n  labelNames: ['endpoint', 'status_code'],\n  registers: [registry],\n});\n\n\u002F\u002F Rate limit headroom\nconst rateLimitGauge = new Gauge({\n  name: 'cohere_rate_limit_remaining',\n  help: 'Remaining rate limit capacity',\n  labelNames: ['endpoint'],\n  registers: [registry],\n});\n```\n\n### Step 2: Instrumented Client Wrapper\n\n```typescript\nimport { CohereClientV2, CohereError, CohereTimeoutError } from 'cohere-ai';\n\nconst cohere = new CohereClientV2();\n\nasync function instrumentedCall\u003CT>(\n  endpoint: string,\n  model: string,\n  operation: () => Promise\u003CT>\n): Promise\u003CT> {\n  const timer = requestDuration.startTimer({ endpoint, model });\n\n  try {\n    const result = await operation();\n    requestCounter.inc({ endpoint, model, status: 'success' });\n    timer();\n\n    \u002F\u002F Track tokens from response\n    const usage = (result as any)?.usage?.billedUnits;\n    if (usage) {\n      if (usage.inputTokens) {\n        tokenCounter.inc({ endpoint, model, direction: 'input' }, usage.inputTokens);\n      }\n      if (usage.outputTokens) {\n        tokenCounter.inc({ endpoint, model, direction: 'output' }, usage.outputTokens);\n      }\n    }\n\n    return result;\n  } catch (err) {\n    requestCounter.inc({ endpoint, model, status: 'error' });\n    timer();\n\n    if (err instanceof CohereError) {\n      errorCounter.inc({ endpoint, status_code: String(err.statusCode) });\n    } else if (err instanceof CohereTimeoutError) {\n      errorCounter.inc({ endpoint, status_code: 'timeout' });\n    }\n\n    throw err;\n  }\n}\n\n\u002F\u002F Usage\nconst response = await instrumentedCall('chat', 'command-a-03-2025', () =>\n  cohere.chat({\n    model: 'command-a-03-2025',\n    messages: [{ role: 'user', content: query }],\n  })\n);\n```\n\n### Step 3: OpenTelemetry Tracing\n\n```typescript\nimport { trace, SpanStatusCode, SpanKind } from '@opentelemetry\u002Fapi';\n\nconst tracer = trace.getTracer('cohere-client', '1.0.0');\n\nasync function tracedCohereCall\u003CT>(\n  endpoint: string,\n  model: string,\n  operation: () => Promise\u003CT>\n): Promise\u003CT> {\n  return tracer.startActiveSpan(\n    `cohere.${endpoint}`,\n    { kind: SpanKind.CLIENT },\n    async (span) => {\n      span.setAttribute('cohere.model', model);\n      span.setAttribute('cohere.endpoint', endpoint);\n\n      try {\n        const result = await operation();\n\n        \u002F\u002F Add token usage to span\n        const usage = (result as any)?.usage?.billedUnits;\n        if (usage) {\n          span.setAttribute('cohere.tokens.input', usage.inputTokens ?? 0);\n          span.setAttribute('cohere.tokens.output', usage.outputTokens ?? 0);\n        }\n\n        span.setStatus({ code: SpanStatusCode.OK });\n        return result;\n      } catch (err: any) {\n        span.setStatus({ code: SpanStatusCode.ERROR, message: err.message });\n        span.recordException(err);\n\n        if (err instanceof CohereError) {\n          span.setAttribute('cohere.error.status', err.statusCode ?? 0);\n        }\n        throw err;\n      } finally {\n        span.end();\n      }\n    }\n  );\n}\n```\n\n### Step 4: Structured Logging\n\n```typescript\nimport pino from 'pino';\n\nconst logger = pino({ name: 'cohere', level: process.env.LOG_LEVEL ?? 'info' });\n\nfunction logCohereCall(\n  endpoint: string,\n  model: string,\n  durationMs: number,\n  status: 'success' | 'error',\n  meta?: Record\u003Cstring, unknown>\n) {\n  logger[status === 'error' ? 'error' : 'info']({\n    service: 'cohere',\n    endpoint,\n    model,\n    durationMs,\n    status,\n    ...meta,\n  });\n}\n\n\u002F\u002F Combined instrumentation\nasync function observedCall\u003CT>(\n  endpoint: string,\n  model: string,\n  fn: () => Promise\u003CT>\n): Promise\u003CT> {\n  return tracedCohereCall(endpoint, model, () =>\n    instrumentedCall(endpoint, model, async () => {\n      const start = Date.now();\n      try {\n        const result = await fn();\n        logCohereCall(endpoint, model, Date.now() - start, 'success', {\n          tokens: (result as any)?.usage?.billedUnits,\n        });\n        return result;\n      } catch (err) {\n        logCohereCall(endpoint, model, Date.now() - start, 'error', {\n          error: err instanceof CohereError ? err.statusCode : 'timeout',\n        });\n        throw err;\n      }\n    })\n  );\n}\n```\n\n### Step 5: Alert Rules\n\n```yaml\n# prometheus\u002Fcohere-alerts.yml\ngroups:\n  - name: cohere\n    rules:\n      - alert: CohereHighErrorRate\n        expr: |\n          rate(cohere_errors_total[5m]) \u002F\n          rate(cohere_requests_total[5m]) > 0.05\n        for: 5m\n        labels:\n          severity: warning\n        annotations:\n          summary: \"Cohere error rate > 5%\"\n          description: \"{{ $labels.endpoint }} error rate: {{ $value | humanizePercentage }}\"\n\n      - alert: CohereRateLimited\n        expr: rate(cohere_errors_total{status_code=\"429\"}[5m]) > 0.1\n        for: 2m\n        labels:\n          severity: warning\n        annotations:\n          summary: \"Cohere rate limiting detected\"\n\n      - alert: CohereHighLatency\n        expr: |\n          histogram_quantile(0.95,\n            rate(cohere_request_duration_seconds_bucket[5m])\n          ) > 10\n        for: 5m\n        labels:\n          severity: warning\n        annotations:\n          summary: \"Cohere P95 latency > 10s\"\n\n      - alert: CohereAuthFailure\n        expr: cohere_errors_total{status_code=\"401\"} > 0\n        for: 1m\n        labels:\n          severity: critical\n        annotations:\n          summary: \"Cohere authentication failure — check API key\"\n\n      - alert: CohereHighTokenBurn\n        expr: rate(cohere_tokens_total[1h]) > 100000\n        for: 15m\n        labels:\n          severity: warning\n        annotations:\n          summary: \"Cohere token burn rate > 100K\u002Fhour\"\n```\n\n### Step 6: Metrics Endpoint\n\n```typescript\n\u002F\u002F GET \u002Fmetrics\nimport express from 'express';\n\nconst app = express();\n\napp.get('\u002Fmetrics', async (req, res) => {\n  res.set('Content-Type', registry.contentType);\n  res.send(await registry.metrics());\n});\n```\n\n## Dashboard Panels (Grafana)\n\n| Panel | Query | Type |\n|-------|-------|------|\n| Request Rate | `rate(cohere_requests_total[5m])` | Time series |\n| Error Rate | `rate(cohere_errors_total[5m]) \u002F rate(cohere_requests_total[5m])` | Stat |\n| P50\u002FP95 Latency | `histogram_quantile(0.95, rate(cohere_request_duration_seconds_bucket[5m]))` | Time series |\n| Token Usage | `rate(cohere_tokens_total[1h])` | Bar chart |\n| Errors by Code | `sum by (status_code)(rate(cohere_errors_total[5m]))` | Pie chart |\n\n## Output\n- Prometheus metrics for requests, latency, tokens, and errors\n- OpenTelemetry traces with Cohere-specific attributes\n- Structured JSON logging with pino\n- AlertManager rules for error rate, latency, auth, and cost\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Missing token metrics | Usage not in response | Check `response.usage.billedUnits` |\n| High cardinality | Too many model labels | Use model family, not exact version |\n| Alert storm | Threshold too low | Tune thresholds for your traffic |\n| Trace gaps | Missing context propagation | Ensure OTel context flows through async |\n\n## Resources\n- [Prometheus Naming Conventions](https:\u002F\u002Fprometheus.io\u002Fdocs\u002Fpractices\u002Fnaming\u002F)\n- [OpenTelemetry JS](https:\u002F\u002Fopentelemetry.io\u002Fdocs\u002Flanguages\u002Fjs\u002F)\n- [Cohere API Reference](https:\u002F\u002Fdocs.cohere.com\u002Freference\u002Fabout)\n\n## Next Steps\nFor incident response, see `cohere-incident-runbook`.\n\n",{"name":5,"tags":49,"author":52,"license":15,"version":53,"description":54,"allowed-tools":55,"compatible-with":56},[50,51,35,25],"saas","ai","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Set up comprehensive observability for Cohere API v2 with metrics, traces, and alerts.\nUse when implementing monitoring for Chat\u002FEmbed\u002FRerank operations,\nsetting up dashboards, or configuring alerts for Cohere integrations.\nTrigger with phrases like \"cohere monitoring\", \"cohere metrics\",\n\"cohere observability\", \"monitor cohere\", \"cohere alerts\", \"cohere tracing\".\n","Read, Write, Edit","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fcohere-observability",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill cohere-observability",{"tool":72,"command":73},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill cohere-observability",{"tool":75,"command":76},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill cohere-observability","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fcohere-observability\u002FSKILL.md",true,[],[81,95,105,114,120,127],{"skillNo":82,"name":83,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":91,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[92,93,94],"model","model hierarchy","model hierarchy skill",{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":101,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[100],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[102,103,104],"MCP","zoom","zoom mcp",{"skillNo":106,"name":107,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[111,112,113,103],"sdk","zoom apps sdk","apps",{"skillNo":115,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[116],{"skillNo":121,"name":122,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[125],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[122],{"skillNo":128,"name":129,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[129]]