Agent skill

Cline Desktop App Release

by cline in cline/cline

Covers preparing, tagging and publishing a Cline desktop app release on the stable, beta or nightly channel through the desktop-publish GitHub workflow.

Apache-2.0Auto-check passedDevelopment

Install Cline Desktop App Release

skills CLI
$ npx skills add cline/cline --skill publish-desktop -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install cline/cline publish-desktop --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/cline/cline.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cline/skills/publish-desktop .claude/skills/publish-desktop && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
publish-desktop
GitHub stars
70k
Token cost
~4.5k tokens
SKILL.md length
2,002 words
Files
1
Skills in repo
8
Repo updated
First seen
Licence
Apache-2.0

At a glance

Covers preparing, tagging and publishing a Cline desktop app release on the stable, beta or nightly channel through the desktop-publish GitHub workflow.

  • Works in 2 steps: Ask which channel this release is for —… → Gather context.
  • Cutting a stable release of the Cline desktop app
  • SKILL.md covers Release contract, Workflow, Nightly builds and Publish secrets (one-time setup)
  • Calls git, gh and bun; needs APPLE_CERTIFICATE_PASSWORD and APPLE_API_KEY

What it does

The skill covers releasing the Cline desktop app, which is built entirely in GitHub Actions with no local publish path, for macOS, Linux and Windows. It describes three channels: stable, tagged desktop-vX.Y.Z and cut from main; beta, tagged with a beta suffix, cut from desktop-experimental and shipped as Cline Beta so it installs beside stable; and nightly, an artifact-only build of main's HEAD that is tagged after it builds.

It guides changelog drafting, version bumps in package.json and tauri.conf.json, tagging, and triggering the workflow that builds, signs and notarizes the apps and updates each channel's auto-update feed. macOS ships as a signed, notarized universal DMG, Linux as deb and rpm packages, and Windows as a signed NSIS installer. Installed apps pick up new releases through the Tauri updater, so publishing a release ships it to every existing user on that channel.

When your agent uses it

  • Cutting a stable release of the Cline desktop app
  • Publishing a beta from the desktop-experimental branch
  • Triggering a nightly build of main
  • Bumping the desktop version and creating the release tag

Example prompts

  • “Release the Cline desktop app: draft the changelog, bump the versions and tag it.”
  • “Cut a desktop beta from desktop-experimental.”
  • “Start a nightly desktop build from main.”

Requirements

  • Access to the Cline repository and its desktop-publish GitHub Actions workflow
  • Repository signing secrets, including the AZURE_* secrets used for Windows signing

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Ask which channel this release is for — stable, beta, or nightly — if the user has not said. Everything below branches on it; never guess.
  2. Gather context.

What it can do on your machine

Read from SKILL.md and the folder at commit bf71bf7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh
    • bun
    • node
    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, gh and curl, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • APPLE_CERTIFICATE_PASSWORD
    • APPLE_API_KEY
    • TAURI_SIGNING_PRIVATE_KEY
    • TAURI_SIGNING_PRIVATE_KEY_PASSWORD
    • SLACK_RELEASE_BOT_TOKEN
    • TELEMETRY_SERVICE_API_KEY
    • ERROR_SERVICE_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Cline Desktop App Release loads about 4.5k tokens when it runs. Until then it costs about 140 tokens; SKILL.md has 2,002 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~140
When it runs · the whole SKILL.md, loaded when a task matches
~4.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from cline/cline at commit bf71bf7, republished under its Apache-2.0 licence (© cline). 2,002 words, ~4,486 tokens.

