Agent skill

Linear

by AFK-surf in AFK-surf/OpenBridge

Work with Linear through the linear CLI, including issue listing, creation, updates, comments, team/project/label lookup, JSON issue views, and CLI authentication/setup on persistent environments.

MITAuto-check passedBackend & APIs

Install Linear

skills CLI
$ npx skills add AFK-surf/OpenBridge --skill linear -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install AFK-surf/OpenBridge linear --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/AFK-surf/OpenBridge.git skills-src && mkdir -p .claude/skills && cp -r skills-src/macos/OpenBridge/Resources/SystemSkills.bundle/linear .claude/skills/linear && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
linear
GitHub stars
430
Token cost
~3.4k tokens
SKILL.md length
1,617 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Work with Linear through the linear CLI, including issue listing, creation, updates, comments, team/project/label lookup, JSON issue views, and CLI authentication/setup on persistent environments.

  • Works in 5 steps: Call ListOAuthCredentials. → If a linear credential is available and… → If no usable Linear credential exists,… → …
  • Tasks that involve Authentication
  • SKILL.md covers Typical Goals, Operating Principles, Managed OAuth and Initial Checks, plus 7 more sections
  • Calls npm and npx; reaches linear.app and api.linear.app; needs LINEAR_API_KEY and LINEAR_ACCESS_TOKEN

What it does

Linear is an agent skill from AFK-surf/OpenBridge. Work with Linear through the linear CLI, including issue listing, creation, updates, comments, team/project/label lookup, JSON issue views, and CLI authentication/setup on persistent environments.

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Authentication. The repository describes itself as: A free, safe and open agent for everything. Alternative to Claude Cowork & Codex. Open Bridge, the AI bridge between your intention and get the job done. The licence is MIT.

When your agent uses it

  • Tasks that involve Authentication

Example prompts

  • “/linear”

Requirements

  • Python 3
  • Node.js
  • A credential in LINEAR_ACCESS_TOKEN
  • A credential in LINEAR_API_KEY

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Call ListOAuthCredentials.
  2. If a linear credential is available and active, use its alias in Exec.credential_env; replace "default" below with the actual alias…
  3. If no usable Linear credential exists, call RequestOAuthAuthorization with provider: "linear", a short stable alias such as "default", and…
  4. Share the returned authorization_url with the user and wait for them to confirm they completed authorization.
  5. Call CompleteOAuthAuthorization with the returned state. If it returns completed, retry the Linear command with Exec.credential_env using…

What it can do on your machine

Read from SKILL.md and the folder at commit a9ca905. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • linear.app
    • api.linear.app

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • LINEAR_API_KEY
    • LINEAR_ACCESS_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Linear loads about 3.4k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 1,617 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~51
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from AFK-surf/OpenBridge at commit a9ca905, republished under its MIT licence (© AFK-surf). 1,617 words, ~3,414 tokens.

