@kyaukyuai/linear-cli 2.9.1 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.11.0] - 2026-03-30
6
+
7
+ ### Added
8
+
9
+ - added `linear capabilities --json` so agents can discover supported JSON, dry-run, stdin, confirmation, and retry semantics without scraping help text
10
+ - added Automation Contract v4 coverage for `team`, `user`, `workflow-state`, and label read surfaces
11
+
12
+ ### Changed
13
+
14
+ - standardized write retry semantics with explicit idempotency categories, retry-safe notification archive/read behavior, and shared partial-success metadata
15
+
16
+ ### Fixed
17
+
18
+ - improved write timeout semantics with distinct `timeout_error` JSON failures, exit code `6`, and clearer partial-success details for combined write flows such as `issue update --comment --json`
19
+
20
+ ## [2.10.0] - 2026-03-30
21
+
22
+ ### Added
23
+
24
+ - added Automation Contract v3 coverage for `document list/view --json`
25
+ - added Automation Contract v3 coverage for `webhook list/view --json`
26
+ - added Automation Contract v3 coverage for `notification list/count --json`
27
+
5
28
  ## [2.9.1] - 2026-03-29
6
29
 
7
30
  ### Fixed
package/README.md CHANGED
@@ -1,24 +1,20 @@
1
- # kyaukyuai/linear-cli
1
+ # linear-cli
2
2
 
