roux-base
v0.1.1
Published
Claude Code skills for Electron app QA — design review, visual testing, and performance benchmarking
Maintainers
Readme
molecule
Claude Code skills for Electron app QA — design review, visual testing, and performance benchmarking.
molecule does for Electron apps what gstack does for web apps: provides a persistent daemon with an AI-friendly ref system (@e1, @e2) for interacting with your app's UI via accessibility tree snapshots.
Quick Start
git clone https://github.com/ahappydad/molecule
cd molecule
./setup
# In your Electron project:
$MO launch electron/main.cjs
$MO snapshot -i # See interactive elements
$MO click @e3 # Click an element
$MO fill @e5 "Hello world" # Fill a text input
$MO screenshot /tmp/app.png # Take a screenshot
$MO main-eval "process.uptime()" # Execute in main processArchitecture
Claude Code CLI
└─→ $MO <command>
└─→ HTTP POST localhost:PORT
├─→ Bun.serve() daemon
│ ├─→ Playwright _electron API
│ └─→ Accessibility tree → @ref system
└─→ Your Electron Appmolecule launches your Electron app via Playwright's _electron API, maintaining a persistent HTTP daemon for sub-second interactions. The ref system parses the accessibility tree and assigns @e1, @e2, etc. to interactive elements, so Claude can interact with your UI without writing CSS selectors.
Skills
| Skill | Description |
|-------|-------------|
| /molecule-app | Launch, interact, and screenshot Electron apps |
| /molecule-qa | Full QA testing with automated bug fixes |
| /molecule-qa-only | QA testing with report only (no fixes) |
| /molecule-design-review | Visual QA + CSS fixes with atomic commits |
| /molecule-plan-design-review | Plan-mode design review (no browser needed) |
| /molecule-design-consultation | Create a complete design system |
| /molecule-benchmark | Electron performance metrics (startup, memory, IPC) |
| /molecule-canary | Post-update monitoring |
Commands
Interaction
click <@ref>— Click an elementfill <@ref> <text>— Fill a text inputtype <@ref> <text>— Type character by characterpress <key>— Press a key combinationselect <@ref> <value>— Select a dropdown optionhover <@ref>— Hover over an elementscroll [up|down] [amount]— Scroll the page
Reading
snapshot -i— Interactive elements with refstext [selector]— Get text contentjs <expr>— Execute JavaScript in rendererconsole [--errors]— Read console messagesnetwork [--errors]— Read network requestsscreenshot [path]— Take a screenshot
Electron-Specific
launch [main.cjs]— Launch the appwindows— List all BrowserWindowswindow <id|title>— Switch active windowmain-eval <expr>— Execute in main processmain-memory— Main process memory usageipc-listen <channel>— Intercept IPC messagesipc-log [channel]— Read intercepted IPCmenu— Read application menumenu-click <path>— Trigger a menu item
Connection Modes
Launch mode (default): Full control via _electron.launch() — includes main process access, window management, and IPC interception.
Attach mode: Connect to an already-running app via CDP: $MO launch --attach 9222. Requires the app to be started with --remote-debugging-port=9222. No main process access.
License
MIT