Download SKILL.mdSave it as .claude/skills/linear/SKILL.md (or your agent's skills folder).
name
linear
description
Work with Linear through the `linear` CLI, including issue listing, creation, updates, comments, team/project/label lookup, JSON issue views, and CLI authentication/setup on persistent environments.

Linear

Use this skill whenever the task involves Linear and the linear CLI is available or should be made available. Prefer CLI workflows for listing, creating, viewing, and updating Linear records when the requested task can be completed without the browser UI.

These notes are grounded against @schpet/linear-cli. The latest published version is 2.0.0; flag names differ from 1.9.1 in the auth subcommand. Always run linear auth login --help before attempting non-interactive auth, as flag names vary between versions.

Typical Goals

  • Check existing issues before creating duplicates.
  • Create issues with clear titles, descriptions, team assignment, labels, projects, priorities, or assignees when requested.
  • View, update, comment on, assign, transition, or close issues.
  • List teams, labels, and projects to resolve names, keys, and IDs.
  • Configure reusable CLI authentication on a persistent VM.
  • Use the Linear web UI only when the CLI lacks a needed operation or setup requires a personal API key.

Operating Principles

  • Inspect linear --help and subcommand help when command syntax is uncertain; CLI versions can differ.
  • Prefer structured or explicit output flags when supported by the installed CLI. In 1.9.1, linear issue view --json and linear label list --json support JSON; linear issue list does not.
  • Prefer managed OAuth over browser/API-key setup. When Linear credentials are missing, expired, or insufficient, use RequestOAuthAuthorization to connect the user's Linear account, then pass the saved credential to Exec.credential_env.
  • Check existing issues before creating a new one unless the user explicitly asks to create a new issue.
  • Do not claim an issue was found, created, or updated until a linear command succeeds and returns an identifier or URL.
  • If auth or permissions fail, report the concrete blocker and the command that exposed it.
  • Avoid relying on browser login alone as proof of CLI access; verify with real CLI reads.

Managed OAuth

Before doing browser-assisted setup or asking for an API key, check whether a Linear OAuth credential already exists:

  1. Call ListOAuthCredentials.
  2. If a linear credential is available and active, use its alias in Exec.credential_env; replace "default" below with the actual alias returned by ListOAuthCredentials:
    json
    [{"env_var":"LINEAR_ACCESS_TOKEN","provider":"linear","alias":"default","value":"access_token"}]
  3. If no usable Linear credential exists, call RequestOAuthAuthorization with provider: "linear", a short stable alias such as "default", and a concise reason. Request scopes for the intended work; omit scopes for read-only access, or pass ["read", "write"] when mutations such as creating, updating, commenting, or assigning issues are needed.
  4. Share the returned authorization_url with the user and wait for them to confirm they completed authorization.
  5. Call CompleteOAuthAuthorization with the returned state. If it returns completed, retry the Linear command with Exec.credential_env using the returned alias. If it returns pending, ask the user to finish the browser flow. If it returns failed or expired, start a fresh authorization flow.

Managed OAuth keeps tokens out of the transcript. Do not print the token or try to read it directly; inject it only for the subprocess that needs Linear access.

Initial Checks

bash
linear --help
linear auth list
linear auth whoami
linear team list

If linear is not installed, check whether npx can run the CLI:

bash
npx -y @schpet/linear-cli --help

Issue Discovery And Triage

linear issue list in version 1.9.1 lists issues but does not expose a full-text search flag. Use filters to narrow the candidate set, then inspect likely matches. If true full-text search is required, use the Linear web UI or API after noting the CLI limitation.

bash
linear issue list --help
linear issue list --all-states --all-assignees --limit 50 --no-pager
linear issue list --all-states --all-assignees --team CUE --limit 50 --no-pager
linear issue list --state started --state unstarted --assignee self --no-pager

Useful issue list flags in 1.9.1:

  • --state <state> repeatable, with values triage, backlog, unstarted, started, completed, canceled.
  • --all-states.
  • --assignee <username>, --all-assignees, and --unassigned.
  • --team <team>.
  • --project <project>.
  • --sort manual|priority.
  • --limit <limit>.
  • --no-pager.

Inspect candidates with JSON when downstream parsing is useful:

bash
linear issue view <issue-id-or-key>
linear issue view <issue-id-or-key> --json --no-comments --no-download
linear issue url <issue-id-or-key>
linear issue title <issue-id-or-key>

When deciding whether an issue is a duplicate, compare:

  • User-visible symptom.
  • Affected product, platform, or workflow.
  • Recency and status.
  • Existing owner, team, label, or project context.

Create Issues

Before creating, resolve the target team and optional metadata:

bash
linear team list
linear label list --all
linear label list --all --json
linear project list --all-teams

Create the issue non-interactively when the requested fields are known. Keep the description specific and actionable:

bash
linear issue create --team CUE --title "Investigate login timeout on macOS" --description "..." --label Bug --priority 2 --no-interactive

Useful issue create flags in 1.9.1:

  • --title <title>.
  • --description <description>.
  • --team <team>.
  • --assignee <assignee> or --assignee self.
  • --label <label> repeatable.
  • --project <project>.
  • --state <state>.
  • --priority <priority> where 1 is highest and 4 is lowest.
  • --estimate <estimate>.
  • --due-date <dueDate>.
  • --parent <team_number>.
  • --start.
  • --no-interactive.

After creation, capture and report:

  • Issue key or identifier.
  • Title.
  • URL.
  • Team and status if available.

Update, Comment, And Transition

Inspect command help before mutating records:

bash
linear issue update --help
linear issue comment --help
linear issue comment add --help

Common operations include:

  • Add a comment with investigation notes or a user-provided update.
  • Assign or unassign an issue.
  • Change status or workflow state.
  • Add labels, project, priority, estimate, parent, or due date.
  • Close or reopen an issue.

Examples:

bash
linear issue update CUE-123 --state started --assignee self
linear issue update CUE-123 --label Bug --label Regression --priority 1
linear issue comment add CUE-123 --body "Investigated the timeout path; next step is checking session refresh."
linear issue comment list CUE-123

After mutation, re-view the issue or rely on the command's returned identifier/URL to verify the change.

Projects, Teams, And Workflow Context

Use lookup commands to avoid guessing names or IDs:

bash
linear team list
linear team members CUE
linear label list --all
linear label list --team CUE
linear label list --workspace
linear project list --all-teams
linear project list --team CUE
linear project view <projectId>

The 1.9.1 top-level command set includes auth, issue, team, project, project-update, milestone, initiative, initiative-update, label, document, config, and schema. It does not expose top-level user or cycle commands.

If workflow-state names are uncertain, inspect issue details and use linear issue update --state <state> with a known state name or type.

Authentication And Setup

If linear auth whoami already works, do not recreate credentials. If setup is required, prefer the managed OAuth flow above and run Linear commands with Exec.credential_env. Configure @schpet/linear-cli with a manually obtained API key only when managed OAuth is unavailable or the CLI cannot use the injected OAuth token.

Success criteria for setup:

  • Interactive login state for linear.app exists if browser-based API key creation is needed.
  • @schpet/linear-cli is installed or invokable through a persistent wrapper.
  • A Linear API key is available to the CLI.
  • linear auth whoami succeeds.
  • A real read command such as linear team list succeeds.

Setup workflow:

  1. Check for Node/npm and prior CLI state with linear auth list.
  2. Install @schpet/linear-cli globally with npm install -g @schpet/linear-cli.
  3. After global install, the binary may land in the nvm version bin path rather than a PATH directory. Check with npm bin -g or ls $(npm root -g)/../bin/linear. Prefer creating a symlink into a persistent PATH directory over an npx wrapper (which re-downloads on every invocation):
    bash
    ln -sf "$(npm bin -g)/linear" /home/sprite/.local/bin/linear
  4. Run linear auth login --help to confirm the exact flag names for the installed version before attempting non-interactive auth.
  5. In local VM environments without a system keyring, always pass --plaintext to linear auth login so credentials are stored in a file rather than hanging on keyring access:
    bash
    linear auth login --key <api-key> --plaintext
  6. Restrict permissions on any file containing the token. Store a backup in /home/sprite/.config/linear/env.sh exporting LINEAR_API_KEY, chmod 600. Avoid printing linear auth token unless the user explicitly needs the token.
  7. Verify with linear auth whoami and linear team list.
Show full SKILL.md (532 more words)Show less

Browser-Assisted API Key Creation

Use this only when no usable API key exists and the user needs CLI access.

Important: the Linear GraphQL API does not accept session cookies. A personal API key (lin_api_...) is the only programmatic auth method. Playwright is required to create one interactively.

  1. Request interactive login at https://linear.app/login.
  2. Confirm browser session state exists in the local browser profile if that flow is available:
    • cookies.json
    • localstorage.json
    • indexeddb.json
  3. Copy all three files to the cloud VM. Restore cookies and localStorage in Playwright before navigating to the API key page. IndexedDB is typically empty in the capture; skip rebuilding it unless the app fails to load.
  4. Navigate to https://linear.app/robots.txt first to establish the origin, then inject localStorage, then navigate to the personal API key page:
    https://linear.app/<workspace-slug>/settings/account/security

    Note: /settings/api is the workspace-level member API key admin page — it does not have a personal key creation form. The personal key button ("New API key") is only on the account security page above.

  5. Click the "New API key" button, fill the label input (placeholder="A descriptive name for this API key…"), then click "Create key".
  6. Capture the one-time token immediately from the rendered page text or from the ApiKeyCreate GraphQL response. The token begins with lin_api_.
  7. Persist the token for CLI auth and verify with the CLI.
Playwright on cloud VM

Playwright's bundled Chromium download frequently fails in network-restricted cloud VMs. Use the pre-installed system Chrome instead:

python
browser = p.chromium.launch(
    executable_path='/usr/bin/google-chrome',
    headless=True,
    args=['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-gpu']
)

Check for system Chrome with which google-chrome chromium-browser chromium before attempting any Playwright browser install.

Important setup details:

  • Cookies alone may not restore a Linear session; use cookies and localStorage together.
  • The API key is shown only once — capture it from the network response or page text before closing the browser.
  • The observed creation mutation is ApiKeyCreate, and the token value begins with lin_api_.
  • Do not verify setup with commands that can fail for unrelated local config; prefer linear team list.

Failure Handling

  • Login page appears after state restore: ensure localStorage is injected after robots.txt loads but before navigating to the settings page.
  • linear auth login hangs or fails silently on Linux: pass --plaintext to bypass the system keyring.
  • --api-key flag not recognised: the flag was renamed to --key (-k) in v2.x. Run linear auth login --help to confirm.
  • linear command missing after npm install -g: the binary is in the nvm version bin path. Symlink it: ln -sf "$(npm bin -g)/linear" /home/sprite/.local/bin/linear.
  • Workspace temporarily shows setup or load errors: wait, retry, and navigate directly to account security once the workspace slug is known.
  • Token is not visible after creation: intercept the ApiKeyCreate mutation response via Playwright's page.on('response', ...) handler.
  • Network calls fail with Operation not permitted: the sandbox blocked access to https://api.linear.app/graphql; rerun the read with network permission if the task requires live Linear data.
  • whoami works but issue listing fails: run linear team list; treat issue-list errors caused by filters, sort, or project config as non-auth failures.
  • Need text search and linear issue list cannot narrow enough: state that the CLI lacks full-text search in the observed version and use the Linear web UI/API if available.
  • No Linear access: clearly report the access blocker and do not fabricate issue data.

© AFK-surf, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in macos/OpenBridge/Resources/SystemSkills.bundle/linear of AFK-surf/OpenBridge.

Open the folder on GitHubat commit a9ca905

Compare with similar skills

Linear next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Linear compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Linear this skillAFK-surf/OpenBridge430—~3.4kAutomated safety check: PassMIT
Fortify Developmentcoollabsio/coolify63k4 repos~1.9kAutomated safety check: PassMIT
Supabase Development and Debuggingsupabase/agent-skills2.7k3 repos~3.6kAutomated safety check: PassMIT
Better Auth Best Practiceslatitude-dev/latitude-llm4.7k7 repos~1.6kAutomated safety check: PassMIT
Supabasecurvenote/curvenote1695 repos~2.2kAutomated safety check: PassCustom licence
Gitnexus Exploringaws-samples/sample-kolya-br-proxy10611 repos~749Automated safety check: PassMIT-0

Similar skills

  • Fortify Development

    coollabsio/coolify

    ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.

    63k GitHub starsUsed in 4 repos~1.9k tokens
    Backend & APIsAuto-check passed
  • Official

    General Supabase skill for database, auth, Edge Functions, Realtime and storage work, plus client libraries, migrations, security audits, debugging and reading logs.

    2.7k GitHub starsUsed in 3 repos~3.6k tokens
    Backend & APIsAuto-check passed
  • Better Auth Best Practices

    latitude-dev/latitude-llm

    Configure Better Auth server and client, set up database adapters, manage sessions, add plugins, and handle environment variables.

    4.7k GitHub starsUsed in 7 repos~1.6k tokens
    Backend & APIsAuto-check passed
  • Supabase

    curvenote/curvenote

    A skill your agent uses when doing ANY task involving Supabase.

    169 GitHub starsUsed in 5 repos~2.2k tokens
    Backend & APIsAuto-check passed
  • Gitnexus Exploring

    aws-samples/sample-kolya-br-proxy

    Official

    A skill your agent uses when the user asks how code works, wants to understand architecture, trace execution flows, or explore unfamiliar parts of the codebase.

    106 GitHub starsUsed in 11 repos~749 tokens
    Backend & APIsAuto-check passed
  • Agentic Wallet

    coinbase/agentic-wallet-skills

    Crypto wallet operations via the awal CLI — sign in, check balances, send USDC/ETH/POL/SOL, trade tokens, fund the wallet, and use the x402 payment protocol to discover paid services, pay for API…

    127 GitHub starsUsed in 3 repos~1k tokens
    Backend & APIsAuto-check passed

More from AFK-surf/OpenBridge

All 14 skills in this repo
  • Swiftui UI Patterns

    AFK-surf/OpenBridge

    Best practices and example-driven guidance for building SwiftUI views and components.

    430 GitHub starsUsed in 4 repos~887 tokens
    Auto-check passed
  • Swiftui Expert Skill

    AFK-surf/OpenBridge

    Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, modern APIs, Swift concurrency, and iOS 26+ Liquid Glass adoption.

    430 GitHub starsUsed in 2 repos~3.9k tokens
    Auto-check passed
  • UI Designer

    AFK-surf/OpenBridge

    Design or restyle user interfaces using vendored DESIGN.md references from popular product and brand-inspired visual systems.

    430 GitHub stars~4.6k tokensUpdated 3 mo ago
    Auto-check passed
  • Bridge Agent Log Analyzer

    AFK-surf/OpenBridge

    Analyze Bridge agent execution logs from ~/.bridge/sessions, reconstruct the agent's actual runtime behavior, and explain tool execution, failures, retries, and artifacts from persisted session files.

    430 GitHub stars~1.3k tokensUpdated 3 mo ago
    Auto-check passed
  • Format Converter

    AFK-surf/OpenBridge

    Convert files between formats. An agent skill from AFK-surf/OpenBridge.

    430 GitHub stars~549 tokensUpdated 3 mo ago
    Auto-check passed
  • Skill Manager

    AFK-surf/OpenBridge

    Manage skills: create, install, modify, or delete skills. An agent skill from AFK-surf/OpenBridge.

    430 GitHub stars~749 tokensUpdated 3 mo ago
    Auto-check passed

Categories

Questions about Linear

What does Linear do?

Work with Linear through the linear CLI, including issue listing, creation, updates, comments, team/project/label lookup, JSON issue views, and CLI authentication/setup on persistent environments. Linear is an agent skill from AFK-surf/OpenBridge. Work with Linear through the linear CLI, including issue listing, creation, updates, comments, team/project/label lookup, JSON issue views, and CLI authentication/setup on persistent environments.

When should I use Linear?

Linear fits situations like: tasks that involve Authentication.

How do I install Linear in Claude Code?

Run `npx skills add AFK-surf/OpenBridge --skill linear -a claude-code`. Or copy the skill folder (macos/OpenBridge/Resources/SystemSkills.bundle/linear in AFK-surf/OpenBridge) into .claude/skills/linear in your project. Claude Code loads it when a task matches its description.

How do I install Linear in Codex?

Run `npx skills add AFK-surf/OpenBridge --skill linear -a codex`. Or copy the skill folder (macos/OpenBridge/Resources/SystemSkills.bundle/linear in AFK-surf/OpenBridge) into .agents/skills/linear in your project. Codex loads it when a task matches its description.

Can I use Linear in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add AFK-surf/OpenBridge --skill linear -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/linear, .gemini/skills/linear, .github/skills/linear and .opencode/skills/linear in your project.

What does Linear need to run?

Going by SKILL.md and its folder, Linear needs the command-line tools its instructions call (npm and npx) and credentials named LINEAR_API_KEY and LINEAR_ACCESS_TOKEN. Our summary lists: Python 3; Node.js; A credential in LINEAR_ACCESS_TOKEN; A credential in LINEAR_API_KEY.

Does Linear access the network?

SKILL.md names 2 domains. In commands or code: linear.app and api.linear.app; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Linear safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Linear use?

Linear is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Linear use?

About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Linear?

Skills that share tags, products or a category with Linear: Fortify Development (coollabsio/coolify, 63k stars), Supabase Development and Debugging (supabase/agent-skills, 2.7k stars), Better Auth Best Practices (latitude-dev/latitude-llm, 4.7k stars) and Supabase (curvenote/curvenote, 169 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Linear?

AFK-surf (a GitHub organization) maintains it in AFK-surf/OpenBridge, which has 430 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on June 10, 2026.

Source: AFK-surf/OpenBridge on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.