PollyHub

Linear Connector

Clean

Access Linear project management with managed OAuth to create, search, update, and manage issues, projects, and cycles using the Linear GraphQL API.

SKILL.md

---
name: linear-connector
description: "Access Linear project management with managed OAuth. Create, search, update, and manage issues, projects, and cycles. Use when the user wants to create a Linear issue, search tasks, update issue status, list projects, manage sprints/cycles, or query Linear data."
metadata:
  polly:
    polly_managed_connector: true
    auth:
      - env: LINEAR_ACCESS_TOKEN
        type: oauth2
        integration_id: linear
        description: Linear OAuth access
        scopes:
          - read
          - write
          - issues:create
          - comments:create
    primaryEnv: LINEAR_ACCESS_TOKEN
---

# Linear Connector

Access Linear project management through the Linear GraphQL API using managed OAuth.

## First-Time Setup

If Linear is not connected yet, run:

`manage_auth(action="connect", integration_id="linear", auth_env="LINEAR_ACCESS_TOKEN")`

## Auth & Security

- Authentication is managed by Polly + Nango from `metadata.polly.auth`
- Never ask users to paste tokens in chat
- Never print or log token values
- If auth fails, reconnect with:
  `manage_auth(action="connect", integration_id="linear", auth_env="LINEAR_ACCESS_TOKEN")`

## API Endpoint

`https://api.linear.app/graphql`

All requests are POST with:

`Authorization: $LINEAR_ACCESS_TOKEN`

## Quick Usage

List issues:

```bash
curl -sS -X POST \
  -H "Authorization: $LINEAR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"{ issues(first: 10) { nodes { id title state { name } assignee { name } priority createdAt } } }"}' \
  "https://api.linear.app/graphql"
```

Get an issue by ID:

```bash
curl -sS -X POST \
  -H "Authorization: $LINEAR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"{ issue(id: \"<issueId>\") { id title description state { name } assignee { name } priority labels { nodes { name } } } }"}' \
  "https://api.linear.app/graphql"
```

Create an issue:

```bash
curl -sS -X POST \
  -H "Authorization: $LINEAR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"mutation { issueCreate(input: { title: \"New issue\", teamId: \"<teamId>\" }) { success issue { id title identifier url } } }"}' \
  "https://api.linear.app/graphql"
```

Update an issue:

```bash
curl -sS -X POST \
  -H "Authorization: $LINEAR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"mutation { issueUpdate(id: \"<issueId>\", input: { stateId: \"<stateId>\" }) { success issue { id title state { name } } } }"}' \
  "https://api.linear.app/graphql"
```

Search issues:

```bash
curl -sS -X POST \
  -H "Authorization: $LINEAR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"{ issueSearch(query: \"search term\", first: 10) { nodes { id title state { name } assignee { name } } } }"}' \
  "https://api.linear.app/graphql"
```

List projects:

```bash
curl -sS -X POST \
  -H "Authorization: $LINEAR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"{ projects(first: 20) { nodes { id name state startDate targetDate } } }"}' \
  "https://api.linear.app/graphql"
```

## Rules

- All Linear API calls use POST to the single GraphQL endpoint
- Use `first` / `after` parameters for pagination in queries
- To get team IDs, query `{ teams { nodes { id name } } }`
- To get workflow state IDs, query `{ workflowStates { nodes { id name type } } }`
- On API errors, surface status + response body clearly
- On 401/403, reconnect with `manage_auth(action="connect", integration_id="linear", auth_env="LINEAR_ACCESS_TOKEN")`
- Never log, echo, or expose credential values in any output
Authorstella
Downloads5
Versions2
Published1d ago
Auth Requirements
LINEAR_ACCESS_TOKENoauth2

integration: linear

Version History

v1.1.0latest

Add polly_managed_connector flag and connector-skill tag

Apr 9, 2026

Clean.zip
v1.0.0

Initial release of v0.8 Tier 3 connectors

Apr 9, 2026

Clean.zip

SHA-256 (latest)

ba1cc90d37d59372a6988f5cbaa7271f8f04ed2db7b315df6ae7edfaeb1d1884