Skip to main content

external-electron-apps

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".

설치로 이동

소스 정보

저장소
cashew-labs/libretto
최근 소스 활동
2026년 8월 4일 00:19
감지된 SKILL.md 언어
영어
스타
899
포크
69

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
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.
GitHub에서 보기