/opentelemetry
OpenTelemetry instrumentation conventions. Use when instrumenting code with spans, setting up tracing, or writing trace tests.
Claude Code
$ npx -y skills add bendrucker/claude --skill opentelemetry --agent claude-code
Codex
$ npx skills add bendrucker/claude --skill opentelemetry -a codex -y
Cursor
$ npx skills add bendrucker/claude --skill opentelemetry -a cursor -y
Gemini CLI
$ npx skills add bendrucker/claude --skill opentelemetry -a gemini-cli -y
GitHub Copilot
$ npx skills add bendrucker/claude --skill opentelemetry -a github-copilot -y
OpenCode
$ npx skills add bendrucker/claude --skill opentelemetry -a opencode -y
Windsurf
$ npx skills add bendrucker/claude --skill opentelemetry -a windsurf -y
SKILL.md
opentelemetry.SKILL.mdname: opentelemetry
description: >-
OpenTelemetry instrumentation conventions. Use when instrumenting code with
spans, setting up tracing, or writing trace tests.
user-invocable: true
disable-model-invocation: true
OpenTelemetry
Span Naming
Use short, low-cardinality names from semantic conventions:
- HTTP: `GET /users/{id}` (method + route template, never full URL path)
- DB: `SELECT users` (operation + table)
- RPC: `grpc.health.v1.Health/Check`
- Messaging: `orders process` (destination + operation)
Attributes
Use [semantic convention](https://opentelemetry.io/docs/specs/semconv/) attribute names — never invent your own:
- HTTP: `http.request.method`, `url.full`, `http.response.status_code`, `server.address`
- DB: `db.system`, `db.statement`, `db.namespace`
- General: `error.type`, `service.name`
Import from the versioned semconv package (e.g., `go.opentelemetry.io/otel/semconv/v1.x`).
Status
Only set status on errors: `span.SetStatus(codes.Error, err.Error())`. Never set `Ok` — unset is the success state. Call `RecordError` alongside `SetStatus`; it only adds a span event, doesn't change status.
For HTTP: 4xx is `Error` on client spans, `Unset` on server spans. 5xx is always `Error`.
Testing
Use in-memory exporters with `SimpleSpanProcessor` (not batch — batch introduces timing). Assert on exported spans' names, attributes, and status. No mocking needed.
Boundaries
Instrument network calls, I/O, and queue operations — not every function. Use span events (`AddEvent`) instead of separate log statements for events within a traced operation.
Read more
name: opentelemetry description: >- OpenTelemetry instrumentation conventions. Use when instrumenting code with spans, setting up tracing, or writing trace tests. user-invocable: true disable-model-invocation: true
OpenTelemetry
Span Naming
Use short, low-cardinality names from semantic conventions:
- HTTP: `GET /users/{id}` (method + route template, never full URL path)
- DB: `SELECT users` (operation + table)
- RPC: `grpc.health.v1.Health/Check`
- Messaging: `orders process` (destination + operation)
Attributes
Use [semantic convention](https://opentelemetry.io/docs/specs/semconv/) attribute names — never invent your own:
- HTTP: `http.request.method`, `url.full`, `http.response.status_code`, `server.address`
- DB: `db.system`, `db.statement`, `db.namespace`
- General: `error.type`, `service.name`
Import from the versioned semconv package (e.g., `go.opentelemetry.io/otel/semconv/v1.x`).
Status
Only set status on errors: `span.SetStatus(codes.Error, err.Error())`. Never set `Ok` — unset is the success state. Call `RecordError` alongside `SetStatus`; it only adds a span event, doesn't change status.
For HTTP: 4xx is `Error` on client spans, `Unset` on server spans. 5xx is always `Error`.
Testing
Use in-memory exporters with `SimpleSpanProcessor` (not batch — batch introduces timing). Assert on exported spans' names, attributes, and status. No mocking needed.
Boundaries
Instrument network calls, I/O, and queue operations — not every function. Use span events (`AddEvent`) instead of separate log statements for events within a traced operation.
Other skills on claude.
cli
Type-safe CLI argument parsing with commander and @commander-js/extra-typings, the standard parser for this repo's Bun scripts.…
prose-lab
Turn the user's labels on repo prose, or their notes from reviewing a document in Plannotator, into calibrated Vale rules.
activity
Report real device usage from ActivityWatch. Covers per-app time, window titles, and active vs idle spans. Use when asked "what…
agent-team
Orchestrating Claude Code agent teams. Use when creating teams, spawning teammates, assigning tasks, configuring teammate modes,…
handoff
Hand the current conversation off to a fresh background agent that picks up the work immediately, so you can step away and track…
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about opentelemetry.
- Which coding agents can use opentelemetry?
- opentelemetry installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

