linear-sdk-cli 0.8.3 → 0.9.1

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.
@@ -35,22 +35,24 @@ lin --version
35
35
 
36
36
  ### Authentication
37
37
 
38
- The CLI supports distinct human, hosted-app, and personal-key lifecycles:
38
+ The CLI supports personal API keys, supplied access tokens, and app credentials. No client ID
39
+ is bundled, and new login never starts browser OAuth:
39
40
 
40
- 1. **Human browser OAuth (default)** via Authorization Code + PKCE S256, `actor=user`:
41
+ 1. **Personal API key (default)**:
41
42
 
42
43
  ```bash
43
- linear auth login # opens Linear; read + write scopes
44
- linear auth login --read-only # read scope only
45
- linear auth login --no-browser # prints URL; loopback callback still required
44
+ linear auth login # hidden API-key prompt in an interactive terminal
45
+ printf '%s\n' "$LINEAR_API_KEY" | linear auth login --key -
46
46
  ```
47
47
 
48
- The CLI validates the viewer/workspace and stores the access token, rotating refresh token,
49
- expiry, scopes, client identity, and workspace identity only in the OS keyring. It refreshes
50
- before expiry and once after an authentication failure. `--admin` is explicit; no client secret
51
- is embedded. `auth logout` revokes this grant before removing it (`--local-only` skips
52
- revocation). Remote/headless callers need the loopback host reachable; Linear has no documented
53
- device-code flow.
48
+ Create a key at https://linear.app/settings/account/security, choosing permissions and team
49
+ access in Linear; workspace policy may restrict member key creation. Never ask for a key in
50
+ chat. The CLI validates the viewer/workspace before storing it in the OS keyring. If no keyring
51
+ is available, login requires explicit `--plaintext` for private user-config storage (`0600`).
52
+ Passing `--key <value>` also works but exposes the key in argv and produces a warning.
53
+ JSON, `--no-input`, and redirected sessions never prompt; use explicit `--key -` for stdin.
54
+ Bare login does not import environment credentials. `--read-only` and `--scope` require
55
+ `--app`; they cannot restrict an existing personal API key.
54
56
 
55
57
  2. **Invocation OAuth access token** via `--access-token <token>` or `LINEAR_ACCESS_TOKEN` — use
56
58
  this for hosted Linear apps, agents, and service accounts. Prefer the environment variable so
@@ -60,6 +62,7 @@ The CLI supports distinct human, hosted-app, and personal-key lifecycles:
60
62
  LINEAR_ACCESS_TOKEN=... linear whoami --json
61
63
  ```
62
64
 
65
+ Tokens may represent a user or app; their issuing grant determines identity and permissions.
63
66
  The host application owns OAuth installation, token refresh/client-credentials exchange,
64
67
  client-secret storage, and webhooks. These tokens remain invocation-scoped.
65
68
  Long-lived hosts can import `ClientCredentialsTokenProvider` from `linear-sdk-cli`; it caches
@@ -102,16 +105,7 @@ The CLI supports distinct human, hosted-app, and personal-key lifecycles:
102
105
  LINEAR_API_KEY=lin_api_... linear whoami --json
103
106
  ```
104
107
 
105
- 5. **Stored personal API-key credentials** via the explicit compatibility path:
106
-
107
- ```bash
108
- printf '%s\n' "$LINEAR_API_KEY" | linear auth login --key -
109
- ```
110
-
111
- Passing `--key <value>` also works but exposes it in argv and produces a warning. API keys may
112
- use `--plaintext`; browser OAuth is always keyring-only.
113
-
114
- 6. **Multiple workspaces** — store several OAuth or API-key credentials and select one per call with
108
+ 5. **Multiple workspaces** — store several app or API-key credentials and select one per call with
115
109
  `--workspace <slug>`; set a default with `linear auth default <slug>`:
116
110
 
117
111
  ```bash
@@ -120,8 +114,30 @@ The CLI supports distinct human, hosted-app, and personal-key lifecycles:
120
114
  linear issue list --workspace acme --json
121
115
  ```
122
116
 
