linear

Manage Linear issues, projects, teams, and documents via the GraphQL API using curl or a Python CLI.

Updated Jun 5, 2026
One-click install
npx skills add https://github.com/xu1713/openhorse --skill linear-xu1713
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: linear
Source: https://github.com/xu1713/openhorse/tree/main/openhorse/openhorse/skills/productivity/linear
Command: npx skills add https://github.com/xu1713/openhorse --skill linear-xu1713

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Managing Linear issues and projects normally requires switching to the web UI or setting up an MCP server and OAuth flow. This Skill lets you query, create, and update Linear issues, projects, teams, and documents directly from the terminal using the GraphQL API with nothing more than a personal API key and curl. ## Core Features & Use Cases - Full Issue Lifecycle: List, search, create, and update issues, change workflow states, set priorities and due dates, assign users, add labels, and post comments via GraphQL mutations. - Zero-Dependency Python CLI: A stdlib-only helper script (scripts/linear_api.py) wraps common operations like get-issue ENG-42, update-status, and search-issues so you don't have to hand-write GraphQL. - Documents Support: Fetch, list, and search Linear Documents by slugId from the URL or by UUID, including Markdown content retrieval. - Use Case: Triage your backlog by listing all issues assigned to you, filter by team and state, then bulk-update statuses and add progress comments — all without leaving your terminal. ## Quick Start Set the LINEAR_API_KEY environment variable with a personal API key from Linear settings, then ask the agent to list your assigned Linear issues or get the details of a specific issue like ENG-123.

Frequently Asked Questions about linear

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a Linear issue from the command line?

Use the included Python CLI with `create-issue --title "..." --team ENG`, or send a GraphQL `issueCreate` mutation via curl to https://api.linear.app/graphql. You need the team UUID, which you can get from the list-teams command.

How do I change a Linear issue status via the API?

Run `update-status ENG-123 "In Progress"` with the helper script, which resolves the state name to a UUID automatically. With raw GraphQL, first query the team's workflow states to get the target stateId, then call the issueUpdate mutation.

Does the Linear API key need a Bearer prefix?

No. Linear personal API keys are sent directly in the Authorization header with no Bearer prefix. Create a key under Linear Settings > Account > Security & access > Personal API keys and set it as LINEAR_API_KEY.

How do I fetch a Linear document from its URL?

Extract the trailing hex slugId from the document URL and run `get-document <slugId>`, or filter the documents collection with `slugId: { eq: ... }` in GraphQL. The document(id:) query only accepts full UUIDs, not slugIds.

Why does my Linear GraphQL request return HTTP 200 but no data?

Linear returns HTTP 200 even when the GraphQL response contains an errors array. Always inspect the errors field in the response body; the helper script prints GraphQL errors to stderr and exits non-zero when no data is returned.

What are the Linear API rate limits?

Linear allows 5,000 requests per hour and 3,000,000 complexity points per hour per API key. Use `first: N` to limit result sizes and monitor the X-RateLimit-Requests-Remaining response header.