Source profileQuality 86/100Review permissions

cline/cline/.cline/skills/publish-desktop/SKILL.md

publish-desktop

Use when preparing, tagging, and publishing a Cline Code desktop app (apps/examples/desktop-app) release. Guides changelog drafting, version bumps in package.json + tauri.conf.json, desktop-vX.Y.Z tags, and the desktop-publish GitHub workflow that builds, signs, notarizes, and updates the auto-update feed.

Source repository stars
65,609
Declared platforms
0
Static risk flags
2
Last source update
2026-08-04
Source checked
2026-08-04

Decision brief

What it does—and where it fits

Use this skill when the user asks to release the desktop app, publish Cline Code, bump the desktop version, create a desktop-vX.Y.Z tag, or trigger the desktop publish workflow.

Best for

  • Use when preparing, tagging, and publishing a Cline Code desktop app (apps/examples/desktop-app) release.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/cline/cline --skill ".cline/skills/publish-desktop"
Safe inspection promptEditorial

Inspect the Agent Skill "publish-desktop" from https://github.com/cline/cline/blob/5ec2d47b21b3a09aa7a094bfbbe0c7e8f7ddd3fa/.cline/skills/publish-desktop/SKILL.md at commit 5ec2d47b21b3a09aa7a094bfbbe0c7e8f7ddd3fa. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Workflow

    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.

    Gather context.Collect release commits.Draft user-facing release notes.
  2. 02

    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…

    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 e…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 crede…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 signin…
  3. 03

    Release contract

    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 override…

    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 override…Release tag: desktop-vX.Y.Z, where X.Y.Z matches both version files.Release prep includes approved release notes, the version bumps, and an apps/examples/desktop-app/CHANGELOG.md update.

Permission review

Static risk signals and limitations

Runs scripts

medium · line 6

The documentation asks the agent to run terminal commands or scripts.

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

Runs scripts

medium · line 25

The documentation asks the agent to run terminal commands or scripts.

git status --short --branch

Network access

medium · line 110

The documentation includes network, browsing, or remote request actions.

curl -sL https://github.com/cline/cline/releases/download/desktop-latest/latest.json | head -30

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score86/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars65,609SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
cline/cline
Skill path
.cline/skills/publish-desktop/SKILL.md
Commit
5ec2d47b21b3a09aa7a094bfbbe0c7e8f7ddd3fa
License
Apache-2.0
Collected
2026-08-04
Default branch
main
View the original SKILL.md

Desktop App Release

Use this skill when the user asks to release the desktop app, publish Cline Code, bump the desktop version, create a desktop-vX.Y.Z tag, or trigger the desktop publish workflow.

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

Desktop releases are macOS-only today (signed + notarized DMG for Apple Silicon and Intel) and are built entirely in GitHub Actions — there is no local publish path. Installed apps discover new releases automatically through the Tauri updater, so publishing a release is what ships the update to every existing user.

Release contract

  • 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.)
  • Release tag: desktop-vX.Y.Z, where X.Y.Z matches both version files.
  • Release prep includes approved release notes, the version bumps, and an apps/examples/desktop-app/CHANGELOG.md update.
  • Publish path: .github/workflows/desktop-publish.yml (workflow_dispatch, requires the tag to exist, point at the checked-out commit, and be reachable from origin/main).
  • The workflow creates the desktop-vX.Y.Z GitHub release (DMGs + updater artifacts + latest.json) and refreshes the rolling desktop-latest release, which is the static auto-update feed every installed app polls. Never delete the desktop-latest release or tag.
  • The changelog's top ## X.Y.Z section 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. Gather context.
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.

  1. Collect release commits.
git log <last-desktop-tag>..HEAD --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. Present the draft and wait for approval before editing files.

  1. Decide the version bump.

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

  1. Update release files.
  • 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) to apps/examples/desktop-app/CHANGELOG.md with the approved notes.
  1. Verify before committing.
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.
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:

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

The release commit must be on main and the tag pushed first.

gh workflow run desktop-publish.yml -f git_tag=desktop-vX.Y.Z -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:

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

Both matrix legs wait on the same environment, so one approval releases both. Nothing after validate runs — and no signing key is readable — until then.

The workflow builds both architectures in parallel (aarch64 native, x86_64 cross-compiled), signs with the Developer ID certificate, notarizes with the App Store Connect API key, signs updater artifacts with the Tauri updater key, creates the GitHub release, refreshes desktop-latest/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.
curl -sL https://github.com/cline/cline/releases/download/desktop-latest/latest.json | head -30

The version field must be the new release and both darwin-aarch64 and darwin-x86_64 URLs must point at the new desktop-vX.Y.Z assets. Installed apps pick the update up on next launch or within 2 hours.

  1. Final response.

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

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.

Alternatives

Compare before choosing

Computed 9618,447

teng-lin/notebooklm-py

notebooklm

Complete API for Google NotebookLM - full programmatic access including features not in the web UI. Create notebooks, add sources, generate all artifact types, download in multiple formats. Activates on explicit /notebooklm or intent like "create a podcast about X"

Computed 961,066

TencentCloudBase/CloudBase-AI-Toolkit

cloudbase-agent-python

Build production-ready AI agent backends using the CloudBase Agent Python SDK — create agents with LangGraph/CrewAI/LlamaIndex, serve them via FastAPI with AG-UI protocol streaming + OpenAI-compatible endpoints, add tools (bash, filesystem, MCP, code execution), memory (in-memory, TDAI, MySQL, MongoDB), observability (OpenTelemetry/Langfuse), and middleware (auth, logging). Use this skill when the user wants to create an AI agent server, build a chatbot backend, set up human-in-the-loop workflow

Computed 95237,532

affaan-m/ECC

mle-workflow

Production machine-learning engineering workflow for data contracts, reproducible training, model evaluation, deployment, monitoring, and rollback. Use when building, reviewing, or hardening ML systems beyond one-off notebooks.

Computed 9532,606

K-Dense-AI/scientific-agent-skills

simpy

Build, inspect, test, and analyze bounded process-based discrete-event simulations with SimPy, including events, resources, interrupts, monitoring, replications, warm-up, and reproducible output analysis.