linear-sdk-cli 0.1.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.
Files changed (111) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.claude-plugin/plugin.json +9 -0
  3. package/CHANGELOG.md +807 -0
  4. package/COVERAGE.md +495 -0
  5. package/LICENSE +21 -0
  6. package/MIGRATING.md +220 -0
  7. package/README.md +524 -0
  8. package/package.json +87 -0
  9. package/skills/linear-sdk-cli/SKILL.md +534 -0
  10. package/skills/linear-sdk-cli/references/api.md +27 -0
  11. package/skills/linear-sdk-cli/references/attachment.md +82 -0
  12. package/skills/linear-sdk-cli/references/auth.md +174 -0
  13. package/skills/linear-sdk-cli/references/commands.md +37 -0
  14. package/skills/linear-sdk-cli/references/comment.md +154 -0
  15. package/skills/linear-sdk-cli/references/completion.md +17 -0
  16. package/skills/linear-sdk-cli/references/config.md +99 -0
  17. package/skills/linear-sdk-cli/references/cycle.md +131 -0
  18. package/skills/linear-sdk-cli/references/document.md +180 -0
  19. package/skills/linear-sdk-cli/references/favorite.md +78 -0
  20. package/skills/linear-sdk-cli/references/initiative-update.md +67 -0
  21. package/skills/linear-sdk-cli/references/initiative.md +256 -0
  22. package/skills/linear-sdk-cli/references/issue.md +928 -0
  23. package/skills/linear-sdk-cli/references/label.md +112 -0
  24. package/skills/linear-sdk-cli/references/milestone.md +139 -0
  25. package/skills/linear-sdk-cli/references/notification.md +123 -0
  26. package/skills/linear-sdk-cli/references/open.md +29 -0
  27. package/skills/linear-sdk-cli/references/organization.md +99 -0
  28. package/skills/linear-sdk-cli/references/project-update.md +67 -0
  29. package/skills/linear-sdk-cli/references/project.md +234 -0
  30. package/skills/linear-sdk-cli/references/roadmap.md +150 -0
  31. package/skills/linear-sdk-cli/references/schema.md +21 -0
  32. package/skills/linear-sdk-cli/references/state.md +61 -0
  33. package/skills/linear-sdk-cli/references/team.md +227 -0
  34. package/skills/linear-sdk-cli/references/user.md +103 -0
  35. package/skills/linear-sdk-cli/references/webhook.md +151 -0
  36. package/skills/linear-sdk-cli/references/whoami.md +26 -0
  37. package/skills/linear-sdk-cli/scripts/generate-docs.ts +339 -0
  38. package/src/bin/linear.ts +97 -0
  39. package/src/cli.ts +232 -0
  40. package/src/client.ts +172 -0
  41. package/src/commands/agent-session.ts +121 -0
  42. package/src/commands/api.ts +317 -0
  43. package/src/commands/attach.ts +90 -0
  44. package/src/commands/attachment.ts +74 -0
  45. package/src/commands/comment.ts +225 -0
  46. package/src/commands/completion.ts +69 -0
  47. package/src/commands/cycle.ts +125 -0
  48. package/src/commands/discover.ts +170 -0
  49. package/src/commands/document.ts +211 -0
  50. package/src/commands/favorite.ts +72 -0
  51. package/src/commands/initiative-update.ts +47 -0
  52. package/src/commands/initiative.ts +261 -0
  53. package/src/commands/issue.ts +1263 -0
  54. package/src/commands/label.ts +119 -0
  55. package/src/commands/meta.ts +534 -0
  56. package/src/commands/milestone.ts +163 -0
  57. package/src/commands/notification.ts +110 -0
  58. package/src/commands/open.ts +84 -0
  59. package/src/commands/organization.ts +79 -0
  60. package/src/commands/project-update.ts +47 -0
  61. package/src/commands/project.ts +339 -0
  62. package/src/commands/roadmap.ts +131 -0
  63. package/src/commands/state.ts +58 -0
  64. package/src/commands/team.ts +243 -0
  65. package/src/commands/user.ts +107 -0
  66. package/src/commands/webhook.ts +156 -0
  67. package/src/config.ts +1236 -0
  68. package/src/context.ts +117 -0
  69. package/src/git.ts +174 -0
  70. package/src/index.ts +10 -0
  71. package/src/lib/action.ts +26 -0
  72. package/src/lib/body.ts +172 -0
  73. package/src/lib/errors.ts +195 -0
  74. package/src/lib/introspect.ts +150 -0
  75. package/src/lib/keyring.ts +270 -0
  76. package/src/lib/mutation.ts +53 -0
  77. package/src/lib/open.ts +32 -0
  78. package/src/lib/options.ts +640 -0
  79. package/src/lib/output-shapes.ts +562 -0
  80. package/src/lib/pagination.ts +145 -0
  81. package/src/lib/prompt.ts +91 -0
  82. package/src/lib/resolve.ts +596 -0
  83. package/src/lib/shape.ts +273 -0
  84. package/src/lib/status-update.ts +91 -0
  85. package/src/lib/upload.ts +329 -0
  86. package/src/output/color.ts +52 -0
  87. package/src/output/format.ts +238 -0
  88. package/src/output/markdown.ts +133 -0
  89. package/src/output/pager.ts +131 -0
  90. package/src/output/sanitize.ts +76 -0
  91. package/src/output/table.ts +198 -0
  92. package/src/services/agent-session.ts +289 -0
  93. package/src/services/attachment.ts +198 -0
  94. package/src/services/comment.ts +262 -0
  95. package/src/services/cycle.ts +224 -0
  96. package/src/services/document.ts +357 -0
  97. package/src/services/favorite.ts +147 -0
  98. package/src/services/initiative-update.ts +59 -0
  99. package/src/services/initiative.ts +449 -0
  100. package/src/services/issue.ts +1153 -0
  101. package/src/services/label.ts +193 -0
  102. package/src/services/milestone.ts +262 -0
  103. package/src/services/notification.ts +190 -0
  104. package/src/services/organization.ts +144 -0
  105. package/src/services/project-update.ts +36 -0
  106. package/src/services/project.ts +494 -0
  107. package/src/services/roadmap.ts +177 -0
  108. package/src/services/state.ts +127 -0
  109. package/src/services/team.ts +386 -0
  110. package/src/services/user.ts +137 -0
  111. package/src/services/webhook.ts +203 -0