117
+ Existing stored OAuth user profiles remain supported: their own saved client ID is used for
118
+ refresh, scope reporting is retained, and logout revokes the grant (`--local-only` skips
119
+ revocation). New browser login and its `--no-browser`, `--redirect-uri`, `--timeout`, and `--admin`
120
+ options have been removed. Do not tell users to register or install a CLI OAuth application.
121
+
123
122
  Login associates the authenticated workspace with the discovered project config, or creates `.linear.toml` at the Git root (cwd outside Git). Use `--no-project` for credential-only login; JSON reports `projectConfigPath` or null. Credentials stay global. Workspace selection is `--workspace` → `LINEAR_WORKSPACE` → project config → optional global default. A sole stored workspace is automatic; multiple unselected workspaces prompt only interactively and fail in JSON/noninteractive mode. Login/adoption/logout never assign a new default. Existing legacy defaults remain valid because their original intent is unknown; `auth default` is an explicit convenience.
124
123
 
124
+ When a workspace URL slug changes, use `linear auth rename <old-slug> <new-slug> --json`
125
+ for an existing API-key profile. It validates the exact stored key's current organization/slug,
126
+ ignores environment credentials, preserves storage/team/default metadata, and refuses destination
127
+ collisions (including unlisted keyring records). Keyring moves require atomic create-only support
128
+ (macOS Keychain). Linux Secret Service keyring entries are refused before changes; file-only profiles
129
+ remain supported. API-key profiles have no historical organization ID; the unchanged stored key proves
130
+ its organization, returned in `organization`. Never export the key or
131
+ combine login/logout to rename it. If interrupted, repeat the same command to resume its non-secret
132
+ recovery marker; do not log out, replace, or migrate either profile while recovery is pending.
133
+ Project files stay unchanged: inspect `checkedProjectConfigs`, `projectConfigUpdates`, and
134
+ `globalConfigUpdates`, then update the authorized selectors separately. Supply
135
+ `--project-config /absolute/path/.linear.toml` to inspect additional known configs. Other repositories
136
+ and `LINEAR_WORKSPACE` overrides require a separate check; discovery is not machine-wide.
137
+ OAuth user/app profiles and dormant OAuth records are explicitly unsupported and left untouched:
138
+ user refresh-token rotation needs coordination, and app token exchange has scope/revocation effects.
139
+ The command performs no OAuth refresh, exchange, browser authorization, or revocation.
140
+
125
141
  An explicit credential flag overrides environment credentials. If both credential kinds occur at
126
142
  the same precedence level, the CLI fails rather than silently choosing an actor. Inspect resolution
127
143
  with `linear auth status`. `linear auth token` exports stored API keys only and never OAuth tokens.
@@ -135,6 +151,16 @@ forbidden errors include stable `error.details` with the required scope and reme
135
151
 
136
152
  ## Agent best practices
137
153
 
154
+ Folder defaults: `linear config set project "My Project" --path .linear.toml` associates the
155
+ current folder and descendants with a Linear project (name or UUID). Include `team` and
156
+ `workspace` in that file when needed; discovery reads the nearest config without merging
157
+ ancestor files. Omit `--path` to edit the discovered config, or create one at the Git root
158
+ (cwd outside Git). `linear config show --json` reports `project` and `origins.project`.
159
+ `issue create` / `issue new` uses the default; `--project` overrides it, a parent's project
160
+ takes precedence over it, and `--no-project` suppresses config, parent, and template defaults.
161
+ `LINEAR_PROJECT` overrides file defaults. List/search/update commands do not inherit this
162
+ project selection. Remove the config's `project` line to clear the association.
163
+
138
164
  This CLI is built for non-interactive use. Follow these and it will never hang and
139
165
  always emit parseable output.
140
166
 
@@ -318,6 +344,40 @@ Lead with these two machine-readable commands:
318
344
  grep -n 'type Issue ' "${TMPDIR:-/tmp}/linear.graphql"
