From posthog
Investigates PostHog APM traces from OpenTelemetry spans to analyze service performance, slow HTTP/database spans, errors, trace IDs, and attributes.
npx claudepluginhub anthropics/claude-plugins-official --plugin posthogThis skill uses the workspace's default tool permissions.
PostHog captures distributed traces from OpenTelemetry. Each trace is a tree of spans representing a request’s path through services.
Queries OpenSearch OpenTelemetry traces using PPL for GenAI agent invocations, tool executions, slow spans, errors, latency, and token usage via curl and Bash.
Analyzes OpenTelemetry distributed traces in Axiom via CLI queries to fetch traces by ID, find error/slow traces or by service, and debug distributed systems.
Guides implementing distributed tracing in microservices with OpenTelemetry, covering traces, spans, context propagation, and cross-service debugging.
Share bugs, ideas, or general feedback.
PostHog captures distributed traces from OpenTelemetry. Each trace is a tree of spans representing a request’s path through services.
Disambiguation: This skill is for APM / OpenTelemetry traces. Do not confuse with LLM analytics traces (agent/model $ai_* events and LLM observability tools) or logs (posthog:query-logs, posthog:logs-*).
| Tool | Purpose |
|---|---|
posthog:query-apm-spans | Search and filter spans (analytics-style query; parameters live under query) |
posthog:apm-trace-get | Fetch all spans for a hex trace_id |
posthog:apm-services-list | List distinct service names |
posthog:apm-attributes-list | List span or resource attribute keys |
posthog:apm-attribute-values-list | List values for a specific attribute key |
For aggregates or joins not covered by these tools, posthog:execute-sql may be appropriate once the span schema is confirmed for the project.
| Field | Description |
|---|---|
trace_id | Hex ID linking spans in one trace |
span_id | Hex ID for this span |
parent_span_id | Parent span hex ID (null for root) |
name | Operation name (e.g. HTTP GET /api/users) |
kind | 0=Unspecified, 1=Internal, 2=Server, 3=Client, 4=Producer, 5=Consumer |
service_name | Emitting service |
status_code | 0=Unset, 1=OK, 2=Error |
timestamp | Start time (ISO 8601) |
end_time | End time (ISO 8601) |
duration_nano | Duration in nanoseconds |
is_root_span | Whether this is the trace entry |
query.filterGroup)span — built-in fields: trace_id, span_id, duration, name, kind, status_codespan_attribute — span-level attributes (e.g. http.method)span_resource_attribute — resource attributes (e.g. Kubernetes labels)posthog:apm-services-list with {} (or applicable filters per tool schema).posthog:query-apm-spans with a query that filters by service and duration (remember nanoseconds: 1s = 1_000_000_000).posthog:apm-trace-get with { "trace_id": "<hex from step 2>" }.Use posthog:query-apm-spans with query.filterGroup on status_code exact / numeric operators as appropriate — OpenTelemetry status 2 means error.
posthog:apm-attributes-list — narrow keys (e.g. search "http").posthog:apm-attribute-values-list — inspect values for a chosen key.posthog:query-apm-spans using the discovered keys.query-apm-spans expects a query wrapper object; defaults often assume a recent time window — tighten query.dateRange when the question implies it.