All skills

Manage Linear tickets, projects, milestones, and documents. Use for coordinating work across skills (orca-security, multi-repo) or tracking remediation progress.

Use this Skill: https://skilld.dev/gh/nodnarbnitram/claude-code-extensions/linear

This session only. Nothing lands on disk.

referencesgraphql-reference.md

≈1.2k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Linear GraphQL Reference

The Linear skill now uses https://api.linear.app/graphql exclusively.

Authentication

Linear expects the raw API token in the Authorization header.

curl -X POST https://api.linear.app/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: $LINEAR_API_TOKEN" \
  -d '{"query":"{ viewer { id name } }"}'

Common Resolver Queries

Resolve a Team by Key or Name

query ResolveTeam($value: String!) {
  byKey: teams(filter: { key: { eq: $value } }, first: 2) {
    nodes { id key name }
  }
  byName: teams(filter: { name: { eq: $value } }, first: 2) {
    nodes { id key name }
  }
}

Resolve a Project by Name

query ResolveProject($value: String!) {
  projects(filter: { name: { eqIgnoreCase: $value } }, first: 2) {
    nodes { id name url }
  }
}

Resolve a Workflow State by Name

query ResolveWorkflowState($value: String!, $teamId: String!) {
  workflowStates(
    filter: {
      name: { eqIgnoreCase: $value }
      team: { id: { eq: $teamId } }
    }
    first: 2
  ) {
    nodes { id name }
  }
}

Resolve a Milestone by Name

query FindScopedMilestone($projectId: String!, $name: String!) {
  project(id: $projectId) {
    projectMilestones(filter: { name: { eq: $name } }, first: 10) {
      nodes {
        id
        name
        project { id name }
      }
    }
  }
}

Issue Queries and Mutations

Read an Issue by Identifier

query GetIssueByIdentifier($teamKey: String!, $number: Float!) {
  issues(
    filter: { team: { key: { eq: $teamKey } }, number: { eq: $number } }
    first: 1
  ) {
    nodes {
      id
      identifier
      title
      description
      branchName
      priority
      url
      state { id name }
      team { id key name }
      project { id name }
      projectMilestone { id name targetDate }
      labels { nodes { id name } }
      comments { nodes { id body createdAt updatedAt } }
    }
  }
}

List Issues

query ListIssues($first: Int!, $filter: IssueFilter) {
  issues(first: $first, filter: $filter, includeArchived: false) {
    nodes {
      id
      identifier
      title
      url
      state { id name }
      assignee { id name }
      team { id key name }
      project { id name }
      labels { nodes { id name } }
    }
  }
}

Search Issues

query SearchIssues($term: String!, $first: Int!, $filter: IssueFilter) {
  searchIssues(
    term: $term
    first: $first
    filter: $filter
    includeArchived: false
  ) {
    nodes {
      id
      identifier
      title
      url
      state { id name }
    }
  }
}

Create an Issue

mutation CreateIssue($input: IssueCreateInput!) {
  issueCreate(input: $input) {
    success
    issue {
      id
      identifier
      title
      branchName
      url
      state { id name }
    }
  }
}

Update an Issue

mutation UpdateIssue($id: String!, $input: IssueUpdateInput!) {
  issueUpdate(id: $id, input: $input) {
    success
    issue {
      id
      identifier
      title
      url
      state { id name }
      labels { nodes { id name } }
    }
  }
}

Add a Comment

mutation CreateComment($input: CommentCreateInput!) {
  commentCreate(input: $input) {
    success
    comment {
      id
    }
  }
}

Project and Milestone Mutations

Create a Project

mutation CreateProject($input: ProjectCreateInput!) {
  projectCreate(input: $input) {
    success
    project {
      id
      name
      description
      content
      state
      url
    }
  }
}

Update Project Content

mutation UpdateProject($id: String!, $input: ProjectUpdateInput!) {
  projectUpdate(id: $id, input: $input) {
    success
  }
}

Create a Milestone

mutation CreateProjectMilestone($input: ProjectMilestoneCreateInput!) {
  projectMilestoneCreate(input: $input) {
    success
    projectMilestone {
      id
      name
      description
      targetDate
    }
  }
}

Document Queries and Mutations

Create a Document

mutation CreateDocument($input: DocumentCreateInput!) {
  documentCreate(input: $input) {
    success
    document {
      id
      title
      content
      slugId
      url
      icon
      color
      createdAt
      updatedAt
      trashed
    }
  }
}

List Documents

query ListDocuments($first: Int!, $filter: DocumentFilter) {
  documents(first: $first, filter: $filter) {
    nodes {
      id
      title
      slugId
      url
      updatedAt
      trashed
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Read a Document

query GetDocument($id: String!) {
  document(id: $id) {
    id
    title
    content
    slugId
    url
    icon
    color
    createdAt
    updatedAt
    trashed
  }
}

Source: SKILL.md on GitHub

1 warning5mo3 checks · Risk SAFE
  • Gen Agent Trust Hub5mo

    The skill provides a comprehensive interface for managing Linear tickets, projects, and milestones. It securely interacts with the Linear service using the official API and a standard CLI tool.

  • Socket5mo

    1 alert: gptAnomaly

  • Snyk5mo

    Risk: LOW · No issues

Signed by skilld at 35e7f7d. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Steadyupdated 5 months ago
compatibility
Requires LINEAR_API_TOKEN.
metadata
{
  "author": "security-cleanup",
  "version": "3.0"
}

README badge

README badge for nodnarbnitram/claude-code-extensions/linear