Agent skill

AO Desktop App Launcher

by OrchestratorInc in OrchestratorInc/agent-orchestrator

Launches, restarts and troubleshoots the real AO Electron desktop app from a checkout, with isolated or real local data and checks for stale processes.

Apache-2.0Auto-check passedDevelopment

Install AO Desktop App Launcher

skills CLI
$ npx skills add OrchestratorInc/agent-orchestrator --skill ao-desktop-dev -a claude-code

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

GitHub CLI
$ gh skill install OrchestratorInc/agent-orchestrator ao-desktop-dev --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/OrchestratorInc/agent-orchestrator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/ao-desktop-dev .claude/skills/ao-desktop-dev && 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
ao-desktop-dev
GitHub stars
13k
Token cost
~2.4k tokens
SKILL.md length
1,162 words
Files
2
Skills in repo
5
Repo updated
First seen
Licence
Apache-2.0

At a glance

Launches, restarts and troubleshoots the real AO Electron desktop app from a checkout, with isolated or real local data and checks for stale processes.

  • Works in 4 steps: Work from the repository root and… → Read frontend/package.json,… → Confirm Node/npm and the Go version… → …
  • Running the real AO desktop app to see a frontend change
  • SKILL.md covers Choose the data mode, Preflight, Launch the app and Confirm the correct app is ready, plus 5 more sections
  • Calls npm, rg and osascript

What it does

The skill runs the Electron app from the current checkout and verifies it in the native window, keeping the dev daemon, renderer, preload and data mode explicit so nobody reviews a mock or stale build by accident. Isolated mode is the default for implementation and destructive testing, using port 3002 and data under ~/.ao/dev. Real-data mode is used only when you ask to see this machine's actual projects or sessions. It starts the checkout's dev daemon with AO_DATA_DIR pointing at the real data directory, and that daemon is not the installed app's daemon.

In real-data mode the agent warns before actions that create, terminate, rename or change sessions, and advises quitting the packaged app first because two daemons sharing one SQLite database can cross-talk. The dev window is marked Agent Orchestrator (dev) with a dev badge. It never attaches an unpackaged Electron app to a packaged daemon from another checkout. Preflight covers git status, the frontend package, main and forge config files, the Node, npm and Go versions, npm ci only when needed, and inspecting processes for this exact checkout without killing by name alone or ending every Electron process.

When your agent uses it

  • Running the real AO desktop app to see a frontend change
  • Reviewing a combined set of PR branches in the desktop UI
  • Troubleshooting stale Electron processes, port conflicts or preload bridge mismatches
  • Opening the app against real local AO data

Example prompts

  • “Launch the AO desktop app from this checkout in isolated mode so I can check the sidebar change.”
  • “Show my real AO projects in the dev app, but warn me before anything creates or kills sessions.”
  • “The Electron window looks stale and port 3002 is busy. Find out what is holding it.”

Requirements

  • Node.js and npm, with dependencies installed in frontend/
  • The Go version required by backend/go.mod
  • A checkout of the agent-orchestrator repository

Workflow steps

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

  1. Work from the repository root and inspect git status --short --branch.
  2. Read frontend/package.json, frontend/src/main.ts, and frontend/forge.config.ts when the launch behavior may have changed. Treat source as…
  3. Confirm Node/npm and the Go version required by backend/go.mod are available. Run npm ci in frontend/ only when dependencies are absent or…
  4. Check for an existing dev instance from this exact checkout before starting another. Do not kill by process name alone, and never…

What it can do on your machine

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

    • npm
    • rg
    • osascript
    • git

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

  • Network

    No URLs in SKILL.md. Its commands use npm and git, 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 no API keys, tokens, secrets or passwords.

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

Context cost

AO Desktop App Launcher loads about 2.4k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 1,162 words of instructions outside code blocks.

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

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 OrchestratorInc/agent-orchestrator at commit 42d304d, republished under its Apache-2.0 licence (© OrchestratorInc). 1,162 words, ~2,361 tokens.

Download SKILL.mdSave it as .claude/skills/ao-desktop-dev/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
ao-desktop-dev
description
Launch, restart, or troubleshoot the real AO Electron desktop app from this repository; run a checkout against isolated or real local AO data; combine PR branches for local UI review; and diagnose stale Electron processes, port conflicts, or preload bridge mismatches. Use whenever asked to run, open, show, or visually verify AO frontend changes in the actual desktop app rather than ao preview, dev:web, or mock data.

AO Desktop Dev

Run the Electron application from the current checkout and verify it in the native window. Keep the dev daemon, renderer, Electron preload, and selected data mode explicit so the user never reviews a mock or stale build by accident.

Choose the data mode

