linear

star 4

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

qhkm By qhkm schedule Updated 2/26/2026

name: linear version: 1.0.0 description: Manage Linear issues, projects, and teams via the GraphQL API. author: ZeptoClaw license: MIT tags:

  • linear
  • issues
  • project-management
  • productivity env_needed:
  • name: LINEAR_API_KEY description: API key from linear.app/settings/api required: true metadata: {"zeptoclaw":{"emoji":"๐Ÿ”ท","requires":{"anyBins":["curl","jq"]}}}

Linear Skill

Create and manage Linear issues using the GraphQL API. Linear has no REST API โ€” all operations use a single GraphQL endpoint.

Setup

  1. Go to linear.app/settings/api โ†’ Personal API Keys
  2. Create a new key and copy it
export LINEAR_API_KEY="lin_api_xxx..."

List My Issues

curl -s -X POST "https://api.linear.app/graphql" \
  -H "Authorization: $LINEAR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ viewer { assignedIssues(first: 20) { nodes { id identifier title state { name } priority } } } }"}' \
  | jq '.data.viewer.assignedIssues.nodes[] | {identifier, title, state: .state.name, priority}'

Create an Issue

curl -s -X POST "https://api.linear.app/graphql" \
  -H "Authorization: $LINEAR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "mutation($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { identifier title url } } }",
    "variables": {
      "input": {
        "teamId": "TEAM_UUID_HERE",
        "title": "Fix login timeout",
        "description": "Users report 504 errors on login",
        "priority": 2
      }
    }
  }' | jq '.data.issueCreate.issue | {identifier, title, url}'

Update Issue Status

curl -s -X POST "https://api.linear.app/graphql" \
  -H "Authorization: $LINEAR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "mutation($id: String!, $input: IssueUpdateInput!) { issueUpdate(id: $id, input: $input) { success issue { identifier title state { name } } } }",
    "variables": {
      "id": "ISSUE_UUID_HERE",
      "input": {"stateId": "STATE_UUID_HERE"}
    }
  }' | jq '.data.issueUpdate.issue | {identifier, title, state: .state.name}'

List Teams

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

Tips

  • Linear is GraphQL-only โ€” no REST endpoints exist
  • UUIDs internally โ€” identifier (e.g. "ENG-123") is the human-friendly key
  • Priority: 0 (none), 1 (urgent), 2 (high), 3 (medium), 4 (low)
  • Rate limit: 1,500 requests per hour per user
  • Auth header has no Bearer prefix โ€” just the API key directly
  • Get team/state IDs first before creating or updating issues
Install via CLI
npx skills add https://github.com/qhkm/zeptoclaw-skills --skill linear
Repository Details
star Stars 4
call_split Forks 3
navigation Branch main
article Path SKILL.md
More from Creator