Extract actionable Linear tickets from ambiguous input — Slack conversations, call transcripts, screenshots, meeting notes, or any unstructured material. Proposes tickets in a scratchpad file for user review, then creates them in Linear on approval. Use when the user wants to turn conversations, transcripts, screenshots, or notes into Linear tickets. Also use when user says "create tickets from this", "send to linear", "make issues from this call/chat", or provides raw material and asks for tickets.
From dev-toolkitnpx claudepluginhub casper-studios/casper-marketplace --plugin dev-toolkitThis skill uses the workspace's default tool permissions.
references/config.jsonreferences/ticket-template.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Turn unstructured input into well-structured Linear tickets.
Look for team configuration in this order (first match wins):
~/.agents/configs/send-to-linear/config.json (user overrides)references/config.json (bundled defaults, relative to this skill file)Use the user config if found. Otherwise fall back to the bundled config.json.
If no user config exists AND the bundled config has empty required fields (team, default_assignee), stop and prompt the user:
No local config found. The bundled
references/config.jsonhas empty defaults and will be overwritten whenever this skill updates.Create a user config at:
~/.agents/configs/send-to-linear/config.jsonCopy the bundled
references/config.jsonas a starting point and fill in your team, project, assignee, labels, and conventions.
Same pattern for the ticket template:
~/.agents/configs/send-to-linear/ticket-template.md (user overrides)references/ticket-template.md (bundled default)The template rarely needs customization, so no prompt if only the bundled version exists.
Accept any combination of:
mcp__fireflies__* tools), pasted text, or a fileIf the user's input is ambiguous or incomplete, ask one clarifying question before proceeding. Do not over-interrogate.
For Fireflies transcripts specifically: fetch both the summary (fireflies_get_summary) and full transcript (fireflies_get_transcript). Use the summary for topic identification, the full transcript for detail extraction.
For short input (<5K chars): extract directly in the main context.
For long input (>5K chars, e.g. full call transcripts): launch parallel subagents, one per major topic or time segment, to extract:
Write to .claude/scratchpad/linear-tickets-YYYY-MM-DD.md using the format from references/ticket-template.md.
Every ticket with a real-world example from the source MUST include that example verbatim — do not summarize away specifics.
Skip for short/simple input. For call transcripts or long Slack threads:
Launch a verification subagent that reads the full source material and the drafted tickets, then produces a gap list:
Update the draft with any gaps found.
STOP. Tell the user the file is ready and wait for explicit instruction before creating anything in Linear.
The user may restructure, merge, split, rename, add notes, or tell you to skip items. Apply all feedback to the scratchpad file before proceeding.
Read config using the resolution order from Setup, then:
mcp__linear__list_teams — resolve team IDmcp__linear__list_issue_labels — resolve label IDsmcp__linear__list_projects — resolve project ID (if configured)mcp__linear__list_cycles with type: "current" — resolve current cycle (if assign_to_current_cycle is true)Create each approved ticket with mcp__linear__create_issue:
team: from configproject: from configassignee: from configcycle: current cycle numberstate: from config default_statuslabels: matched from ticket's Labels fieldtitle: from ticketdescription: full ticket body in markdownlinks: source link if available (e.g. Fireflies transcript URL, Slack permalink)Report created ticket identifiers back to the user.