Agent skill

Linear

by OpenHands in OpenHands/extensions

Interact with Linear project management - query issues, update status, create tickets, and manage workflows using the Linear GraphQL API.

MITAuto-check passedBackend & APIs

Install Linear

skills CLI
$ npx skills add OpenHands/extensions --skill linear -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install OpenHands/extensions linear --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/OpenHands/extensions.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/linear .claude/skills/linear && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
linear
GitHub stars
157
Token cost
~1.9k tokens
SKILL.md length
347 words
Files
6 (incl. references)
Skills in repo
78
Repo updated
First seen
Licence
MIT

At a glance

Interact with Linear project management - query issues, update status, create tickets, and manage workflows using the Linear GraphQL API.

  • Works in 3 steps: Search for the issue to get its UUID → Get available workflow states → Update the issue state
  • Working with Linear tickets
  • SKILL.md covers Connection selection, Understanding Linear Identifiers, Authentication and Common Queries, plus 6 more sections
  • Calls curl and jq; reaches api.linear.app; needs LINEAR_API_KEY

What it does

Linear is an agent skill from OpenHands/extensions. Interact with Linear project management - query issues, update status, create tickets, and manage workflows using the Linear GraphQL API. Use when working with Linear tickets, sprints, or project tracking.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `.plugin/plugin.json`, `README.md` and `references/windows.md`).

It sits in Backend & APIs, covering GraphQL and Project management. It works with GraphQL and Linear. The repository describes itself as: Public registry for OpenHands extensions. The licence is MIT.

When your agent uses it

  • Working with Linear tickets
  • Project tracking

Example prompts

  • “/linear”

Requirements

  • A credential in LINEAR_API_KEY

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Search for the issue to get its UUID
  2. Get available workflow states
  3. Update the issue state

What it can do on your machine

Read from SKILL.md and the folder at commit d008b81. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.linear.app

    Also links to:

    • developers.linear.app
    • studio.apollographql.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • LINEAR_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Linear loads about 1.9k tokens when it runs, and up to ~2.1k if it reads all its reference files. Until then it costs about 53 tokens; SKILL.md has 347 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~53
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from OpenHands/extensions at commit d008b81, republished under its MIT licence (© OpenHands). 347 words, ~1,889 tokens.

Download SKILL.mdSave it as .claude/skills/linear/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
linear
description
Interact with Linear project management - query issues, update status, create tickets, and manage workflows using the Linear GraphQL API. Use when working with Linear tickets, sprints, or project tracking.
triggers
linear, ticket, issue tracking

Linear

Connection selection

Use authenticated Linear MCP tools first when they are available in the agent's environment. Detect this by tool availability, without depending on a particular MCP server name. Use the API key and direct GraphQL instructions below only when Linear MCP tools are unavailable or when raw API or curl access is explicitly needed.

Windows PowerShell equivalents for the repeated Linear GraphQL curl and environment-variable snippets are in references/windows.md.

<IMPORTANT>
Before using the direct API fallback, check if the required environment variable is set:
bash
[ -n "$LINEAR_API_KEY" ] && echo "LINEAR_API_KEY is set" || echo "LINEAR_API_KEY is NOT set"

If LINEAR_API_KEY is missing and authenticated Linear MCP tools are unavailable, ask the user to provide it before proceeding. </IMPORTANT>

Understanding Linear Identifiers

Linear uses two types of identifiers for issues:

  • Human-readable identifier (e.g., ALL-1234): Displayed to users, used in search queries. This is the team key + number.
  • UUID (e.g., a1b2c3d4-e5f6-7890-abcd-ef1234567890): Required for all mutations (update, comment, etc.). Returned as id in query results.

Important workflow: When working with issues, you must:

  1. Search or query using the human-readable identifier
  2. Extract the id (UUID) from the query result
  3. Use the UUID in any mutation operations

Authentication

All Linear API requests use GraphQL with the API key in the Authorization header:

bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{"query": "YOUR_GRAPHQL_QUERY"}'

Common Queries

Get Assigned Issues (Open)
bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "query { viewer { assignedIssues(first: 50, filter: { state: { type: { nin: [\"completed\", \"canceled\"] } } }) { nodes { id identifier title priority priorityLabel state { name type } description createdAt updatedAt } } } }"
  }' | jq '.data.viewer.assignedIssues.nodes'
Get Issues by Priority

Priority values: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low

bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "query { viewer { assignedIssues(first: 50, filter: { priority: { lte: 2 }, state: { type: { nin: [\"completed\", \"canceled\"] } } }) { nodes { id identifier title priority priorityLabel state { name } } } } }"
  }' | jq '.data.viewer.assignedIssues.nodes'
Get Issue Details
bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "query { issue(id: \"ISSUE_UUID\") { id identifier title description state { name } priority assignee { name email } labels { nodes { name } } comments { nodes { body createdAt user { name } } } } }"
  }' | jq '.data.issue'
Search Issues by Identifier
bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "query { issueSearch(query: \"ALL-1234\", first: 5) { nodes { id identifier title state { name } } } }"
  }' | jq '.data.issueSearch.nodes'

Common Mutations

Update Issue State

First, get available workflow states:

bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "query { workflowStates { nodes { id name type } } }"
  }' | jq '.data.workflowStates.nodes'

Then update the issue:

bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "mutation { issueUpdate(id: \"ISSUE_UUID\", input: { stateId: \"STATE_UUID\" }) { success issue { identifier state { name } } } }"
  }' | jq '.data.issueUpdate'
Add Comment to Issue
bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "mutation { commentCreate(input: { issueId: \"ISSUE_UUID\", body: \"Your comment here\" }) { success comment { id body } } }"
  }' | jq '.data.commentCreate'
Create New Issue
bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "mutation { issueCreate(input: { teamId: \"TEAM_UUID\", title: \"Issue Title\", description: \"Issue description\", priority: 2 }) { success issue { identifier title url } } }"
  }' | jq '.data.issueCreate'

End-to-End Workflow: Move Issue to "In Progress"

This example shows the complete flow to change an issue's state using its human-readable identifier:

Step 1: Search for the issue to get its UUID
bash
# Search for issue ALL-1234 and extract its UUID
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "query { issueSearch(query: \"ALL-1234\", first: 1) { nodes { id identifier title state { name } } } }"
  }' | jq '.data.issueSearch.nodes[0]'
# Save the "id" value (UUID) from the response
Step 2: Get available workflow states
bash
# List all workflow states to find the "In Progress" state UUID
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "query { workflowStates { nodes { id name type } } }"
  }' | jq '.data.workflowStates.nodes[] | select(.name == "In Progress")'
# Save the "id" value of the desired state
Step 3: Update the issue state
bash
# Use the issue UUID and state UUID from previous steps
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "mutation { issueUpdate(id: \"ISSUE_UUID_FROM_STEP_1\", input: { stateId: \"STATE_UUID_FROM_STEP_2\" }) { success issue { identifier state { name } } } }"
  }' | jq '.data.issueUpdate'

Get Team Information

bash
curl -s -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_KEY" \
  -d '{
    "query": "query { teams { nodes { id name key } } }"
  }' | jq '.data.teams.nodes'

Priority Levels

PriorityLabelRecommended Action
1UrgentWork on immediately
2HighWork on first
3MediumNormal priority
4LowWhen time permits
0NoneBacklog

State Types

  • backlog - Not yet started
  • unstarted - Todo
  • started - In Progress
  • completed - Done
  • canceled - Won't do

Documentation

© OpenHands, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in skills/linear of OpenHands/extensions.

  • SKILL.md
  • .claude-plugin
  • .codex-plugin
  • .plugin/plugin.json
  • README.md
  • references/windows.md

Open the folder on GitHubat commit d008b81

Compare with similar skills

Linear next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Linear compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Linear this skillOpenHands/extensions157—~1.9kAutomated safety check: PassMIT
Linearletta-ai/lettabot326—~583Automated safety check: PassApache-2.0
Linear APInesszer/linear-cli138—~213Automated safety check: NotesMIT
Linearteam-mirai/mirai-gikai212—~1.9kAutomated safety check: PassAGPL-3.0
LinearRedWoodOG/Hermes-Desktop1772 repos~2.8kAutomated safety check: PassMIT
Linear CLIletta-ai/skills1471 repos~1.1kAutomated safety check: PassISC

