Skills

Electron App Automation

Drives a local OmniRush Electron app over CDP for UI smoke tests.

Install

npx skills add omnirush-ai/omnirush-gui --skill browser-automation -g -a claude-code -y
Category
Testing
Updated
6d ago
License
See repository
Context cost
Lightabout 725 tokens
Runs scripts
No, instructions only

What it does

Local OmniRush.ai Electron browser automation with CDP. Use when driving a local Electron dev app, browser_list, browser_snapshot, browser_eval, composer automation, or local UI smoke tests.

Browser Automation

For verdicts, do not drive CDP by hand, write or run an evals/specs test (write-a-spec, run-tests). This skill is for exploration and debugging only.

What I Do

  • Attach OpenCode browser tools to the OmniRush.ai Electron app during local development.
  • Drive the app UI through Electron's Chrome DevTools Protocol endpoint.
  • Send a task/session from the composer and confirm the response in the UI.

Local Dev Setup

pnpm dev enables Electron CDP by default:

OMNIRUSH_ELECTRON_REMOTE_DEBUG_PORT=${OMNIRUSH_ELECTRON_REMOTE_DEBUG_PORT:-9823}

The default browser URL for OpenCode browser tools is:

http://127.0.0.1:9823

The app UI normally loads at:

http://localhost:5173/

To use a different CDP port, launch with an override:

OMNIRUSH_ELECTRON_REMOTE_DEBUG_PORT=9830 pnpm dev

To disable Electron CDP for a run:

OMNIRUSH_ELECTRON_REMOTE_DEBUG_PORT=0 pnpm dev

Background Launch

Use a detached launch when the user wants the app running in the background:

nohup pnpm dev > /tmp/omnirush-dev.log 2>&1 &

Then wait for the CDP port:

lsof -nP -iTCP:9823 -sTCP:LISTEN

Browser Tool Flow

  1. List targets with browser_list using browser_url: "http://127.0.0.1:9823".
  2. Select the OmniRush.ai target ID.
  3. Read state with browser_eval or browser_snapshot.
  4. Fill the Lexical composer by targeting [contenteditable="true"][data-lexical-editor="true"].
  5. Click the Run task button.
  6. Confirm the session response by checking document.body.innerText or the current URL.

Send A Session

Use this browser_eval pattern after selecting the OmniRush.ai target:

(() => {
  const editor = document.querySelector('[contenteditable="true"][data-lexical-editor="true"]');
  if (!editor) return { ok: false, reason: 'editor not found' };
Read the whole SKILL.md on GitHub

More in Testing