You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* More docs clarification
* Reword continuous-vs-scheduled test for clarity
Earlier wording bundled rollover into the test, but rollover is a
feature of scheduled rather than the deciding factor. Reframe around
whether a release needs to exist as a thing before it ships.
|`--name`|`sync`, `complete`, `update`| Custom release name. For `sync`, the value is applied to the targeted release — both newly created releases and existing ones get the provided name. For `complete` and `update`, sets the name on the targeted release. |
155
-
|`--release-version`|`sync`, `complete`, `update`| Release version identifier. For `sync`, defaults to short commit hash. For `complete` and `update`, if omitted, targets the most recent started release. |
156
-
|`--stage`|`update`| Target deployment stage (required for `update`) |
157
-
|`--include-paths`|`sync`| Filter commits by changed file paths |
158
-
|`--json`|`sync`, `complete`, `update`| Output result as JSON |
159
-
|`--quiet`|`sync`, `complete`, `update`| Only print errors |
160
-
|`--verbose`|`sync`, `complete`, `update`| Print detailed progress including debug diagnostics |
161
-
|`--timeout`|`sync`, `complete`, `update`| Max duration in seconds before aborting (default: 60) |
|`--name`|`sync`, `complete`, `update`| Custom release name. For `sync`, the value is applied to the targeted release — both newly created releases and existing ones get the provided name. For `complete` and `update`, sets the name on the targeted release. |
155
+
|`--release-version`|`sync`, `complete`, `update`| Release version identifier. For `sync`, defaults to short commit hash. For `complete` and `update`, selects an existing release with that version (errors if none exists); does not change a release's version. If omitted, targets the most recent started release.|
156
+
|`--stage`|`update`| Target deployment stage (required for `update`) |
157
+
|`--include-paths`|`sync`| Filter commits by changed file paths |
158
+
|`--json`|`sync`, `complete`, `update`| Output result as JSON |
159
+
|`--quiet`|`sync`, `complete`, `update`| Only print errors |
160
+
|`--verbose`|`sync`, `complete`, `update`| Print detailed progress including debug diagnostics |
161
+
|`--timeout`|`sync`, `complete`, `update`| Max duration in seconds before aborting (default: 60) |
162
162
163
163
### Command Targeting
164
164
@@ -217,11 +217,14 @@ Path patterns can also be configured in your pipeline settings in Linear. If bot
5.**Syncs data to Linear** that adds issues to a newly created completed release (continuous pipelines) or the currently in-progress release (scheduled pipelines)
219
219
220
+
**First sync**: when no prior release exists for the pipeline, only the current commit is scanned (there's no previous SHA to bound the range from).
221
+
220
222
## Troubleshooting
221
223
222
224
-**Unexpected release was updated/completed**: pass `--release-version` explicitly so the command does not target the latest started/planned release.
223
225
-**No release created by `sync`**: if no commits match the computed range (or path filters), `sync` returns `{"release":null}`.
224
-
-**Stage update fails**: verify stage name exactly. If stage names normalize to the same value, use the exact stage name to avoid ambiguity.
226
+
-**Stage update fails**: `--stage` matches first by exact name, then case-insensitively with dashes and underscores treated as spaces. If multiple stages normalize to the same value, pass the exact stage name to disambiguate.
227
+
-**`sync --release-version` fails because the matching release is archived**: restore the archived release in Linear before re-syncing.
225
228
-**Operation timed out**: the CLI aborts after 60 seconds by default. For large repositories or slow networks, increase the limit with `--timeout=120`.
226
229
-**`git` not on PATH**: the CLI shells out to `git`. Install it in your CI image (e.g. `apt-get install -y git` on Debian/Ubuntu).
227
230
-**No `.git` directory found**: the CLI must run inside a full clone. On GitLab CI, set `GIT_STRATEGY: clone` (not `none` or `empty`) and `GIT_DEPTH: 0` on the linear-release job.
Copy file name to clipboardExpand all lines: skills/linear-release-setup/SKILL.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,6 +33,10 @@ Ask, in order:
33
33
-**Continuous** — every deploy completes a release. Typical for nightlies, dogfood, and web apps that ship on merge.
34
34
-**Scheduled** — releases collect changes over time and move through stages before shipping. Typical for versioned mobile and on-prem.
35
35
36
+
**The test:** does the team need to track a release before it ships — naming it, seeing what's queued in it, or moving it through phases (code freeze, QA, etc.)?
37
+
- Yes → **scheduled** (the release exists as an in-progress thing before it ships).
38
+
- No → **continuous** (the release is created at the moment of shipping).
39
+
36
40
4.**For each scheduled pipeline, ask explicitly:**
37
41
-**Branch model** — just `main`, or `main` + release branches (`release/*`)?
38
42
-**Version source** — calendar (`2026.05`), semver (`1.2.0`), or commit SHA? Derived from branch name, CI variable, file, or git tag?
0 commit comments