Download SKILL.mdSave it as .claude/skills/publish-desktop/SKILL.md (or your agent's skills folder).
name
publish-desktop
description
Use when preparing, tagging, and publishing a Cline desktop app (apps/examples/desktop-app) release — stable (desktop-vX.Y.Z from main), beta (desktop-vX.Y.Z-beta.N from desktop-experimental, shipped as the side-by-side "Cline Beta" app), or nightly (artifact-only test build of main's HEAD, tagged desktop-nightly-<stamp> after it builds). Guides changelog drafting, version bumps in package.json + tauri.conf.json, tagging, and the desktop-publish GitHub workflow that builds, signs, notarizes, and updates the per-channel auto-update feed.

Desktop App Release

Use this skill when the user asks to release the desktop app, publish the Cline desktop app, cut a desktop beta, cut a desktop nightly, bump the desktop version, create a desktop-vX.Y.Z (or desktop-vX.Y.Z-beta.N) tag, or trigger the desktop publish workflow.

Working directory: run every command below from the repository root.

Desktop releases ship three platforms, built entirely in GitHub Actions — there is no local publish path. macOS: a single signed + notarized universal DMG that runs natively on both Apple Silicon and Intel. Linux: x64 .deb and .rpm packages (<Product>_<version>_amd64.deb, <Product>_<version>_x86_64.rpm) built on Ubuntu 22.04 in the build-linux job, deb + rpm only (no AppImage: linuxdeploy cannot process the Bun-compiled sidecar). Windows: an Authenticode-signed NSIS installer (<Product>_<version>_x64-setup.exe), signed via Azure Trusted Signing in the build-windows job (jsign through Tauri's signCommand, see apps/examples/desktop-app/scripts/tauri-sign-windows.ps1; requires the repo-level AZURE_* secrets including AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE_DESKTOP, plus a PublishDesktop-environment federated credential on the cline-cli-signing Entra app). Installed apps discover new releases automatically through the Tauri updater, so publishing a release is what ships the update to every existing user on that channel.

Release contract

  • Three channels, one workflow (channel input on desktop-publish.yml):
    • stable — tag desktop-vX.Y.Z (no suffix; the workflow rejects prerelease suffixes on this channel), cut from main, feeds the rolling desktop-latest release, ships as "Cline".
    • beta — tag desktop-vX.Y.Z-beta.N, cut from desktop-experimental, feeds the rolling desktop-beta release, ships as "Cline Beta" (separate bundle identifier bot.cline.app.beta; installs side by side with stable). Built with the extra src-tauri/tauri.beta.conf.json overlay. Process background: apps/examples/desktop-app/EXPERIMENTAL.md.
    • nightly — no release tag input, no release, no feed. Builds main's HEAD, ships as "Cline Nightly" (identifier bot.cline.app.nightly, empty updater endpoints, src-tauri/tauri.nightly.conf.json overlay), uploads the signed installers as Actions artifacts only, then tags the commit desktop-nightly-<utc stamp> and announces the changes since the previous nightly or release to Slack. See "Nightly builds" below.
  • Version sources (must match each other and the tag): apps/examples/desktop-app/package.json and apps/examples/desktop-app/src-tauri/tauri.conf.json. (src-tauri/Cargo.toml has its own version but tauri.conf.json overrides it; no need to touch it.)
  • Beta versions are prereleases of the next stable: stable 0.0.13 → betas 0.0.14-beta.1, -beta.2, … Once a stable ≥ the beta base ships, the next beta bumps its base (0.0.15-beta.1).
  • Release prep includes approved release notes, the version bumps, and an apps/examples/desktop-app/CHANGELOG.md update — committed on main for stable, on desktop-experimental for beta.
  • Publish path: .github/workflows/desktop-publish.yml (workflow_dispatch; for stable and beta it requires the tag to exist, point at the checked-out commit, and be reachable from the channel's branch — origin/main for stable, origin/desktop-experimental for beta. Nightly takes no tag and validation rejects one).
  • Every channel dispatches from main. This is a security invariant, not a convenience: the run executes main's workflow copy and only the checkout points at the tag, so the signing-secret gates (the github.ref == main check and the PublishDesktop environment's main-only deployment-branch policy) hold for beta too. Never add desktop-experimental to the PublishDesktop deployment-branch policy.
  • The workflow creates the tag's GitHub release (universal DMG + macOS updater artifact + Windows NSIS installer and Linux deb/rpm packages, each with its updater signature, + latest.json; marked prerelease for beta) and refreshes the channel's rolling feed release, which is the static auto-update feed every installed app on that channel polls. Never delete the desktop-latest or desktop-beta release or tag.
  • The changelog's ## <version> section (exact-match, not "topmost") is extracted verbatim into the GitHub release body, the Slack announcement, and the updater manifest notes.
  • Always ask before pushing commits or tags.

Workflow

  1. Ask which channel this release is for — stable, beta, or nightly — if the user has not said. Everything below branches on it; never guess.

    For nightly, skip steps 1–7 entirely and jump to "Nightly builds".

  2. Gather context.

sh
git status --short --branch
git fetch origin --tags
git tag --list 'desktop-v*' --sort=-v:refname | head -10
node -p "require('./apps/examples/desktop-app/package.json').version"
node -p "require('./apps/examples/desktop-app/src-tauri/tauri.conf.json').version"

If there is no desktop-v* tag yet, this is the first release; use the desktop app's first commit as the baseline and say the baseline is inferred.

For a beta release, work on desktop-experimental (check out origin/desktop-experimental; merge origin/main into it first if it is behind — see EXPERIMENTAL.md for the conflict policy) and read the version files from that branch. The last-tag baseline is the newest desktop-v* tag of either channel that is an ancestor of the branch.

  1. Collect release commits.
sh
# stable (on main):
git log <last-desktop-tag>..HEAD --oneline --no-merges -- apps/examples/desktop-app sdk/packages .github/workflows/desktop-publish.yml
# beta (on desktop-experimental):
git log <last-desktop-tag>..origin/desktop-experimental --oneline --no-merges -- apps/examples/desktop-app sdk/packages .github/workflows/desktop-publish.yml

The sidecar bundles @cline/core and friends from the monorepo, so SDK changes ship inside the desktop app too. Fold user-visible SDK changes (providers, models, behavior fixes) into the notes; skip purely internal ones.

  1. Draft user-facing release notes.

Flat bullet list, user-facing language.

Scope notes to the desktop app. Shared-code commits in the range are often for the CLI or the extension. Keep a bullet only if the change reaches apps/examples/desktop-app (CLI subcommands, TUI, and yolo prompt rules don't). Skip items already in the last desktop section, grep any quoted string, and leave out anything uncertain.

Present the draft and wait for approval before editing files.

  1. Decide the version bump.

Stable: ask whether this is patch, minor, major, or an explicit version. Do not guess if the user has not made it clear.

Beta: apply the versioning rule — base = next stable version, increment N (0.0.14-beta.1 → 0.0.14-beta.2; after stable 0.0.14 ships, next is 0.0.15-beta.1). Confirm the computed version with the user.

  1. Update release files (on main for stable, on desktop-experimental for beta).
  • apps/examples/desktop-app/package.json → new version
  • apps/examples/desktop-app/src-tauri/tauri.conf.json → same version
  • Prepend ## X.Y.Z (no date; ## X.Y.Z-beta.N for beta) to apps/examples/desktop-app/CHANGELOG.md with the approved notes.
  1. Verify before committing.
sh
bun -F @cline/code typecheck
bun test apps/examples/desktop-app/scripts/generate-update-manifest.test.ts

The full desktop bundle can only be built on macOS; the workflow's build job is the real verification. For extra local confidence on a Mac checkout, bun run package:desktop:mac --allow-unsigned-mac from the app directory.

  1. Commit release changes.
sh
git add apps/examples/desktop-app/package.json apps/examples/desktop-app/src-tauri/tauri.conf.json apps/examples/desktop-app/CHANGELOG.md
git commit -m "chore(desktop): release vX.Y.Z"

Ask before pushing the release commit, then before creating and pushing the tag:

sh
git push origin HEAD
git tag -a desktop-vX.Y.Z -m "Desktop vX.Y.Z"       # beta: desktop-vX.Y.Z-beta.N / "Desktop vX.Y.Z-beta.N"
git push origin refs/tags/desktop-vX.Y.Z
  1. Publish.

The release commit must be on the channel's branch (main for stable, desktop-experimental for beta) and the tag pushed first. Dispatch from main for every channel (see the release contract for why).

sh
# stable:
gh workflow run desktop-publish.yml --ref main -f git_tag=desktop-vX.Y.Z -f channel=stable -f confirm_publish=publish
# beta:
gh workflow run desktop-publish.yml --ref main -f git_tag=desktop-vX.Y.Z-beta.N -f channel=beta -f confirm_publish=publish
# nightly (no tag — see "Nightly builds"):
gh workflow run desktop-publish.yml --ref main -f channel=nightly -f confirm_publish=publish

gh run list --workflow=desktop-publish.yml --limit=1 --json url,status,conclusion,createdAt --jq '.[0]'

The run pauses for approval. validate runs immediately, then the build job waits on the PublishDesktop environment until a required reviewer approves it — the run sits in waiting, which is expected, not a hang. Approve it in the run's web UI ("Review deployments"), or:

sh
gh api repos/cline/cline/actions/runs/<run-id>/pending_deployments \
  --method POST -f state=approved -f comment="desktop vX.Y.Z" \
  -F 'environment_ids[]=19152605990'   # PublishDesktop

Nothing after validate runs — and no signing key is readable — until then.

The workflow builds one universal macOS bundle (tauri build --target universal-apple-darwin lipos the aarch64 + x86_64 Rust binaries; the Bun sidecar is lipo'd by build-sidecar-bin.ts; beta adds the tauri.beta.conf.json overlay), verifies every Mach-O in the bundle carries both slices and that the compiled binary embeds exactly its own channel's feed URL, signs with the Developer ID certificate, notarizes with the App Store Connect API key, and signs the updater artifact with the Tauri updater key. In parallel, build-windows builds the x64 NSIS installer on a Windows runner, Authenticode-signs every binary via Azure Trusted Signing (Tauri signCommand -> scripts/tauri-sign-windows.ps1), runs the same feed-endpoint and telemetry guardrails, and verifies the shipped installer with Get-AuthenticodeSignature. The release job then creates the GitHub release (prerelease for beta), refreshes the channel's feed (desktop-latest/latest.json or desktop-beta/latest.json), and posts to Slack. Notarization typically adds 2–10 minutes.

If the workflow fails on missing credentials, see "Publish secrets (one-time setup)" below.

  1. Verify the update feed after the run succeeds.
sh
curl -sL https://github.com/cline/cline/releases/download/desktop-latest/latest.json | head -30   # stable
curl -sL https://github.com/cline/cline/releases/download/desktop-beta/latest.json | head -30    # beta

The version field must be the new release; both darwin-aarch64 and darwin-x86_64 entries must point at the same new universal .app.tar.gz asset under the release tag (each slice of the fat binary requests its own arch key at runtime, so both keys serve the one artifact), the windows-x86_64 entry must point at the new *_x64-setup.exe asset, and the linux-x86_64-deb / linux-x86_64-rpm entries at the new *_amd64.deb / *_x86_64.rpm assets. Installed apps on that channel — including older per-arch installs — pick the update up on next launch or within 2 hours.

After a beta publish, also confirm the stable feed was not touched: desktop-latest/latest.json must still serve the previous stable version. (The workflow guards this fail-closed, but it is cheap to verify and catastrophic to miss — the updater comparator is a plain semver "newer than", so a beta manifest on desktop-latest would auto-update every stable install onto the beta.)

  1. Final response.

Report: channel, version, tag, changelog updated, commit hash, what was pushed, workflow URL, and the feed verification result.

Show full SKILL.md (663 more words)Show less

Nightly builds

A nightly is a throwaway test build, not a release: no version bump, no changelog, no commit, no GitHub release, and neither auto-update feed is touched (the release job is gated if: channel != 'nightly', and the nightly Tauri overlay ships empty updater endpoints). It exists to hand someone a signed, notarized installer of whatever is on main right now. The only trace it leaves in the repo is a lightweight desktop-nightly-<stamp> tag on the built commit, which is what the next nightly's announcement compares against.

What the workflow does differently:

  • Checks out github.sha (i.e. main's HEAD at dispatch) instead of a tag. Passing git_tag on this channel is a validation error.
  • Stamps the version itself, in the build jobs only, as <package.json base version>-nightly.<utcYYYYMMDDHHMMSS>.<run id>.<run attempt>. Nothing is committed, so the base stays whatever the last stable bumped it to — a nightly therefore sorts older than the released stable of the same base by semver. Harmless, because nightlies never reach a feed.
  • Builds as "Cline Nightly" with identifier bot.cline.app.nightly (src-tauri/tauri.nightly.conf.json), so it installs alongside stable and beta.
  • Still signs/notarizes with the real credentials, so it still requires the PublishDesktop approval — same wait, same reviewer.
  • Ends at artifacts: desktop-universal (macOS), desktop-windows-x64, and desktop-linux-x64, 30-day retention, on the run page.
  • Then the announce-nightly job tags the commit desktop-nightly-<utcYYYYMMDDHHMMSS> (the stamp from the version) and posts to the Slack release channel: the commits since the nearest desktop-v* or desktop-nightly-* tag (previous nightly or last release, whichever is closer), scoped to apps/examples/desktop-app, sdk/packages, and the publish workflow, with PR links and a compare link. The list caps at 15 lines to stay under Slack's 3000-character block limit. Never rename desktop-nightly-* tags; the stable release compare (--exclude 'desktop-v*-*', --match 'desktop-v*') ignores them by prefix.

Steps: confirm main is current (git fetch origin main && git status -sb), then

sh
gh workflow run desktop-publish.yml --ref main -f channel=nightly -f confirm_publish=publish
gh run list --workflow=desktop-publish.yml --limit=1 --json url,status,databaseId --jq '.[0]'

Then have the user approve the PublishDesktop gate (never approve it via gh api), and when the run finishes report the artifact names and the stamped version:

sh
gh run view <run-id> --json status,conclusion,jobs --jq '{status,conclusion,jobs:[.jobs[]|{name,conclusion}]}'
gh api repos/cline/cline/actions/runs/<run-id>/artifacts --jq '.artifacts[].name'

No feed verification step applies — but if you want the reassurance, confirm desktop-latest/latest.json still serves the previous stable version.

Publish secrets (one-time setup)

These live on the PublishDesktop environment, not at repository level, so only the build job can read them and only after an approval. Set them under Settings → Environments → PublishDesktop → Environment secrets. The environment also restricts deployments to main and requires a reviewer.

Adding one of these as a repository secret is the common mistake. The build would still succeed — an environment-gated job resolves repository secrets too, with environment values simply taking precedence — so the credential would sit repo-wide while everything looked fine. validate therefore fails the run if any of them resolves in a job with no environment. If you hit that, delete the repository-level copy rather than duplicating it.

If a secret is missing everywhere, the preflight in build fails the run naming the missing entries. The Apple values come from the same Apple Developer account used for manual signing (see the app README's "macOS signing & notarization" section for how to obtain them):

SecretValue
APPLE_CERTIFICATEBase64 of the Developer ID Application identity exported from Keychain Access as .p12 (must include the private key): base64 -i certificate.p12 | pbcopy
APPLE_CERTIFICATE_PASSWORDThe password chosen when exporting the .p12
APPLE_SIGNING_IDENTITYDeveloper ID Application: <Team Name> (<TEAMID>) — from security find-identity -v -p codesigning
APPLE_API_KEYApp Store Connect API Key ID (notarization)
APPLE_API_KEY_CONTENTContents of the AuthKey_<KEYID>.p8 file
APPLE_API_ISSUERApp Store Connect Issuer ID (UUID from Users and Access → Integrations)
TAURI_SIGNING_PRIVATE_KEYContents of the Tauri updater private key (tauri signer generate). If this key is ever lost, shipped apps can no longer verify updates — guard it.
TAURI_SIGNING_PRIVATE_KEY_PASSWORDPassword for that key

The Slack + telemetry secrets (SLACK_RELEASE_BOT_TOKEN, TELEMETRY_SERVICE_API_KEY, ERROR_SERVICE_API_KEY, OTEL settings) are shared with the CLI, SDK, and extension publish workflows and already configured. Do not move these into PublishDesktop — scoping them to this environment empties them in every other publish workflow, silently, with no error beyond missing telemetry and a failed Slack post.

© cline, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .cline/skills/publish-desktop of cline/cline.

Open the folder on GitHubat commit bf71bf7

Compare with similar skills

Cline Desktop App Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Cline Desktop App Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cline Desktop App Release this skillcline/cline70k—~4.5kAutomated safety check: PassApache-2.0
Cut Releasedelexw/claude-code-trace3761 repos~1.4kAutomated safety check: PassMIT
Agr Releasecomputerlovetech/agr451—~1.6kAutomated safety check: PassMIT
Cursor BYOK Desktop Releaseleookun/cursor-byok3.2k—~1.3kAutomated safety check: PassMIT
Agentbro Releaseshirenchuang/agentbro203—~2.5kAutomated safety check: PassApache-2.0
Sake CI Releasekattouf/Sake116—~731Automated safety check: PassMIT

Similar skills

  • Cut Release

    delexw/claude-code-trace

    Cuts a new versioned release of claude-code-trace end-to-end without asking any questions.

    376 GitHub starsUsed in 1 repo~1.4k tokens
    DevelopmentAuto-check passed
  • Agr Release

    computerlovetech/agr

    Release process for the agr package. An agent skill from computerlovetech/agr.

    451 GitHub stars~1.6k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • Cursor BYOK Desktop Release

    leookun/cursor-byok

    Guides releases of the Cursor BYOK desktop app on GitHub, with strict rules on who may publish and how version tags, updater manifests and signing are handled.

    3.2k GitHub stars~1.3k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Agentbro Release

    shirenchuang/agentbro

    A skill your agent uses when releasing AgentBro from this repository: merging dev/main, bumping versions, updating release notes, tagging, pushing, monitoring GitHub Actions, Homebrew cask…

    203 GitHub stars~2.5k tokensUpdated 9 days ago
    DevelopmentAuto-check passed
  • Sake CI Release

    kattouf/Sake

    A skill your agent uses when working on CI workflows, GitHub Actions, release process, changelog generation (git-cliff), or dependabot configuration.

    116 GitHub stars~731 tokensUpdated 6 mo ago
    DevelopmentAuto-check passed
  • OpenWork Release Process

    different-ai/openwork

    Cuts an OpenWork desktop release through a tag-driven GitHub Actions workflow that makes no commits, with pre-tag checks on open fix PRs and verification afterward.

    24k GitHub stars~2.3k tokensUpdated today
    DevOps & CloudAuto-check passed

More from cline/cline

All 8 skills in this repo
  • Cline SDK Guide

    cline/cline

    Reference for building AI agents with the Cline SDK: the Agent runtime, ClineCore sessions, custom tools, plugins, events, providers, scheduling and multi-agent teams.

    70k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.

    70k GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed
  • Helps build terminal user interfaces with OpenTUI using its core imperative API or its React and Solid reconcilers, with references for layout, keyboard, animation and testing.

    70k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Guides publishing a one-time What's new dialog in the Cline desktop app: deciding if one is due, picking highlights from the changelog and editing one content file.

    70k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Validates and publishes the standalone @cline/ui npm package through its own release workflow, separate from the Cline SDK runtime packages.

    70k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Walks through releasing the Cline CLI package to npm: release notes, version bump, matching git tag, and either the GitHub workflow or a local publish.

    70k GitHub stars~3.4k tokensUpdated today
    Auto-check: warnings

Questions about Cline Desktop App Release

What does Cline Desktop App Release do?

Covers preparing, tagging and publishing a Cline desktop app release on the stable, beta or nightly channel through the desktop-publish GitHub workflow. The skill covers releasing the Cline desktop app, which is built entirely in GitHub Actions with no local publish path, for macOS, Linux and Windows.Z and cut from main; beta, tagged with a beta suffix, cut from desktop-experimental and shipped as Cline Beta so it installs beside stable; and nightly, an artifact-only build of main's HEAD that is tagged after it builds.

When should I use Cline Desktop App Release?

Cline Desktop App Release fits situations like: cutting a stable release of the Cline desktop app; publishing a beta from the desktop-experimental branch; triggering a nightly build of main; bumping the desktop version and creating the release tag.

How do I install Cline Desktop App Release in Claude Code?

Run `npx skills add cline/cline --skill publish-desktop -a claude-code`. Or copy the skill folder (.cline/skills/publish-desktop in cline/cline) into .claude/skills/publish-desktop in your project. Claude Code loads it when a task matches its description.

How do I install Cline Desktop App Release in Codex?

Run `npx skills add cline/cline --skill publish-desktop -a codex`. Or copy the skill folder (.cline/skills/publish-desktop in cline/cline) into .agents/skills/publish-desktop in your project. Codex loads it when a task matches its description.

Can I use Cline Desktop App Release in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cline/cline --skill publish-desktop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/publish-desktop, .gemini/skills/publish-desktop, .github/skills/publish-desktop and .opencode/skills/publish-desktop in your project.

What does Cline Desktop App Release need to run?

Going by SKILL.md and its folder, Cline Desktop App Release needs the command-line tools its instructions call (git, gh, bun, node and curl) and credentials named APPLE_CERTIFICATE_PASSWORD, APPLE_API_KEY, TAURI_SIGNING_PRIVATE_KEY and TAURI_SIGNING_PRIVATE_KEY_PASSWORD. Our summary lists: Access to the Cline repository and its desktop-publish GitHub Actions workflow; Repository signing secrets, including the AZURE_* secrets used for Windows signing.

Does Cline Desktop App Release access the network?

SKILL.md contains no URLs. Its commands use git, gh and curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Cline Desktop App Release safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Cline Desktop App Release use?

Cline Desktop App Release is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cline Desktop App Release use?

About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Cline Desktop App Release?

Skills that share tags, products or a category with Cline Desktop App Release: Cut Release (delexw/claude-code-trace, 376 stars), Agr Release (computerlovetech/agr, 451 stars), Cursor BYOK Desktop Release (leookun/cursor-byok, 3.2k stars) and Agentbro Release (shirenchuang/agentbro, 203 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cline Desktop App Release?

cline (a GitHub organization) maintains it in cline/cline, which has 70,092 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 10, 2026.

Source: cline/cline on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.