319
345
  ```
320
346
 
347
+ ### Releases and CI
348
+
349
+ Use `release-pipeline list`, `release-stage list <pipeline>`, and `release list --pipeline <id|slug>`
350
+ to inspect releases. Pipeline/release lookups accept UUIDs or API slugs, not display names.
351
+ Releases require Business/Enterprise; successful schema introspection or an empty list does not
352
+ prove mutation permission or plan eligibility. Preserve `feature_not_accessible`/`forbidden` errors.
353
+
354
+ Native commands use ordinary CLI OAuth/API credentials. Pipeline access keys and
355
+ `LINEAR_ACCESS_KEY` belong to the official [linear-release](https://github.com/linear/linear-release)
356
+ CI tool; this CLI does not consume them or install/invoke that tool. Use the official tool for Git
357
+ scanning, path filtering, revert handling and PR attribution. Native `release sync` takes explicit
358
+ `--issue KEY-123[=FULL_SHA]` references and never scans the checkout.
359
+
360
+ For scheduled releases, prepare with `release create --pipeline <id> --name <name>
361
+ --release-version <version> --commit-sha <full-sha> --stage <planned-stage-id>`. Set exact membership
362
+ with `release add-issue <release-id> <issue>`. `release update <id> --stage <stage-id>` edits an exact
363
+ release; `release update-version --pipeline <id> --release-version <version> --stage <name>` can
364
+ also attach repeated `--link Label=URL`. Freeze a started stage with `release-stage update <id>
365
+ --frozen true` to exclude its releases from automated sync, while keeping one started stage unfrozen.
366
+
367
+ `sync`, `update-version` and `complete` require a pipeline AND version; no latest fallback is used.
368
+ Scheduled sync can label an unversioned started release or create a release; continuous sync creates
369
+ a completed release immediately. Synced references accumulate; omission does not remove issues.
370
+ Use `--reverted-issue` or `release remove-issue <id> <issue> --yes` for explicit removal.
371
+ Complete only after separately authorized deployment/verification/observation gates pass. Completion
372
+ and transitions to a completed stage may move open issues into another release according to the
373
+ pipeline's rollover setting. `complete --commit-sha` preserves an existing SHA when targeting a
374
+ version: set/verify it using create/update first. No command deploys code or proves verification.
375
+
376
+ `release-note create --pipeline <id> --release <id> --body-file <path>` supports repeated release
377
+ IDs or a paired `--from-release`/`--to-release` inclusive createdAt range, all in the same pipeline.
378
+ Use file/stdin body input, inspect `release-note view`, and keep release-note deletion confirmation
379
+ and exact membership removal explicit. Archive/trash and advanced operations remain under `api`.
380
+
321
381
  ## Available commands
322
382
 
323
383
  Generated from `linear commands --json` (run `bun run skill:docs` to refresh):
@@ -339,6 +399,7 @@ linear auth list
339
399
  linear auth login
340
400
  linear auth logout
341
401
  linear auth migrate
402
+ linear auth rename
342
403
  linear auth status
343
404
  linear auth token
344
405
  linear auth whoami
@@ -498,6 +559,38 @@ linear project-update
498
559
  linear project-update create
499
560
  linear project-update list
500
561
 
562
+ linear release
563
+ linear release add-issue
564
+ linear release complete
565
+ linear release create
566
+ linear release issues
567
+ linear release links
568
+ linear release list
569
+ linear release remove-issue
570
+ linear release sync
571
+ linear release update
572
+ linear release update-version
573
+ linear release view
574
+
575
+ linear release-note
576
+ linear release-note create
577
+ linear release-note delete
578
+ linear release-note list
579
+ linear release-note update
580
+ linear release-note view
581
+
582
+ linear release-pipeline
583
+ linear release-pipeline create
584
+ linear release-pipeline list
585
+ linear release-pipeline update
586
+ linear release-pipeline view
587
+
588
+ linear release-stage
589
+ linear release-stage create
590
+ linear release-stage list
591
+ linear release-stage update
592
+ linear release-stage view
593
+
501
594
  linear roadmap
502
595
  linear roadmap create
503
596
  linear roadmap delete
@@ -570,6 +663,10 @@ prints the same). These are supplementary — `--help` on any command is authori
570
663
  - [project-label](references/project-label.md) — Manage project labels (distinct from issue labels)
571
664
  - [project-status](references/project-status.md) — Manage workspace project-status definitions
572
665
  - [project-update](references/project-update.md) — Post and list project status updates
666
+ - [release](references/release.md) — Track releases, lifecycle and issue membership
667
+ - [release-pipeline](references/release-pipeline.md) — Manage release pipelines
668
+ - [release-stage](references/release-stage.md) — Manage release stages and freezing
669
+ - [release-note](references/release-note.md) — Manage Markdown release notes
573
670
  - [roadmap](references/roadmap.md) — Work with roadmaps
574
671
  - [schema](references/schema.md) — Print the Linear GraphQL schema as SDL
575
672
  - [state](references/state.md) — Inspect workflow states
@@ -69,7 +69,7 @@ storage: string
69
69
 
70
70
  ### `linear auth login`
71
71
 
72
- Authenticate and select the workspace for this project
72
+ Sign in with a personal API key (default) or app credentials
73
73
 
74
74
  ```