@@ -0,0 +1,928 @@
1
+ # linear issue
2
+
3
+ > Work with issues
4
+
5
+ Group alias: `i`
6
+
7
+ _Generated from `linear commands --json`. `linear issue --help` (or `<subcommand> --help`) is authoritative._
8
+
9
+ Every command also accepts the global flags `-j/--json`, `--no-input`, `-y/--yes`, `-q/--quiet`, `--workspace <slug>`, `--api-key <key>`, `-t/--team <key>`, `-n/--limit <n>`, `--all`, `-f/--fields <a,b,c>`, `--no-ansi` (alias `--no-color`), and `--debug`. Only command-specific options are listed below.
10
+
11
+ ### `linear issue`
12
+
13
+ Work with issues
14
+
15
+ Aliases: `i`
16
+
17
+ ```
18
+ linear issue [options]
19
+ ```
20
+
21
+ **Output (`--json`)**: a bare object — runs `issue view` by default
22
+
23
+ ```text
24
+ id: string
25
+ identifier: string
26
+ title: string
27
+ description: string | null
28
+ priority: number
29
+ priorityLabel: string
30
+ estimate: number | null
31
+ url: string
32
+ branchName: string
33
+ dueDate: string | null
34
+ createdAt: string
35
+ updatedAt: string
36
+ archivedAt: string | null
37
+ trashed: boolean
38
+ startedAt: string | null
39
+ completedAt: string | null
40
+ canceledAt: string | null
41
+ state: {id: string, name: string, type: string} | null
42
+ assignee: {id: string, displayName: string, email: string} | null
43
+ team: {id: string, key: string, name: string} | null
44
+ project: {id: string, name: string} | null
45
+ milestone: {id: string, name: string} | null
46
+ cycle: {id: string, number: number, name: string | null} | null
47
+ parent: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null} | null
48
+ children: Array<{id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}>
49
+ labels: Array<{id: string, name: string}>
50
+ subscribers: Array<{id: string, displayName: string}>
51
+ attachments: Array<{id: string, title: string, url: string, subtitle: string | null, sourceType: string | null, createdAt: string}>
52
+ documents: Array<{id: string, title: string, slugId: string, url: string, createdAt: string, updatedAt: string}>
53
+ relations: Array<{id: string, type: string, issue: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}, relatedIssue: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}}>
54
+ inverseRelations: Array<{id: string, type: string, issue: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}, relatedIssue: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}}>
55
+ comments: Array<{id: string, body: string, url: string, createdAt: string, editedAt: string | null, resolvedAt: string | null, parent: {id: string} | null, user: {id: string, displayName: string} | null, externalUser: {id: string, displayName: string} | null, resolvingCommentId: string | null, resolvingUser: {id: string, displayName: string} | null}>
56
+ ```
57
+
58
+ With `--web`: a receipt object
59
+
60
+ ```text
61
+ id: string
62
+ identifier: string
63
+ url: string
64
+ opened: boolean
65
+ ```
66
+
67
+ With `--app`: a receipt object
68
+
69
+ ```text
70
+ id: string
71
+ identifier: string
72
+ url: string
73
+ opened: boolean
74
+ ```
75
+
76
+ ### `linear issue agent-session`
77
+
78
+ Inspect the agent sessions on an issue
79
+
80
+ ```
81
+ linear issue agent-session [options]
82
+ ```
83
+
84
+ ### `linear issue agent-session list`
85
+
86
+ List an issue's agent sessions (newest first)
87
+
88
+ Aliases: `ls`
89
+
90
+ ```
91
+ linear issue agent-session list [options] [issue]
92
+ ```
93
+
94
+ | Option | Description |
95
+ | ------------------- | -------------------------------------------------- |
96
+ | `--status <status>` | only sessions in this status |
97
+ | `--all-issues` | every session in the workspace, ignoring the issue |
98
+
99
+ **Output (`--json`)**: a bare array of objects
100
+
101
+ ```text
102
+ id: string
103
+ status: string
104
+ type: string | null
105
+ summary: string | null
106
+ createdAt: string
107
+ startedAt: string | null
108
+ endedAt: string | null
109
+ url: string | null
110
+ issue: {id: string, identifier: string, title: string} | null
111
+ agent: {id: string, name: string, displayName: string} | null
112
+ creator: {id: string, name: string, displayName: string} | null
113
+ ```
114
+
115
+ ### `linear issue agent-session view`
116
+
117
+ Show an agent session and its activity
118
+
119
+ Aliases: `show`
120
+
121
+ ```
122
+ linear issue agent-session view [options] <id>
123
+ ```
124
+
125
+ **Output (`--json`)**: a bare object
126
+
127
+ ```text
128
+ id: string
129
+ status: string
130
+ type: string | null
131
+ summary: string | null
132
+ createdAt: string
133
+ startedAt: string | null
134
+ endedAt: string | null
135
+ url: string | null
136
+ issue: {id: string, identifier: string, title: string} | null
137
+ agent: {id: string, name: string, displayName: string} | null
138
+ creator: {id: string, name: string, displayName: string} | null
139
+ updatedAt: string
140
+ dismissedAt: string | null
141
+ dismissedBy: {id: string, name: string, displayName: string} | null
142
+ externalLink: string | null
143
+ activities: Array<{id: string, createdAt: string, type: string, body: string | null, action: string | null, parameter: string | null, result: string | null}>
144
+ activitiesTruncated: boolean
145
+ ```
146
+
147
+ ### `linear issue archive`
148
+
149
+ Archive an issue
150
+
151
+ ```
152
+ linear issue archive [options] [id]
153
+ ```
154
+
155
+ | Option | Description |
156
+ | -------------------- | ------------------------------------------------ |
157
+ | `--bulk <ids>` | archive comma-separated issue ids (repeatable) |
158
+ | `--bulk-file <path>` | archive issue ids from a file (one per line) |
159
+ | `--bulk-stdin` | archive issue ids read from stdin (one per line) |
160
+
161
+ **Output (`--json`)**: a receipt object
162
+
163
+ ```text
164
+ id: string
165
+ identifier: string
166
+ archived: boolean
167
+ ```
168
+
169
+ With `--bulk`: a receipt object
170
+
171
+ ```text
172
+ action: string
173
+ results: Array<{input: string, id?: string, identifier?: string, archived?: boolean, deleted?: boolean, error?: {message: string, code: string}}>
174
+ succeeded: number
175
+ failed: number
176
+ ```
177
+
178
+ ### `linear issue assign`
179
+
180
+ Assign an issue (use 'me', email, name, or id). Issue defaults to the branch.
181
+
182
+ ```
183
+ linear issue assign [options] [idOrAssignee] [assignee]
184
+ ```
185
+
186
+ **Output (`--json`)**: a receipt object
187
+
188
+ ```text
189
+ id: string
190
+ identifier: string
191
+ ```
192
+
193
+ ### `linear issue attach`
194
+
195
+ Upload files and attach them to an issue (private by default)
196
+
197
+ ```
198
+ linear issue attach [options] <issue> <file...>
199
+ ```
200
+
201
+ | Option | Description |
202
+ | ------------------ | ----------------------------------------------------------------------------- |
203
+ | `--title <title>` | attachment title (single file only; default: the file name) |
204
+ | `--comment <body>` | also post a comment with this body embedding the files as markdown |
205
+ | `--public` | upload to a public, world-readable URL (raster images only; default: private) |
206
+
207
+ **Output (`--json`)**: a bare array of objects — one row per uploaded file; `comment` is on every row when --comment posted one
208
+
209
+ ```text
210
+ id: string
211
+ title: string
212
+ url: string
213
+ assetUrl: string
214
+ contentType: string
215
+ size: number
216
+ comment?: {id: string, url: string}
217
+ ```
218
+
219
+ ### `linear issue branch`
220
+
221
+ Print the suggested git branch name
222
+
223
+ ```
224
+ linear issue branch [options] [id]
225
+ ```
226
+
227
+ **Output (`--json`)**: a receipt object
228
+
229
+ ```text
230
+ branch: string
231
+ ```
232
+
233
+ ### `linear issue comment`
234
+
235
+ Add a comment to an issue; on a matching branch, `issue comment "<body>"` is enough (or use the add/list/update/delete subcommands)
236
+
237
+ ```
238
+ linear issue comment [options] [id] [body]
239
+ ```
240
+
241
+ | Option | Description |
242
+ | -------------------- | ------------------------------------------- |
243
+ | `--body-file <path>` | read comment body from a file ('-' = stdin) |
244
+
245
+ **Output (`--json`)**: a receipt object — the bare form adds a comment; add/list/update/delete are subcommands
246
+
247
+ ```text
248
+ id: string
249
+ issue: string
250
+ ```
251
+
252
+ ### `linear issue comment add`
253
+
254
+ Add a comment to an issue (images uploaded with --attach render inline)
255
+
256
+ ```
257
+ linear issue comment add [options] <issue> [body]
258
+ ```
259
+
260
+ | Option | Description |
261
+ | -------------------- | ----------------------------------------------------------------------------------------- |
262
+ | `--body-file <path>` | read comment body from a file ('-' = stdin) |
263
+ | `--attach <file>` | upload a file and embed it in the comment (images inline; repeatable; private by default) |
264
+ | `--public` | upload the attachments to public, world-readable URLs (raster images only) |
265
+
266
+ **Output (`--json`)**: a receipt object — `attachments` only with --attach
267
+
268
+ ```text
269
+ id: string
270
+ issue: string
271
+ url: string
272
+ attachments?: Array<{filename: string, assetUrl: string, contentType: string, size: number}>
273
+ ```
274
+
275
+ ### `linear issue comment delete`
276
+
277
+ Delete a comment
278
+
279
+ ```
280
+ linear issue comment delete [options] <commentId>
281
+ ```
282
+
283
+ **Output (`--json`)**: a receipt object
284
+
285
+ ```text
286
+ id: string
287
+ deleted: boolean
288
+ ```
289
+
290
+ ### `linear issue comment list`
291
+
292
+ List comments on an issue
293
+
294
+ ```
295
+ linear issue comment list [options] <issue>
296
+ ```
297
+
298
+ **Output (`--json`)**: a bare array of objects
299
+
300
+ ```text
301
+ id: string
302
+ body: string
303
+ user: {id: string, displayName: string} | null
304
+ createdAt: string
305
+ editedAt: string | null
306
+ resolvedAt: string | null
307
+ parent: {id: string} | null
308
+ url: string
309
+ ```
310
+
311
+ ### `linear issue comment update`
312
+
313
+ Update a comment's body
314
+
315
+ ```
316
+ linear issue comment update [options] <commentId> [body]
317
+ ```
318
+
319
+ | Option | Description |
320
+ | -------------------- | --------------------------------------- |
321
+ | `--body-file <path>` | read new body from a file ('-' = stdin) |
322
+
323
+ **Output (`--json`)**: a receipt object
324
+
325
+ ```text
326
+ id: string
327
+ url: string
328
+ ```
329
+
330
+ ### `linear issue comments`
331
+
332
+ List comments on an issue
333
+
334
+ ```
335
+ linear issue comments [options] [id]
336
+ ```
337
+
338
+ **Output (`--json`)**: a bare array of objects
339
+
340
+ ```text
341
+ id: string
342
+ body: string
343
+ user: {id: string, displayName: string} | null
344
+ createdAt: string
345
+ editedAt: string | null
346
+ resolvedAt: string | null
347
+ parent: {id: string} | null
348
+ url: string
349
+ ```
350
+
351
+ ### `linear issue create`
352
+
353
+ Create a new issue
354
+
355
+ Aliases: `new`
356
+
357
+ ```
358
+ linear issue create [options]
359
+ ```
360
+
361
+ | Option | Description |
362
+ | --------------------------- | ---------------------------------------------------------------------------------------------------- |
363
+ | `--title <title>` | issue title |
364
+ | `-d, --description <text>` | issue description (body) |
365
+ | `--description-file <path>` | read description from a file ('-' = stdin) |
366
+ | `--editor` | compose the description in $EDITOR |
367
+ | `-a, --assignee <who>` | assignee (me\|email\|name\|id) |
368
+ | `-s, --state <name>` | workflow state name or type |
369
+ | `-P, --priority <0-4>` | priority |
370
+ | `-l, --label <name>` | label (repeatable / comma-separated) |
371
+ | `-p, --project <name>` | project name or id |
372
+ | `--milestone <name>` | project milestone (requires --project) |
373
+ | `--cycle <n>` | cycle number, name, id, or 'current' |
374
+ | `--estimate <n>` | estimate points |
375
+ | `--parent <id>` | parent issue id (the sub-issue joins the parent's project unless --project says otherwise) |
376
+ | `--due <date>` | due date (YYYY-MM-DD) |
377
+ | `--template <name\|id>` | create from an issue template (the team's or a shared one) |
378
+ | `--no-default-template` | do not apply the team's default issue template |
379
+ | `--start` | then start work: check out the branch, move to the first 'started' state (or --state), assign to you |
380
+
381
+ **Output (`--json`)**: a receipt object
382
+
383
+ ```text
384
+ id: string
385
+ identifier: string
386
+ url: string
387
+ ```
388
+
389
+ With `--start`: the same, plus:
390
+
391
+ ```text
392
+ branch: string
393
+ checkedOut: boolean
394
+ stateChanged: boolean
395
+ ```
396
+
397
+ ### `linear issue delete`
398
+
399
+ Delete (trash) an issue
400
+
401
+ Aliases: `rm`
402
+
403
+ ```
404
+ linear issue delete [options] [id]
405
+ ```
406
+
407
+ | Option | Description |
408
+ | -------------------- | ----------------------------------------------- |
409
+ | `--bulk <ids>` | delete comma-separated issue ids (repeatable) |
410
+ | `--bulk-file <path>` | delete issue ids from a file (one per line) |
411
+ | `--bulk-stdin` | delete issue ids read from stdin (one per line) |
412
+
413
+ **Output (`--json`)**: a receipt object
414
+
415
+ ```text
416
+ id: string
417
+ identifier: string
418
+ deleted: boolean
419
+ ```
420
+
421
+ With `--bulk`: a receipt object
422
+
423
+ ```text
424
+ action: string
425
+ results: Array<{input: string, id?: string, identifier?: string, archived?: boolean, deleted?: boolean, error?: {message: string, code: string}}>
426
+ succeeded: number
427
+ failed: number
428
+ ```
429
+
430
+ ### `linear issue describe`
431
+
432
+ Print a commit message for the issue: 'ID Title' plus Linear-issue trailers
433
+
434
+ ```
435
+ linear issue describe [options] [id]
436
+ ```
437
+
438
+ | Option | Description |
439
+ | ------------------ | --------------------------------------------------------------- |
440
+ | `-r, --references` | link without closing: 'References <ID>' instead of 'Fixes <ID>' |
441
+
442
+ **Output (`--json`)**: a receipt object — `trailer` is the magic-word phrase (Fixes TES-1); `message` the full commit text as printed
443
+
444
+ ```text
445
+ identifier: string
446
+ title: string
447
+ url: string
448
+ trailer: string
449
+ message: string
450
+ ```
451
+
452
+ ### `linear issue id`
453
+
454
+ Print the current issue's identifier
455
+
456
+ ```
457
+ linear issue id [options] [id]
458
+ ```
459
+
460
+ **Output (`--json`)**: a receipt object — `id` is the identifier (TES-123), not the UUID
461
+
462
+ ```text
463
+ id: string
464
+ ```
465
+
466
+ ### `linear issue label`
467
+
468
+ Add/remove labels on an issue
469
+
470
+ ```
471
+ linear issue label [options] [id]
472
+ ```
473
+
474
+ | Option | Description |
475
+ | ----------------- | --------------------------- |
476
+ | `--add <name>` | add a label (repeatable) |
477
+ | `--remove <name>` | remove a label (repeatable) |
478
+
479
+ **Output (`--json`)**: a receipt object
480
+
481
+ ```text
482
+ id: string
483
+ identifier: string
484
+ ```
485
+
486
+ ### `linear issue list`
487
+
488
+ List issues with filters
489
+
490
+ Aliases: `ls`, `query`
491
+
492
+ ```
493
+ linear issue list [options]
494
+ ```
495
+
496
+ | Option | Description |
497
+ | ------------------------ | --------------------------------------------------------- |
498
+ | `-t, --team <key>` | filter by team key (repeatable; default: configured team) |
499
+ | `-s, --state <name>` | filter by workflow state name/type (repeatable) |
500
+ | `-a, --assignee <who>` | filter by assignee (me\|email\|name) |
501
+ | `-U, --unassigned` | only issues with no assignee |
502
+ | `-p, --project <name>` | filter by project |
503
+ | `--project-label <name>` | filter by the project's label (excludes --project) |
504
+ | `--milestone <name>` | filter by project milestone |
505
+ | `-l, --label <name>` | filter by label (repeat to narrow) |
506
+ | `-P, --priority <0-4>` | filter by priority |
507
+ | `--cycle <n>` | cycle number, name, id, or 'current' |
508
+ | `--created-after <date>` | only issues created at/after a date (YYYY-MM-DD) |
509
+ | `--updated-after <date>` | only issues updated at/after a date (YYYY-MM-DD) |
510
+ | `--all-teams` | search every team, ignoring the default team |
511
+ | `--include-archived` | include archived issues |
512
+ | `--query <text>` | full-text search |
513
+ | `--sort <field>` | sort order |
514
+
515
+ **Output (`--json`)**: a bare array of objects
516
+
517
+ ```text
518
+ id: string
519
+ identifier: string
520
+ title: string
521
+ priority: number
522
+ priorityLabel: string
523
+ estimate: number | null
524
+ url: string
525
+ updatedAt: string
526
+ state: {name: string, type: string} | null
527
+ assignee: {displayName: string} | null
528
+ project: {name: string} | null
529
+ milestone: {id: string, name: string} | null
530
+ cycle: {id: string, number: number, name: string | null} | null
531
+ labels: string[]
532
+ archivedAt: string | null
533
+ trashed: boolean
534
+ startedAt: string | null
535
+ completedAt: string | null
536
+ canceledAt: string | null
537
+ ```
538
+
539
+ ### `linear issue mine`
540
+
541
+ List your unstarted issues (--all-states for every state)
542
+
543
+ ```
544
+ linear issue mine [options]
545
+ ```
546
+
547
+ | Option | Description |
548
+ | ------------------------ | --------------------------------------------------------- |
549
+ | `-t, --team <key>` | filter by team key (repeatable; default: configured team) |
550
+ | `-s, --state <name>` | filter by workflow state name/type (repeatable) |
551
+ | `-p, --project <name>` | filter by project |
552
+ | `--project-label <name>` | filter by the project's label (excludes --project) |
553
+ | `--milestone <name>` | filter by project milestone |
554
+ | `-l, --label <name>` | filter by label (repeat to narrow) |
555
+ | `-P, --priority <0-4>` | filter by priority |
556
+ | `--cycle <n>` | cycle number, name, id, or 'current' |
557
+ | `--created-after <date>` | only issues created at/after a date (YYYY-MM-DD) |
558
+ | `--updated-after <date>` | only issues updated at/after a date (YYYY-MM-DD) |
559
+ | `--all-teams` | search every team, ignoring the default team |
560
+ | `--include-archived` | include archived issues |
561
+ | `--query <text>` | full-text search |
562
+ | `--sort <field>` | sort order |
563
+ | `--all-states` | include every workflow state, not just unstarted |
564
+
565
+ **Output (`--json`)**: a bare array of objects
566
+
567
+ ```text
568
+ id: string
569
+ identifier: string
570
+ title: string
571
+ priority: number
572
+ priorityLabel: string
573
+ estimate: number | null
574
+ url: string
575
+ updatedAt: string
576
+ state: {name: string, type: string} | null
577
+ assignee: {displayName: string} | null
578
+ project: {name: string} | null
579
+ milestone: {id: string, name: string} | null
580
+ cycle: {id: string, number: number, name: string | null} | null
581
+ labels: string[]
582
+ archivedAt: string | null
583
+ trashed: boolean
584
+ startedAt: string | null
585
+ completedAt: string | null
586
+ canceledAt: string | null
587
+ ```
588
+
589
+ ### `linear issue pull-request`
590
+
591
+ Create a GitHub PR for the issue via the gh CLI
592
+
593
+ Aliases: `pr`
594
+
595
+ ```
596
+ linear issue pull-request [options] [id]
597
+ ```
598
+
599
+ | Option | Description |
600
+ | ----------------- | ------------------------------------------------------ |
601
+ | `--base <branch>` | base branch for the PR |
602
+ | `--head <branch>` | head branch for the PR |
603
+ | `--draft` | create the PR as a draft |
604
+ | `--title <title>` | PR title after the issue id (default: the issue title) |
605
+ | `-w, --web` | open the PR creation page in the browser |
606
+
607
+ **Output (`--json`)**: a receipt object
608
+
609
+ ```text
610
+ url: string
611
+ identifier: string
612
+ title: string
613
+ ```
614
+
615
+ With `--web`: a receipt object
616
+
617
+ ```text
618
+ web: boolean
619
+ identifier: string
620
+ ```
621
+
622
+ ### `linear issue relation`
623
+
624
+ Manage issue relations: op = add|remove|list
625
+
626
+ ```
627
+ linear issue relation [options] <id> <op> [other]
628
+ ```
629
+
630
+ | Option | Description |
631
+ | -------------- | -------------------------------- |
632
+ | `--blocks` | relation type: blocks |
633
+ | `--blocked-by` | relation type: blocked by |
634
+ | `--related` | relation type: related (default) |
635
+ | `--duplicate` | relation type: duplicate |
636
+
637
+ **Output (`--json`)**: a receipt object — for op=add|remove
638
+
639
+ ```text
640
+ issueId: string
641
+ issueIdentifier: string
642
+ otherId: string
643
+ otherIdentifier: string
644
+ type: string
645
+ op: string
646
+ ```
647
+
648
+ With `op=list`: a bare array of objects
649
+
650
+ ```text
651
+ type: string
652
+ issue: string
653
+ title: string
654
+ ```
655
+
656
+ ### `linear issue search`
657
+
658
+ Full-text search across issues (scoped to the default team; --all-teams widens)
659
+
660
+ ```
661
+ linear issue search [options] <text>
662
+ ```
663
+
664
+ | Option | Description |
665
+ | ------------------------ | --------------------------------------------------------- |
666
+ | `-t, --team <key>` | filter by team key (repeatable; default: configured team) |
667
+ | `-s, --state <name>` | filter by workflow state name/type (repeatable) |
668
+ | `-a, --assignee <who>` | filter by assignee (me\|email\|name) |
669
+ | `-U, --unassigned` | only issues with no assignee |
670
+ | `-p, --project <name>` | filter by project |
671
+ | `--project-label <name>` | filter by the project's label (excludes --project) |
672
+ | `--milestone <name>` | filter by project milestone |
673
+ | `-l, --label <name>` | filter by label (repeat to narrow) |
674
+ | `-P, --priority <0-4>` | filter by priority |
675
+ | `--cycle <n>` | cycle number, name, id, or 'current' |
676
+ | `--created-after <date>` | only issues created at/after a date (YYYY-MM-DD) |
677
+ | `--updated-after <date>` | only issues updated at/after a date (YYYY-MM-DD) |
678
+ | `--all-teams` | search every team, ignoring the default team |
679
+ | `--include-archived` | include archived issues |
680
+ | `--search-comments` | match comment bodies as well as titles and descriptions |
681
+
682
+ **Output (`--json`)**: a bare array of objects
683
+
684
+ ```text
685
+ id: string
686
+ identifier: string
687
+ title: string
688
+ priority: number
689
+ priorityLabel: string
690
+ estimate: number | null
691
+ url: string
692
+ updatedAt: string
693
+ state: {name: string, type: string} | null
694
+ assignee: {displayName: string} | null
695
+ project: {name: string} | null
696
+ milestone: {id: string, name: string} | null
697
+ cycle: {id: string, number: number, name: string | null} | null
698
+ labels: string[]
699
+ archivedAt: string | null
700
+ trashed: boolean
701
+ startedAt: string | null
702
+ completedAt: string | null
703
+ canceledAt: string | null
704
+ ```
705
+
706
+ ### `linear issue start`
707
+
708
+ Start work on an issue: check out its branch and move it to the first 'started' state
709
+
710
+ ```
711
+ linear issue start [options] [id]
712
+ ```
713
+
714
+ | Option | Description |
715
+ | ---------------- | ----------------------------------------------------- |
716
+ | `--state <name>` | move to this state instead of the first 'started' one |
717
+ | `--no-move` | do not change the state; only check out the branch |
718
+ | `--no-checkout` | do not touch git; only update state |
719
+
720
+ **Output (`--json`)**: a receipt object
721
+
722
+ ```text
723
+ id: string
724
+ identifier: string
725
+ branch: string
726
+ checkedOut: boolean
727
+ stateChanged: boolean
728
+ ```
729
+
730
+ ### `linear issue state`
731
+
732
+ Move an issue to a workflow state. Issue defaults to the branch.
733
+
734
+ ```
735
+ linear issue state [options] [idOrState] [state]
736
+ ```
737
+
738
+ **Output (`--json`)**: a receipt object
739
+
740
+ ```text
741
+ id: string
742
+ identifier: string
743
+ ```
744
+
745
+ ### `linear issue subscribe`
746
+
747
+ Subscribe to an issue
748
+
749
+ ```
750
+ linear issue subscribe [options] [id]
751
+ ```
752
+
753
+ **Output (`--json`)**: a receipt object
754
+
755
+ ```text
756
+ id: string
757
+ identifier: string
758
+ subscribed: boolean
759
+ ```
760
+
761
+ ### `linear issue title`
762
+
763
+ Print the issue title
764
+
765
+ ```
766
+ linear issue title [options] [id]
767
+ ```
768
+
769
+ **Output (`--json`)**: a receipt object
770
+
771
+ ```text
772
+ title: string
773
+ ```
774
+
775
+ ### `linear issue unarchive`
776
+
777
+ Unarchive an issue
778
+
779
+ ```
780
+ linear issue unarchive [options] [id]
781
+ ```
782
+
783
+ **Output (`--json`)**: a receipt object
784
+
785
+ ```text
786
+ id: string
787
+ identifier: string
788
+ archived: boolean
789
+ ```
790
+
791
+ ### `linear issue unsubscribe`
792
+
793
+ Unsubscribe from an issue
794
+
795
+ ```
796
+ linear issue unsubscribe [options] [id]
797
+ ```
798
+
799
+ **Output (`--json`)**: a receipt object
800
+
801
+ ```text
802
+ id: string
803
+ identifier: string
804
+ subscribed: boolean
805
+ ```
806
+
807
+ ### `linear issue update`
808
+
809
+ Update an issue
810
+
811
+ Aliases: `edit`
812
+
813
+ ```
814
+ linear issue update [options] [id]
815
+ ```
816
+
817
+ | Option | Description |
818
+ | --------------------------- | ------------------------------------------------------- |
819
+ | `--title <title>` | new title |
820
+ | `-d, --description <text>` | new description |
821
+ | `--description-file <path>` | read description from a file ('-' = stdin) |
822
+ | `-t, --team <key>` | move the issue to another team (changes its identifier) |
823
+ | `-a, --assignee <who>` | assignee (me\|email\|name\|id) |
824
+ | `-s, --state <name>` | workflow state name or type |
825
+ | `-P, --priority <0-4>` | priority |
826
+ | `-p, --project <name>` | project name or id |
827
+ | `--milestone <name>` | project milestone |
828
+ | `--cycle <n>` | cycle number, name, id, or 'current' |
829
+ | `--estimate <n>` | estimate points |
830
+ | `--parent <id>` | parent issue id |
831
+ | `--due <date>` | due date (YYYY-MM-DD) |
832
+ | `-l, --label <name>` | replace all labels (repeatable / comma-separated) |
833
+ | `--add-label <name>` | add a label (repeatable) |
834
+ | `--remove-label <name>` | remove a label (repeatable) |
835
+ | `--unassign` | clear the assignee |
836
+ | `--clear-cycle` | remove the issue from its cycle |
837
+
838
+ **Output (`--json`)**: a receipt object
839
+
840
+ ```text
841
+ id: string
842
+ identifier: string
843
+ url: string
844
+ ```
845
+
846
+ ### `linear issue url`
847
+
848
+ Print the issue URL
849
+
850
+ ```
851
+ linear issue url [options] [id]
852
+ ```
853
+
854
+ **Output (`--json`)**: a receipt object
855
+
856
+ ```text
857
+ url: string
858
+ ```
859
+
860
+ ### `linear issue view`
861
+
862
+ Show an issue (defaults to the current branch's issue)
863
+
864
+ ```
865
+ linear issue view [options] [id]
866
+ ```
867
+
868
+ | Option | Description |
869
+ | ------------------------- | ------------------------------------------------- |
870
+ | `-w, --web` | open the issue in the browser instead of printing |
871
+ | `--app` | open the issue in Linear.app instead of printing |
872
+ | `--no-comments` | exclude comments from the output |
873
+ | `--show-resolved-threads` | include resolved comment threads |
874
+
875
+ **Output (`--json`)**: a bare object
876
+
877
+ ```text
878
+ id: string
879
+ identifier: string
880
+ title: string
881
+ description: string | null
882
+ priority: number
883
+ priorityLabel: string
884
+ estimate: number | null
885
+ url: string
886
+ branchName: string
887
+ dueDate: string | null
888
+ createdAt: string
889
+ updatedAt: string
890
+ archivedAt: string | null
891
+ trashed: boolean
892
+ startedAt: string | null
893
+ completedAt: string | null
894
+ canceledAt: string | null
895
+ state: {id: string, name: string, type: string} | null
896
+ assignee: {id: string, displayName: string, email: string} | null
897
+ team: {id: string, key: string, name: string} | null
898
+ project: {id: string, name: string} | null
899
+ milestone: {id: string, name: string} | null
900
+ cycle: {id: string, number: number, name: string | null} | null
901
+ parent: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null} | null
902
+ children: Array<{id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}>
903
+ labels: Array<{id: string, name: string}>
904
+ subscribers: Array<{id: string, displayName: string}>
905
+ attachments: Array<{id: string, title: string, url: string, subtitle: string | null, sourceType: string | null, createdAt: string}>
906
+ documents: Array<{id: string, title: string, slugId: string, url: string, createdAt: string, updatedAt: string}>
907
+ relations: Array<{id: string, type: string, issue: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}, relatedIssue: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}}>
908
+ inverseRelations: Array<{id: string, type: string, issue: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}, relatedIssue: {id: string, identifier: string, title: string, state: {id: string, name: string, type: string} | null}}>
909
+ comments: Array<{id: string, body: string, url: string, createdAt: string, editedAt: string | null, resolvedAt: string | null, parent: {id: string} | null, user: {id: string, displayName: string} | null, externalUser: {id: string, displayName: string} | null, resolvingCommentId: string | null, resolvingUser: {id: string, displayName: string} | null}>
910
+ ```
911
+
912
+ With `--web`: a receipt object
913
+
914
+ ```text
915
+ id: string
916
+ identifier: string
917
+ url: string
918
+ opened: boolean
919
+ ```
920
+
921
+ With `--app`: a receipt object
922
+
923
+ ```text
924
+ id: string
925
+ identifier: string
926
+ url: string
927
+ opened: boolean
928
+ ```