@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 +23 -0
- package/README.md +61 -35
- package/npm-shrinkwrap.json +2 -2
- package/package.json +3 -3
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
|
-
#
|
|
1
|
+
# linear-cli
|
|
2
2
|
|
|
3
|
-
`
|
|
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
|
-
|
|
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
|
|
11
|
-
|
|
12
|
-
linear issue
|
|
13
|
-
linear issue
|
|
14
|
-
linear issue
|
|
15
|
-
linear
|
|
16
|
-
linear
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
##
|
|
86
|
+
## agent-facing capabilities
|
|
89
87
|
|
|
90
|
-
compared to upstream, this fork adds and maintains
|
|
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,
|
|
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`,
|
|
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
|
|
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
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"hasInstallScript": true,
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"name": "@kyaukyuai/linear-cli",
|
|
26
|
-
"version": "2.
|
|
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.
|
|
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.
|
|
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": "
|
|
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.
|
|
88
|
+
"version": "2.11.0",
|
|
89
89
|
"volta": {
|
|
90
90
|
"node": "18.14.1",
|
|
91
91
|
"npm": "9.5.0"
|