Linear Tickets
npx claude-code-templates@latest --mod integrations/linear-tickets Scanned by NVIDIA SkillSpector
Automated static analysis (no LLM) · v2.12.0 · 2026-10-17
Partial analysis: some checks could not run on this component.
SkillSpector looks for patterns such as shell commands, credential access, network calls or unpinned dependencies. An observation is something worth reading in the files before you install, not a confirmed vulnerability. Components that run code locally, like hooks, MCP servers and security tooling, naturally show more of them.
- Agent Config Directory AccessAgent Snooping · README.md:58
- MCP server referenced without pinned version: 'npx claude-code-templates'.MCP Rug Pull · README.md:52
- Skill declares no tool scope ('permissions' or 'allowed-tools') but code capabilities were detected: file_read, network.MCP Least Privilege · SKILL.md:1
- External Transmission ×2Data Exfiltration · hooks/linear-api.ts:5
- External TransmissionData Exfiltration · tests/linear-tickets.test.tsx:180
Learn more about NVIDIA SkillSpector.
Content
hooks/linear-tickets.tsx. Options: linearApiKey, assignee, teamKey, project, days, pollSeconds, status, openOnStart (set in user or managed settings pluginConfigs, or /config). Run claude plugin validate on the installed folder to see every event it hooks and every $ call it makes.
linear-tickets
Your Linear tickets in a side pane, with their status and a chart of how you are progressing.
linear: 2 in progress · 5 todo · 12 done (14d)
██████████████████▒▒▒▒▒▒░░░░░░░░░░░░████████████████████████
closed per day · 12 in 14d · max 4/day
█ █
▄ █ ▄ █
▁ ▁█▁▁ ▁█▁▁ ▁ █▁▁ ▁█▁
14d ago today
cycle 12 Sprint 40% done · 36% of time
scope ▅▅▆▆▇▇
done ▁▂▂▃▄▅
In progress (2)
◐ CLA-149 High Wizard, pricing and the slotThe drawing above is schematic; the real chart is as wide as the pane allows, one column per day, four rows tall. /linear opens it (/linear stop closes it). A row opens the ticket's detail (state, priority, estimate, project, due date) and a copy url button; the backlog folds open from its header.
What the charts are
- Status bar: your tickets split into in progress, todo, backlog and done (done = closed inside the
dayswindow). - Closed per day: a bar chart of how many tickets you closed on each of the last
daysdays, today last, in your local timezone, from each ticket'scompletedAt. - Cycle burn-up: when your tickets sit in a cycle running now, that cycle's
scopeHistoryandcompletedScopeHistoryas two sparklines, with its progress next to the share of its time already gone. Behind schedule is a "done" percentage below the "of time" one.
Scope and secrets
Read-only: one GraphQL query for issues and one for the cycle, never a mutation. The API key comes from the plugin options (linearApiKey, stored as sensitive), goes only to api.linear.app in the Authorization header (a personal key as given, an OAuth token lin_oauth_… as Bearer), and is never logged or drawn. Ticket titles are read into the pane in memory and not stored.
Writing back (moving a ticket to In Progress, commenting) is deliberately left out of this first version.
Options
linearApiKey: string Linear API key (required)
assignee: string "me" | "anyone" (default me)
teamKey: string only this team, the CLA of CLA-143 (default: every team)
project: string only projects whose name contains this (case-insensitive)
days: number history, 7-60 (default 14)
pollSeconds: number refresh interval, 30-3600 (default 120)
status: boolean status line summary; keeps polling with the pane closed (default false)
openOnStart: boolean open the pane at session start (default false)The query asks for the first 100 tickets that are open or closed inside the window, most recently updated first, without pagination: with assignee: anyone or a very busy account the done count and the closed-per-day chart can undercount, so narrow it with teamKey or project. The pane lists at most 10 in-progress, 8 todo and 5 done tickets (+N more says how many are left) and 12 backlog tickets once it is folded open. pollSeconds is honoured to the nearest 5 seconds. Fields used were checked against Linear's published schema.graphql: issues(filter, first, orderBy), Issue.state.type, completedAt, cycle, and cycle(id) with scopeHistory and completedScopeHistory.
Install
npx claude-code-templates@latest --mod integrations/linear-tickets
claudeIt is written to .claude/skills/linear-tickets/, which Claude Code auto-loads as linear-tickets@skills-dir once the workspace trust prompt is accepted. For one session with hot reload: claude --plugin-dir .claude/skills/linear-tickets. claude plugin validate .claude/skills/linear-tickets prints every event it hooks and every $ call it makes; claude plugin test .claude/skills/linear-tickets runs its tests.
Options are read from user settings (~/.claude/settings.json, never project settings), --settings <file> or managed settings, under the plugin's full id:
{ "pluginConfigs": { "linear-tickets@skills-dir": { "options": { } } } }Requirements. Mods are on by default in Claude Code 2.1.287+. Typed against Anthropic's declarations: https://github.com/anthropics/claude-code/tree/main/mods