obra

Streamlinear — Development skill for Claude Code

Development community

Streamlined Linear integration for Claude Code - one tool, six actions, zero bloat.

How to install Streamlinear

This entry records only its repository, not the path inside it, so there is no exact command to give. Open obra/streamlinear and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Streamlinear does

Streamlined Linear integration for Claude Code - one tool, six actions, zero bloat.

Alternatives in Development

  • Linear — Manage issues, projects, and team workflows in Linear 14.6k ★
  • Summarize Meeting — Summarize meeting transcripts into structured notes and actions 7.8k ★
  • Manage — Review all open positions and take management actions 722 ★

README

streamlinear

A lightweight Linear MCP for Claude Code. One tool, seven actions.

Why?

The standard Linear MCP uses ~17,000 tokens for tool definitions.

streamlinear uses ~500 tokens.

Design Philosophy

Instead of 23 separate tools, streamlinear has **one tool with action dispatch**:

{"action": "search"}
{"action": "get", "id": "ABC-123"}
{"action": "update", "id": "ABC-123", "state": "Done"}
{"action": "comment", "id": "ABC-123", "body": "Fixed!"}
{"action": "create", "title": "New bug", "team": "ENG"}
{"action": "graphql", "graphql": "query { viewer { name } }"}
{"action": "help"}

Actions

Action Purpose
search Find issues (smart defaults: your active issues)
get Issue details by ABC-123, URL, or UUID
update Change state, priority, assignee
comment Add comment to issue
create Create new issue
graphql Raw GraphQL for anything else
help Full documentation

Installation

Single Workspace

Add to your `.mcp.json`:

{
  "mcpServers": {
    "linear": {
      "command": "npx",
      "args": ["-y", "github:obra/streamlinear"],
      "env": {
        "LINEAR_API_TOKEN": "lin_api_xxxxx"
      }
    }
  }
}

Multiple Workspaces

To use streamlinear with multiple Linear workspaces (e.g., personal and work), create separate MCP entries and use variable substitution in the `env` field:

{
  "mcpServers": {
    "linear-personal": {
      "command": "npx",
      "args": ["-y", "github:obra/streamlinear"],
      "env": {
        "LINEAR_API_TOKEN": "${LINEAR_PERSONAL_TOKEN}"
      },
      "envFrom": ["LINEAR_PERSONAL_TOKEN"]
    },
    "linear-work": {
      "command": "npx",
      "args": ["-y", "github:obra/streamlinear"],
      "env": {
        "LINEAR_API_TOKEN": "${LINEAR_WORK_TOKEN}"
      },
      "envFrom": ["LINEAR_WORK_TOKEN"]
    }
  }
}

**How this works:**

  • envFrom loads your secrets/env vars (e.g., LINEAR_WORK_TOKEN)