Similar skills

  • Linear

    letta-ai/lettabot

    Manage Linear issues via GraphQL API. An agent skill from letta-ai/lettabot.

    326 GitHub stars~583 tokensUpdated 4 mo ago
    Backend & APIsAuto-check passed
  • Linear API

    nesszer/linear-cli

    Execute raw GraphQL queries and mutations against the Linear API.

    138 GitHub stars~213 tokensUpdated 23 days ago
    Backend & APIsAuto-check: notes
  • Linear

    team-mirai/mirai-gikai

    Linear と対話するためのスキル。Linear MCP サーバー(mcplinear ツール)を 優先的に使用し、MCP でカバーされない生の GraphQL 操作(イントロスペクション、 ファイルアップロードなど)は lineargraphql クライアントツールにフォールバックする。

    212 GitHub stars~1.9k tokensUpdated today
    Backend & APIsAuto-check passed
  • Linear

    RedWoodOG/Hermes-Desktop

    Manage Linear issues, projects, and teams via the GraphQL API.

    177 GitHub starsUsed in 2 repos~2.8k tokens
    Backend & APIsAuto-check passed
  • Linear CLI

    letta-ai/skills

    Manage Linear issues from the command line using the linear cli.

    147 GitHub starsUsed in 1 repo~1.1k tokens
    Backend & APIsAuto-check passed
  • Linear

    taracodlabs/aiden

    Manage Linear issues, projects, and cycles via the Linear GraphQL API

    849 GitHub stars~1k tokensUpdated 24 days ago
    Backend & APIsAuto-check passed

More from OpenHands/extensions

All 78 skills in this repo
  • Agent Readiness Report

    OpenHands/extensions

    Evaluate how well a codebase supports autonomous AI-assisted development.

    157 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Discord

    OpenHands/extensions

    Build and automate Discord integrations (bots, webhooks, slash commands, and REST API workflows).

    157 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • GitHub

    OpenHands/extensions

    Interact with GitHub repositories, pull requests, issues, and workflows using the GITHUBTOKEN environment variable and GitHub CLI.

    157 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • GitHub Issue To PR

    OpenHands/extensions

    Create an automation that implements GitHub issues when a configurable trigger label is applied.

    157 GitHub stars~4.4k tokensUpdated today
    Auto-check passed
  • GitHub Repo Monitor

    OpenHands/extensions

    This skill should be used when the user asks to "monitor a GitHub repository", "watch GitHub for issues or PRs", "respond to @OpenHands mentions on GitHub", "set up an OpenHands GitHub integration"…

    157 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • GitLab Issue To Mr

    OpenHands/extensions

    Create an automation that implements GitLab issues when a configurable trigger label is applied.

    157 GitHub stars~4.9k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Linear

What does Linear do?

Interact with Linear project management - query issues, update status, create tickets, and manage workflows using the Linear GraphQL API. Linear is an agent skill from OpenHands/extensions. Interact with Linear project management - query issues, update status, create tickets, and manage workflows using the Linear GraphQL API.

When should I use Linear?

Linear fits situations like: working with Linear tickets; project tracking.

How do I install Linear in Claude Code?

Run `npx skills add OpenHands/extensions --skill linear -a claude-code`. Or copy the skill folder (skills/linear in OpenHands/extensions) into .claude/skills/linear in your project. Claude Code loads it when a task matches its description.

How do I install Linear in Codex?

Run `npx skills add OpenHands/extensions --skill linear -a codex`. Or copy the skill folder (skills/linear in OpenHands/extensions) into .agents/skills/linear in your project. Codex loads it when a task matches its description.

Can I use Linear in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OpenHands/extensions --skill linear -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/linear, .gemini/skills/linear, .github/skills/linear and .opencode/skills/linear in your project.

What does Linear need to run?

Going by SKILL.md and its folder, Linear needs the command-line tools its instructions call (curl and jq) and credentials named LINEAR_API_KEY. Our summary lists: A credential in LINEAR_API_KEY.

Does Linear access the network?

SKILL.md names 3 domains. In commands or code: api.linear.app; the agent is likely to contact it when it follows the instructions. As links in the text: developers.linear.app and studio.apollographql.com. This is read from the text; nothing was executed.

Is Linear safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Linear use?

Linear is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Linear use?

About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 214 tokens, read only when the agent opens those files.

What are the alternatives to Linear?

Skills that share tags, products or a category with Linear: Linear (letta-ai/lettabot, 326 stars), Linear API (nesszer/linear-cli, 138 stars), Linear (team-mirai/mirai-gikai, 212 stars) and Linear (RedWoodOG/Hermes-Desktop, 177 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Linear?

OpenHands (a GitHub organization) maintains it in OpenHands/extensions, which has 157 GitHub stars. The repository holds 78 skills in this directory. The repository was last updated on October 6, 2026.

Source: OpenHands/extensions on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.