Help us improve
Share bugs, ideas, or general feedback.
From sentry-sdk-skills
Classify and apply SDK Telemetry labels to Linear issues based on their title and description. Use when triaging issues related to SDK telemetry signals: errors, traces, spans, profiles, replays, logs, metrics, cron checks, client reports, user feedbacks, or attachments. Triggers: "sdk telemetry label", "telemetry labeler", "label telemetry issues", "tag telemetry".
npx claudepluginhub getsentry/sdk-skills --plugin sentry-sdk-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/sentry-sdk-skills:linear-sdk-telemetry-labelerThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Classifies Linear issues and applies an **SDK Telemetry** label from the Sentry workspace's label
Applies GitHub label taxonomy for AI Maestro orchestration. Enforces cardinality rules for categories like status, priority, and type via CLI commands.
Manages Linear issues, projects, and teams using MCP tools, linear CLI, and GraphQL API. Create, update, query issues; handle labels, status, references, and backlogs.
Manages Linear issue lifecycle: create, update, transition states, build hierarchies, add labels/comments via SDK and GraphQL. For TypeScript/Node.js Linear users.
Share bugs, ideas, or general feedback.
Classifies Linear issues and applies an SDK Telemetry label from the Sentry workspace's label taxonomy based on the content of each issue's title and description.
This skill requires the Linear MCP server to be configured.
SDK Telemetry labels in the Sentry workspace (workspace-level, not per-team):
| Label | When to use |
|---|---|
| Errors | Error events, exception capture, crash reporting, error grouping, captureException, captureMessage, error payloads, fingerprinting |
| Traces | Distributed tracing, trace context propagation, trace sampling, sentry-trace header, W3C traceparent/baggage |
| Spans | Span creation, span attributes/tags, auto-instrumentation producing spans, startSpan, span operations, OTel span APIs |
| Profiles | Profiling, continuous profiling, function-level profiling, profiler lifecycle, profile envelope item |
| Replays | Session replay, replay recording/capture, replayId, rrweb integration, replay worker, replay envelope item |
| Logs | Structured log capture, sentry.logger, logger.info/warn/error, log envelope item |
| Metrics | Custom metrics, counters, gauges, histograms, distributions, metrics.increment, metrics.gauge, metrics.distribution |
| Checks | Cron monitors, check-ins, captureCheckIn, monitor slugs, scheduled task tracking |
| Client Reports | Client reports, discarded events reporting, envelope items for client reports, sendClientReports |
| User Feedbacks | User feedback widget, feedback form, captureFeedback, crash reporter UI, showReportDialog |
| Attachments | Attachments, file uploads, addAttachment, screenshot capture, view hierarchy dumps |
Two modes:
A — List of Linear IDs provided (e.g. SDK-123, SDK-456):
get_issue. Skip the team-fetch step entirely.B — No IDs provided:
getsentry org the repo name
matches the Linear team name, (2) explicitly stated by the user, (3) if still ambiguous, ask.query_data to list issues for the team, including each issue's label IDs.
Paginate (limit 50, use cursor) until done.Use query_data to fetch workspace-level labels and build a UUID map:
query_data: fetch all labels whose parent label name is "SDK Telemetry"
→ build a map: { "Errors": "<uuid>", "Spans": "<uuid>", ... }
If the workspace has no "SDK Telemetry" label group, surface that to the user before proceeding.
Filter issues client-side: keep only issues where none of the issue's label IDs appear in the Step 2 UUID map values (i.e., no SDK Telemetry label assigned yet).
Announce the total candidate count before continuing. If there are more than 25 candidates, process in chunks of 25, confirming each chunk before the next.
For each candidate issue, read its title and description. Apply heuristics in priority order — stop at the first match:
When ambiguous between Spans and Traces: spans are individual units of work; traces are
the propagation/sampling/context layer. An issue about instrumenting a library → Spans. An issue
about sentry-trace header or sampling → Traces.
When ambiguous between Logs and Errors: structured log capture → Logs. Error/exception capture → Errors.
Assign exactly one SDK Telemetry label. Mark confidence:
Show a summary table before writing anything:
| Issue | Title | Proposed Label | Confidence |
|---------|--------------------------------|----------------|---------------------|
| SDK-123 | Add span for DB queries | Spans | High |
| SDK-456 | Fix trace propagation in Fetch | Traces | High |
| SDK-789 | Improve SDK startup | — | Low — please review |
Ask: "Should I apply these labels? Reply with any corrections (e.g. 'SDK-789 → Logs') and I'll update the plan before applying."
If the user provides corrections, update the table and show the revised plan before proceeding.
For each approved classification:
get_issue to fetch the issue's current label IDs immediately before writingsave_issue with the full combined label setAlways re-fetch and always pass the full combined set. Linear replaces labels on update — labels added between Step 3 and now would be silently stripped if you use the cached label list.
Report as you go: "SDK-123 → Spans", "SDK-456 → Traces".