con un clic
linear-type-labeler
// Classify and apply Type labels to Linear issues based on their title and description.
// Classify and apply Type labels to Linear issues based on their title and description.
Creates Linear projects for SDK repositories based on a Linear initiative. Use when rolling out a feature across multiple SDKs, creating SDK projects from initiative, or setting up cross-SDK alignment work.
Implement a feature across Sentry SDK repositories by spawning parallel agents. Use when you have Linear initiatives/projects/issues and want to create draft PRs. Triggers on "implement across SDKs", "spawn SDK agents", "SDK implementation", "parallel SDK implementation", "continue SDK rollout".
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".
Generate or align a CONTRIBUTING.md for a Sentry SDK repository with the develop.sentry.dev standard template. Use when asked to "create contributing.md", "update contributing.md", "align contributing docs", "standardize contributor docs", or when the contributing guide is outdated, missing sections, or does not exist.
Review OpenTelemetry tracing span changes in SDK repositories for conformance to Sentry Conventions and OTel Semantic Conventions. Use when reviewing span instrumentation, "review spans", "check span conventions", "span review", "OTel span check", "tracing convention review".
Generate a formatted async daily standup message for the Sentry SDK team channel. Use when asked to create a "daily update", "async daily", "standup update", or "async team update".
| name | linear-type-labeler |
| description | Classify and apply Type labels to Linear issues based on their title and description. |
| allowed-tools | mcp__linear-server__query_data mcp__linear-server__get_issue mcp__linear-server__save_issue AskUserQuestion |
| compatibility | Requires the Linear MCP server to be configured. |
Classifies Linear issues and applies a Type 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.
Type labels in the Sentry workspace (workspace-level, not per-team):
| Label | When to use |
|---|---|
| Bug | Something is broken, regression, error, crash, incorrect behavior |
| Feature | New capability, integration, API, SDK support — something that doesn't exist yet |
| Improvement | Making existing functionality better — performance, DX, UX, reliability |
| Task | Chore, investigation, spike, migration, cleanup, operational work |
| Tracking Issue | Parent/umbrella tracking a larger body of work; has sub-issues or a checklist |
| Docs | Documentation, RFC, write-up, changelog, guide |
| Tests | Writing or fixing tests, coverage, test infrastructure |
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.Use query_data to fetch workspace-level labels and build a UUID map:
query_data: fetch all labels for the workspace (not the team)
→ filter to those whose parent label name is "Type"
→ build a map: { "Bug": "<uuid>", "Feature": "<uuid>", ... }
If the workspace has no "Type" label group, surface that to the user before proceeding.
If in mode A (list of IDs): use the already-fetched issues from Step 1. Filter client-side: keep only those where none of the issue's label IDs appear in the Step 2 UUID map values.
If in mode B (team): use query_data to list issues for the team, including each issue's
label IDs. Paginate (limit 50, use cursor) until done. Filter client-side: keep only issues
where none of the issue's label IDs appear in the Step 2 UUID map values (i.e., no Type 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:
[META], [EPIC], "Track", "Tracking"; or description has a checklist of
Linear/GitHub issue links → Tracking IssueWhen ambiguous between Feature and Improvement: does it add something that doesn't exist at all, or make something existing better? Former → Feature, latter → Improvement.
When ambiguous between Task and Improvement: is there a user-visible benefit (better performance, reliability, DX, API ergonomics)? If yes → Improvement. If it's purely internal with no user-visible impact → Task.
Assign exactly one Type label. Mark confidence:
Show a summary table before writing anything:
| Issue | Title | Proposed Type | Confidence |
|---------|------------------------|---------------|---------------------|
| SDK-123 | Fix crash on startup | Bug | High |
| SDK-456 | Add OAuth support | Feature | High |
| SDK-789 | Some vague title | Task | Low — please review |
Ask: "Should I apply these labels? Reply with any corrections (e.g. 'SDK-789 → Bug') 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 → Bug", "SDK-456 → Feature".