Agent skill

External Electron App Automation

by cashew-labs in cashew-labs/libretto

Drives desktop Electron apps already installed on your machine, such as Slack, Discord or VS Code, by relaunching them with a debugging port and using the Libretto CLI.

MITAuto-check passedProductivity & Automation

Install External Electron App Automation

skills CLI
$ npx skills add cashew-labs/libretto --skill external-electron-apps -a claude-code

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

GitHub CLI
$ gh skill install cashew-labs/libretto external-electron-apps --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/cashew-labs/libretto.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/external-electron-apps .claude/skills/external-electron-apps && 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
external-electron-apps
GitHub stars
904
Token cost
~967 tokens
SKILL.md length
272 words
Files
1
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Drives desktop Electron apps already installed on your machine, such as Slack, Discord or VS Code, by relaunching them with a debugging port and using the Libretto CLI.

  • Works in 7 steps: Quit the app if it is already running. → Relaunch the app with… → Connect with npx libretto connect… → …
  • Automating a local desktop app such as Slack or VS Code
  • SKILL.md covers Core workflow, Launch examples, Session pattern and Interaction examples, plus 3 more sections
  • Calls npx

What it does

This skill is for controlling third-party Electron desktop apps through the Chrome DevTools Protocol, and it tells the agent not to use it for the repository's own Electron app unless asked. The workflow is: quit the app, relaunch it with the remote debugging port flag, connect with npx libretto connect under a named session, list targets with pages, run code with exec, capture evidence with snapshot, and later run a saved workflow file with libretto run and a CDP address.

Launch commands are given for macOS, Linux and Windows, using Slack, VS Code and Discord on separate ports. It recommends one session per app, notes that Electron apps often have several windows and shows how to pick one with the page option, and suggests taking a snapshot or reading the page content when selectors are unstable. The excerpt is cut off before the scripted workflows section.

When your agent uses it

  • Automating a local desktop app such as Slack or VS Code
  • Connecting to an Electron app through its remote debugging port
  • Inspecting a desktop app's page content when selectors are unreliable
  • Turning a manual desktop app task into a reusable Libretto workflow

Example prompts

  • “Relaunch my Slack desktop app with a debugging port and search for incident-123.”
  • “Connect to the VS Code window with Libretto and list the pages it exposes.”
  • “Take a snapshot of the Discord desktop app and tell me what is on screen.”
  • “Save the Notion desktop steps we just ran as a workflow file I can rerun.”

Requirements

  • Node.js with `npx` to run the Libretto CLI
  • The target Electron app installed locally

Workflow steps

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

  1. Quit the app if it is already running.
  2. Relaunch the app with --remote-debugging-port=.
  3. Connect with npx libretto connect http://127.0.0.1: --session .
  4. Verify targets with npx libretto pages --session .
  5. Run interactions with npx libretto exec "" --session .
  6. Capture evidence with npx libretto snapshot --session .
  7. When a reusable workflow file is ready, execute it with npx libretto run ./workflow.ts --cdp http://127.0.0.1: (optional --page page-N).

What it can do on your machine

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

    • npx

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

  • Network

    No URLs in SKILL.md. Its commands use npx, 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

External Electron App Automation loads about 967 tokens when it runs. Until then it costs about 102 tokens; SKILL.md has 272 words of instructions outside code blocks.

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

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 cashew-labs/libretto at commit 41ab782, republished under its MIT licence (© cashew-labs). 272 words, ~967 tokens.

