CtrlK
BlogDocsLog inGet started
Tessl Logo

dash0/agent-skills

Expert guidance for configuring and deploying the OpenTelemetry Collector. Use when setting up a Collector pipeline, configuring receivers, exporters, or processors, deploying a Collector to Kubernetes or Docker, or forwarding telemetry to Dash0. Triggers on requests involving collector, pipeline, OTLP receiver, exporter, or Dash0 collector setup.

95

1.39x
Quality

93%

Does it follow best practices?

Impact

96%

1.39x

Average score across 12 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-7/

{
  "context": "Tests whether an agent correctly configures OpenTelemetry for a Node.js CommonJS Express service, covering SDK activation, exporter configuration, correct HTTP span status mapping, sensitive data handling, exception recording, and trace-log correlation.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Correct SDK activation flag",
      "description": "Uses --require (not --import) in NODE_OPTIONS to activate auto-instrumentation, matching CommonJS module system",
      "max_score": 8
    },
    {
      "name": "OTEL_TRACES_EXPORTER set",
      "description": "Sets OTEL_TRACES_EXPORTER=otlp explicitly (does not rely on default, which silently discards telemetry)",
      "max_score": 8
    },
    {
      "name": "gRPC protocol configured",
      "description": "Sets OTEL_EXPORTER_OTLP_PROTOCOL=grpc when the collector endpoint uses port 4317",
      "max_score": 8
    },
    {
      "name": "4xx SERVER span status",
      "description": "HTTP 4xx responses on SERVER spans are documented or coded as status UNSET, not ERROR",
      "max_score": 10
    },
    {
      "name": "5xx SERVER span status",
      "description": "HTTP 5xx responses on SERVER spans result in status ERROR with a descriptive message containing error class and context",
      "max_score": 8
    },
    {
      "name": "No span.recordException",
      "description": "Does NOT call span.recordException(error) for exception recording — uses a structured log record instead",
      "max_score": 10
    },
    {
      "name": "Exception log trace context",
      "description": "Exception log records include both trace_id and span_id extracted from the active span context, AND include exception.type, exception.message, exception.stacktrace as structured attributes",
      "max_score": 8
    },
    {
      "name": "URL query param redaction",
      "description": "URL attributes (url.full or similar) have query parameters stripped or redacted before being attached to spans",
      "max_score": 8
    },
    {
      "name": "No PII or credentials in telemetry",
      "description": "Does NOT attach raw auth headers, passwords, or email addresses directly as span or log attribute values",
      "max_score": 8
    },
    {
      "name": "Structured logging only",
      "description": "All log statements use structured key-value pairs; no template-literal string interpolation used as the primary log message",
      "max_score": 8
    },
    {
      "name": "Trace-log correlation in handlers",
      "description": "A helper or inline extraction of trace_id and span_id is used to inject trace context into log records emitted inside request handlers",
      "max_score": 8
    },
    {
      "name": "forceFlush on crash handlers",
      "description": "Registers uncaughtException and/or unhandledRejection process handlers that flush the tracer provider before calling process.exit",
      "max_score": 8
    }
  ]
}

README.md

tile.json