# Linear

Search, read, create, and update the user's Linear issues, projects, and comments...

- Repository: https://github.com/yc-software/qm (15597 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add yc-software/qm --skill linear -g -a claude-code -y`
Codex: `npx skills add yc-software/qm --skill linear -g -a codex -y`
Cursor: `npx skills add yc-software/qm --skill linear -g -a cursor -y`
Gemini CLI: `npx skills add yc-software/qm --skill linear -g -a gemini-cli -y`

## Description

Search, read, create, and update the user's Linear issues, projects, and comments through per-user OAuth.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Linear

Use this skill when the user asks about Linear issues, tickets, projects, cycles, or
their team's work tracking, finding issues, checking status, filing a bug, leaving a
comment, or updating an issue.

This is an OAuth connector. The resolved user's Linear token already lives on your
computer as an environment variable (the way a logged-in CLI's cached credential would):

- `$VAULT_TOKEN_API_LINEAR_APP`, for `api.linear.app`

Linear's API is GraphQL at `https://api.linear.app/graphql`. Pass the token as a bearer
header (`-H "Authorization: Bearer $VAULT_TOKEN_API_LINEAR_APP"`). Do not ask the user for
a token, log it, or use another principal's credential.

If the variable is empty or the API returns 401/400 (`authentication`), tell the user they
need to connect Linear (Connectors page) and stop, don't guess at issue data.

## Find / read issues

Query issues by text, assignee, or state:

```bash
curl -sS -X POST 'https://api.linear.app/graphql' \
  -H "Authorization: Bearer $VAULT_TOKEN_API_LINEAR_APP" \
  -H 'content-type: application/json' \
  --data '{"query":"{ issues(first: 20, filter: { title: { containsIgnoreCase: \"login\" } }) { nodes { identifier title state { name } assignee { name } url } } }"}'
```

Read one issue by id/identifier:

```bash
curl -sS -X POST 'https://api.linear.app/graphql' \
  -H "Authorization: Bearer $VAULT_TOKEN_API_LINEAR_APP" \
  -H 'content-type: application/json' \
  --data '{"query":"{ issue(id: \"ENG-123\") { identifier title description state { name } assignee { name } url comments { nodes { body user { name } } } } }"}'
```

Keep issue identifiers and `url`s in your answer so claims can be traced.

To create or assign an issue you usually need a team id, list them once:

The rest: https://github.com/yc-software/qm/blob/HEAD/skills-seed/linear/SKILL.md