75
75
  linear auth login [options]
@@ -80,16 +80,12 @@ linear auth login [options]
80
80
  | `--no-project` | save credentials without changing the project workspace |
81
81
  | `--key <key>` | use a personal API key ('-' reads it from stdin) |
82
82
  | `--plaintext` | Store API-key or app credentials in the private user config file (0600) |
83
- | `--no-browser` | print the authorization URL instead of opening it |
84
- | `--read-only` | request read-only OAuth access |
85
- | `--admin` | explicitly add the OAuth admin scope |
86
- | `--timeout <seconds>` | seconds to wait for the loopback callback |
83
+ | `--read-only` | request read-only access with --app |
87
84
  | `--app` | sign in as an app using client credentials |
88
85
  | `--client-credentials` | alias for --app |
89
86
  | `--scope <scopes>` | comma-separated app scopes (default: read,write) |
90
87
  | `--client-secret <secret>` | app client secret ('-' reads stdin; defaults to LINEAR_CLIENT_SECRET) |
91
- | `--client-id <id>` | OAuth client ID (app: LINEAR_CLIENT_ID; browser: packaged CLI app) |
92
- | `--redirect-uri <uri>` | registered HTTP loopback callback URI |
88
+ | `--client-id <id>` | app client ID (defaults to LINEAR_CLIENT_ID) |
93
89
 
94
90
  **Output (`--json`)**: a receipt object
95
91
 
@@ -99,8 +95,6 @@ credentialType: string
99
95
  workspace: string
100
96
  user: {id: string, name: string, email: string}
101
97
  storage: string
102
- scopes?: string[]
103
- expiresAt?: string
104
98
  path: string
105
99
  projectConfigPath: string | null
106
100
  ```
@@ -144,6 +138,37 @@ migrated: string[]
144
138
  path: string
145
139
  ```
146
140
 
141
+ ### `linear auth rename`
142
+
143
+ Rename a stored API-key profile after its Linear workspace URL slug changes
144
+
145
+ ```
146
+ linear auth rename [options] <old-slug> <new-slug>
147
+ ```
148
+
149
+ | Option | Description |
150
+ | ----------------------------- | -------------------------------------------------------------------------- |
151
+ | `--project-config <paths...>` | also inspect these project configs for old workspace selectors (read-only) |
152
+
153
+ **Output (`--json`)**: a receipt object
154
+
155
+ ```text
156
+ success: boolean
157
+ from: string
158
+ workspace: string
159
+ credentialType: string
160
+ organization: {id: string, name: string, urlKey: string}
161
+ path: string
162
+ storage: string
163
+ team: string | null
164
+ defaultWorkspace: string | null
165
+ referenceCredentialsPath: string | null
166
+ checkedProjectConfigs: string[]
167
+ projectConfigUpdates: Array<{path: string, key: string, from: string, to: string}>
168
+ globalConfigUpdates: Array<{path: string, key: string, from: string, to: string}>
169
+ otherProjects: string
170
+ ```
171
+
147
172
  ### `linear auth status`
148
173
 
149
174
  Show where the active credential is resolved from (value redacted)
@@ -25,8 +25,9 @@ credentialWorkspace: string | null
25
25
  workspaceProfile: string | null
26
26
  team: string | null
27
27
  workspace: string | null
28
+ project: string | null
28
29
  sort: string
29
- origins: {team: {source: string, path?: string, key?: string, workspace?: string}, workspace: {source: string, path?: string, key?: string, workspace?: string}, sort: {source: string, path?: string, key?: string, workspace?: string}}
30
+ origins: {team: {source: string, path?: string, key?: string, workspace?: string}, workspace: {source: string, path?: string, key?: string, workspace?: string}, project: {source: string, path?: string, key?: string, workspace?: string}, sort: {source: string, path?: string, key?: string, workspace?: string}}
30
31
  userConfigPath: string
31
32
  projectConfigPath: string | null
32
33
  globalConfigPath: string | null
@@ -40,12 +41,13 @@ Write a project .linear.toml (at the git root, or here outside a repository)
40
41
  linear config init [options]
