Agent skill

Qwen Code Desktop Brand Builder

by QwenLM in QwenLM/qwen-code

Builds a rebranded Qwen Code desktop package from the Tauri shell using only a brand id and a logo, with sensible derived defaults.

Apache-2.0Auto-check passedDevelopment

Install Qwen Code Desktop Brand Builder

skills CLI
$ npx skills add QwenLM/qwen-code --skill desktop-brand-builder -a claude-code

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

GitHub CLI
$ gh skill install QwenLM/qwen-code desktop-brand-builder --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/QwenLM/qwen-code.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/desktop/.agents/skills/desktop-brand-builder .claude/skills/desktop-brand-builder && 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
desktop-brand-builder
GitHub stars
28k
Token cost
~2.1k tokens
SKILL.md length
868 words
Files
2 (incl. scripts)
Skills in repo
41
Repo updated
First seen
Licence
Apache-2.0

At a glance

Builds a rebranded Qwen Code desktop package from the Tauri shell using only a brand id and a logo, with sensible derived defaults.

  • Works in 3 steps: Patches src-tauri/tauri.conf.json:… → Regenerates the full icon set from the… → Patches the bootstrap UI: page title,…
  • Producing a white-label desktop client of Qwen Code under your own brand
  • SKILL.md covers Goal, Input Rules, Derived Defaults and Workflow, plus 3 more sections
  • Runs JavaScript scripts from its folder; calls npm, npx and git; reaches acme.ai; needs TAURI_SIGNING_PRIVATE_KEY

What it does

You normally supply a lowercase brandId and a local logo path, plus an optional website. The agent derives the rest: the app name and artifact prefix come from title-casing the brandId, and the bundle identifier comes from the reversed website host with a desktop suffix, or a fallback pattern when there is no valid host. Once the required fields are present it proceeds without a confirmation step. Optional overrides cover app name, app id, artifact prefix, updater endpoints and key, and a target of mac, win, linux or all.

Work happens in an isolated build clone so the main repository stays clean, and branding is applied through the Tauri configuration, the icons folder and the bootstrap startup UI. Updater endpoints stay empty by default, so a branded build never polls the official Qwen Code feed and the official feed never updates it; a public key is required if you supply your own endpoints. A bundled brand-create.mjs script supports the build, and the skill replaces an older Electron-based brand builder.

When your agent uses it

  • Producing a white-label desktop client of Qwen Code under your own brand
  • Generating DMG, EXE, AppImage or deb installers with a custom name and logo
  • Pointing a branded desktop build at your own updater feed

Example prompts

  • “Build a desktop package for brandId acme-ai using the logo at ./assets/logo.png and the website https://acme.ai.”
  • “Create a Linux-only branded build with in-app updates disabled.”
  • “Rebrand the desktop app for my company and use our own updater endpoint.”

Requirements

  • A checkout of the qwen-code repository with packages/desktop
  • A local square PNG logo, ideally 1024 pixels wide

Workflow steps

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

  1. Patches src-tauri/tauri.conf.json: productName, identifier,
  2. Regenerates the full icon set from the logo via
  3. Patches the bootstrap UI: page title, brand heading, startup strings in

What it can do on your machine

Read from SKILL.md and the folder at commit d9c6f8c. 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

    Ships 1 file in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • npm
    • npx
    • git
    • node

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • acme.ai

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

  • Credentials

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

    • TAURI_SIGNING_PRIVATE_KEY

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

Context cost

Qwen Code Desktop Brand Builder loads about 2.1k tokens when it runs. Until then it costs about 73 tokens; SKILL.md has 868 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from QwenLM/qwen-code at commit d9c6f8c, republished under its Apache-2.0 licence (© QwenLM). 868 words, ~2,128 tokens.

Download SKILL.mdSave it as .claude/skills/desktop-brand-builder/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
desktop-brand-builder
description
Generate a branded Qwen Code desktop package from the Tauri desktop shell using a minimal brandId and logo. Use when the user wants a custom, white-label, or rebranded desktop client, installer, DMG/EXE/AppImage/deb, or one-click brand build on top of packages/desktop.

Desktop Brand Builder (Tauri shell)

Goal

Create a branded desktop package from packages/desktop with the least user input possible. The user should usually provide only:

text
brandId: acme-ai
logo: /absolute/path/to/logo.png
website: https://acme.ai

website is optional. Do not ask for app name, app id, artifact name, copyright, or updater endpoints unless the user explicitly asks to override them.