Download SKILL.mdSave it as .claude/skills/external-electron-apps/SKILL.md (or your agent's skills folder).
name
external-electron-apps
description
Automate user-installed Electron desktop apps (Slack, Discord, VS Code, Notion, Figma, Spotify, etc.) via CDP using this repo's Libretto CLI. Use when the task is to control a local desktop app on the user's machine, not this repo's own Electron app. Triggers: "desktop Slack app", "connect to Electron app", "remote-debugging-port", "CDP desktop app", "automate VS Code desktop app".

External Electron App Automation

Use this skill for external Electron desktop apps running on the user's machine. Do not default to this for this repository's own Electron app unless the user explicitly asks.

Core workflow

  1. Quit the app if it is already running.
  2. Relaunch the app with --remote-debugging-port=<port>.
  3. Connect with npx libretto connect http://127.0.0.1:<port> --session <session>.
  4. Verify targets with npx libretto pages --session <session>.
  5. Run interactions with npx libretto exec "<code>" --session <session>.
  6. Capture evidence with npx libretto snapshot --session <session>.
  7. When a reusable workflow file is ready, execute it with npx libretto run ./workflow.ts --cdp http://127.0.0.1:<port> (optional --page page-N).

Launch examples

macOS
bash
open -a "Slack" --args --remote-debugging-port=9222
open -a "Visual Studio Code" --args --remote-debugging-port=9223
open -a "Discord" --args --remote-debugging-port=9224
Linux
bash
slack --remote-debugging-port=9222
code --remote-debugging-port=9223
discord --remote-debugging-port=9224
Windows
bash
"C:\Users\%USERNAME%\AppData\Local\slack\slack.exe" --remote-debugging-port=9222
"C:\Users\%USERNAME%\AppData\Local\Programs\Microsoft VS Code\Code.exe" --remote-debugging-port=9223

Session pattern

Use one session per app:

bash
npx libretto connect http://127.0.0.1:9222 --session slack-desktop
npx libretto pages --session slack-desktop
npx libretto exec "return await page.title()" --session slack-desktop
npx libretto snapshot --session slack-desktop

Interaction examples

bash
npx libretto exec "await page.locator('button:has-text(\"Search\")').click()" --session slack-desktop
npx libretto exec "await page.keyboard.type('incident-123')" --session slack-desktop
npx libretto exec "await page.keyboard.press('Enter')" --session slack-desktop

When selectors are unstable, inspect first:

bash
npx libretto snapshot --session slack-desktop
npx libretto exec "return await page.content()" --session slack-desktop

Multiple pages

Electron apps often have multiple windows/pages. Use pages to list them and --page to target a specific one:

bash
npx libretto pages --session slack-desktop
npx libretto exec --session slack-desktop --page <page-id> "return await page.url()"
npx libretto snapshot --session slack-desktop --page <page-id>

Scripted workflows

After interactive discovery, run a default-exported workflow() against the same CDP endpoint. Libretto attaches to the selected page without navigating to workflow startUrl, so leave the app on the target screen first (or navigate in the handler). Closing the Libretto session does not quit the Electron app.

bash
npx libretto run ./slack-workflow.ts --cdp http://127.0.0.1:9222
npx libretto run ./slack-workflow.ts --cdp http://127.0.0.1:9222 --page page-1

Troubleshooting

  • If connection fails, make sure the app was launched with --remote-debugging-port and relaunch it.
  • Prefer 127.0.0.1 over localhost in CDP URLs.
  • If no pages are listed right after launch, wait 2-5 seconds and retry pages.
  • If a session is stale, run connect again with the same --session.

Use npx libretto close --session <session> to clear the session. This does not terminate the external app — it only removes the session state so Libretto stops tracking it.

© cashew-labs, MIT. 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 .agents/skills/external-electron-apps of cashew-labs/libretto.

Open the folder on GitHubat commit 41ab782

Compare with similar skills

External Electron App Automation 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.

External Electron App Automation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
External Electron App Automation this skillcashew-labs/libretto904—~967Automated safety check: PassMIT
Agent Browser CLIvercel-labs/agent-browser44k24 repos~864Automated safety check: PassApache-2.0
Electron App Automationvercel-labs/agent-browser44k5 repos~1.7kAutomated safety check: PassApache-2.0
ComposioComposioHQ/composio30k1 repos~1.7kAutomated safety check: PassMIT
Connect Apps with ComposioComposioHQ/awesome-claude-skills77k3 repos~557Automated safety check: PassNone
Openloomi Connectorsmelandlabs/openloomi1k—~3.3kAutomated safety check: PassApache-2.0

Similar skills

  • Agent Browser CLI

    vercel-labs/agent-browser

    Official

    Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking…

    44k GitHub starsUsed in 24 repos~864 tokens
    Productivity & AutomationAuto-check passed
  • Electron App Automation

    vercel-labs/agent-browser

    Official

    Automates Electron desktop apps such as VS Code, Slack or Discord by connecting agent-browser to their Chrome DevTools Protocol port.

    44k GitHub starsUsed in 5 repos~1.7k tokens
    Productivity & AutomationAuto-check passed
  • Composio

    ComposioHQ/composio

    Route and complete Composio work across Composio For You and Composio Platform.

    30k GitHub starsUsed in 1 repo~1.7k tokens
    Productivity & AutomationAuto-check passed
  • Connect Apps with Composio

    ComposioHQ/awesome-claude-skills

    Connects an agent to 1000+ external apps through the Composio Tool Router plugin, so it can actually send emails, create issues and post messages instead of only drafting them.

    77k GitHub starsUsed in 3 repos~557 tokens
    Productivity & AutomationAuto-check passed
  • Openloomi Connectors

    melandlabs/openloomi

    openloomi Connectors tools - manage the native 7 messaging integrations and pair with the composio skill for the 1000+ apps OAuth layer (Slack, Discord, X, Gmail, Outlook, Google…

    1k GitHub stars~3.3k tokensUpdated 15 days ago
    Productivity & AutomationAuto-check passed
  • Unicli

    olo-dot-io/Uni-CLI

    Comprehensive guide to Uni-CLI — the open Agent-Computer Interface runtime for real software.

    274 GitHub stars~3.8k tokensUpdated 5 days ago
    Productivity & AutomationAuto-check: notes

More from cashew-labs/libretto

All 21 skills in this repo
  • System Prompt Writing Guide

    cashew-labs/libretto

    Lays out a minimal, iteration-first approach to writing system prompts for LLM agents, with model-specific notes for Claude, GPT, Gemini, and Codex.

    904 GitHub stars~570 tokensUpdated 1 mo ago
    Auto-check passed
  • Address PR Review Comments

    cashew-labs/libretto

    Works through the review comments on a pull request one by one: fetches the threads, makes the fixes, runs type-check, build and lint, pushes, and resolves the threads.

    904 GitHub stars~532 tokensUpdated 1 mo ago
    Auto-check passed
  • CLI Development

    cashew-labs/libretto

    Design rules for command-line tools: subcommand-scoped help, actionable success output, debuggable failures, stable output, meaningful exit codes and a --json mode.

    904 GitHub stars~781 tokensUpdated 1 mo ago
    Auto-check passed
  • Merge Conflict Resolver

    cashew-labs/libretto

    Resolves Git merge, rebase and cherry-pick conflicts by reading the PRs behind each side, keeping both intents and asking you when they truly clash.

    904 GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check passed
  • Feature Spec Generator

    cashew-labs/libretto

    Researches the codebase and relevant docs, asks clarifying questions, then writes a spec sheet in specs/ for a significant feature or complex fix.

    904 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Glimpse Changes Walkthrough

    cashew-labs/libretto

    Turns the current session's code changes into a Markdown walkthrough shown in a native Glimpse window, with highlighted code, rendered diffs and review feedback.

    904 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed

Questions about External Electron App Automation

What does External Electron App Automation do?

Drives desktop Electron apps already installed on your machine, such as Slack, Discord or VS Code, by relaunching them with a debugging port and using the Libretto CLI. This skill is for controlling third-party Electron desktop apps through the Chrome DevTools Protocol, and it tells the agent not to use it for the repository's own Electron app unless asked. The workflow is: quit the app, relaunch it with the remote debugging port flag, connect with npx libretto connect under a named session, list targets with pages, run code with exec, capture evidence with snapshot, and later run a saved workflow file with libretto run and a CDP address.

When should I use External Electron App Automation?

External Electron App Automation fits situations like: automating a local desktop app such as Slack or VS Code; connecting to an Electron app through its remote debugging port; inspecting a desktop app's page content when selectors are unreliable; turning a manual desktop app task into a reusable Libretto workflow.

How do I install External Electron App Automation in Claude Code?

Run `npx skills add cashew-labs/libretto --skill external-electron-apps -a claude-code`. Or copy the skill folder (.agents/skills/external-electron-apps in cashew-labs/libretto) into .claude/skills/external-electron-apps in your project. Claude Code loads it when a task matches its description.

How do I install External Electron App Automation in Codex?

Run `npx skills add cashew-labs/libretto --skill external-electron-apps -a codex`. Or copy the skill folder (.agents/skills/external-electron-apps in cashew-labs/libretto) into .agents/skills/external-electron-apps in your project. Codex loads it when a task matches its description.

Can I use External Electron App Automation 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 cashew-labs/libretto --skill external-electron-apps -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/external-electron-apps, .gemini/skills/external-electron-apps, .github/skills/external-electron-apps and .opencode/skills/external-electron-apps in your project.

What does External Electron App Automation need to run?

Going by SKILL.md and its folder, External Electron App Automation needs the command-line tools its instructions call (npx). Our summary lists: Node.js with `npx` to run the Libretto CLI; The target Electron app installed locally.

Does External Electron App Automation access the network?

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

Is External Electron App Automation 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 External Electron App Automation use?

External Electron App Automation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does External Electron App Automation use?

About 967 tokens (SKILL.md is roughly 3.9k 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 External Electron App Automation?

Skills that share tags, products or a category with External Electron App Automation: Agent Browser CLI (vercel-labs/agent-browser, 44k stars), Electron App Automation (vercel-labs/agent-browser, 44k stars), Composio (ComposioHQ/composio, 30k stars) and Connect Apps with Composio (ComposioHQ/awesome-claude-skills, 77k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains External Electron App Automation?

cashew-labs (a GitHub organization) maintains it in cashew-labs/libretto, which has 904 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on August 21, 2026.

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