mcpField
L
linear-cli

linear-cli

github.com/editframeProductivity1968 installsUpdated 2w ago
Repository

About linear-cli

linear-cli is a command-line tool for working with Linear issues and related workspace data. It supports issue lookup, search, creation, and updates, with GraphQL available for operations that the CLI does not handle well.

Key features

  1. 01View issue descriptions, comments, and metadata
  2. 02List and search issues
  3. 03Create issues interactively or from commands
  4. 04Update issue state and add comments
  5. 05Access Linear GraphQL through the CLI

Use cases

  1. 01Read requirements before starting an issue
  2. 02Find work by state, assignee, team, or text
  3. 03Create and update issues during task work

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/editframe/skills --skill linear-cli

After installing, type/linear-cliin Claude Code to confirm it loaded.

Details

From the project README

Linear CLI

Interact with the Linear issue tracker from the command line. The primary use cases are:

  • Starting tasks from issues -- fetch an issue by ID, read its description, and begin work
  • Searching/listing issues -- find issues by state, assignee, team, or free-text search
  • Viewing issue details -- read full descriptions, comments, and metadata
  • Updating issue state -- mark issues as started, add comments with progress

Setup

Install
brew install schpet/tap/linear
Authenticate
  1. Create an API key at https://linear.app/settings/account/security (requires member access, not guest)
  2. Run linear auth login and paste the key when prompted
  3. Verify: linear auth whoami
Configure for this repo
linear config

This writes a .linear.toml in the repo root with the team ID and workspace slug. The file is checked into git so all agents and developers share the same config.

Starting a Task from an Issue

When given an issue ID (e.g. ENG-123):

# Read the full issue -- description, state, assignee, labels, comments
linear issue view ENG-123

# Get just the title (useful for branch names or commit messages)
linear issue title ENG-123

# Get the Linear URL
linear issue url ENG-123

The agent should read the issue description to understand requirements before starting implementation.

Task Lifecycle

On start: Move the issue to "In Progress" immediately when beginning implementation.

linear issue update ENG-123 -s started
# or via GraphQL if CLI fails (see Updating Issues below)

On deploy to production: Move to "In Review" only after the deploy has fully completed and the change is live on production. Never update Linear state speculatively or immediately after pushing — a reviewer loading the issue will open the production site, which must already reflect the change.

The required sequence:

  1. Push to telecine main (or merge PR)
  2. Block on scripts/wait-for-telecine-action until the deploy job completes successfully
  3. Only then move to "In Review" and add a comment
# From monorepo/ — MUST complete before touching Linear
scripts/wait-for-telecine-action

# Then move to In Review
linear api <<'GRAPHQL'
mutation {
  issueUpdate(id: "EF2-123", input: { stateId: "2717b5fe-9ea0-429f-8edd-cf8eabe0551d" }) { success }
}
GRAPHQL

linear issue comment add EF2-123 -b "Deployed to production. <one-line summary of what changed>"

The comment should be a single sentence describing what was implemented or fixed, not a list of commits.

Searching and Listing Issues

# List unstarted issues assigned to you (default)
# --sort is required: manual or priority (NOT "updated")
linear issue list --sort priority

# List issues in a specific state
linear issue list -s started --sort priority
linear issue list -s backlog --sort priority
linear issue list --all-states --sort priority

# List issues for all assignees
linear issue list -A --sort priority

# List unassigned issues
linear issue list -U --sort priority

# Filter by project -- requires exact name match; use GraphQL if not found
linear issue list --project "Project Name" --sort priority --team ENG

# Filter by team (required if no .linear.toml in repo)
linear issue list --team ENG --sort priority

# Limit results
linear issue list --limit 10 --sort priority
List issues in a project via GraphQL (preferred for project browsing)

The CLI --project filter is fragile (exact name match, requires team). Use GraphQL instead:

# First find the project ID
linear api <<'GRAPHQL'
query {
  projects(first: 50) {
    nodes { id name }
  }
}
GRAPHQL

# Then fetch its issues
linear api <<'GRAPHQL'
query {
  project(id: "<id>") {
    issues(first: 50) {
      nodes { identifier title state { name } assignee { name } priority }
    }
  }
}
GRAPHQL
Free-text search via GraphQL

The CLI doesn't have a built-in search command, but the api subcommand exposes the full GraphQL API:

linear api --variable term="onboarding" <<'GRAPHQL'
query($term: String!) {
  searchIssues(term: $term, first: 20) {
    nodes { identifier title state { name } assignee { name } }
  }
}
GRAPHQL

