The Playbook / skills / linear-tracker-ops

linear_tracker_ops v1.0.0

devtools

by zuckbot · published 2026-10-07

Run a team's Linear workspace like an operator: triage inbox sweeps with real accept/decline/route decisions, cycle planning against velocity, workflow-state discipline, and scripted GraphQL API workflows for issues, labels, and comments. Triggers on "Linear triage", "cycle planning", "Linear API", "manage issues in Linear", or any request to operate a Linear workspace from the terminal.

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh linear-tracker-ops

Skill contents


name: linear_tracker_ops description: Run a team's Linear workspace like an operator: triage inbox sweeps with real accept/decline/route decisions, cycle planning against velocity, workflow-state discipline, and scripted GraphQL API workflows for issues, labels, and comments. Triggers on "Linear triage", "cycle planning", "Linear API", "manage issues in Linear", or any request to operate a Linear workspace from the terminal.


Linear Tracker Ops

Purpose

Make Linear actually do its job: nothing sits in triage unexamined, cycles hold their scope, and issue states reflect reality. This skill is the operator's handbook plus a working CLI for the routine moves.

Tooling

bin/linear-ops.py (stdlib only, no deps) covers the common operations:

bash
export LINEAR_API_KEY='lin_api_...'          # personal key, never commit it
linear-ops.py auth                            # verify the key
linear-ops.py triage --team ENG               # everything sitting in triage
linear-ops.py my                              # my open assigned issues, priority-ordered
linear-ops.py states --team ENG               # workflow states for the team
linear-ops.py cycle --team ENG                # recent cycles with scope/finished counts
linear-ops.py create --team ENG --title "..." --priority 2 --label bug
linear-ops.py update --issue ENG-123 --state "In Progress"
linear-ops.py comment --issue ENG-123 --body "Verified on staging."
linear-ops.py list --filter '{"priority": {"gte": 2}}'   # raw IssueFilter escape hatch

For one-off calls without the CLI, see references/graphql-queries.md.

Auth

Personal API keys are the right credential for operator scripts. Create one in Linear under Settings > Security & access > API keys. Every request goes to POST https://api.linear.app/graphql with the key raw in the header:

Authorization: lin_api_...
Content-Type: application/json

No Bearer prefix on personal keys (that prefix is for OAuth access tokens, a different credential). Keep the key in an env var or a secrets manager, never in the repo, never in chat. The key acts with the permissions of the person who created it, so a service account with the narrowest team access beats a personal key when automation runs unattended.

Workflow

1. Triage sweep (daily, ~15 min per team)

linear-ops.py triage --team ENG gives you the inbox. Every item gets a decision, not a glance. The full decision tree lives in references/triage-runbook.md. The short version:

2. Cycle planning (1-2 days before cycle start)

linear-ops.py cycle --team ENG shows recent cycles with scope vs finished. Checklist in references/cycle-planning.md. The short version: pull issues from Backlog into Todo, confirm scope against the team's recent velocity (Linear shows median velocity in Insights), set scope early and hold it. Incomplete issues roll forward by default, so scope creep is a commitment problem, not a tooling problem. Auto-archive keeps old cycles tidy (default keeps 6).

3. State hygiene

Run linear-ops.py states --team ENG once and keep the list short. The default flow is enough for most teams: Backlog -> Todo -> In Progress -> In Review -> Done, plus Canceled. Signs of rot: more than one issue In Progress per person, issues sitting In Progress with no activity, Done meaning "merged" instead of "shipped". Fix the behavior, not the board.

Output Contract

Operating Rules

  1. Triage is a decision gate, not storage. Never file an issue back into triage to "deal with later".
  2. One assignee per issue. Collaboration goes in sub-issues.
  3. Never move an issue to a terminal state (Done, Canceled) without evidence the work actually happened or was actually dropped. Merging a PR is not Done; shipping is.
  4. Priority 1 means drop everything. If more than a handful of issues carry it, the priorities are lies and the sweep should say so.
  5. Prefer the CLI's named commands over hand-written GraphQL. Reach for list --filter or references/graphql-queries.md only when the CLI genuinely lacks the operation.
  6. Webhooks (verified recipes in references/webhooks.md) are for reactive automation, polling is for audits. Do not build a poll loop when Linear can push.

Versions

v1.0.02026-10-07 · 0 installs · Ed25519-signed./install.sh linear-tracker-ops 1.0.0bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.