
linear-release-setup
Generate CI/CD configuration for Linear Release. Use when setting up release tracking, configuring CI pipelines for Linear, or integrating deployments with Linear releases. Supports GitHub Actions, GitLab CI, CircleCI, and other platforms.
- Installs
- 15.2K
- Last 24h
- —
- Trending rank
- —
- Security
- Pass
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/linear/linear-release --skill linear-release-setup- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads linear-release-setup automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
Security audits
Independent scans of the skill's instructions and bundled files.
SKILL.md
The instructions your agent reads when the skill is triggered.
Linear Release Setup
The linear-release README is the source of truth for commands, flags, installation, environment variables, path filtering, and troubleshooting. Fetch it before generating any config — this skill focuses on the interactive setup workflow and the pipeline modeling decisions the README cannot make for the user.
Interactive Workflow
Step 1: Preflight
Before generating config, confirm:
- Pipeline exists in Linear — the user must have created a release pipeline in Linear first (Settings → Releases). Each pipeline has its own access key.
- Detect CI platform — look for
.github/workflows/*.yml(GitHub Actions),.gitlab-ci.yml(GitLab CI),.circleci/config.yml(CircleCI), or other CI config. - Detect default branch — check
git symbolic-ref refs/remotes/origin/HEADor the CI config. Don't assumemain.
Step 2: Map pipelines, then ask
Start by listing every build the user ships independently — each becomes its own Linear pipeline. Pipeline-vs-stage confusion is the single most common setup mistake, so whenever a split isn't obvious, apply the test in "Stages vs Pipelines" below.
Ask, in order:
-
CI platform — if not auto-detected.
-
What do you ship, and to whom? Prompt explicitly about common split candidates: production vs. beta or TestFlight, nightly or dogfood builds, staging, per-platform builds (iOS, Android, web), per-service in a monorepo. For each candidate, apply the test: can these hold different commits at the same time? Yes → separate pipelines. No (same immutable build moving through gates) → one pipeline with stages.
-
For each pipeline: continuous or scheduled?
- Continuous — every deploy completes a release. Typical for nightlies, dogfood, and web apps that ship on merge.
- Scheduled — releases collect changes over time and move through stages before shipping. Typical for versioned mobile and on-prem.
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.)?
- Yes → scheduled (the release exists as an in-progress thing before it ships).
- No → continuous (the release is created at the moment of shipping).
-
For each scheduled pipeline, ask explicitly:
- Branch model — just
main, ormain+ release branches (release/*)? - Version source — calendar (
2026.05), semver (1.2.0), or commit SHA? Derived from branch name, CI variable, file, or git tag? - Stages — what phases does a release move through before completion (e.g. "code freeze", "in qa")? Stages are gates on one build, not separate pipelines.
- Automation — all manual via
workflow_dispatch, or automated (e.g. cutting a release branch auto-promotes it)?
- Branch model — just
-
Monorepo paths — if multiple pipelines share one repo, note which paths belong to each and wire up path filters in Linear pipeline settings or via
--include-paths.
Step 3: Generate the CI configuration
Fetch the README first for the current commands, flags, install snippet, and command-targeting rules. For GitHub Actions, prefer the official action (linear/linear-release-action@v0); for other platforms, use the CLI binary per the README's Installation section.
Runtime requirements (Docker-based CI)
The image running the linear-release job must provide:
- glibc. The prebuilt binary is dynamically linked against glibc and will not run on Alpine/musl images. Pick a Debian/Ubuntu base (
debian:bookworm-slim,ubuntu:24.04,buildpack-deps:bookworm). Avoidalpine, any*-alpinetag, andcurlimages/curl— on musl, the binary fails with an opaque "not found" error because the glibc dynamic loader is absent. git. Slim images do not include it. Install it explicitly:apt-get update && apt-get install -y git.curl(orwget). Needed to download the CLI binary.
GitLab CI: check existing variables
If .gitlab-ci.yml already exists, inspect any default variables: block. The linear-release job needs a full clone, so override at the job level when project defaults would prevent that:
GIT_STRATEGY: clone— required if the project default isnoneorempty(both skip cloning entirely).GIT_DEPTH: 0— set this on the linear-release job regardless. New GitLab projects default to a shallow clone of depth 20, and projects often lower it further.
Pick the matching example template, adapt it (branch patterns, stage names, paths, version format), and add it to an existing workflow or create a new one. Multiple pipelines mean multiple workflows or jobs, each calling the CLI with its own access key — one secret per pipeline (e.g. LINEAR_ACCESS_KEY_IOS, LINEAR_ACCESS_KEY_WEB).
| Platform | Pipeline Type | Example |
|---|---|---|
| GitHub Actions | Continuous | github-actions-continuous/ |
| GitHub Actions | Scheduled | github-actions-scheduled/ |
| GitLab CI | Continuous | gitlab-ci-continuous/ |
| GitLab CI | Scheduled | gitlab-ci-scheduled/ |
| CircleCI | Continuous | circleci-continuous/ |
| CircleCI | Scheduled | circleci-scheduled/ |
Each scheduled example includes a monorepo note in the header explaining how to split workflows for path filtering per platform.
Step 4: Remind about secrets
Tell the user to add the LINEAR_ACCESS_KEY secret to their CI environment:
- GitHub Actions: Repository Settings → Secrets and variables → Actions → New repository secret
- GitLab CI: Settings → CI/CD → Variables
- CircleCI: Project Settings → Environment Variables
The access key is created in Linear from the pipeline's settings page. Each pipeline has its own access key.
Key Concepts
A Linear release pipeline is one independent stream of releases, with its own version history, current release, and access key. This is not a CI pipeline; it is the unit Linear uses to track releases, and your CI config calls the CLI to update it. Different products, environments, or distribution channels that ship independently are different pipelines.
Pipelines come in two types — continuous and scheduled. See the README's Pipeline Types section for the canonical description of each.
Stages vs Pipelines
A pipeline is one stream of releases. A stage is one phase inside a release on that pipeline. Confusing the two is the single most common setup mistake — work through the test below before writing any config.
The test: can two things be in-flight at the same time, holding different commits?
- Yes → separate pipelines. TestFlight running on
HEADwhile production ships 1.2 from a release branch. Web staging auto-deploying frommainwhile prod lags behind. A hotfix landing in one stream but not the other. - No, it's the same build moving through gates → one pipeline with stages. A release is cut at 1.2, goes through code freeze, QA, and RC soak, then ships. The build never changes; only the phase does.
Stages are process gates: "code freeze", "in qa", "in review", "rc soak". They only exist on scheduled pipelines.
Ambiguous cases — apply the test:
- Beta / TestFlight. TestFlight soak before GA on the same build → stage on the production pipeline. A separate nightly or dogfood channel shipping distinct builds → its own pipeline.
- Staging. Staging that auto-deploys from
main(or runs hotfixes prod doesn't have) → separate pipeline. Staging that holds the exact same build as prod, just earlier in the promotion path → stage. - Per-service monorepo. Each service that ships independently → its own pipeline, scoped by path filters. Unambiguous; services are never stages.
Stages can also be frozen in Linear. A frozen stage makes sync (without --release-version) skip that release and land commits on the next one — a safety net for code freezes. This is a process tool, not a way to squeeze two pipelines into one.
Reference
Everything about commands, flags, environment variables, command targeting, path filtering, JSON output, and troubleshooting lives in the linear-release README. For GitHub Action inputs and how they map to CLI flags, see the action README. Always fetch these rather than relying on memory — they move ahead of this skill.
Checklist
- Full clone /
fetch-depth: 0(GitLab:GIT_DEPTH: 0, andGIT_STRATEGYnotnone) -
LINEAR_ACCESS_KEYset as a secret (one per pipeline) - Correct binary platform (
linux-x64,darwin-arm64, ordarwin-x64) - Docker-based CI: glibc base image (no Alpine/musl) with
gitandcurlavailable - Triggers on the correct branches (
mainfor continuous;main+release/*for scheduled) - Monorepo: path filters set (in Linear config or via
--include-paths), and separate workflows if using release branches
FAQ
What does the linear-release-setup skill do?
Generate CI/CD configuration for Linear Release. Use when setting up release tracking, configuring CI pipelines for Linear, or integrating deployments with Linear releases. Supports GitHub Actions, GitLab CI, CircleCI, and other platforms.
How do I install linear-release-setup?
Run npx skills add https://github.com/linear/linear-release --skill linear-release-setup in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/linear-release-setup/ (personal) or .claude/skills/linear-release-setup/ (project).
Which AI agents can use linear-release-setup?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is linear-release-setup safe to install?
Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk passed; Runlayer passed; ZeroLeaks passed. As with any skill, read the SKILL.md and bundled scripts before installing.
Who maintains linear-release-setup?
It is published by linear in linear/linear-release. It has 15,224 recorded installs.
Popular productivity & automation skills
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
lark-doc
open.feishu.cn
飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。
lark-base
open.feishu.cn
飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。
lark-drive
open.feishu.cn
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
lark-shared
open.feishu.cn
Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.
lark-im
open.feishu.cn
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。