Ask only when the request does not make the desired data source clear.

  • Use isolated mode by default for implementation and destructive testing. Electron uses port 3002, ~/.ao/dev/running.json, ~/.ao/dev/data, and ~/.ao/dev/electron.
  • Use real-data mode only when the user explicitly asks to see this machine's actual AO projects or sessions. Start the checkout's dev daemon on the isolated dev port/run file while pointing AO_DATA_DIR at the real AO data directory. This is a separate daemon process using real data; do not describe it as the installed app's daemon.
  • Never try to attach an unpackaged Electron app directly to a packaged daemon from another checkout. The supervisor intentionally rejects daemon identity mismatches.
  • Warn before actions in real-data mode that create, terminate, rename, or otherwise mutate sessions. Merely opening and inspecting the UI is expected.
  • Real-data mode reads the same database as the installed app, so both windows show the same projects and sessions. Quit the packaged app first where possible: two daemons sharing one SQLite database can cross-talk, and acting on the wrong window runs unmerged code against real sessions. The dev window is marked with an Agent Orchestrator (dev) title, the default Electron dock icon, and an in-app dev badge — verify those markers before acting.

Preflight

  1. Work from the repository root and inspect git status --short --branch.
  2. Read frontend/package.json, frontend/src/main.ts, and frontend/forge.config.ts when the launch behavior may have changed. Treat source as authoritative over this skill.
  3. Confirm Node/npm and the Go version required by backend/go.mod are available. Run npm ci in frontend/ only when dependencies are absent or inconsistent; do not reinstall on every launch.
  4. Check for an existing dev instance from this exact checkout before starting another. Do not kill by process name alone, and never terminate every Electron process.

On macOS/Linux, inspect checkout-scoped processes and listeners with finite commands:

bash
ps -axo pid=,ppid=,pgid=,lstart=,command= | rg 'frontend/(node_modules/.bin/electron-forge|node_modules/electron/dist/Electron)'
lsof -nP -iTCP:3002 -sTCP:LISTEN

Use the full command paths and start times to distinguish this checkout from other AO worktrees. On Windows, use Get-CimInstance Win32_Process and Get-NetTCPConnection; preserve the same exact-target rule.

Launch the app

Run Electron Forge in a foreground interactive process so its output and restart input remain available. Do not append &, use a detached shell, or start a browser preview instead.

Isolated mode

On macOS/Linux:

bash
cd frontend
env -u AO_DATA_DIR -u AO_RUN_FILE -u AO_PORT npm run dev

On PowerShell:

powershell
Set-Location frontend
Remove-Item Env:AO_DATA_DIR, Env:AO_RUN_FILE, Env:AO_PORT -ErrorAction SilentlyContinue
npm run dev
Real-data mode

First resolve and report the actual data directory. In an AO worker session, AO_DATA_DIR normally already identifies it. Otherwise the repository default is the absolute path corresponding to ~/.ao/data.

Keep the real data directory but remove inherited port/run-file overrides so the dev app retains its own daemon handshake and port:

bash
cd frontend
env -u AO_RUN_FILE -u AO_PORT AO_DATA_DIR="${AO_DATA_DIR:-$HOME/.ao/data}" npm run dev

PowerShell equivalent:

powershell
Set-Location frontend
$realAoData = if ($env:AO_DATA_DIR) { $env:AO_DATA_DIR } else { Join-Path $HOME ".ao/data" }
Remove-Item Env:AO_RUN_FILE, Env:AO_PORT -ErrorAction SilentlyContinue
$env:AO_DATA_DIR = $realAoData
npm run dev

Do not print unrelated environment variables: AO sessions may carry credentials. It is safe to report only AO_DATA_DIR, AO_RUN_FILE, and AO_PORT.

Confirm the correct app is ready

Wait for all of these signals:

  • Electron Forge reports Launched Electron app.
  • The daemon reports daemon listening, normally on 127.0.0.1:3002 unless it explicitly reports another bound port.
  • The renderer makes successful requests such as /api/v1/projects and /api/v1/sessions.
  • The native Electron window shows the checkout's UI. A Vite URL opened in a normal browser is not equivalent because it lacks the Electron preload bridge.

If several AO windows exist, identify the newest Electron main process belonging to this checkout. On macOS, foreground that exact PID only when needed:

bash
osascript -e 'tell application "System Events" to set frontmost of first process whose unix id is <verified-pid> to true'

Do not claim real data from appearance alone. Verify the selected data directory and successful API responses. Do not claim visual success from compilation alone; interact with the requested flow in Electron or ask the user for a screenshot when screen capture is unavailable.

Reload changes correctly

  • Renderer-only React/CSS changes normally hot reload.
  • Changes to frontend/src/main.ts, preload files, Forge configuration, shared bridge types, or IPC registration require an Electron main-process restart. Type rs into the active Forge terminal or fully stop and relaunch the dev process.
  • A renderer error such as aoBridge.<method> is not a function almost always means the renderer hot-reloaded against a stale preload. Restart Electron before changing code to add guards around a bridge method that should exist.
  • Backend changes require restarting the managed dev daemon or the Electron process; renderer hot reload cannot apply Go changes.

