control-ui
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
Skill by BramVR
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/bramvr-control-ui
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
control-ui- Description
- Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI. Use for local UI verification, screenshots, accessibility snapshots, perf profiles, visual diffs, or reproducing UI bugs.
- License
- MIT
- Instructions
- 108 lines in SKILL.md · view on GitHub
Files (3)
- LICENSE
- SKILL.md
- openai.yaml · agents/
SKILL.md (first lines)
# Control UI
_Source: [Cursor team kit](https://github.com/cursor/plugins/tree/main/cursor-team-kit/skills/control-ui), MIT license._
Use local browser automation to verify UI behavior with evidence. First reuse the repo's own Playwright, browser, or Electron harness if it exists; otherwise assemble a temporary local harness around the app's dev server or Chromium debug port.
## What It Is Used For
- Reproducing UI bugs that depend on real browser focus, keyboard input, scrolling, resizing, or rendering.
- Verifying visual or accessibility changes with screenshots and snapshots.
- Checking local web, IDE, or Electron behavior before shipping.
- Capturing console logs, network logs, CPU profiles, traces, or heap snapshots.
- Creating before/after evidence for `verify-this`.
## Setup Pattern
1. Start the app locally using the repo's documented dev command.
2. Discover existing local harnesses: Playwright tests, Cypress specs, Storybook, browser scripts, Electron launch scripts, or snapshot tools.
3. For a web app, connect to the local URL with the existing browser tooling.
4. For Electron/Chromium, enable a remote debugging port when supported.
5. Select the correct page by stable app markers, not by tab order alone.
6. Prefer accessibility roles, labels, and stable `data-*` selectors over coordinates.
## Generic Web Harness
Use the repo's installed browser tooling when possible. If the repo already has Playwright, a minimal one-off probe looks like:
```javascript
import { chromium } from "playwright";
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1280, height: 800 } });
await page.goto("http://127.0.0.1:<port>");
await page.getByRole("button", { name: /submit/i }).click();
await page.screenshot({ path: "/tmp/ui-harness-after.png", fullPage: true });
await browser.close();
```
Do not add Playwright as a project dependency just for this probe unless the user asks. Prefer existing dev dependencies or external browser tools already available in the environment.
## Generic CDP Harness
For Electron or a Chromium app launched with `--remote-debugging-port=<port>`, connect over CDP:
```javascript
import { chromium } from "playwright";
const browser = await chromium.connectOverCDP("http://127.0.0.1:<debug-port>");
const pages = browser.contexts().flatMap((context) => context.pages());
let page;
for (const candidate of pages) {
if (await candidate.locator("<app-root-selector>").count()) {
page = candidate;
break;
}
}
if (!page) {
console.log(await Promise.all(pages.map(async (p) => ({
title: await p.title(),
url: p.url(),
}))));
throw new Error("No matching app page found");
}
await page.screenshot({ path: "/tmp/ui-harness-cdp.png", fullPage: true });
await browser.close();
```
Replace `<app-root-selector>` with a stable marker from the current repo, such as a root app node, landmark, or product-specific `data-*` attribute.
## Interaction Loop
1. Capture a page snapshot or screenshot before acting.
2. Choose a target from the latest page structure.
3. Perform exactly one structural action: click, type, keypress, drag, scroll, navigate, or resize.
4. Capture a fresh snapshot/screenshot.
5. Verify the expected state change.
6. Save artifacts for before/after comparisons when the user asked for proof.
## CDP Capabilities
Use raw CDP only when higher-level browser APIs are insufficient:
- Performance: CPU profiles, traces, paint flashing, FPS meter, layout shift inspection.
- Memory: heap snapshots and forced GC for leak investigations.
- Network: request blocking, throttling, cache disablement, request/response logs.
- Rendering: viewport changes, color scheme emulation, reduced motion, accessibility checks.
- Debugging: console streaming, exception capture, DOM snapshots.
## Page Selection
When multiple app windows/tabs share a debug port:
- Prefer a positive marker for the surface under test, such as an app root selector.
- Use a negative marker to avoid the wrong surface when necessary.
- If no page matches, list available page titles and URLs instead of guessing.
## Guardrails
- Do not rely on stale element references after navigation or structural changes.
- Avoid coordinate clicks unless a fresh screenshot was captured immediately before the click.
- Keep test data local and disposable.
- Do not store screenshots or heap snapshots from privacy-sensitive workspaces unless the user explicitly agrees.
- Do not hard-code selectors, ports, or script paths from another repository. Discover the current repo's local app markers.
- Clean up dev servers, debug sessions, and temp profiles when done.From BramVR/mac-agent-scripts, MIT.
More from BramVR/mac-agent-scripts
- 0.561score
codex-first
BramVR
Claude Code-only routing: delegate implementation, fixing, exploration, git mechanics to Codex CLI; Claude specs, decides, reviews, verifies.
SkillAFreshness: AClaude Code +9 - 0.541score
architect
BramVR
Sketch types, signatures, and module structure before code, then stay in the loop while implementation fills in.
SkillAFreshness: AClaude Code +9 - 0.541score
create-verification-skill
BramVR
Generate a project-local verification skill that drives your app the way a user does — any language, framework, or platform.
SkillAFreshness: AClaude Code +9 - 0.539score
correct
BramVR
Find the mistakes agents keep repeating in this repo and make each one impossible.
SkillAFreshness: AClaude Code +9 - 0.536score
arena
BramVR
Spawn N parallel candidates at the same task, pick a base, graft the strongest parts of the losers into it.
SkillAFreshness: AClaude Code +9 - 0.529score
agent-performance-audit
BramVR
Audit local Codex agent histories for a repository, record separate Claude activity coverage, compare correction and efficiency trends, and generate…
SkillBFreshness: BClaude Code +9 - 0.523score
bram-maintainer-loop-v2
BramVR
Cross-repository maintainer orchestration: Codex app workers, work recovery, dependencies, vision, releases.
SkillBFreshness: BClaude Code +9 - 0.518score
browser-use
BramVR
Browser automation in cmux or signed-in Chrome; fail-closed relay fallback.
SkillBFreshness: BClaude Code +9 - 0.479score
craft-prompt
BramVR
Turn rough notes, source text, or an existing prompt into a production-ready GPT-5.6 prompt through a one-question-at-a-time interview.
SkillCFreshness: CClaude Code +9 - 0.469score
codex-huge-context
BramVR
Codex 1M context: direct OpenAI Responses API route, safe input window, Keychain auth, preflight.
SkillCFreshness: CClaude Code +9 - 0.469score
codex-debugging
BramVR
Codex source debugging: ~/Projects/codex, codex-rs core/tui/exec/cli/app-server/config.
SkillCFreshness: CClaude Code +9 - 0.469score
beeper
BramVR
Local Beeper cache: contact hints, room lookup, WhatsApp/iMessage traces, message FTS.
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 1
- Last commit (this folder)
- Sep 14, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/BramVR/mac-agent-scripts
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
- 0.513score
control-ui
sediman-agent
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillCFreshness: C★ 394Claude Code +9 - 0.357score
control-ui
pstack-ports
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillAFreshness: A★ 2Claude Code +9 - 0.350score
control-ui
v1truv1us
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillBFreshness: B★ 8Claude Code +9 - 0.347score
control-ui
beremaran
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillAFreshness: A★ 1Claude Code +9 - 0.345score
control-ui
Velclaw
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillAFreshness: A★ 1Claude Code +9 - 0.337score
control-ui
MachineLearning-Nerd
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillAFreshness: AClaude Code +9 - 0.337score
control-ui
hasegama
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillAFreshness: AClaude Code +9 - 0.337score
control-ui
zskbot
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillAFreshness: AClaude Code +9 - 0.334score
control-ui
paramcodes
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillAFreshness: AClaude Code +9 - 0.334score
control-ui
jaki95
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillAFreshness: AClaude Code +9 - 0.331score
control-ui
Velclaw
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillAFreshness: AClaude Code +9 - 0.313score
control-ui
oerd
Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI.
SkillBFreshness: BClaude Code +9
More from BramVR
- 0.561score
codex-first
BramVR
Claude Code-only routing: delegate implementation, fixing, exploration, git mechanics to Codex CLI; Claude specs, decides, reviews, verifies.
SkillAFreshness: AClaude Code +9 - 0.541score
architect
BramVR
Sketch types, signatures, and module structure before code, then stay in the loop while implementation fills in.
SkillAFreshness: AClaude Code +9 - 0.541score
create-verification-skill
BramVR
Generate a project-local verification skill that drives your app the way a user does — any language, framework, or platform.
SkillAFreshness: AClaude Code +9 - 0.539score
correct
BramVR
Find the mistakes agents keep repeating in this repo and make each one impossible.
SkillAFreshness: AClaude Code +9 - 0.536score
arena
BramVR
Spawn N parallel candidates at the same task, pick a base, graft the strongest parts of the losers into it.
SkillAFreshness: AClaude Code +9 - 0.529score
agent-performance-audit
BramVR
Audit local Codex agent histories for a repository, record separate Claude activity coverage, compare correction and efficiency trends, and generate…
SkillBFreshness: BClaude Code +9
Cite this page
control-ui skill. Agent Mart. https://agentmart.dev/skills/bramvr-control-ui (last updated 2026-10-24)