This skill replaces the Electron-era brand builder that lived in the older, since-deleted Electron packages/desktop (removed in PR 9085, before this Tauri shell took over that path). The Tauri shell is the only desktop implementation now; branding hooks are src-tauri/tauri.conf.json, src-tauri/icons/, and the bootstrap/ startup UI.

Input Rules

Required fields:

  • brandId: must match ^[a-z][a-z0-9-]*$
  • logo: local file path; must exist; .png recommended (square, >= 1024px)

Optional overrides:

  • website
  • appName
  • appId (Tauri bundle identifier)
  • artifactPrefix
  • updaterEndpoints (JSON array; empty array disables in-app updates)
  • updaterPubkey (base64 public key; required when updaterEndpoints is non-empty — must match the TAURI_SIGNING_PRIVATE_KEY used to sign your updater artifacts)
  • target: mac, win, linux, or all

If required input is missing, ask once:

text
请提供:
brandId: 例如 acme-ai,只能小写字母、数字、短横线
logo: 本地 logo 文件路径(建议 1024x1024 PNG)
website: 可选

Once the required fields are present, proceed without a confirmation step.

Derived Defaults

Infer missing values deterministically:

  • appName: title-case the hyphen-separated brandId; acme-ai becomes Acme AI
  • artifactPrefix: title-case the hyphen-separated brandId and join with hyphens; acme-ai becomes Acme-AI
  • appId: if website has a valid host, reverse the host labels and append .desktop; https://acme.ai becomes ai.acme.desktop
  • fallback appId: app.<brandId>.desktop
  • updaterEndpoints: empty by default. A branded build must never poll the official Qwen Code updater feed, and the official feed must never update a branded build. Only set endpoints when the user supplies their own feed.

Workflow

Work in an isolated build clone so the working repository stays clean:

bash
BUILD_ROOT="$PWD/brand-builds/<brandId>-<timestamp>"
mkdir -p "$BUILD_ROOT"
git clone --branch main --single-branch \
  https://github.com/QwenLM/qwen-code.git \
  "$BUILD_ROOT/qwen-code"
cd "$BUILD_ROOT/qwen-code"
git checkout -B brand-<brandId> origin/main

If the clone or checkout fails, stop and report the failure. Do not continue as if brand-<brandId> was created.

Create a temporary brand.json in the build directory:

json
{
  "brandId": "acme-ai",
  "logo": "/absolute/path/to/logo.png",
  "website": "https://acme.ai",
  "appName": "Acme AI",
  "appId": "ai.acme.desktop",
  "artifactPrefix": "Acme-AI",
  "updaterEndpoints": [],
  "updaterPubkey": ""
}

Install dependencies. The brand script itself only needs the desktop package's own node_modules, but npm run build:runtime shells out to the repo root (which uses cross-env and other root devDependencies), so the root install is also required before packaging:

bash
# Root dependencies (needed by build:runtime → cross-env, esbuild, etc.)
npm install

# Desktop package dependencies
cd packages/desktop
npm install --workspaces=false
cd ../..

Then run this skill's bundled brand creation script with plain Node (the script has no dependencies beyond Node >= 18):

bash
node packages/desktop/.agents/skills/desktop-brand-builder/scripts/brand-create.mjs \
  --shell-root /absolute/path/to/qwen-code/packages/desktop \
  --config /absolute/path/to/brand.json

The agent should not hand-edit tauri.conf.json, icon files, or bootstrap brand strings when this bundled script is available. The bundled script is the source of truth for patching config and generating resources.

What the script does:

  1. Patches src-tauri/tauri.conf.json: productName, identifier, bundle.shortDescription, and plugins.updater.endpoints. When updaterEndpoints is empty it also clears bundle.createUpdaterArtifacts and blanks the official plugins.updater.pubkey (set to empty string rather than deleted, because the updater plugin requires the field); a brand supplying its own feed must supply its own pubkey.
  2. Regenerates the full icon set from the logo via npx --yes @tauri-apps/cli icon <logo> (falls back to a warning if the CLI cannot run; in that case copy the logo over src-tauri/icons/icon.png manually and tell the user the remaining sizes are stale).
  3. Patches the bootstrap UI: page title, brand heading, startup strings in bootstrap/index.html and bootstrap/bootstrap.js, and replaces bootstrap/qwen-code-logo.svg usage with the brand logo.

Package with the current host target unless the user requested a target:

bash
cd packages/desktop
npm run build:runtime --workspaces=false
npx tauri build            # current platform