After a restart, confirm the new Electron PID/start time and re-check the logs for the original error.

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

Preview multiple PRs locally

When the user wants to see multiple unmerged PRs together:

  1. Require a clean worktree and fetch each PR head.
  2. Create a clearly named local-only integration branch using the session/repository branch convention.
  3. Merge or cherry-pick the requested PR heads without rewriting or pushing either source branch.
  4. Resolve overlaps according to the requested combined behavior and run focused typechecks/tests.
  5. Let renderer changes hot reload; restart Electron if either PR changes main/preload/IPC code.
  6. State that the integration branch is local-only. Do not push it unless the user explicitly requests a combined PR.

Once one PR merges, prefer rebasing the remaining PR onto current main; the normal PR branch then contains both views without a local integration merge.

Stop without collateral damage

  1. Send Ctrl+C to the foreground dev process and wait briefly for Electron and its managed daemon to exit.
  2. Re-run the checkout-scoped process query. If the exact process group remains, identify the group created by this launch before sending TERM to that group.
  3. On Windows, terminate the verified parent tree only. Never use a broad Electron, Node, Go, or port-based kill.
  4. Confirm the captured Electron PID and dev daemon listener are gone. Leave installed AO and other worktrees untouched.

Common mistakes

  • ao preview controls the AO Browser panel; it does not launch the desktop shell.

  • npm run dev:web is useful for browser-only renderer work but does not provide Electron APIs or native chrome.

  • Renderer URLs can move from 5173 when a port is occupied. Trust Forge's printed URL rather than assuming one.

  • Multiple dev instances share ~/.ao/dev/electron by default, and Chromium's singleton lock lives in the profile, so a second checkout's npm run dev loses requestSingleInstanceLock() and exits immediately with code 0. To run two worktrees at once, give each its own profile, run file, and data dir:

    bash
    env -u AO_PORT \
      AO_DEV_ELECTRON_DIR="$HOME/.ao/dev/<name>/electron" \
      AO_RUN_FILE="$HOME/.ao/dev/<name>/running.json" \
      AO_DATA_DIR="$HOME/.ao/dev/<name>/data" \
      npm run dev

    Without all three the instances still collide, on the profile lock, the run file, or the daemon's SQLite data.

  • An inherited AO_DATA_DIR changes dev mode from isolated data to real data. Always choose and report the mode instead of inheriting it accidentally.

  • Repeated /healthz/ 404 entries from external probes can be noisy; readiness is determined by Electron's daemon status and successful API traffic, not by log volume.

Completion report

Report:

  • checkout and branch being displayed;
  • isolated or real-data mode and the non-sensitive data/run-file paths;
  • renderer and daemon addresses actually reported;
  • whether Electron was restarted for main/preload changes;
  • user flows exercised in the native window;
  • any remaining stale process, port, or visual-verification limitation.

© OrchestratorInc, 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 in .agents/skills/ao-desktop-dev of OrchestratorInc/agent-orchestrator.

  • SKILL.md
  • agents/openai.yaml

Open the folder on GitHubat commit 42d304d

Compare with similar skills

AO Desktop App Launcher 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.

AO Desktop App Launcher compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
AO Desktop App Launcher this skillOrchestratorInc/agent-orchestrator13k—~2.4kAutomated safety check: PassApache-2.0
Dsh Web UI Releaseningbainb/deepseek-harness-desktop781—~1.4kAutomated safety check: WarnBSD-3-Clause
Cherry Studio Electron DevCherryHQ/cherry-studio52k—~739Automated safety check: PassAGPL-3.0
UI Visual DebuggingNangoHQ/nango13k—~1.3kAutomated safety check: PassCustom licence
Skin Developerningbainb/deepseek-harness-desktop781—~1.4kAutomated safety check: PassBSD-3-Clause
Code Reviewyaklang/yakit7.8k—~1.4kAutomated safety check: NotesAGPL-3.0

