Linear logo

Linear

Organization
wendylabsinc
linear

Linear issue tracking and project management through the CLI or GraphQL API. Use when developers mention: (1) Linear issues or tickets, (2) issue tracking or task management, (3) WDY team issues, (4) closing, updating, or triaging tickets, (5) linking PRs to issues, (6) issue states (triage, backlog, started, completed).

Overview

Publisherwendylabsinc
Repositoryclaude-skills
Skill namelinear
Stars
62
Forks
5
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by wendylabsinc on GitHub. Read the source before you install it.

Installation

Install the Linear AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/wendylabsinc/claude-skills/tree/main/linear
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/wendylabsinc/claude-skills.git /tmp/claude-skills
mkdir -p .claude/skills
cp -r /tmp/claude-skills/linear .claude/skills/linear
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Linear in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Linear on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Linear is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Linear

Overview

Use the Linear CLI (linear) when it is available. Do not assume it is installed. When the CLI is unavailable or does not support the required operation, use Linear's GraphQL API with the API key already supplied by the environment.

Access selection

  1. Check for the CLI without failing:

    bash
    command -v linear
  2. If it exists, use the CLI guidance below.

  3. Otherwise verify that the GraphQL credential is available without printing it:

    bash
    test -n "${LINEAR_API_KEY:-}"

    Projects using direnv commonly declare LINEAR_API_KEY in an ignored environment file and load it from .envrc. If it is missing, let direnv load the project environment (for example, by entering/allowing the project or using direnv exec) rather than reading, logging, or copying the secret.

  4. Send GraphQL operations to https://api.linear.app/graphql with Authorization: $LINEAR_API_KEY and JSON content type. Use GraphQL variables rather than interpolating issue text into the query:

    bash
    query='query Viewer { viewer { id name email } }'
    payload=$(jq -cn --arg query "$query" '{query: $query, variables: {}}')
    response=$(curl -sS https://api.linear.app/graphql \
      -H "Authorization: $LINEAR_API_KEY" \
      -H 'Content-Type: application/json' \
      --data "$payload")
    jq -e '.errors == null' <<<"$response" >/dev/null || {
      jq '.errors' <<<"$response" >&2
      exit 1
    }
    jq '.data' <<<"$response"

For mutations, query IDs and current state first rather than guessing or relying on stale hardcoded IDs. Treat a GraphQL HTTP 200 response containing an errors array as a failure. Never print the API key, include it in command output, commit it, or place it directly in a query or variables object.

Issue authoring

A request to create, draft, rewrite, or expand an issue authorizes faithful problem capture—not product planning or solution design. The issue should explain the problem to solve and leave implementation discovery to the human or agent who owns the work.

Default format

Every issue body opens with one short plain-language paragraph:

markdown
> **In plain terms:** Describe what is wrong or missing, who or what it affects, and why it matters. Do not prescribe the implementation.

This block must stand alone for a non-specialist reader. If the request contains only one sentence, the issue may contain only this one-sentence block. Add further sections only when sourced material justifies them.

Tentpoles

  • Problem before solution. Describe current behavior, the desired user or operational outcome when known, the affected people or systems, impact, and useful evidence. Titles should name the problem or outcome rather than an implementation task.
  • Only sourced facts. Include only details stated by the human, present in a cited source, or directly verified. Preserve uncertainty instead of filling gaps with plausible requirements.
  • No ticket boilerplate. Do not add headings merely to make an issue look complete. There is no minimum length and no required template beyond the opening plain-terms block.
  • No invented requirements. Do not infer acceptance criteria, user stories, personas, scope, non-goals, edge cases, testing, rollout, migration, telemetry, security, or operational requirements.
  • No invented planning metadata. Do not infer priority, estimate, deadline, labels, parent, dependencies, assignee, subtasks, or checklists.
  • Do not lock in a solution. Do not invent architecture, APIs, data models, UI, or implementation steps. If the human suggests a solution, retain it as attributed context or a constraint without expanding it into settled design.
  • Clarify only when necessary. Ask a concise question only when creating the issue without it would materially misstate the problem. Otherwise create the smallest faithful issue and leave genuine unknowns open.
  • Prefer an existing issue. Check for likely duplicates when practical; reuse and minimally correct an existing issue rather than creating a parallel ticket.

Add acceptance criteria, planning metadata, or solution detail only when a human explicitly supplied or agreed to it, or when faithfully copying cited material. Make the source or decision clear and do not elaborate beyond it.

Expected behavior stated in a bug report belongs in the problem description; do not duplicate it as generated acceptance criteria. Starting work on an issue also does not authorize rewriting it into a solution specification—put implementation proposals in the eventual owner's plan or discussion instead.

Before creating or updating an issue, remove every sentence that cannot be traced to the request, cited evidence, direct observation, or an explicit human decision.

Pull request handoff

The issue remains the canonical problem statement when implementation starts. Do not rewrite it into a retrospective solution specification and do not repeat its content in the pull request description.

Instead, the pull request links to the issue at the top using the relationship that is actually true:

markdown
- **Closes:** [PROJECT-123 Problem title](https://linear.app/example/issue/PROJECT-123/problem-title)

Use Closes only when the PR fully resolves the issue, Advances when it delivers only part, Related for contextual association, or Issue when a neutral link is appropriate. The PR's following In plain terms paragraph describes only what that PR changes for people, including any material trade-off; the linked issue supplies the problem context.

CLI configuration

CLI commands require LINEAR_ISSUE_SORT to be set:

bash
export LINEAR_ISSUE_SORT=priority

Without this, most commands will fail.

Team

Use linear team list to discover available teams.

Issue States

StateDescription
triageNew issues needing triage
backlogPrioritized but not started
unstartedReady to start (Todo)
startedIn Progress
completedDone
canceledCanceled/Won't do

Common Commands

List Issues

bash
# Active issues (excludes completed/canceled)
LINEAR_ISSUE_SORT=priority linear issue list --team WDY --no-pager

# Filter by state
LINEAR_ISSUE_SORT=priority linear issue list --team WDY --no-pager -s started -s unstarted

# All issues including completed/canceled
LINEAR_ISSUE_SORT=priority linear issue list --team WDY --no-pager --all-states

View Issue

bash
LINEAR_ISSUE_SORT=priority linear issue view WDY-123 --no-pager

Update Issue Status

bash
linear issue update WDY-123 --state "Done"
linear issue update WDY-123 --state "In Progress"

Create PR Linked to Issue

bash
linear issue pr WDY-123

List Teams

bash
linear team list

Workflows

Check Issues to Close

bash
# List active issues
LINEAR_ISSUE_SORT=priority linear issue list --team WDY --no-pager -s started -s unstarted -s backlog

# Cross-reference with recent commits
git log --oneline -30 --all

Triage New Issues

bash
# View issues in triage
LINEAR_ISSUE_SORT=priority linear issue list --team WDY --no-pager -s triage

Frequently asked questions

What does the Linear AI skill do?

Linear issue tracking and project management through the CLI or GraphQL API. Use when developers mention: (1) Linear issues or tickets, (2) issue tracking or task management, (3) WDY team issues, (4) closing, updating, or triaging tickets, (5) linking PRs to issues, (6) issue states (triage, backlog, started, completed).

Why use Linear on TypingMind?

Because you install it once and use it with any model. Linear is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Linear in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/wendylabsinc/claude-skills/tree/main/linear. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Linear?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Linear?

As many as you like. As long as a model supports skills, you can use Linear with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Linear AI skill free?

It is published on GitHub by wendylabsinc. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