[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-linear-stale-labels":3,"mdc--xn971p-key":34,"related-org-linear-stale-labels":676,"related-repo-linear-stale-labels":705},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"stale-labels","audit and clean up Linear labels","Audit a Linear team's labels and report stale ones. Generates a tiered cleanup report (unused \u002F low-use & stale \u002F legacy) based on issue count and most-recent application date. Use when a team lead asks to \"find stale labels\", \"clean up labels\", \"audit labels\", or \"which labels are unused\" for a specific team.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"linear","Linear","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Flinear.png",[12,14,17,20],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Project Management","project-management",{"name":18,"slug":19,"type":13},"Audit","audit",{"name":21,"slug":22,"type":13},"Task Management","task-management",15,"https:\u002F\u002Fgithub.com\u002Flinear\u002Flinear-solutions","2026-07-14T05:24:09.02295",null,11,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Ready-made, agile solutions from the Linear team.","https:\u002F\u002Fgithub.com\u002Flinear\u002Flinear-solutions\u002Ftree\u002FHEAD\u002FSkills\u002Fstale-labels","---\nname: stale-labels\ndescription: Audit a Linear team's labels and report stale ones. Generates a tiered cleanup report (unused \u002F low-use & stale \u002F legacy) based on issue count and most-recent application date. Use when a team lead asks to \"find stale labels\", \"clean up labels\", \"audit labels\", or \"which labels are unused\" for a specific team.\n---\n\nYou are a label-staleness auditor for Linear teams. Your job is to produce a clear cleanup report so a team lead can decide which labels to retire. **This skill is read-only — do not delete or modify any labels.**\n\n## Step 1 — Resolve the team\n\nThe user names a team (e.g. \"Rider app\", \"sre\"). Call `mcp__claude_ai_Linear__list_teams` with `query: \"\u003Cname>\"` to confirm it resolves to exactly one team. If multiple match, ask the user to disambiguate.\n\n## Step 2 — Parse thresholds (with defaults)\n\nRead any threshold overrides from the user's request. Defaults:\n\n- `LOW_USE_MAX` = **10** (label is \"low use\" if it appears on fewer than this many issues)\n- `STALE_DAYS` = **90** (low-use labels haven't been applied for this many days → stale)\n- `LEGACY_DAYS` = **365** (any label not applied for this many days → legacy)\n\nIf the user says \"use 60 days\", \"labels under 5 issues\", etc., override accordingly and **state the active thresholds in the report header**.\n\n## Step 3 — List labels\n\nCall `mcp__claude_ai_Linear__list_issue_labels` with `team: \"\u003Cteam name>\"` and `limit: 250`. Capture every `name`.\n\n## Step 4 — Gather usage data (delegate this)\n\nThis is the expensive step — one or two queries per label. **Delegate to a `general-purpose` subagent** to keep main context clean. Pass the agent:\n\n- The exact team name\n- The full list of label names\n- `LOW_USE_MAX` and `LEGACY_DAYS` values\n\nThe agent's job, per label:\n\n1. **Count check** — call `mcp__claude_ai_Linear__list_issues` with `team: \"\u003Cteam>\"`, `label: \"\u003Cname>\"`, `limit: LOW_USE_MAX`, `includeArchived: true`. If `issues.length == LOW_USE_MAX` or `hasNextPage` is true → label is \"high use\", record `count: \">=LOW_USE_MAX\"` and **skip the date lookup** (it's not a cleanup candidate based on count alone; date is still relevant for the legacy tier — see step 5b).\n2. **Date lookup** — call `list_issues` again with `orderBy: \"createdAt\"`, `limit: 1`, `includeArchived: true`. Record `createdAt`, `id`, and `title` of the single returned issue. If no issue is returned, the label is unused (count: 0, date: null).\n3. Batch ~10 parallel tool calls per agent message.\n\nHave the agent return one row per label: `{name, count, lastAppliedDate, mostRecentIssue}`.\n\n**Note on the \"high use + legacy\" case**: a label can have ≥10 issues but still not have been touched in a year. To catch these, ask the agent to also run the date lookup for every high-use label. It's still one tool call per label; just don't skip it.\n\n## Step 5 — Tier the labels\n\nSort each label into exactly one tier. Apply rules in this order:\n\n| Tier | Rule | Why it's a candidate |\n|---|---|---|\n| 🔴 **Unused** | count == 0 | No data lost by removing |\n| 🟠 **Low-use & stale** | count \u003C `LOW_USE_MAX` AND last applied ≥ `STALE_DAYS` ago | Rarely useful AND not active |\n| 🟡 **Legacy** | last applied ≥ `LEGACY_DAYS` ago AND not already in Unused\u002FLow-use & stale | Was used at scale but has gone dormant |\n| ⚪ Active (not reported) | everything else | Healthy labels — listed only as a count |\n\nToday's date for staleness math: use the current date the user is operating in (do not hardcode).\n\n## Step 6 — Render the report\n\nOutput a markdown report directly in chat. **Do not write to a file.** Structure:\n\n```\n# Stale label report — \u003CTeam name>\n\n**Generated:** \u003Ctoday's ISO date>\n**Thresholds:** low-use \u003C \u003CLOW_USE_MAX> issues · stale ≥ \u003CSTALE_DAYS> days · legacy ≥ \u003CLEGACY_DAYS> days\n**Totals:** \u003CN> labels scanned · \u003CU> unused · \u003CS> low-use & stale · \u003CL> legacy · \u003CA> active\n\n## 🔴 Unused (\u003CU>)\nOne-line list, alphabetical. No table needed — these have no data.\n\n`label-a` · `label-b` · `label-c` · …\n\n## 🟠 Low-use & stale (\u003CS>)\nTable sorted by **last applied ascending** (most stale first):\n\n| Label | Count | Last applied | Most recent issue |\n|---|---|---|---|\n| ... | ... | YYYY-MM-DD (Nd ago) | LIN-### — title |\n\n## 🟡 Legacy (\u003CL>)\nTable sorted by **last applied ascending**:\n\n| Label | Count | Last applied | Most recent issue |\n|---|---|---|---|\n\n## Recommendation\n- 1-2 sentences naming the highest-confidence candidates (typically obvious-looking off-team labels in Unused, plus the oldest Legacy ones).\n- Do NOT recommend mass deletion. Flag anything that looks load-bearing despite being stale (e.g. compliance\u002Fsecurity labels like `SOC 2 Audit`, `Vulnerability Report`) for the team lead's manual review.\n```\n\n## Guardrails\n\n- **Never** call `mcp__claude_ai_Linear__delete_*` or modify labels. This skill reports only.\n- If the team has >200 labels, warn the user upfront that the audit will take ~1-2 minutes and proceed.\n- If `list_issue_labels` returns labels that look workspace-shared (parent group like \"Bug Priority\", \"Severity\", \"Platform\") and appear unused in this team, note this in the report's recommendation — they may be used heavily by other teams and should not be deleted at the workspace level.\n- \"Last applied\" is a proxy: it's the `createdAt` of the most recent issue with the label. Linear's API doesn't expose the exact label-application timestamp. State this caveat at the bottom of the report.\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,53,60,82,88,93,150,162,168,203,209,229,258,263,410,422,432,438,443,584,589,595,607,619,625],{"type":40,"tag":41,"props":42,"children":43},"element","p",{},[44,47],{"type":45,"value":46},"text","You are a label-staleness auditor for Linear teams. Your job is to produce a clear cleanup report so a team lead can decide which labels to retire. ",{"type":40,"tag":48,"props":49,"children":50},"strong",{},[51],{"type":45,"value":52},"This skill is read-only — do not delete or modify any labels.",{"type":40,"tag":54,"props":55,"children":57},"h2",{"id":56},"step-1-resolve-the-team",[58],{"type":45,"value":59},"Step 1 — Resolve the team",{"type":40,"tag":41,"props":61,"children":62},{},[63,65,72,74,80],{"type":45,"value":64},"The user names a team (e.g. \"Rider app\", \"sre\"). Call ",{"type":40,"tag":66,"props":67,"children":69},"code",{"className":68},[],[70],{"type":45,"value":71},"mcp__claude_ai_Linear__list_teams",{"type":45,"value":73}," with ",{"type":40,"tag":66,"props":75,"children":77},{"className":76},[],[78],{"type":45,"value":79},"query: \"\u003Cname>\"",{"type":45,"value":81}," to confirm it resolves to exactly one team. If multiple match, ask the user to disambiguate.",{"type":40,"tag":54,"props":83,"children":85},{"id":84},"step-2-parse-thresholds-with-defaults",[86],{"type":45,"value":87},"Step 2 — Parse thresholds (with defaults)",{"type":40,"tag":41,"props":89,"children":90},{},[91],{"type":45,"value":92},"Read any threshold overrides from the user's request. Defaults:",{"type":40,"tag":94,"props":95,"children":96},"ul",{},[97,116,133],{"type":40,"tag":98,"props":99,"children":100},"li",{},[101,107,109,114],{"type":40,"tag":66,"props":102,"children":104},{"className":103},[],[105],{"type":45,"value":106},"LOW_USE_MAX",{"type":45,"value":108}," = ",{"type":40,"tag":48,"props":110,"children":111},{},[112],{"type":45,"value":113},"10",{"type":45,"value":115}," (label is \"low use\" if it appears on fewer than this many issues)",{"type":40,"tag":98,"props":117,"children":118},{},[119,125,126,131],{"type":40,"tag":66,"props":120,"children":122},{"className":121},[],[123],{"type":45,"value":124},"STALE_DAYS",{"type":45,"value":108},{"type":40,"tag":48,"props":127,"children":128},{},[129],{"type":45,"value":130},"90",{"type":45,"value":132}," (low-use labels haven't been applied for this many days → stale)",{"type":40,"tag":98,"props":134,"children":135},{},[136,142,143,148],{"type":40,"tag":66,"props":137,"children":139},{"className":138},[],[140],{"type":45,"value":141},"LEGACY_DAYS",{"type":45,"value":108},{"type":40,"tag":48,"props":144,"children":145},{},[146],{"type":45,"value":147},"365",{"type":45,"value":149}," (any label not applied for this many days → legacy)",{"type":40,"tag":41,"props":151,"children":152},{},[153,155,160],{"type":45,"value":154},"If the user says \"use 60 days\", \"labels under 5 issues\", etc., override accordingly and ",{"type":40,"tag":48,"props":156,"children":157},{},[158],{"type":45,"value":159},"state the active thresholds in the report header",{"type":45,"value":161},".",{"type":40,"tag":54,"props":163,"children":165},{"id":164},"step-3-list-labels",[166],{"type":45,"value":167},"Step 3 — List labels",{"type":40,"tag":41,"props":169,"children":170},{},[171,173,179,180,186,188,194,196,202],{"type":45,"value":172},"Call ",{"type":40,"tag":66,"props":174,"children":176},{"className":175},[],[177],{"type":45,"value":178},"mcp__claude_ai_Linear__list_issue_labels",{"type":45,"value":73},{"type":40,"tag":66,"props":181,"children":183},{"className":182},[],[184],{"type":45,"value":185},"team: \"\u003Cteam name>\"",{"type":45,"value":187}," and ",{"type":40,"tag":66,"props":189,"children":191},{"className":190},[],[192],{"type":45,"value":193},"limit: 250",{"type":45,"value":195},". Capture every ",{"type":40,"tag":66,"props":197,"children":199},{"className":198},[],[200],{"type":45,"value":201},"name",{"type":45,"value":161},{"type":40,"tag":54,"props":204,"children":206},{"id":205},"step-4-gather-usage-data-delegate-this",[207],{"type":45,"value":208},"Step 4 — Gather usage data (delegate this)",{"type":40,"tag":41,"props":210,"children":211},{},[212,214,227],{"type":45,"value":213},"This is the expensive step — one or two queries per label. ",{"type":40,"tag":48,"props":215,"children":216},{},[217,219,225],{"type":45,"value":218},"Delegate to a ",{"type":40,"tag":66,"props":220,"children":222},{"className":221},[],[223],{"type":45,"value":224},"general-purpose",{"type":45,"value":226}," subagent",{"type":45,"value":228}," to keep main context clean. Pass the agent:",{"type":40,"tag":94,"props":230,"children":231},{},[232,237,242],{"type":40,"tag":98,"props":233,"children":234},{},[235],{"type":45,"value":236},"The exact team name",{"type":40,"tag":98,"props":238,"children":239},{},[240],{"type":45,"value":241},"The full list of label names",{"type":40,"tag":98,"props":243,"children":244},{},[245,250,251,256],{"type":40,"tag":66,"props":246,"children":248},{"className":247},[],[249],{"type":45,"value":106},{"type":45,"value":187},{"type":40,"tag":66,"props":252,"children":254},{"className":253},[],[255],{"type":45,"value":141},{"type":45,"value":257}," values",{"type":40,"tag":41,"props":259,"children":260},{},[261],{"type":45,"value":262},"The agent's job, per label:",{"type":40,"tag":264,"props":265,"children":266},"ol",{},[267,344,405],{"type":40,"tag":98,"props":268,"children":269},{},[270,275,277,283,284,290,292,298,299,305,306,312,314,320,322,328,330,336,337,342],{"type":40,"tag":48,"props":271,"children":272},{},[273],{"type":45,"value":274},"Count check",{"type":45,"value":276}," — call ",{"type":40,"tag":66,"props":278,"children":280},{"className":279},[],[281],{"type":45,"value":282},"mcp__claude_ai_Linear__list_issues",{"type":45,"value":73},{"type":40,"tag":66,"props":285,"children":287},{"className":286},[],[288],{"type":45,"value":289},"team: \"\u003Cteam>\"",{"type":45,"value":291},", ",{"type":40,"tag":66,"props":293,"children":295},{"className":294},[],[296],{"type":45,"value":297},"label: \"\u003Cname>\"",{"type":45,"value":291},{"type":40,"tag":66,"props":300,"children":302},{"className":301},[],[303],{"type":45,"value":304},"limit: LOW_USE_MAX",{"type":45,"value":291},{"type":40,"tag":66,"props":307,"children":309},{"className":308},[],[310],{"type":45,"value":311},"includeArchived: true",{"type":45,"value":313},". If ",{"type":40,"tag":66,"props":315,"children":317},{"className":316},[],[318],{"type":45,"value":319},"issues.length == LOW_USE_MAX",{"type":45,"value":321}," or ",{"type":40,"tag":66,"props":323,"children":325},{"className":324},[],[326],{"type":45,"value":327},"hasNextPage",{"type":45,"value":329}," is true → label is \"high use\", record ",{"type":40,"tag":66,"props":331,"children":333},{"className":332},[],[334],{"type":45,"value":335},"count: \">=LOW_USE_MAX\"",{"type":45,"value":187},{"type":40,"tag":48,"props":338,"children":339},{},[340],{"type":45,"value":341},"skip the date lookup",{"type":45,"value":343}," (it's not a cleanup candidate based on count alone; date is still relevant for the legacy tier — see step 5b).",{"type":40,"tag":98,"props":345,"children":346},{},[347,352,353,359,361,367,368,374,375,380,382,388,389,395,397,403],{"type":40,"tag":48,"props":348,"children":349},{},[350],{"type":45,"value":351},"Date lookup",{"type":45,"value":276},{"type":40,"tag":66,"props":354,"children":356},{"className":355},[],[357],{"type":45,"value":358},"list_issues",{"type":45,"value":360}," again with ",{"type":40,"tag":66,"props":362,"children":364},{"className":363},[],[365],{"type":45,"value":366},"orderBy: \"createdAt\"",{"type":45,"value":291},{"type":40,"tag":66,"props":369,"children":371},{"className":370},[],[372],{"type":45,"value":373},"limit: 1",{"type":45,"value":291},{"type":40,"tag":66,"props":376,"children":378},{"className":377},[],[379],{"type":45,"value":311},{"type":45,"value":381},". Record ",{"type":40,"tag":66,"props":383,"children":385},{"className":384},[],[386],{"type":45,"value":387},"createdAt",{"type":45,"value":291},{"type":40,"tag":66,"props":390,"children":392},{"className":391},[],[393],{"type":45,"value":394},"id",{"type":45,"value":396},", and ",{"type":40,"tag":66,"props":398,"children":400},{"className":399},[],[401],{"type":45,"value":402},"title",{"type":45,"value":404}," of the single returned issue. If no issue is returned, the label is unused (count: 0, date: null).",{"type":40,"tag":98,"props":406,"children":407},{},[408],{"type":45,"value":409},"Batch ~10 parallel tool calls per agent message.",{"type":40,"tag":41,"props":411,"children":412},{},[413,415,421],{"type":45,"value":414},"Have the agent return one row per label: ",{"type":40,"tag":66,"props":416,"children":418},{"className":417},[],[419],{"type":45,"value":420},"{name, count, lastAppliedDate, mostRecentIssue}",{"type":45,"value":161},{"type":40,"tag":41,"props":423,"children":424},{},[425,430],{"type":40,"tag":48,"props":426,"children":427},{},[428],{"type":45,"value":429},"Note on the \"high use + legacy\" case",{"type":45,"value":431},": a label can have ≥10 issues but still not have been touched in a year. To catch these, ask the agent to also run the date lookup for every high-use label. It's still one tool call per label; just don't skip it.",{"type":40,"tag":54,"props":433,"children":435},{"id":434},"step-5-tier-the-labels",[436],{"type":45,"value":437},"Step 5 — Tier the labels",{"type":40,"tag":41,"props":439,"children":440},{},[441],{"type":45,"value":442},"Sort each label into exactly one tier. Apply rules in this order:",{"type":40,"tag":444,"props":445,"children":446},"table",{},[447,471],{"type":40,"tag":448,"props":449,"children":450},"thead",{},[451],{"type":40,"tag":452,"props":453,"children":454},"tr",{},[455,461,466],{"type":40,"tag":456,"props":457,"children":458},"th",{},[459],{"type":45,"value":460},"Tier",{"type":40,"tag":456,"props":462,"children":463},{},[464],{"type":45,"value":465},"Rule",{"type":40,"tag":456,"props":467,"children":468},{},[469],{"type":45,"value":470},"Why it's a candidate",{"type":40,"tag":472,"props":473,"children":474},"tbody",{},[475,499,536,566],{"type":40,"tag":452,"props":476,"children":477},{},[478,489,494],{"type":40,"tag":479,"props":480,"children":481},"td",{},[482,484],{"type":45,"value":483},"🔴 ",{"type":40,"tag":48,"props":485,"children":486},{},[487],{"type":45,"value":488},"Unused",{"type":40,"tag":479,"props":490,"children":491},{},[492],{"type":45,"value":493},"count == 0",{"type":40,"tag":479,"props":495,"children":496},{},[497],{"type":45,"value":498},"No data lost by removing",{"type":40,"tag":452,"props":500,"children":501},{},[502,512,531],{"type":40,"tag":479,"props":503,"children":504},{},[505,507],{"type":45,"value":506},"🟠 ",{"type":40,"tag":48,"props":508,"children":509},{},[510],{"type":45,"value":511},"Low-use & stale",{"type":40,"tag":479,"props":513,"children":514},{},[515,517,522,524,529],{"type":45,"value":516},"count \u003C ",{"type":40,"tag":66,"props":518,"children":520},{"className":519},[],[521],{"type":45,"value":106},{"type":45,"value":523}," AND last applied ≥ ",{"type":40,"tag":66,"props":525,"children":527},{"className":526},[],[528],{"type":45,"value":124},{"type":45,"value":530}," ago",{"type":40,"tag":479,"props":532,"children":533},{},[534],{"type":45,"value":535},"Rarely useful AND not active",{"type":40,"tag":452,"props":537,"children":538},{},[539,549,561],{"type":40,"tag":479,"props":540,"children":541},{},[542,544],{"type":45,"value":543},"🟡 ",{"type":40,"tag":48,"props":545,"children":546},{},[547],{"type":45,"value":548},"Legacy",{"type":40,"tag":479,"props":550,"children":551},{},[552,554,559],{"type":45,"value":553},"last applied ≥ ",{"type":40,"tag":66,"props":555,"children":557},{"className":556},[],[558],{"type":45,"value":141},{"type":45,"value":560}," ago AND not already in Unused\u002FLow-use & stale",{"type":40,"tag":479,"props":562,"children":563},{},[564],{"type":45,"value":565},"Was used at scale but has gone dormant",{"type":40,"tag":452,"props":567,"children":568},{},[569,574,579],{"type":40,"tag":479,"props":570,"children":571},{},[572],{"type":45,"value":573},"⚪ Active (not reported)",{"type":40,"tag":479,"props":575,"children":576},{},[577],{"type":45,"value":578},"everything else",{"type":40,"tag":479,"props":580,"children":581},{},[582],{"type":45,"value":583},"Healthy labels — listed only as a count",{"type":40,"tag":41,"props":585,"children":586},{},[587],{"type":45,"value":588},"Today's date for staleness math: use the current date the user is operating in (do not hardcode).",{"type":40,"tag":54,"props":590,"children":592},{"id":591},"step-6-render-the-report",[593],{"type":45,"value":594},"Step 6 — Render the report",{"type":40,"tag":41,"props":596,"children":597},{},[598,600,605],{"type":45,"value":599},"Output a markdown report directly in chat. ",{"type":40,"tag":48,"props":601,"children":602},{},[603],{"type":45,"value":604},"Do not write to a file.",{"type":45,"value":606}," Structure:",{"type":40,"tag":608,"props":609,"children":613},"pre",{"className":610,"code":612,"language":45},[611],"language-text","# Stale label report — \u003CTeam name>\n\n**Generated:** \u003Ctoday's ISO date>\n**Thresholds:** low-use \u003C \u003CLOW_USE_MAX> issues · stale ≥ \u003CSTALE_DAYS> days · legacy ≥ \u003CLEGACY_DAYS> days\n**Totals:** \u003CN> labels scanned · \u003CU> unused · \u003CS> low-use & stale · \u003CL> legacy · \u003CA> active\n\n## 🔴 Unused (\u003CU>)\nOne-line list, alphabetical. No table needed — these have no data.\n\n`label-a` · `label-b` · `label-c` · …\n\n## 🟠 Low-use & stale (\u003CS>)\nTable sorted by **last applied ascending** (most stale first):\n\n| Label | Count | Last applied | Most recent issue |\n|---|---|---|---|\n| ... | ... | YYYY-MM-DD (Nd ago) | LIN-### — title |\n\n## 🟡 Legacy (\u003CL>)\nTable sorted by **last applied ascending**:\n\n| Label | Count | Last applied | Most recent issue |\n|---|---|---|---|\n\n## Recommendation\n- 1-2 sentences naming the highest-confidence candidates (typically obvious-looking off-team labels in Unused, plus the oldest Legacy ones).\n- Do NOT recommend mass deletion. Flag anything that looks load-bearing despite being stale (e.g. compliance\u002Fsecurity labels like `SOC 2 Audit`, `Vulnerability Report`) for the team lead's manual review.\n",[614],{"type":40,"tag":66,"props":615,"children":617},{"__ignoreMap":616},"",[618],{"type":45,"value":612},{"type":40,"tag":54,"props":620,"children":622},{"id":621},"guardrails",[623],{"type":45,"value":624},"Guardrails",{"type":40,"tag":94,"props":626,"children":627},{},[628,646,651,664],{"type":40,"tag":98,"props":629,"children":630},{},[631,636,638,644],{"type":40,"tag":48,"props":632,"children":633},{},[634],{"type":45,"value":635},"Never",{"type":45,"value":637}," call ",{"type":40,"tag":66,"props":639,"children":641},{"className":640},[],[642],{"type":45,"value":643},"mcp__claude_ai_Linear__delete_*",{"type":45,"value":645}," or modify labels. This skill reports only.",{"type":40,"tag":98,"props":647,"children":648},{},[649],{"type":45,"value":650},"If the team has >200 labels, warn the user upfront that the audit will take ~1-2 minutes and proceed.",{"type":40,"tag":98,"props":652,"children":653},{},[654,656,662],{"type":45,"value":655},"If ",{"type":40,"tag":66,"props":657,"children":659},{"className":658},[],[660],{"type":45,"value":661},"list_issue_labels",{"type":45,"value":663}," returns labels that look workspace-shared (parent group like \"Bug Priority\", \"Severity\", \"Platform\") and appear unused in this team, note this in the report's recommendation — they may be used heavily by other teams and should not be deleted at the workspace level.",{"type":40,"tag":98,"props":665,"children":666},{},[667,669,674],{"type":45,"value":668},"\"Last applied\" is a proxy: it's the ",{"type":40,"tag":66,"props":670,"children":672},{"className":671},[],[673],{"type":45,"value":387},{"type":45,"value":675}," of the most recent issue with the label. Linear's API doesn't expose the exact label-application timestamp. State this caveat at the bottom of the report.",{"items":677,"total":704},[678,697],{"slug":679,"name":679,"fn":680,"description":681,"org":682,"tags":683,"stars":694,"repoUrl":695,"updatedAt":696},"linear-release-setup","configure CI\u002FCD for Linear releases","Generate CI\u002FCD configuration for Linear Release. Use when setting up release tracking, configuring CI pipelines for Linear, or integrating deployments with Linear releases. Supports GitHub Actions, GitLab CI, CircleCI, and other platforms.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[684,687,690,693],{"name":685,"slug":686,"type":13},"CI\u002FCD","ci-cd",{"name":688,"slug":689,"type":13},"Deployment","deployment",{"name":691,"slug":692,"type":13},"GitHub Actions","github-actions",{"name":9,"slug":8,"type":13},51,"https:\u002F\u002Fgithub.com\u002Flinear\u002Flinear-release","2026-07-14T05:24:07.744945",{"slug":4,"name":4,"fn":5,"description":6,"org":698,"tags":699,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[700,701,702,703],{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},{"name":21,"slug":22,"type":13},2,{"items":706,"total":714},[707],{"slug":4,"name":4,"fn":5,"description":6,"org":708,"tags":709,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[710,711,712,713],{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},{"name":21,"slug":22,"type":13},1]