@kyaukyuai/linear-cli 2.10.0 → 2.12.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,32 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.12.0] - 2026-03-30
6
+
7
+ ### Added
8
+
9
+ - added schema-style metadata to `linear capabilities --json` so agents can inspect command arguments, input modes, output semantics, and exit codes without scraping docs
10
+ - added Automation Contract v5 coverage for `initiative list/view --json`, `project-update list --json`, and `initiative-update list --json`
11
+
12
+ ### Changed
13
+
14
+ - upgraded write timeout handling to reconcile against Linear after client-side confirmation timeouts, distinguishing `probably_succeeded`, `definitely_failed`, and `partial_success` outcomes for high-value write commands
15
+
16
+ ## [2.11.0] - 2026-03-30
17
+
18
+ ### Added
19
+
20
+ - added `linear capabilities --json` so agents can discover supported JSON, dry-run, stdin, confirmation, and retry semantics without scraping help text
21
+ - added Automation Contract v4 coverage for `team`, `user`, `workflow-state`, and label read surfaces
22
+
23
+ ### Changed
24
+
25
+ - standardized write retry semantics with explicit idempotency categories, retry-safe notification archive/read behavior, and shared partial-success metadata
26
+
27
+ ### Fixed
28
+
29
+ - 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`
30
+
5
31
  ## [2.10.0] - 2026-03-30
6
32
 
7
33
  ### Added
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, primary input schema, output semantics, 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,8 @@ 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
+ - initiative commands for `list` and `view`, plus project update and initiative update feeds
105
+ - JSON output for scripting across issue, cycle, project, milestone, initiative, document, webhook, notification, and update-feed commands
100
106
  - workspace-aware auth management with keyring migration and default workspace support
101
107
  - generated AI-agent skill docs, Claude plugin metadata, npm publishing, and Homebrew tap release plumbing
102
108
 
@@ -104,14 +110,20 @@ compared to upstream, this fork adds and maintains several capabilities aimed at
104
110
 
105
111
  for bot and org-wide automation use cases, `linear-cli` defines a stable JSON contract for a focused automation tier.
106
112
 
113
+ 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, idempotency category, primary arguments and flags, and success/failure output semantics.
114
+
107
115
  - 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
116
  - v2 additions: `project list/view --json`, `cycle list/view/current/next --json`, `milestone list/view --json`
109
117
  - v3 additions: `document list/view --json`, `webhook list/view --json`, `notification list/count --json`
118
+ - v4 additions: `team list/view --json`, `user list/view --json`, `workflow-state list/view --json`, `label list --json`, `project-label list --json`
119
+ - v5 additions: `initiative list/view --json`, `project-update list --json`, `initiative-update list --json`
110
120
  - out of scope: non-JSON terminal output, `linear api`, and other `--json` commands that are not listed above
111
121
 
112
122
  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.
113
123
 
114
- 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.
124
+ 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.
125
+
126
+ high-value write commands 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"`. when reconciliation runs after the timeout, `error.details.outcome` now distinguishes `definitely_failed`, `probably_succeeded`, and `partial_success` from the fallback `unknown` state. notification `read` and `archive` now use the same timeout contract as issue write commands.
115
127
 
116
128
  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.
117
129
 
@@ -120,10 +132,11 @@ destructive commands use `--yes` as the canonical confirmation-bypass flag. lega
120
132
  for retry behavior, prefer treating write commands in three buckets:
121
133
 
122
134
  - retry-safe set-style writes: `issue update` without `--comment`, plus relation add/delete
135
+ - retry-safe no-op writes: `project label add/remove` and `notification read/archive`, which succeed without mutating when the target state is already satisfied
123
136
  - non-idempotent writes: `issue create`, `issue comment add`, and `issue update --comment`
124
137
  - resumable but non-idempotent batch writes: `issue create-batch`, which reports `error.details.createdIdentifiers` and `failedStep` on partial failure
125
138
 
126
- 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`.
139
+ 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`.
127
140
 
128
141
  For stdin and pipeline behavior, see [docs/stdin-policy.md](docs/stdin-policy.md).
129
142
 
@@ -257,6 +270,8 @@ For short inline text, `-d/--description` is fine. For Markdown content, prefer
257
270
 
258
271
  ```bash
259
272
  linear team list # list teams
273
+ linear team list --json # emit contract-stable team summaries
274
+ linear team view ENG --json # emit contract-stable team details
260
275
  linear team id # print out the team id (e.g. for scripts)
261
276
  linear team members # list team members
262
277
  linear team members ENG --json # emit assignable candidates for a team
@@ -383,11 +398,24 @@ inspect workflow states directly, without going through issue mutations.
383
398
 
384
399
  ```bash
385
400
  linear workflow-state list --team ENG
386
- linear workflow-state list --json
401
+ linear workflow-state list --team ENG --json
387
402
  linear workflow-state view <workflowStateId>
388
403
  linear workflow-state view <workflowStateId> --json
389
404
  ```
390
405
 
406
+ ### label commands
407
+
408
+ inspect issue labels and project labels directly with a primitive GraphQL-aligned surface.
409
+
410
+ ```bash
411
+ linear label list
412
+ linear label list --team ENG
413
+ linear label list --json
414
+ linear project-label list
415
+ linear project-label list --include-archived
416
+ linear project-label list --json
417
+ ```
418
+
391
419
  ### project label commands
392
420
 
393
421
  inspect workspace project labels directly with a primitive GraphQL-aligned surface.
@@ -405,9 +433,9 @@ inspect workspace users directly with a primitive GraphQL-aligned surface.
405
433
  ```bash
406
434
  linear user list
407
435
  linear user list --all
408
- linear user list --json
436
+ linear user list --json # emit contract-stable user summaries
409
437
  linear user view <userId>
410
- linear user view <userId> --json
438
+ linear user view <userId> --json # emit contract-stable user details
411
439
  ```
412
440
 
413
441
  ### other commands
@@ -23,7 +23,7 @@
23
23
  "hasInstallScript": true,
24
24
  "license": "MIT",
25
25
  "name": "@kyaukyuai/linear-cli",
26
- "version": "2.10.0"
26
+ "version": "2.12.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.10.0"
545
+ "version": "2.12.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.10.0"
3
+ "https://github.com/kyaukyuai/linear-cli/releases/download/v2.12.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.10.0",
88
+ "version": "2.12.0",
89
89
  "volta": {
90
90
  "node": "18.14.1",
91
91
  "npm": "9.5.0"