Linear
Create and manage Linear issues using structured templates.
Overview
This skill handles Linear issue management:
- •Creates issues using configurable templates (default, bug, feature)
- •Converts plans/reports into properly formatted Linear issues
- •Supports template mapping to projects and topics
- •Supports creating issues in backlog or specific cycles
Modes
| Mode | Trigger | Purpose |
|---|---|---|
| configure | /linear configure | Initial setup - discover workspace and configure templates |
| learn | /linear learn | Update cache with new workspace data |
| template | /linear template <action> | Manage issue templates |
| create | /linear | Create a new issue (default) |
| update | /linear update <id> | Update an existing issue |
Configure Mode
Run /linear configure during initial setup to discover and cache your Linear workspace metadata:
/linear configure
This caches:
- •Teams - IDs, names, keys
- •Users - IDs, names, emails (for assignments)
- •Projects - Per-team project list
- •Labels - Per-team label list with colors
- •Cycles - Cycle numbers and IDs (not "current"/"next" which are dynamic)
- •Templates - Issue templates (default, bug, feature) with sections
- •Template Mappings - Topic/project to template associations
During configuration, you'll be asked to:
- •Approve or customize templates - Use defaults or modify sections
- •Link templates to projects/topics - e.g., "bug" topic → Bug Report template
Cache is stored in .claude/linear-cache.yaml and used for faster lookups.
When to run:
- •First time using the skill (during framework setup)
- •After framework updates
- •When you want to change template configuration
Learn Mode
Run /linear learn to update the cache with new workspace data:
/linear learn
When to run:
- •After team structure changes (new labels, projects, users)
- •If you see "not found" errors during issue creation
- •When new cycles start
- •Periodically to keep cache fresh
What it does:
- •Fetches current workspace data from Linear API
- •Compares with existing cache
- •Reports changes (new labels, projects, etc.)
- •Updates
.claude/linear-cache.yaml - •Preserves templates and mappings (not overwritten)
Template Mode
Manage issue templates with /linear template <action>:
| Action | Command | Description |
|---|---|---|
| list | /linear template list | Show all templates and mappings |
| add | /linear template add <name> | Create a new template |
| edit | /linear template edit <name> | Modify template sections |
| remove | /linear template remove <name> | Delete a template (except 'default') |
| map | /linear template map <template> <target> | Link template to project/topic |
| default | /linear template default <name> | Set the default template |
Template Mapping Examples
# Map bug template to 'bug' topic /linear template map bug topic:bug # Map technical template to 'Backend' project /linear template map technical project:Backend # Set 'feature' as default template /linear template default feature
Configuration
Config Location
Config path depends on how the plugin was installed:
| Plugin Scope | Config File | Git |
|---|---|---|
| project | .claude/skills/linear.yaml | Committed (shared) |
| local | .claude/skills/linear.local.yaml | Ignored (personal) |
| user | .claude/skills/linear.local.yaml | Ignored (personal) |
Precedence when reading (first found wins):
- •
.claude/skills/linear.local.yaml - •
.claude/skills/linear.yaml - •Skill defaults
Cache Location
The cache is always stored at .claude/linear-cache.yaml (per-project).
Optional Settings
| Variable | Description |
|---|---|
LINEAR_DEFAULT_TEAM | Default team name (optional) |
If not configured, the skill will prompt you to select a team (or use cached teams from learn mode).
Issue Templates
The skill includes three default templates. Templates are selected automatically based on topic/project mappings, or can be specified explicitly.
Default Template (Standard Issue)
## Problem Statement [What problem are we solving and why?] ## Proposed Solution [High-level approach] ## Acceptance Criteria [Given/When/Then specifications] ## Implementation Plan [Specific steps to implement] ## Technical Notes [Implementation details, gotchas]
Bug Report Template
Used automatically when topic is "bug" or label includes "Bug".
## Bug Description [What is the bug?] ## Steps to Reproduce [1. Do X, 2. Do Y, 3. See error] ## Expected Behavior [What should happen?] ## Actual Behavior [What actually happens?] ## Environment [OS, browser, version, etc.]
Feature Request Template
Used automatically when topic is "feature" or label includes "Feature".
## Problem Statement [What user problem does this solve?] ## Proposed Solution [How should this work?] ## User Stories [As a X, I want Y, so that Z] ## Acceptance Criteria [Definition of done]
Template Selection Priority
- •Explicit template - User specifies:
use bug template - •Project mapping - Project linked to template in
template_mappings.projects - •Topic mapping - Label/topic linked in
template_mappings.topics - •Default - Falls back to configured default template
Content Extraction from Plans
When given a plan/analysis/report, extract content using these mappings:
| Template Section | Extract From Document |
|---|---|
| title | Document heading, Executive Summary first sentence |
| problem_statement | Executive Summary, Problem, Current Pattern sections |
| proposed_solution | Proposed Solution, Approach, Strategy, Key Insight |
| acceptance_criteria | Benefits, Expected Outcomes - convert to Given/When/Then |
| implementation_plan | Implementation Steps - actionable steps |
| technical_notes | Risks and Mitigations, Gotchas, Related Files |
Empty sections: Omit entirely. Never use placeholder text.
Proposal Wizard
Before creating a ticket, show a proposal for discussion:
## Ticket Proposal **Title:** [inferred title] **Template:** [template name] (matched from [reason]) ### Metadata | Field | Value | Reasoning | |-------|-------|-----------| | Template | Bug Report | Matched from label 'Bug' | | Labels | Bug | [reasoning] | | Project | [project] | [reasoning] | | Estimate | 2pt | [file count], [complexity] | | Cycle | next | User specified | | State | Todo | Auto (cycle specified) | ### Description Preview [First lines of each section...] --- **Ready to create?** Or adjust any options? (You can also change the template with "use [template] template")
Wait for user approval before creating.
Metadata Inference
| Field | Inference | How |
|---|---|---|
| labels | Auto | Infer from work type |
| project | Auto | Infer from affected area |
| estimate | Auto | Based on effort calculation |
| priority | Ask | Only infer if "critical"/"blocking" language |
| cycle | User | Use what user says, default backlog |
| state | Auto | Todo if cycle specified, else Backlog |
| assignee | Ask | Ask or leave unassigned |
Estimate Guide
| Points | Time | Scope |
|---|---|---|
| 1pt | ~4 hours | 1-3 files, simple, 1 iteration |
| 2pt | ~1 workday | 1-5 files, moderate, 2 iterations |
| 3pt | ~2 workdays | 5-10 files, some complexity |
| 5pt | ~2-4 workdays | 10-20 files, significant refactoring |
| 8pt | ~1 workweek | 20+ files, architectural, critical path |
Quick Reference
Creates
- •Linear issues in configured team with proper template formatting
Required Fields (depends on template)
Default template:
- •title - Issue title
- •problem_statement - What problem are we solving?
Bug template:
- •title - Issue title
- •description - Bug description
- •steps_to_reproduce - Steps to reproduce
- •expected_behavior - What should happen
- •actual_behavior - What actually happens
Feature template:
- •title - Issue title
- •problem_statement - What user problem does this solve?
- •proposed_solution - How should this work?
Optional Metadata
| Field | Description | Example |
|---|---|---|
| template | Template to use | "default", "bug", "feature" |
| assignee | Who will work on it | "me", "name" |
| labels | Issue labels | ["Bug", "Improvement"] |
| project | Project name | "Project Name" |
| cycle | Sprint cycle | "current", "next", 26 |
| priority | 1=Urgent, 2=High, 3=Normal, 4=Low | 2 |
| estimate | Story points | 3 |
Optional Relationships
| Field | Description | Example |
|---|---|---|
| parent_id | Create as sub-issue | "XXX-123" |
| blocks | Issues this blocks | ["XXX-456"] |
| blocked_by | Issues blocking this | ["XXX-100"] |
| related_to | Related issues | ["XXX-310"] |
Usage
- •Request required information if not provided
- •Format content using the template
- •Show proposal wizard for user approval
- •Create issue in Linear with appropriate metadata
Full Documentation
See skill.yaml for complete procedure, patterns, and template details.