Cross-compile: build:runtime bundles the Node runtime for the platform indicated by QWEN_DESKTOP_TARGET (defaults to the host). When targeting a different platform you must re-run build:runtime with the env var set before each tauri build --target, otherwise the packaged artifact contains a wrong-arch Node binary and fails at launch with an exec format error:

bash
# Cross-compile: set QWEN_DESKTOP_TARGET and re-run build:runtime per target
QWEN_DESKTOP_TARGET=aarch64-apple-darwin npm run build:runtime --workspaces=false
npx tauri build --target aarch64-apple-darwin   # explicit macOS arm64

For target: all, iterate build:runtime → tauri build per target; run only targets supported by the current machine or CI environment. Do not claim cross-platform artifacts were produced unless the files exist. Artifacts land under packages/desktop/src-tauri/target/release/bundle/ for the host target, or src-tauri/target/<triple>/release/bundle/ when --target <triple> is used.

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

Signing and Updates

Branded builds are unsigned by default. The upstream release pipeline's signing secrets (Apple, Windows) and updater private key belong to the official Qwen Code releases only. For a brand that needs signed releases or in-app updates, set up separate credentials and a separate updater feed; do not reuse the upstream ones.

To generate a signing key pair for your updater feed:

bash
npx @tauri-apps/cli signer generate -w ~/.tauri/my-brand.key
# The .key file is the private key (set as TAURI_SIGNING_PRIVATE_KEY in
# your build CI). The corresponding .pub file contains the base64 public
# key — paste it into brand.json as updaterPubkey.

Validation

After packaging:

  1. Confirm the expected artifact exists under packages/desktop/src-tauri/target/release/bundle/ (or src-tauri/target/<triple>/release/bundle/ for cross-compile targets) (dmg/, nsis/, appimage/, or deb/).
  2. Compute sha256sum or shasum -a 256 for each artifact.
  3. On macOS, run hdiutil verify for generated DMG files.
  4. Report the artifact path, SHA-256, app name, app id, and build directory.

Failure Handling

  • Invalid brandId: show the regex and ask for a corrected value.
  • Missing logo: ask for a valid local path.
  • Missing bundled script: report that packages/desktop/.agents/skills/desktop-brand-builder/scripts/brand-create.mjs is missing, and include the expected command.
  • Already-branded shell-root: the script refuses to run when productName is no longer the default (Qwen Code Desktop). Start from a fresh clone — do not re-run the script in an already-patched tree.
  • Build failure: preserve the build directory, return the last useful error lines, and include the full log path or command that produced the failure.

Do not delete the build directory on failure. Never re-run brand-create in the same clone — the script is single-use. The "preserve the build directory" guidance is for post-mortem debugging, not for retrying the brand step. If the brand config was wrong, discard the clone and start fresh.

© QwenLM, 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

SKILL.md and 1 other file (scripts) in packages/desktop/.agents/skills/desktop-brand-builder of QwenLM/qwen-code.

  • SKILL.md
  • scripts/brand-create.mjs

Open the folder on GitHubat commit d9c6f8c

Compare with similar skills

Qwen Code Desktop Brand Builder 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.

Qwen Code Desktop Brand Builder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Qwen Code Desktop Brand Builder this skillQwenLM/qwen-code28k—~2.1kAutomated safety check: PassApache-2.0
Cline Desktop App Releasecline/cline70k—~4.5kAutomated safety check: PassApache-2.0
Code Reviewtimwuhaotian/the-pair379—~250Automated safety check: PassMIT
Cursor BYOK Desktop Releaseleookun/cursor-byok3.2k—~1.3kAutomated safety check: PassMIT
Desktop Release Sync LandingEynzof/Hermes-CN-Desktop1.8k—~1.3kAutomated safety check: PassCustom licence
Markdown Paged GuideBigStrongSun/ccswitchmulti121—~589Automated safety check: PassMIT

Similar skills

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

    70k GitHub stars~4.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Code Review

    timwuhaotian/the-pair

    Comprehensive code review with security and performance checks

    379 GitHub stars~250 tokensUpdated yesterday
    DevelopmentAuto-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 2 days ago
    DevOps & CloudAuto-check passed
  • Desktop Release Sync Landing

    Eynzof/Hermes-CN-Desktop

    Use only for stable/public Hermes Agent CN Desktop releases that should be visible to all users.

    1.8k GitHub stars~1.3k tokensUpdated 20 days ago
    DevOps & CloudAuto-check passed
  • Markdown Paged Guide

    BigStrongSun/ccswitchmulti

    Render Markdown manuals into polished per-page PNG images and PDF deliverables.

    121 GitHub stars~589 tokensUpdated 6 days ago
    Documents & OfficeAuto-check passed
  • Helmor Debug Loop

    dohooo/helmor

    Autonomous local-development debugging loop for Helmor bugs.

    1.3k GitHub stars~917 tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from QwenLM/qwen-code

