Skip to content
API Design
Skill

/linear-graphql-skill

Operate Linear workspace issues, projects, and teams through Linear GraphQL API using UXC. Use when tasks require querying or creating issues, managing projects, or interacting with Linear workflow. Supports both Personal API Key and OAuth authentication.

BOOST
From plugin
uxc
11962 skills
Install
$ npx -y skills add holon-run/uxc --skill linear-graphql-skill --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/linear-graphql-skill

Context preview

The summary Claude sees to decide when to auto-load this skill.

Operate Linear workspace issues, projects, and teams through Linear GraphQL API using UXC. Use when tasks require querying or creating issues, managing projects, or interacting with Linear workflow. Supports both Personal API Key and OAuth authentication.

SKILL.md

linear-graphql-skill.SKILL.md
name: linear-graphql-skill
description: Operate Linear workspace issues, projects, and teams through Linear GraphQL API using UXC. Use when tasks require querying or creating issues, managing projects, or interacting with Linear workflow. Supports both Personal API Key and OAuth authentication.

Linear GraphQL Skill

Use this skill to run Linear GraphQL API operations through `uxc`.

Reuse the `uxc` skill guidance for discovery, schema inspection, auth lifecycle, and error recovery.

Prerequisites

  • `uxc` is installed and available in `PATH`.
  • Network access to `https://api.linear.app/graphql`.
  • Linear API key or OAuth credentials available.

Authentication

Linear supports two authentication methods:

Option 1: Personal API Key (Recommended for development)

1. Get your API key from Linear: https://linear.app/settings/api

2. Set credential with custom Authorization header:

   uxc auth credential set linear-graphql \
     --auth-type api_key \
     --header "Authorization:{{secret}}" \
     --secret "lin_api_XXX"

Or use environment variable:

   export LINEAR_API_KEY="lin_api_XXX"
   uxc auth credential set linear-graphql \
     --auth-type api_key \
     --header "Authorization:{{secret}}" \
     --secret-env LINEAR_API_KEY

3. Bind endpoint:

   uxc auth binding add \
     --id linear-graphql \
     --host api.linear.app \
     --path-prefix /graphql \
     --scheme https \
     --credential linear-graphql \
     --priority 100

**Important (Personal API Key only):** Linear API keys require `Authorization: lin_api_XXX` format (no `Bearer ` prefix). The `--header "Authorization:{{secret}}"` configuration above is required for API key auth. For OAuth access tokens, use standard `Authorization: Bearer <token>` semantics (handled by the OAuth credential flow in `uxc`).

Credential/binding IDs in this skill use `linear-graphql` by convention; IDs are local aliases and can be changed if needed.

Option 2: OAuth 2.0 (For production/user-delegated access)

1. Create an OAuth app in Linear: https://linear.app/settings/api

2. Start OAuth login:

   uxc auth oauth start linear-graphql \
     --endpoint https://api.linear.app/graphql \
     --redirect-uri http://127.0.0.1:8788/callback \
     --scope read \
     --scope write

After approval, complete it with:

   uxc auth oauth complete linear-graphql \
     --session-id <session_id> \
     --authorization-response 'http://127.0.0.1:8788/callback?code=...&state=...'

3. Bind endpoint:

   uxc auth binding add \
     --id linear-graphql \
     --host api.linear.app \
     --path-prefix /graphql \
     --scheme https \
     --credential linear-graphql \
     --priority 100

Core Workflow

1. Use fixed link command by default:

  • `command -v linear-graphql-cli`
  • If the command exists, confirm it is the expected `uxc link` for this skill before using it.
  • If a command conflict is detected and cannot be safely reused, stop and ask skill maintainers for guidance instead of dynamically renaming the command.
  • If missing, create it: `uxc link linear-graphql-cli https://api.linear.app/graphql`
  • `linear-graphql-cli -h`

2. Discover operations:

  • `linear-graphql-cli -h`
  • Returns hundreds of GraphQL operations

3. Inspect specific operation:

  • `linear-graphql-cli query/issues -h`
  • `linear-graphql-cli mutation/issueCreate -h`

4. Execute queries:

   # Query issues (simple)
   linear-graphql-cli query/issues '{"first":10}'

   # Query issues with explicit selection set for useful fields
   linear-graphql-cli query/issues '{"first":10,"_select":"nodes { identifier title url state { name } assignee { name } }"}'

   # Query teams
   linear-graphql-cli query/teams '{"first":10}'

   # Create issue (requires write scope)
   linear-graphql-cli mutation/issueCreate '{
     "input": {
       "teamId": "TEAM_ID",
       "title": "New Issue Title",
       "description": "Issue description"
     }
   }'

Available Operations

Queries

  • `query/issues` - List and filter issues
  • `query/issue` - Get single issue
  • `query/teams` - List teams
  • `query/team` - Get single team
  • `query/projects` - List projects
  • `query/workflowStates` - List workflow states

Mutations

  • `mutation/issueCreate` - Create new issue
  • `mutation/issueUpdate` - Update issue
  • `mutation/issueArchive` - Archive issue
  • `mutation/commentCreate` - Add comment

Usage Examples

List recent issues

linear-graphql-cli query/issues '{"first":20,"_select":"nodes { identifier title url state { name } assignee { name } }"}'

Get issue by ID

linear-graphql-cli query/issue id=ISSUE_ID

List teams

linear-graphql-cli query/teams

Create issue

linear-graphql-cli mutation/issueCreate '{"input":{"teamId":"YOUR_TEAM_ID","title":"Fix bug"}}'

Troubleshooting

Authentication Errors

**Error: "Bearer token" prefix rejected**

  • Linear API does not accept `Authorization: Bearer lin_api_XXX`
  • Ensure credential uses `--auth-type api_key --header "Authorization:{{secret}}"`
  • Do not use `--auth-type bearer`

**Error: "Credential not found"**

  • Check credential exists: `uxc auth credential list`
  • Verify binding: `uxc auth binding list`
  • Create binding if missing (see Authentication section)

**OAuth login spans multiple agent turns**

  • Prefer `uxc auth oauth start ...` and `uxc auth oauth complete ...`
  • Use `uxc auth oauth login ... --flow authorization_code` only when one process can wait for the pasted callback URL

**Error: "No binding matched"**

  • Check binding exists: `uxc auth binding match api.linear.app/graphql`
  • If missing, create binding with `uxc auth binding add` (see Authentication section)

For detailed authentication troubleshooting, see `uxc` skill's `references/auth-configuration.md`.

Common Issues

**Daemon issues after credential

Read more
Ships withuxc

One CLI for tools across protocols UXC helps agents and automation discover and invoke APIs and tools across OpenAPI, MCP, GraphQL, gRPC, and JSON-RPC through one consistent workflow.

Get the whole plugin

Other skills on uxc.