41
42
  ```
42
43
 
43
- | Option | Description |
44
- | ---------------- | ------------------------------------------------------------------ |
45
- | `--team <key>` | default team key (otherwise chosen from a list) |
46
- | `--sort <order>` | default issue-list sort (priority \| manual \| updated \| created) |
47
- | `--path <file>` | write this file instead of <git root>/.linear.toml |
48
- | `--force` | overwrite an existing file |
44
+ | Option | Description |
45
+ | ---------------------- | ------------------------------------------------------------------ |
46
+ | `--team <key>` | default team key (otherwise chosen from a list) |
47
+ | `--project <name\|id>` | default Linear project for new issues |
48
+ | `--sort <order>` | default issue-list sort (priority \| manual \| updated \| created) |
49
+ | `--path <file>` | write this file instead of <git root>/.linear.toml |
50
+ | `--force` | overwrite an existing file |
49
51
 
50
52
  **Output (`--json`)**: a receipt object
51
53
 
@@ -54,11 +56,12 @@ success: boolean
54
56
  path: string
55
57
  team: string
56
58
  sort?: string
59
+ project?: string
57
60
  ```
58
61
 
59
62
  ### `linear config set`
60
63
 
61
- Set one project or user setting (team, workspace, sort)
64
+ Set one project or user setting (team, workspace, sort, project)
62
65
 