Similar skills

  • Dsh Web UI Release

    ningbainb/deepseek-harness-desktop

    Release and publish the dsh-web-ui monorepo (DSH Web GUI plugin family + skin collection) — bump all packages to one unified version, commit and tag, push the vX.Y.Z tag that triggers the GitHub…

    781 GitHub stars~1.4k tokensUpdated 2 days ago
    DevelopmentAuto-check: warnings
  • Cherry Studio Electron Dev

    CherryHQ/cherry-studio

    Develops, debugs and profiles Cherry Studio in a tracked Electron instance, reusing a verified running instance and capturing before and after evidence for each change.

    52k GitHub stars~739 tokensUpdated today
    DevelopmentAuto-check passed
  • UI Visual Debugging

    NangoHQ/nango

    A skill your agent uses when modifying or visually debugging Nango frontend UI, including packages/webapp, packages/connect-ui, browser interactions, screenshots, and visual regressions.

    13k GitHub stars~1.3k tokensUpdated today
    Testing & QAAuto-check passed
  • Skin Developer

    ningbainb/deepseek-harness-desktop

    Build a new skin for the dsh-web-ui skin collection (DSH Web GUI) and publish it into the skin-center plugin — scaffold with scripts/dsh-skin-new, author skin.json plus the apply/dispose +…

    781 GitHub stars~1.4k tokensUpdated 2 days ago
    Frontend & DesignAuto-check passed
  • Code Review

    yaklang/yakit

    对 Yakit 仓库的代码改动做规范化 code review:按代码逻辑、TS 定义、UI 引用与 Props、CSS 样式、依赖版本、配置项六个维度审查,检查测试用例缺失,强制执行 tsc 类型检查与 vitest 测试验证,输出「结果汇总 / 明细解释 / 合并结论」三块报告,经用户确认后写入文件。当用户要求 review、审查、评审代码改动,或在提交、合并、提 PR…

    7.8k GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check: notes
  • Debugging and Error Recovery

    addyosmani/agent-skills

    Applies a stop-the-line rule and a step-by-step triage when tests fail, builds break or something stops working, aiming at the root cause instead of guesses.

    103k GitHub starsUsed in 1 repo~2.6k tokens
    DevelopmentAuto-check passed

More from OrchestratorInc/agent-orchestrator

  • Bug Report Triage

    OrchestratorInc/agent-orchestrator

    Helps a reporter describe a bug, searches for duplicates and gathers diagnostic evidence kept separate from a short, human-worded issue draft.

    13k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • AO CLI Catalog

    OrchestratorInc/agent-orchestrator

    Catalog of the ao command-line tool for Agent Orchestrator: spawning workers, managing sessions and projects, Cues, messages, the shared browser, previews and the daemon.

    13k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • AO Cloud CLI Catalog

    OrchestratorInc/agent-orchestrator

    Documents the ao CLI for spawning, listing, messaging, and killing worker sessions, and for reporting back to an orchestrator from inside a sandbox.

    13k GitHub stars~674 tokensUpdated today
    Auto-check passed
  • PR Change-Count Header

    OrchestratorInc/agent-orchestrator

    Calculates and keeps up to date the required code, test and other change-count header at the top of a pull request description in this repository.

    13k GitHub stars~364 tokensUpdated today
    Auto-check passed

Works with

Questions about AO Desktop App Launcher

What does AO Desktop App Launcher do?

Launches, restarts and troubleshoots the real AO Electron desktop app from a checkout, with isolated or real local data and checks for stale processes. The skill runs the Electron app from the current checkout and verifies it in the native window, keeping the dev daemon, renderer, preload and data mode explicit so nobody reviews a mock or stale build by accident.ao/dev.

When should I use AO Desktop App Launcher?

AO Desktop App Launcher fits situations like: running the real AO desktop app to see a frontend change; reviewing a combined set of PR branches in the desktop UI; troubleshooting stale Electron processes, port conflicts or preload bridge mismatches; opening the app against real local AO data.

How do I install AO Desktop App Launcher in Claude Code?

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

How do I install AO Desktop App Launcher in Codex?

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

Can I use AO Desktop App Launcher 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 OrchestratorInc/agent-orchestrator --skill ao-desktop-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ao-desktop-dev, .gemini/skills/ao-desktop-dev, .github/skills/ao-desktop-dev and .opencode/skills/ao-desktop-dev in your project.

What does AO Desktop App Launcher need to run?

Going by SKILL.md and its folder, AO Desktop App Launcher needs the command-line tools its instructions call (npm, rg, osascript and git). Our summary lists: Node.js and npm, with dependencies installed in frontend/; The Go version required by backend/go.mod; A checkout of the agent-orchestrator repository.

Does AO Desktop App Launcher access the network?

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

Is AO Desktop App Launcher 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 AO Desktop App Launcher use?

AO Desktop App Launcher 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 AO Desktop App Launcher use?

About 2.4k tokens (SKILL.md is roughly 9.4k 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 AO Desktop App Launcher?

Skills that share tags, products or a category with AO Desktop App Launcher: Dsh Web UI Release (ningbainb/deepseek-harness-desktop, 781 stars), Cherry Studio Electron Dev (CherryHQ/cherry-studio, 52k stars), UI Visual Debugging (NangoHQ/nango, 13k stars) and Skin Developer (ningbainb/deepseek-harness-desktop, 781 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains AO Desktop App Launcher?

OrchestratorInc (a GitHub organization) maintains it in OrchestratorInc/agent-orchestrator, which has 12,881 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.

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