3
- `kyaukyuai/linear-cli` is a fork of [`schpet/linear-cli`](https://github.com/schpet/linear-cli) for teams that want a git-first Linear CLI with additional automation, scripting, and documentation support. it remains git and [jj](https://www.jj-vcs.dev/) aware so you can stay in the right Linear context without leaving the terminal.
3
+ `linear-cli` is an agent-first Linear CLI for Claude Code, Codex, and other automation that needs a stable command surface instead of screen scraping or ad-hoc GraphQL scripts. this fork of [`schpet/linear-cli`](https://github.com/schpet/linear-cli) keeps the git and [jj](https://www.jj-vcs.dev/) workflow ergonomics from upstream, then adds stable JSON contracts, dry-run previews, retry-safe error semantics, and pipeline-friendly command behavior for automation-heavy teams.
4
4
 
5
- **works great with AI agents** the CLI includes a [skill](#skills) that lets agents create issues, update status, and manage your Linear workflow alongside your code.
6
-
7
- here's how it works:
5
+ if you want an agent to read Linear state, preview a write, apply it, and return structured output without leaving the shell, this repo is designed for that path first.
8
6
 
9
7
  ```bash
10
- linear config # setup your repo, it writes a config file
11
-
12
- linear issue list # list unstarted issues assigned to you
13
- linear issue list -A # include unassigned and other assignees
14
- linear issue start # choose an issue to start, creates a branch
15
- linear issue start ABC-123 # start a specific issue
16
- linear issue view # see current branch's issue as markdown
17
- linear issue pr # makes a PR with title/body preset, using gh cli
18
- linear issue create # create a new issue
8
+ linear capabilities --json
9
+ linear issue list --json
10
+ linear issue view ENG-123 --json
11
+ linear issue create -t "Backfill webhook contract docs" --team ENG --dry-run --json
12
+ linear issue update ENG-123 --state done --comment "Shipped in v2.10.0" --json
13
+ linear project view "Automation Contract v3" --json
14
+ linear notification list --json
19
15
  ```
20
16
 
21
- it aims to be a complement to the web and desktop apps that lets you stay on the command line in an interactive or scripted way.
17
+ interactive commands still exist for humans, but the primary design goal is that an agent can discover commands incrementally, pass all important input as flags or stdin, and get machine-readable success or failure back.
22
18
 
23
19
  ## screencast demos
24
20
 
@@ -38,21 +34,11 @@ it aims to be a complement to the web and desktop apps that lets you stay on the
38
34
 
39
35
  ## install
40
36
 
41
- ### homebrew
42
-
43
- ```
44
- brew install kyaukyuai/tap/linear
45
- ```
46
-
47
- ### deno via jsr
48
-
49
- ```bash
50
- deno install -A --reload -f -g -n linear jsr:@kyaukyuai/linear-cli
51
- ```
37
+ for agents and scripts, prefer a pinned install in the repo or runtime you control.
52
38
 
53
39
  ### npm / bun / pnpm
54
40
 
55
- install as a dev dependency to pin a version in your project:
41
+ install as a dependency to pin a version in your project:
56
42
 
57
43
  ```bash
58
44
  npm install -D @kyaukyuai/linear-cli
@@ -73,6 +59,18 @@ bunx linear issue list
73
59
 
74
60
  package on npm: [@kyaukyuai/linear-cli](https://www.npmjs.com/package/@kyaukyuai/linear-cli)
75
61
 
62
+ ### deno via jsr
63
+
64
+ ```bash
65
+ deno install -A --reload -f -g -n linear jsr:@kyaukyuai/linear-cli
66
+ ```
67
+
68
+ ### homebrew
69
+
70
+ ```bash
71
+ brew install kyaukyuai/tap/linear
72
+ ```
73
+
76
74
  ### binaries
77
75
 
78
76
  https://github.com/kyaukyuai/linear-cli/releases/latest
@@ -85,10 +83,17 @@ cd linear-cli
85
83
  deno task install
86
84
  ```
87
85
 
88
- ## fork-specific features
86
+ ## agent-facing capabilities
89
87
 
90
- compared to upstream, this fork adds and maintains several capabilities aimed at automation-heavy workflows:
88
+ compared to upstream, this fork adds and maintains capabilities aimed at automation-heavy workflows:
91
89
 
90
+ - stable JSON contracts for the automation tier, with machine-readable failures for parser, validation, and runtime errors
91
+ - a self-describing `linear capabilities --json` surface so agents can discover contract coverage and command traits without scraping docs
92
+ - `--dry-run` previews for high-value write commands, including `issue start`, issue writes, and non-issue writes
93
+ - stdin and pipeline support for high-value write paths
94
+ - retry-safe semantics for relation add/delete, project label add/remove, notification read/archive, and structured partial-failure details
95
+ - canonical `--yes` confirmation bypass handling for destructive commands
96
+ - agent-focused help examples across automation-tier and major write commands
92
97
  - cycle workflows beyond listing and viewing, including `cycle current`, `cycle next`, `cycle create`, `cycle add`, and `cycle remove`
93
98
  - issue workflow commands for `search`, `assign`, `move`, `priority`, `estimate`, `label add/remove`, comment delete, relations, and attachments
94
99
  - inbox notification commands for `list`, `count`, `read`, and `archive`
@@ -96,7 +101,7 @@ compared to upstream, this fork adds and maintains several capabilities aimed at
96
101
  - workflow state commands for `list` and `view`
97
102
  - user commands for `list` and `view`
98
103
  - project label commands for `list` and `project label add/remove`
99
- - JSON output for scripting across issue, cycle, project, and document commands
104
+ - JSON output for scripting across issue, cycle, project, milestone, document, webhook, and notification commands
100
105
  - workspace-aware auth management with keyring migration and default workspace support
101
106
  - generated AI-agent skill docs, Claude plugin metadata, npm publishing, and Homebrew tap release plumbing
102
107
 
@@ -104,13 +109,18 @@ compared to upstream, this fork adds and maintains several capabilities aimed at
104
109
 
105
110
  for bot and org-wide automation use cases, `linear-cli` defines a stable JSON contract for a focused automation tier.
106
111
 
112
+ to discover the curated agent-facing command surface programmatically, use `linear capabilities --json`. it reports stable contract versions, automation-tier membership, and per-command support for `--json`, `--dry-run`, stdin, confirmation bypass, and idempotency category.
113
+
107
114
  - v1 in scope: `issue list/view/create/update --json`, `issue relation add/delete/list --json`, `issue comment add --json`, `team members --json`, `issue parent/children/create-batch --json`
108
115
  - v2 additions: `project list/view --json`, `cycle list/view/current/next --json`, `milestone list/view --json`
116
+ - v3 additions: `document list/view --json`, `webhook list/view --json`, `notification list/count --json`
109
117
  - out of scope: non-JSON terminal output, `linear api`, and other `--json` commands that are not listed above
110
118
 
111
119
  the contract fixes top-level success payload shapes and requires machine-readable failure payloads for the automation tier. see [docs/json-contracts.md](docs/json-contracts.md) for the full contract, compatibility rules, and example payloads. that guarantee also covers parser and argument validation failures when `--json` is present.
112
120
 
113
- for automation consumers, auth and authorization failures now use exit code `4`, while free-plan or workspace-plan limit failures use exit code `5`. other contract failures remain non-zero and currently use `1`. rate-limited responses remain on exit code `1`, but now include retry guidance and, when available, `error.details.rateLimit` metadata.
121
+ for automation consumers, auth and authorization failures now use exit code `4`, free-plan or workspace-plan limit failures use exit code `5`, and client-side write confirmation timeouts use exit code `6`. other contract failures remain non-zero and currently use `1`. rate-limited responses remain on exit code `1`, but now include retry guidance and, when available, `error.details.rateLimit` metadata.
122
+
123
+ high-value issue write commands also honor `LINEAR_WRITE_TIMEOUT_MS` and accept `--timeout-ms` for per-command overrides. timeout failures return a distinct machine-readable failure mode, `timeout_error`, with `error.details.failureMode = "timeout_waiting_for_confirmation"`.
114
124
 
115
125
  the same document also defines the shared preview contract for future `--dry-run` write commands. those commands are not all implemented yet, but the contract now fixes the expected `stdout`, `exit code`, and `--json --dry-run` envelope shape ahead of rollout.
116
126
 
@@ -119,10 +129,11 @@ destructive commands use `--yes` as the canonical confirmation-bypass flag. lega
119
129
  for retry behavior, prefer treating write commands in three buckets:
120
130
 
121
131
  - retry-safe set-style writes: `issue update` without `--comment`, plus relation add/delete
132
+ - retry-safe no-op writes: `project label add/remove` and `notification read/archive`, which succeed without mutating when the target state is already satisfied
122
133
  - non-idempotent writes: `issue create`, `issue comment add`, and `issue update --comment`
123
134
  - resumable but non-idempotent batch writes: `issue create-batch`, which reports `error.details.createdIdentifiers` and `failedStep` on partial failure
124
135
 
125
- when `issue update --comment --json` updates the issue but the follow-up comment fails, the command exits non-zero and includes `error.details.partialSuccess.issueUpdated = true` plus a standalone retry command for `issue comment add`.
136
+ when a write command completes part of its work and then fails, `error.details` uses a shared partial-success shape with `failureStage`, `retryable`, and `partialSuccess`. for example, `issue update --comment --json` sets `error.details.partialSuccess.issueUpdated = true` and includes a standalone retry command for `issue comment add`.
126
137
 
127
138
  For stdin and pipeline behavior, see [docs/stdin-policy.md](docs/stdin-policy.md).
128
139
 
@@ -256,6 +267,8 @@ For short inline text, `-d/--description` is fine. For Markdown content, prefer
256
267
 
257
268
  ```bash
258
269
  linear team list # list teams
270
+ linear team list --json # emit contract-stable team summaries
271
+ linear team view ENG --json # emit contract-stable team details
259
272
  linear team id # print out the team id (e.g. for scripts)
260
273
  linear team members # list team members
261
274
  linear team members ENG --json # emit assignable candidates for a team
@@ -382,11 +395,24 @@ inspect workflow states directly, without going through issue mutations.
382
395
 
383
396
  ```bash
384
397
  linear workflow-state list --team ENG
385
- linear workflow-state list --json
398
+ linear workflow-state list --team ENG --json
386
399
  linear workflow-state view <workflowStateId>
387
400
  linear workflow-state view <workflowStateId> --json
388
401
  ```
389
402
 
403
+ ### label commands
404
+
405
+ inspect issue labels and project labels directly with a primitive GraphQL-aligned surface.
406
+
407
+ ```bash
408
+ linear label list
409
+ linear label list --team ENG
410
+ linear label list --json
411
+ linear project-label list
412
+ linear project-label list --include-archived
413
+ linear project-label list --json
414
+ ```
415
+
390
416
  ### project label commands
391
417
 
392
418
  inspect workspace project labels directly with a primitive GraphQL-aligned surface.
@@ -404,9 +430,9 @@ inspect workspace users directly with a primitive GraphQL-aligned surface.
404
430
  ```bash
405
431
  linear user list
406
432
  linear user list --all
407
- linear user list --json
433
+ linear user list --json # emit contract-stable user summaries
408
434
  linear user view <userId>
409
- linear user view <userId> --json
435
+ linear user view <userId> --json # emit contract-stable user details
410
436
  ```
411
437
 
412
438
  ### other commands
@@ -23,7 +23,7 @@
23
23
  "hasInstallScript": true,
24
24
  "license": "MIT",
25
25
  "name": "@kyaukyuai/linear-cli",
26
- "version": "2.9.1"
26
+ "version": "2.11.0"
27
27
  },
28
28
  "node_modules/@isaacs/cliui": {
29
29
  "engines": {
@@ -542,5 +542,5 @@
542
542
  }
543
543
  },
544
544
  "requires": true,
545
- "version": "2.9.1"
545
+ "version": "2.11.0"
546
546
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/kyaukyuai/linear-cli/releases/download/v2.9.1"
3
+ "https://github.com/kyaukyuai/linear-cli/releases/download/v2.11.0"
4
4
  ],
5
5
  "bin": {
6
6
  "linear": "run-linear.js"
@@ -12,7 +12,7 @@
12
12
  "detect-libc": "^2.1.2",
13
13
  "rimraf": "^6.1.3"
14
14
  },
15
- "description": "Git-first Linear CLI with workspace-aware auth, issue workflows, and automation-friendly JSON output",
15
+ "description": "Agent-first Linear CLI with stable JSON contracts, dry-run previews, and workflow-safe automation",
16
16
  "devDependencies": {
17
17
  "prettier": "^3.8.1"
18
18
  },
@@ -85,7 +85,7 @@
85
85
  "zipExt": ".tar.xz"
86
86
  }
87
87
  },
88
- "version": "2.9.1",
88
+ "version": "2.11.0",
89
89
  "volta": {
90
90
  "node": "18.14.1",
91
91
  "npm": "9.5.0"