63
66
  ```
64
67
  linear config set [options] <key> <value>
@@ -98,8 +101,9 @@ credentialWorkspace: string | null
98
101
  workspaceProfile: string | null
99
102
  team: string | null
100
103
  workspace: string | null
104
+ project: string | null
101
105
  sort: string
102
- origins: {team: {source: string, path?: string, key?: string, workspace?: string}, workspace: {source: string, path?: string, key?: string, workspace?: string}, sort: {source: string, path?: string, key?: string, workspace?: string}}
106
+ origins: {team: {source: string, path?: string, key?: string, workspace?: string}, workspace: {source: string, path?: string, key?: string, workspace?: string}, project: {source: string, path?: string, key?: string, workspace?: string}, sort: {source: string, path?: string, key?: string, workspace?: string}}
103
107
  userConfigPath: string
104
108
  projectConfigPath: string | null
105
109
  globalConfigPath: string | null
@@ -378,8 +378,9 @@ linear issue create [options]
378
378
  | `-s, --state <name>` | workflow state name or type |
379
379
  | `-P, --priority <0-4>` | priority |
380
380
  | `-l, --label <name>` | label (repeatable / comma-separated) |
381
- | `-p, --project <name>` | project name or id |
382
- | `--milestone <name>` | project milestone (requires --project) |
381
+ | `-p, --project <name>` | project name or id (overrides the configured default) |
382
+ | `--no-project` | create outside any project, ignoring configured and parent defaults |
383
+ | `--milestone <name>` | project milestone (requires an explicit, configured, or parent project) |
383
384
  | `--cycle <n>` | cycle number, name, id, or 'current' |
384
385
  | `--estimate <n>` | estimate points |
385
386
  | `--parent <id>` | parent issue id (the sub-issue joins the parent's project unless --project says otherwise) |
@@ -0,0 +1,148 @@
1
+ # linear release-note
2
+
3
+ > Manage Markdown notes covering one or more releases
4
+
5
+ _Generated from `linear commands --json`. `linear release-note --help` (or `<subcommand> --help`) is authoritative._
6
+
7
+ Every command also accepts the global flags `-j/--json`, `--no-input`, `-y/--yes`, `-q/--quiet`, `--workspace <slug>`, `--api-key <key>`, `--access-token <token>`, `-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.
8
+
9
+ ### `linear release-note`
10
+
11
+ Manage Markdown notes covering one or more releases
12
+
13
+ ```
14
+ linear release-note [options]
15
+ ```
16
+
17
+ ### `linear release-note create`
18
+
19
+ Create a note for explicit releases or an inclusive createdAt range
20
+
21
+ ```
22
+ linear release-note create [options]
23
+ ```
24
+
25
+ | Option | Description |
26
+ | ----------------------- | ---------------------------------------------- |
27
+ | `--title <title>` | release note title |
28
+ | `--body <text>` | release note body (Markdown) |
29
+ | `--body-file <path>` | read Markdown from file ('-' for stdin) |
30
+ | `--release <id>` | covered release UUID or slug (repeatable) |
31
+ | `--from-release <id>` | oldest release in an inclusive createdAt range |
32
+ | `--to-release <id>` | newest release in the inclusive range |
33
+ | `--pipeline <id\|slug>` | pipeline UUID or slug |
34
+
35
+ **Output (`--json`)**: a receipt object
36
+
37
+ ```text
38
+ id: string
39
+ title: string | null
40
+ url: string
41
+ pipeline: {id: string, name: string}
42
+ releaseCount: number
43
+ firstRelease: {id: string, name: string} | null
44
+ lastRelease: {id: string, name: string} | null
45
+ generationStatus: string | null
46
+ archivedAt: string | null
47
+ content: string | null
48
+ ```
49
+
50
+ ### `linear release-note delete`
51
+
52
+ Delete a release note by UUID or slug
53
+
54
+ ```
55
+ linear release-note delete [options] <id>
56
+ ```
57
+
58
+ **Output (`--json`)**: a receipt object
59
+
60
+ ```text
61
+ id: string
62
+ deleted: boolean
63
+ ```
64
+
65
+ ### `linear release-note list`
66
+
67
+ List release notes with optional pipeline/release filters
68
+
69
+ Aliases: `ls`
70
+
71
+ ```
72
+ linear release-note list [options]
73
+ ```
74
+
75
+ | Option | Description |
76
+ | ----------------------- | -------------------------------------- |
77
+ | `--pipeline <id\|slug>` | filter by pipeline UUID or slug |
78
+ | `--release <id>` | filter by covered release UUID or slug |
79
+ | `--include-archived` | include archived notes |
80
+
81
+ **Output (`--json`)**: a bare array of objects
82
+
83
+ ```text
84
+ id: string
85
+ title: string | null
86
+ url: string
87
+ pipeline: {id: string, name: string}
88
+ releaseCount: number
89
+ firstRelease: {id: string, name: string} | null
90
+ lastRelease: {id: string, name: string} | null
91
+ generationStatus: string | null
92
+ archivedAt: string | null
93
+ ```
94
+
95
+ ### `linear release-note update`
96
+
97
+ Update a note's title, Markdown, or covered releases
98
+
99
+ ```
100
+ linear release-note update [options] <id>
101
+ ```
102
+
103
+ | Option | Description |
104
+ | --------------------- | ---------------------------------------------- |
105
+ | `--title <title>` | release note title |
106
+ | `--body <text>` | release note body (Markdown) |
107
+ | `--body-file <path>` | read Markdown from file ('-' for stdin) |
108
+ | `--release <id>` | covered release UUID or slug (repeatable) |
109
+ | `--from-release <id>` | oldest release in an inclusive createdAt range |
110
+ | `--to-release <id>` | newest release in the inclusive range |
111
+
112
+ **Output (`--json`)**: a receipt object
113
+
114
+ ```text
115
+ id: string
116
+ title: string | null
117
+ url: string
118
+ pipeline: {id: string, name: string}
119
+ releaseCount: number
120
+ firstRelease: {id: string, name: string} | null
121
+ lastRelease: {id: string, name: string} | null
122
+ generationStatus: string | null
123
+ archivedAt: string | null
124
+ content: string | null
125
+ ```
126
+
127
+ ### `linear release-note view`
128
+
129
+ Show a release note and its Markdown body by UUID or slug
130
+
131
+ ```
132
+ linear release-note view [options] <id>
133
+ ```
134
+
135
+ **Output (`--json`)**: a bare object
136
+
137
+ ```text
138
+ id: string
139
+ title: string | null
140
+ url: string
141
+ pipeline: {id: string, name: string}
142
+ releaseCount: number
143
+ firstRelease: {id: string, name: string} | null
144
+ lastRelease: {id: string, name: string} | null
145
+ generationStatus: string | null
146
+ archivedAt: string | null
147
+ content: string | null
148
+ ```
@@ -0,0 +1,137 @@
1
+ # linear release-pipeline
2
+
3
+ > Manage release pipelines (Business/Enterprise)
4
+
5
+ _Generated from `linear commands --json`. `linear release-pipeline --help` (or `<subcommand> --help`) is authoritative._
6
+
7
+ Every command also accepts the global flags `-j/--json`, `--no-input`, `-y/--yes`, `-q/--quiet`, `--workspace <slug>`, `--api-key <key>`, `--access-token <token>`, `-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.
8
+
9
+ ### `linear release-pipeline`
10
+
11
+ Manage release pipelines (Business/Enterprise)
12
+
13
+ ```
14
+ linear release-pipeline [options]
15
+ ```
16
+
17
+ ### `linear release-pipeline create`
18
+
19
+ Create a pipeline with default stages
20
+
21
+ ```
22
+ linear release-pipeline create [options]
23
+ ```
24
+
25
+ | Option | Description |
26
+ | -------------------------------- | -------------------------------------------------------------------------- |
27
+ | `--name <name>` | pipeline name |
28
+ | `--type <type>` | pipeline type |
29
+ | `--production <boolean>` | whether pipeline targets production (true\|false) |
30
+ | `--auto-release-notes <boolean>` | automatically generate notes on completion (true\|false) |
31
+ | `--rollover-issues <boolean>` | move open issues to the next scheduled release on completion (true\|false) |
32
+ | `--include-path <glob>` | replace path patterns with these globs (repeatable) |
33
+ | `--clear-paths` | clear all path filters |
34
+ | `--team-id <uuid>` | replace associated teams with these UUIDs (repeatable) |
35
+ | `--clear-teams` | clear team associations |
36
+
37
+ **Output (`--json`)**: a receipt object
38
+
39
+ ```text
40
+ id: string
41
+ name: string
42
+ slugId: string
43
+ type: string
44
+ url: string
45
+ isProduction: boolean
46
+ autoGenerateReleaseNotesOnCompletion: boolean
47
+ rolloverIssuesOnCompletion: boolean
48
+ includePathPatterns: string[]
49
+ archivedAt: string | null
50
+ ```
51
+
52
+ ### `linear release-pipeline list`
53
+
54
+ List workspace release pipelines
55
+
56
+ Aliases: `ls`
57
+
58
+ ```
59
+ linear release-pipeline list [options]
60
+ ```
61
+
62
+ | Option | Description |
63
+ | -------------------- | -------------------------- |
64
+ | `--include-archived` | include archived pipelines |
65
+
66
+ **Output (`--json`)**: a bare array of objects
67
+
68
+ ```text
69
+ id: string
70
+ name: string
71
+ slugId: string
72
+ type: string
73
+ url: string
74
+ isProduction: boolean
75
+ autoGenerateReleaseNotesOnCompletion: boolean
76
+ rolloverIssuesOnCompletion: boolean
77
+ includePathPatterns: string[]
78
+ archivedAt: string | null
79
+ ```
80
+
81
+ ### `linear release-pipeline update`
82
+
83
+ Update pipeline settings by UUID or slug
84
+
85
+ ```
86
+ linear release-pipeline update [options] <id>
87
+ ```
88
+
89
+ | Option | Description |
90
+ | -------------------------------- | -------------------------------------------------------------------------- |
91
+ | `--name <name>` | pipeline name |
92
+ | `--type <type>` | pipeline type |
93
+ | `--production <boolean>` | whether pipeline targets production (true\|false) |
94
+ | `--auto-release-notes <boolean>` | automatically generate notes on completion (true\|false) |
95
+ | `--rollover-issues <boolean>` | move open issues to the next scheduled release on completion (true\|false) |
96
+ | `--include-path <glob>` | replace path patterns with these globs (repeatable) |
97
+ | `--clear-paths` | clear all path filters |
98
+ | `--team-id <uuid>` | replace associated teams with these UUIDs (repeatable) |
99
+ | `--clear-teams` | clear team associations |
100
+
101
+ **Output (`--json`)**: a receipt object
102
+
103
+ ```text
104
+ id: string
105
+ name: string
106
+ slugId: string
107
+ type: string
108
+ url: string
109
+ isProduction: boolean
110
+ autoGenerateReleaseNotesOnCompletion: boolean
111
+ rolloverIssuesOnCompletion: boolean
112
+ includePathPatterns: string[]
113
+ archivedAt: string | null
114
+ ```
115
+
116
+ ### `linear release-pipeline view`
117
+
118
+ Show pipeline settings by UUID or slug
119
+
120
+ ```
121
+ linear release-pipeline view [options] <id>
122
+ ```
123
+
124
+ **Output (`--json`)**: a bare object
125
+
126
+ ```text
127
+ id: string
128
+ name: string
129
+ slugId: string
130
+ type: string
131
+ url: string
132
+ isProduction: boolean
133
+ autoGenerateReleaseNotesOnCompletion: boolean
134
+ rolloverIssuesOnCompletion: boolean
135
+ includePathPatterns: string[]
136
+ archivedAt: string | null
137
+ ```