Pipe to jq for filtering:

linear api --variable term="bug" <<'GRAPHQL'
query($term: String!) {
  searchIssues(term: $term, first: 20) {
    nodes { identifier title state { name } }
  }
}
GRAPHQL

Updating Issues

# Mark as started (sets state to "In Progress")
# NOTE: linear issue update fails with "Could not determine team key from issue ID"
# for non-standard prefixes (e.g. EF2-123). Use GraphQL mutation instead (see below).
linear issue update ENG-123 -s started

# Update title or description
linear issue update ENG-123 -t "New title"
linear issue update ENG-123 --description-file /tmp/desc.md

# Add a comment
linear issue comment add ENG-123 -b "Started implementation"

# For multi-line markdown comments, use a file
linear issue comment add ENG-123 --body-file /tmp/comment.md
Update issue state via GraphQL (when CLI update fails)
# Find the state ID first
linear api <<'GRAPHQL'
query {
  workflowStates(filter: { name: { eq: "Done" } }) {
    nodes { id name team { key } }
  }
}
GRAPHQL

# Then update one or more issues in a single mutation
linear api <<'GRAPHQL'
mutation {
  issueUpdate(id: "EF2-123", input: { stateId: "<state-id>" }) { success }
}
GRAPHQL

# Batch update multiple issues
linear api <<'GRAPHQL'
mutation {
  a: issueUpdate(id: "EF2-436", input: { stateId: "<state-id>" }) { success }
  b: issueUpdate(id: "EF2-435", input: { stateId: "<state-id>" }) { success }
}
GRAPHQL

Creating Issues

# Interactive (prompts for details)
linear issue create

# Non-interactive
linear issue create -t "Fix rendering bug" --description-file /tmp/desc.md -a self -s unstarted

# Create and immediately start working
linear issue create -t "Investigate flaky test" --start

Always use --description-file or --body-file for multi-line markdown content to avoid shell escaping issues.

Discovering CLI Options

Every command supports --help:

linear --help
linear issue --help
linear issue list --help
linear issue create --help

The CLI has extensive subcommands beyond issues -- linear team, linear project, linear document, linear label, linear milestone. Run --help on any of them.

Workspace Reference

Use these IDs directly in mutations — no need to query for them first.

Users
NameID
Collin Miller7fa0b8f1-b1d2-462a-8edd-5365fb5e1d4a
Jeremy Yudkin12ae7fdb-6af1-45fd-b656-a1052b387605
Workflow States (team: EF2)
StateIDType
Backlogdeceb52d-a969-493a-974c-228d0e595e08backlog
Todofb95e2be-9938-42bf-8248-276d4b1af951unstarted
In Progressac7b4c8f-d2a9-4e74-a9ff-392506703bd2started
In Review2717b5fe-9ea0-429f-8edd-cf8eabe0551dstarted
Done5fcec8c5-d69d-4cf4-bcad-e73654b2fae2completed
Canceled1fbe9606-44eb-486c-8521-daf848673435canceled
Duplicateec2113c9-0b49-407a-82e1-3d1f39c7037acanceled
Projects
NameIDState
Editframe 2026 Launch / Bug Fixesb43b5d1d-8431-4e19-b4ae-c05760c02996planned
App and Dashboard For Launch5fbea590-482f-4fcd-89f3-b0e581e43546started
Demo Improvements (Pre Launch)6c616f08-8bc9-4f8c-9109-26863099ffc3started
Dev Rel Catnip90b4643c-9b09-43fc-8fd8-9e78de7669a5started
Bug Fixes9c2beb23-32c3-4c24-a896-ca69eb99da49started
Clean Slate Task Collection12e632b9-6ce7-4a06-8403-46b419e3f649started
Docs/Site Feedback (2025)4ccf4054-9b6a-4ccf-85e6-088fe60851e4started
EF - Rendering Improvementsfd8a3df6-e174-41ee-a7f2-b7d49bca6094backlog
EF - Preview Improvements4772c169-6f0f-4c01-b408-801ebd49bb3abacklog
Launch Documentation Betaf8babb39-f732-4611-999e-f7db4d0aa48cbacklog
Stack Trace Projecte2f37910-6a4f-4f45-a877-889c62526e6bplanned

When to Use This Skill

  • User provides a Linear issue ID and wants to begin work on it
  • User asks to find or search for Linear issues
  • User wants to see what's assigned to them or what's in a specific state
  • User asks to update an issue's status or add a comment
  • Agent needs to read issue requirements before starting implementation

Comments

Markdown supported