Daxiang Electron
by @daxiangnaoyang
Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user ne...
clawhub install daxiang-electronπ About This Skill
name: electron description: Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application. allowed-tools: Bash(agent-browser:*), Bash(npx agent-browser:*)
Electron App Automation
Automate any Electron desktop app using agent-browser. Electron apps are built on Chromium and expose a Chrome DevTools Protocol (CDP) port that agent-browser can connect to, enabling the same snapshot-interact workflow used for web pages.
Core Workflow
1. Launch the Electron app with remote debugging enabled 2. Connect agent-browser to the CDP port 3. Snapshot to discover interactive elements 4. Interact using element refs 5. Re-snapshot after navigation or state changes
# Launch an Electron app with remote debugging
open -a "Slack" --args --remote-debugging-port=9222Connect agent-browser to the app
agent-browser connect 9222Standard workflow from here
agent-browser snapshot -i
agent-browser click @e5
agent-browser screenshot slack-desktop.png
Launching Electron Apps with CDP
Every Electron app supports the --remote-debugging-port flag since it's built into Chromium.
macOS
# Slack
open -a "Slack" --args --remote-debugging-port=9222VS Code
open -a "Visual Studio Code" --args --remote-debugging-port=9223Discord
open -a "Discord" --args --remote-debugging-port=9224Figma
open -a "Figma" --args --remote-debugging-port=9225Notion
open -a "Notion" --args --remote-debugging-port=9226Spotify
open -a "Spotify" --args --remote-debugging-port=9227
Linux
slack --remote-debugging-port=9222
code --remote-debugging-port=9223
discord --remote-debugging-port=9224
Windows
"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
Important: If the app is already running, quit it first, then relaunch with the flag. The --remote-debugging-port flag must be present at launch time.
Connecting
# Connect to a specific port
agent-browser connect 9222Or use --cdp on each command
agent-browser --cdp 9222 snapshot -iAuto-discover a running Chromium-based app
agent-browser --auto-connect snapshot -i
After connect, all subsequent commands target the connected app without needing --cdp.
Tab Management
Electron apps often have multiple windows or webviews. Use tab commands to list and switch between them:
# List all available targets (windows, webviews, etc.)
agent-browser tabSwitch to a specific tab by index
agent-browser tab 2Switch by URL pattern
agent-browser tab --url "*settings*"
Webview Support
Electron elements are automatically discovered and can be controlled like regular pages. Webviews appear as separate targets in the tab list with type: "webview":
# Connect to running Electron app
agent-browser connect 9222List targets -- webviews appear alongside pages
agent-browser tab
Example output:
0: [page] Slack - Main Window https://app.slack.com/
1: [webview] Embedded Content https://example.com/widget
Switch to a webview
agent-browser tab 1Interact with the webview normally
agent-browser snapshot -i
agent-browser click @e3
agent-browser screenshot webview.png
Note: Webview support works via raw CDP connection.
Common Patterns
Inspect and Navigate an App
open -a "Slack" --args --remote-debugging-port=9222
sleep 3 # Wait for app to start
agent-browser connect 9222
agent-browser snapshot -i
Read the snapshot output to identify UI elements
agent-browser click @e10 # Navigate to a section
agent-browser snapshot -i # Re-snapshot after navigation
Take Screenshots of Desktop Apps
agent-browser connect 9222
agent-browser screenshot app-state.png
agent-browser screenshot --full full-app.png
agent-browser screenshot --annotate annotated-app.png
Extract Data from a Desktop App
agent-browser connect 9222
agent-browser snapshot -i
agent-browser get text @e5
agent-browser snapshot --json > app-state.json
Fill Forms in Desktop Apps
agent-browser connect 9222
agent-browser snapshot -i
agent-browser fill @e3 "search query"
agent-browser press Enter
agent-browser wait 1000
agent-browser snapshot -i
Run Multiple Apps Simultaneously
Use named sessions to control multiple Electron apps at the same time:
# Connect to Slack
agent-browser --session slack connect 9222Connect to VS Code
agent-browser --session vscode connect 9223Interact with each independently
agent-browser --session slack snapshot -i
agent-browser --session vscode snapshot -i
Color Scheme
The default color scheme when connecting via CDP may be light. To preserve dark mode:
agent-browser connect 9222
agent-browser --color-scheme dark snapshot -i
Or set it globally:
AGENT_BROWSER_COLOR_SCHEME=dark agent-browser connect 9222
Troubleshooting
"Connection refused" or "Cannot connect"
--remote-debugging-port=NNNNlsof -i :9222App launches but connect fails
sleep 3)Elements not appearing in snapshot
agent-browser tab to list targets and switch to the right oneagent-browser snapshot -i -C to include cursor-interactive elements (divs with onclick handlers)Cannot type in input fields
agent-browser keyboard type "text" to type at the current focus without a selectoragent-browser keyboard inserttext "text" to bypass key eventsSupported Apps
Any app built on Electron works, including:
If an app is built with Electron, it supports --remote-debugging-port and can be automated with agent-browser.
π Tips & Best Practices
"Connection refused" or "Cannot connect"
--remote-debugging-port=NNNNlsof -i :9222App launches but connect fails
sleep 3)Elements not appearing in snapshot
agent-browser tab to list targets and switch to the right oneagent-browser snapshot -i -C to include cursor-interactive elements (divs with onclick handlers)Cannot type in input fields
agent-browser keyboard type "text" to type at the current focus without a selectoragent-browser keyboard inserttext "text" to bypass key events