All 41 skills in this repo
  • Reproduces a feature from Codex or Claude Code in Qwen Code by running the reference agent under capture, reading the traces, then implementing matching behavior.

    28k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Qwen Code E2E Testing

    QwenLM/qwen-code

    Guides end-to-end testing of the Qwen Code CLI in headless mode with real model calls, MCP test servers and inspection of raw API traffic.

    28k GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Scheduled CI skill that scans a repository for small, certain docs, test and code hygiene issues and fixes them on one branch with a commit per finding.

    28k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Walks through capturing and comparing V8 heap snapshots to find memory leaks in the Qwen Code Node.js CLI, using tmux and the chrome-devtools CLI.

    28k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • tmux Real User Testing

    QwenLM/qwen-code

    Drives Qwen Code in a real tmux session the way a user would and saves a readable step-by-step transcript of each screen for maintainers to review.

    28k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Agent Reproduce Align

    QwenLM/qwen-code

    Runs a reference agent (Codex or Claude Code) and Qwen Code on the same scenario, captures HTTP and terminal traces, and compares them until behavior matches.

    28k GitHub stars~1.1k tokensUpdated today
    Auto-check passed

Works with

Questions about Qwen Code Desktop Brand Builder

What does Qwen Code Desktop Brand Builder do?

Builds a rebranded Qwen Code desktop package from the Tauri shell using only a brand id and a logo, with sensible derived defaults. You normally supply a lowercase brandId and a local logo path, plus an optional website. The agent derives the rest: the app name and artifact prefix come from title-casing the brandId, and the bundle identifier comes from the reversed website host with a desktop suffix, or a fallback pattern when there is no valid host.

When should I use Qwen Code Desktop Brand Builder?

Qwen Code Desktop Brand Builder fits situations like: producing a white-label desktop client of Qwen Code under your own brand; generating DMG, EXE, AppImage or deb installers with a custom name and logo; pointing a branded desktop build at your own updater feed.

How do I install Qwen Code Desktop Brand Builder in Claude Code?

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

How do I install Qwen Code Desktop Brand Builder in Codex?

Run `npx skills add QwenLM/qwen-code --skill desktop-brand-builder -a codex`. Or copy the skill folder (packages/desktop/.agents/skills/desktop-brand-builder in QwenLM/qwen-code) into .agents/skills/desktop-brand-builder in your project. Codex loads it when a task matches its description.

Can I use Qwen Code Desktop Brand Builder 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 QwenLM/qwen-code --skill desktop-brand-builder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/desktop-brand-builder, .gemini/skills/desktop-brand-builder, .github/skills/desktop-brand-builder and .opencode/skills/desktop-brand-builder in your project.

What does Qwen Code Desktop Brand Builder need to run?

Going by SKILL.md and its folder, Qwen Code Desktop Brand Builder needs JavaScript for the scripts in its folder, the command-line tools its instructions call (npm, npx, git and node) and credentials named TAURI_SIGNING_PRIVATE_KEY. Our summary lists: A checkout of the qwen-code repository with packages/desktop; A local square PNG logo, ideally 1024 pixels wide.

Does Qwen Code Desktop Brand Builder access the network?

SKILL.md names 1 domain. In commands or code: acme.ai; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Qwen Code Desktop Brand Builder 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Qwen Code Desktop Brand Builder use?

Qwen Code Desktop Brand Builder 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 Qwen Code Desktop Brand Builder use?

About 2.1k tokens (SKILL.md is roughly 8.5k 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 Qwen Code Desktop Brand Builder?

Skills that share tags, products or a category with Qwen Code Desktop Brand Builder: Cline Desktop App Release (cline/cline, 70k stars), Code Review (timwuhaotian/the-pair, 379 stars), Cursor BYOK Desktop Release (leookun/cursor-byok, 3.2k stars) and Desktop Release Sync Landing (Eynzof/Hermes-CN-Desktop, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Qwen Code Desktop Brand Builder?

QwenLM (a GitHub organization) maintains it in QwenLM/qwen-code, which has 28,410 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on October 11, 2026.

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