dcc-mcp/dcc-mcp-core/python/dcc_mcp_core/skills/ui-control/SKILL.md
ui-control
Infrastructure skill - application UI observation and scoped action tools for DCC-adjacent workflows. Use ui_control__snapshot, ui_control__find, ui_control__act, ui_control__wait_for, and ui_control__stop_computer_use for DCC UI Control when a host UI state is not exposed through native DCC APIs. Use ui_control__record_clip for exact-window, hash-verified gameplay capture. Use the separate, operator-granted ui_control__system_operation only for bounded Windows plug-in setup. Prefer DCC-native s
- Source repository stars
- 39
- Declared platforms
- 0
- Static risk flags
- 0
- Last source update
- 2026-08-04
- Source checked
- 2026-08-04
Decision brief
What it does—and where it fits
Application UI automation primitives for cases where native DCC tools cannot observe or drive the interface state directly.
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/dcc-mcp/dcc-mcp-core --skill "python/dcc_mcp_core/skills/ui-control"Inspect the Agent Skill "ui-control" from https://github.com/dcc-mcp/dcc-mcp-core/blob/874c7b52c12587529827990c497d2c8292e5d875/python/dcc_mcp_core/skills/ui-control/SKILL.md at commit 874c7b52c12587529827990c497d2c8292e5d875. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Workflow Examples
Custom-drawn DCC controls and face shaping: prefer a native rig/parameter tool, then try uicontrolfind for a semantic slider or handle. Only when the canvas, viewport manipulator, or face control is not exposed semantically, enable raw input at adapter startup and use one observ…
Custom-drawn DCC controls and face shaping: prefer a native rig/parameter tool, then try uicontrolfind for a semantic slider or handle. Only when the canvas, viewport manipulator, or face control is not exposed semantic…The second snapshot is mandatory immediately after the drag. Verify the visual result before deriving the next path; one native action consumes the preceding observation even when the face control moved only a few pixel…Modal dialog: snapshot the scoped DCC/app window, find the button by label or role, click with the returned snapshotid, then waitfor the button or dialog root to disappear. Verify completion through a native DCC skill w… - 02
Windows Reference Backend
The Windows backend exposes DCC UI Control through the existing uicontrol tools:
Session color coding: When a sessionid is provided toLast-action marker: A small fading dot (about 16px) appears at the lastScope animation: When a target window is first scoped with - 03
Visual Overlay Enhancements
The DCC UI Control visual overlay includes these features:
Session color coding: When a sessionid is provided toLast-action marker: A small fading dot (about 16px) appears at the lastScope animation: When a target window is first scoped with - 04
Windows desktop availability
Lock, disconnect, and secure-desktop transitions pause live UIA and raw input. They return desktopunavailable without sending input or ending the logical uicontrol session. Stop issuing UI operations, ask the user to unlock or reconnect, and do not poll autonomously. Keep the sa…
DCCMCPUICONTROLCDPPRESET=reuse (default): attach to an existing DevToolsDCCMCPUICONTROLCDPPRESET=isolated: launch Chrome with a temporaryDCCMCPUICONTROLCDPPRESET=auroraview: attach to AuroraView's CDP endpoint. - 05
Evidence Attribution
Successful snapshots and recordings return captureprovenance. Preserve it with every saved or presented image. It identifies the tool, backend, logical session, pixel availability, exact target, output dimensions, capture backend, and whether the bounded PNG was downscaled.
Successful snapshots and recordings return captureprovenance. Preserve it with every saved or presented image. It identifies the tool, backend, logical session, pixel availability, exact target, output dimensions, captu…Pixel snapshots also return a content-addressed artifacts FileRef named ui-control-snapshot--.. Exact-window recordings return the corresponding ui-control-recording--.json manifest FileRef while the bounded frame direc…For native Windows evidence, require backend="windows-ui-control-host" and pixelscaptured=true. A mock or accessibility-only CDP result is useful for tests and semantic inspection but is not native screenshot evidence.…
Permission review
Static risk signals and limitations
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 90/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 39 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- dcc-mcp/dcc-mcp-core
- Skill path
- python/dcc_mcp_core/skills/ui-control/SKILL.md
- Commit
- 874c7b52c12587529827990c497d2c8292e5d875
- License
- MIT
- Collected
- 2026-08-04
- Default branch
- main
View the original SKILL.md
DCC UI Control
Application UI automation primitives for cases where native DCC tools cannot observe or drive the interface state directly.
DCC UI Control is the public capability name. The canonical skill is
ui-control, its tools use the ui_control__* prefix, and configuration uses
DCC_MCP_UI_CONTROL_*. Shell agents use dcc-mcp-cli ui-control; MCP-native
agents call the underlying tools after search and describe.
ui-control is an escape hatch, not the first tool choice. Discover and call a
structured DCC skill, host API, or adapter script first. Enter ui-control only
when that path reports unsupported or capability_missing. Policy denial,
user interruption, authentication, or desktop unavailability are stop
conditions, not fallback signals.
The default backend is the platform-native UI backend: Windows uses the isolated
Windows UI Automation host, while other platforms use the CDP backend. The mock
backend remains available only when a test or adapter explicitly sets
DCC_MCP_UI_CONTROL_BACKEND=mock.
On Windows, the isolated dcc-mcp-ui-control-host.exe is selected automatically.
Bind it at adapter startup with exactly one
DCC_MCP_UI_CONTROL_UIA_PROCESS_ID or DCC_MCP_UI_CONTROL_UIA_WINDOW_HANDLE;
request parameters may narrow that scope but cannot create or widen it.
Whole-desktop and title/process-name-only native sessions are disabled.
Starting with dcc-mcp-core 0.19.65, Host resolution is version-exact and
fail-closed. If DCC_MCP_UI_CONTROL_HOST is present, it must be an absolute
path to a Windows PE whose --version output exactly matches the running
dcc-mcp-core version. If the variable is absent, the client downloads only
dcc-mcp-update-manifest-windows-x86_64.json and
dcc-mcp-ui-control-host-windows-x86_64.exe from the matching
dcc-mcp/dcc-mcp-core GitHub Release tag, requires the manifest version and
asset URL to match that tag, verifies SHA-256, and stores the Host in a
per-user, per-version cache. Concurrent adapter processes share a download
lock. Offline use is allowed only when that exact cached Host and manifest
still pass the same checks; network, proxy, checksum, or version failures
return backend_unavailable and never fall back to another Host or input path.
The discovery pipe and per-session singleton are bound to protocol v3, the
strict package version, and the full Host binary SHA-256. An older detached
Host or a different same-version binary therefore cannot capture a new
client; byte-identical copies at different paths may share one Host. Discovery
coexistence does not widen native input authority: the input-owner mutex and
Esc interruption latch remain version-neutral and shared across all Hosts.
Windows Reference Backend
The Windows backend exposes DCC UI Control through the existing ui_control tools:
| DCC UI Control operation | DCC-MCP tool |
|---|---|
screenshot | ui_control__snapshot |
semantic click, set_text, toggle, set_checked, select_option, focus | ui_control__act with an exact control_id |
raw click, move, double_click, scroll, drag, keypress, game_navigation | ui_control__act with the latest snapshot_id |
| typed HKCU value or symbolic-link ensure | ui_control__system_operation |
| exact-window JPEG frame sequence | ui_control__record_clip |
wait | ui_control__wait_for (accessibility-only condition polling; no repeated pixel capture) |
stop | ui_control__stop_computer_use |
Shell agents use the product-level wrapper, which maps to those tools without requiring a hand-built slug:
dcc-mcp-cli ui-control snapshot --instance-id <id> --json '{"session_id":"ui","process_id":1234}'
dcc-mcp-cli ui-control find --instance-id <id> --json '{"session_id":"ui","label":"Settings"}'
dcc-mcp-cli ui-control act --instance-id <id> --json '{"session_id":"ui","control_id":"settings","action":"click","snapshot_id":"<snapshot_id>"}'
dcc-mcp-cli ui-control system-operation --instance-id <id> --json '{"operation_id":"enable-remote-control"}'
dcc-mcp-cli ui-control record-clip --instance-id <id> --json '{"session_id":"pv","process_id":1234,"duration_ms":5000,"frames_per_second":30,"jpeg_quality":92}'
dcc-mcp-cli ui-control wait --instance-id <id> --json '{"session_id":"ui","condition":{"kind":"control_exists","label":"Preferences"}}'
dcc-mcp-cli ui-control stop --instance-id <id> --json '{"session_id":"ui"}'
Treat instance_id and session_id as separate routing layers. Select the
exact DCC instance_id first; the logical session_id belongs only to that
adapter connection. Different DCC instances may reuse default because the
native host assigns a private connection namespace. Capabilities,
observations, recordings, stop, and disconnect cleanup never cross that
namespace. When multiple matching instances are ready, omitting
--instance-id is an error in the workflow even if a client could guess one.
Multiple exact-window sessions may stay active in one Windows logon session. They share one native input coordinator and global Esc latch, and all input mutations remain serialized. A normal stop releases only the selected logical session; Esc interrupts every active session until explicit user-approved resume. Never use multiple sessions as a way to run simultaneous keyboard or pointer injection.
For record/replay, capture semantic find queries and the following successful
act, never cached control ids or demonstration-time approvals. Compile the
pair to a fresh snapshot -> find -> act -> accessibility-only wait sequence.
The generated workflow remains local and untrusted until reviewed, and every
replay must use its current schema guard plus a new operator grant.
system-operation is a separate, windowless setup path. Before the shared
Windows-session host starts, the operator supplies an exact JSON catalog with
DCC_MCP_UI_CONTROL_SYSTEM_GRANTS_FILE and selects one entry with
DCC_MCP_UI_CONTROL_SYSTEM_GRANT_ID; changing either requires a host restart.
Each request carries only a non-sensitive operation_id; the native host
resolves the corresponding typed operation locally and still requires native
action-time confirmation. Registry values and link paths never enter model
context, tool arguments, or the host pipe. Only HKCU String/DWORD values and
file/directory symbolic links are supported. The operator-owned catalog is
trusted configuration, not a credential store; use an opaque credential broker
or a host-owned secure prompt for secrets. There is no command, deletion,
overwrite, alternate-hive, elevation, UAC, or security-settings form. Stop on
system_operation_not_granted, approval_required, or elevation_required.
The CLI prints compact JSON by default: it keeps routing ids, messages/errors,
observation ids, snapshot metadata, semantic matches, and materialized image
paths while omitting the repeated MCP envelope and full UIA tree. Add
--full-output only for targeted raw protocol or tree diagnostics.
ui_control__record_clip is the canonical evidence-capture primitive, not an
alternate UI-input path. It records only the exact PID/HWND already bound by the
operator, for 1 to 180 seconds at 1 to 60 FPS, through one continuous
Windows.Graphics.Capture session. The native host chooses the output directory,
writes numbered JPEG frames and per-frame SHA-256 values, then commits the
manifest last. Requests cannot choose a path or widen the target. Esc, stop,
desktop loss, target replacement, dimension change, or an incomplete write
fails closed and removes the partial recording. Recording consumes any prior
observation, so take a fresh snapshot before later UI actions.
The primitive intentionally captures no audio and does not edit or encode a
finished trailer. Use game-pv-capture to copy and hash approved shot ranges and
produce capture provenance; use HyperFrames afterward for editorial timing,
titles, transitions, original or licensed audio, and final delivery encoding.
Neither workflow may replace this primitive with title matching, whole-desktop
capture, an external recorder, or GPT/OpenAI Computer Use.
All ui-control tools require the adapter's persistent in-process executor so one
thin named-pipe client survives across snapshot/action calls. The independent
per-Windows-session host owns screenshots, UIA, observation ids, the
Esc stop latch, visible overlay, global input owner, confirmation, and
native input; adapters do not retain an alternate native path.
Every snapshot, recording, find, action, wait, stop, and rejected operation also appends a
redacted ui_control_operation event to the shared DCC-MCP log directory, so
the existing Admin Logs panel can display it without exposing entered text or
screenshot coordinates.
Consecutive Windows UIA snapshots also return a bounded semantic state_delta.
Native action attempts return an action_id, and the next required snapshot uses
cause_action_id to link its changes to that action. This reuses the normal
observe-act-observe loop; do not add screenshots or UIA polling just to obtain
deltas. Admin logs retain the action id and a bounded change summary, not the
full UIA state.
Use semantic UI Automation first: resolve a stable control_id with
ui_control__find, then use click, set_text, toggle, set_checked,
or focus. Use screenshot coordinates and native input only when the required
control is not exposed semantically.
Visual Overlay Enhancements
The DCC UI Control visual overlay includes these features:
-
Session color coding: When a
session_idis provided toui_control__snapshot, each session gets a distinct capsule, corner bracket, and cursor ring color from a 16-color palette. The samesession_idalways produces the same color. This makes multi-session scenarios (e.g., parallel Maya and Blender control) visually distinguishable at a glance. -
Last-action marker: A small fading dot (about 16px) appears at the last click, double-click, drag, or move point and fades to transparent over approximately 2 seconds. This gives the user immediate visual feedback on where the agent last acted.
-
Scope animation: When a target window is first scoped with
ui_control__snapshot, the corner brackets pulse briefly for about 1.5 seconds before settling into the normal breathing rhythm. This provides clear visual confirmation that the DCC window has been captured.
The adapter/operator must bind a trusted DCC target with
DCC_MCP_UI_CONTROL_UIA_PROCESS_ID or DCC_MCP_UI_CONTROL_UIA_WINDOW_HANDLE before
any Windows snapshot or mutation. The host resolves an exact PID/HWND,
validates the caller's Windows session, user, and integrity level, then starts
the prominent non-modal control notice before minting its opaque capability.
Routine session start does not open a confirmation dialog.
When a generic sidecar reports custom instead of an application name, the
notice uses the Host-verified target window title while routing and audit keep
the original DCC type.
The native DCC UI Control boundary imports that PID/HWND as a separate trusted scope, rejects construction without it, and revalidates the resolved native identity before the capsule, every capture, and every action. A request-supplied title, process name, PID, or HWND cannot authorize a different process.
Before a semantic mutation, the host re-resolves the actual descendant control and checks it plus every ancestor back to the scoped root. Password controls, cross-process descendants, and authentication or credential subtrees are hard denied even when the outer DCC window itself is allowed.
Raw pointer and keyboard input have a second gate and are disabled by default:
the operator must also set DCC_MCP_COMPUTER_USE_ALLOW_RAW_INPUT=true in the
adapter process. This environment variable is a hard ceiling: a request cannot
enable allow_raw_coordinates or allow_keyboard_shortcuts while it is unset
or false. Request PID, HWND, title, policy, and environment scopes are
intersected; a request can narrow the trusted target but cannot replace it
with another application. Process-name scopes are observation-only. Never
widen the scope to the desktop.
The Windows backend hard-denies raw type. Enter non-sensitive text only with
semantic set_text against an exact control_id; passwords, authentication
codes, and other credential material require a user hand-off or a host-owned
secure credential flow. The mock and CDP backends may retain backend-specific
type support, so callers must not treat it as a portable Windows action.
Windows keypress also rejects ordinary printable characters, including
Shift-modified and AltGr text. Use it only for navigation/control/function
keys or a genuine Ctrl/Alt shortcut; it is not a one-character text-entry
bypass.
Windows game_navigation is a separate raw-input contract for non-editable
DCC and game canvases. It accepts one to four distinct simultaneous supported
keys (letters, digits, modifiers, navigation keys, punctuation, keypad keys,
and F1 through F24) and an optional duration_ms from 0 through 500
(omitted means a tap). Keys may be separate array items or a + chord. The
native host rechecks the exact PID/HWND, foreground window, focused
non-editable UIA ancestry, explicit absence of both UIA ValuePattern and
TextPattern, and observation immediately before key-down. Unknown keys,
duplicate keys, malformed chords, and unknown pattern metadata fail closed.
System/scope-escape chords remain denied, and risky application shortcuts keep
their confirmation tier. This action does not relax the ordinary printable-key
denial on keypress.
ui_control__act advertises a destructive annotation and accepts an optional
intent consequence hint. The native host independently classifies the UIA
control, focused/pointed control, keyboard chord, and requested intent; the hint
can only raise the tier. An explicit full DCC control grant satisfies tier 2
pre-approval for that exact window and task; otherwise tier 2 and every tier 3
operation use a trusted host-owned Windows confirmation dialog. There is no
agent-supplied confirmed or approved field. A missing or denied required
confirmation returns approval_required.
With that operator-bound exact scope, ui_control__snapshot returns a bounded PNG
through versioned shared memory plus a UIA tree, even when raw input is
disabled. Host absence, protocol mismatch, UIA failure, and capture failure
fail closed with no in-process or alternate-input fallback.
If that exact HWND is valid but minimized or hidden, do not search the desktop
or switch input backends. ui_control__act supports the pre-snapshot actions
get_window_state, restore_window, show_window, and activate_window.
They carry the existing task grant and opaque HWND capability, never accept a
replacement target, and use no pointer or keyboard input. The host revalidates
PID/HWND ownership and hard target policy, audits each operation, and
invalidates any old observation. After recovery, take a fresh snapshot before
interacting with content.
For native DCC UI Control actions, keep one session_id and use this loop:
- Call
ui_control__snapshotwith the exact target scope. It returns a PNG image, asnapshot_id, and observation metadata for that window generation. - Inspect the screenshot and UIA tree. Prefer a semantic action when a stable
control is available. On Windows, enter non-sensitive text only with
set_textand that control's exactcontrol_id. - For visual fallback, call
ui_control__actwith the samesnapshot_idand screenshot-relativex/yorpathvalues. Usekeysforkeypressor Ctrl/Shift/Alt modifiers held during a pointer action. Windowskeypressaccepts navigation/control/function keys and genuine Ctrl/Alt shortcuts, not printable text. Do not use rawtypeon Windows. - Call
ui_control__snapshotafter every native action. Each native action consumes its observation; a newer snapshot or a moved/resized window makes old coordinates stale. - Use
ui_control__wait_forfor a UI condition, then snapshot again to verify. - Call
ui_control__stop_computer_usein the success, failure, and abandoned-task cleanup path so that logical session's capsule and corner brackets are released. The shared hotkey and global input owner remain active while any other exact-window session is active. If stop returnscleanup_pending=true, retry cleanup and do not start another session; the cross-process input owner remains fenced until every pending key/button release is confirmed. Stopping does not clear an Esc interruption latch created during a UI Control session.
The Windows proxy also stops a session after five minutes without a tool call.
That idle lease is a leak-recovery fence, not a replacement for the explicit
stop_computer_use cleanup step.
ui_control__wait_for remains interruptible while polling: Esc, an
explicit ui_control__stop_computer_use, desktop loss, or backend cleanup cancels
the wait without waiting for its condition timeout.
Agents should enter this loop only after a structured DCC operation returns
unsupported or capability_missing; they should not ask the user to manually
perform that missing GUI step. Keep native calls scoped to the same
process_id or window_handle.
Perform one action at a time and re-observe after every action; never chain
guessed coordinates from an old image.
Coordinates are pixels in the returned PNG, which may be scaled down for a
bounded MCP payload; they are not desktop coordinates. Never reuse them across
actions or snapshots. On stale_control or
stale_observation, restart from ui_control__snapshot.
The native session requires a visible, unlocked interactive desktop, a live
target window, and the adapter and DCC process at the same Windows integrity
level. While input control is active, click-through corner brackets mark the
target window and a bottom-center capsule reads DCC UI Control · <app> | Esc to stop. The capsule, brackets, and cursor ring use a
session-specific color when a session_id is provided to
ui_control__snapshot, so multiple parallel sessions are visually distinct.
Pointer actions display a transient cursor marker (and a following marker
during drag) and a small fading dot at the action point so the user can see
where the agent is acting. The corner brackets briefly pulse when the target
is first scoped. The user stops control by pressing Esc. On
user_interrupted, stop immediately, do
not retry, do not switch to another input path, do not change session_id, and
do not automatically start a new DCC UI Control session. The stop is latched across
all DCC adapter processes in the same Windows logon session. Return control to
the user. Resume only through an explicit ui_control__snapshot call with
resume_computer_use=true. The request is idempotent when no interruption is
latched and opens no dialog. After a real Esc interruption, the native host
displays its own confirmation surface before clearing the global latch, so a
model or adapter cannot approve itself. The native backend releases any held keys
or mouse buttons before allowing more input. If Windows disconnects after a
partial injection, those releases remain pending and retain the global input
owner until reconnect makes them confirmable.
Windows desktop availability
Lock, disconnect, and secure-desktop transitions pause live UIA and raw input.
They return desktop_unavailable without sending input or ending the logical
ui_control session. Stop issuing UI operations, ask the user to unlock or
reconnect, and do not poll autonomously. Keep the same session_id; structured
DCC skills and MCP calls may continue only while the host adapter remains
ready.
Never target LockApp, Windows Security, credential/authentication/password
manager windows, the Windows Run dialog, terminals, PowerShell, or cmd.
These are hard backend-enforced boundaries and must not be bypassed by another
UI automation path. A DCC application's own script editor remains in scope
because its target process is still the bound DCC process.
An ordinary user process cannot display the DCC UI Control capsule over the
Windows lock screen or secure desktop. After the user unlocks or reconnects,
discard all prior snapshot, observation, and control ids and call
ui_control__snapshot again with the same exact target scope. A successful fresh
snapshot re-establishes the corner brackets/capsule; resume_computer_use is still only
for an explicit post-interruption resume. Run the DCC in a dedicated, always-unlocked VM
when Windows GUI control must continue without interruption.
DCC UI Control executes on the adapter host, inside the specific interactive
Windows logon session that owns the DCC process. A central gateway routes the
tool call; it does not own the screenshot coordinate space. Never apply
coordinates captured on the gateway, another machine, or another logon session
to a remote DCC. An RDP disconnect or Windows session switch returns
desktop_unavailable and retains the logical session. Reconnect to the DCC's
session, then take a fresh exact-target snapshot before any UI action.
The returned image is bounded to the scoped target window; it is never a whole-desktop screenshot. That window may occupy or span monitors whose virtual desktop origins are negative and whose DPI scales differ. Continue to send coordinates relative to the returned PNG; the backend maps them through that observation's source rectangle and DPI metadata. A monitor add/remove, display-layout change, resolution change, or DPI/scaling change invalidates the observation. Discard its ids and take a fresh snapshot. The capsule follows the scoped target window across monitors in that same logon session.
CDP presets:
DCC_MCP_UI_CONTROL_CDP_PRESET=reuse(default): attach to an existing DevTools endpoint first so the current browser profile, cookies, and tokens can be reused. SetDCC_MCP_UI_CONTROL_CDP_URLfor an explicit HTTP or WebSocket CDP endpoint, or expose Chrome onDCC_MCP_UI_CONTROL_CDP_PORT/ port9222.DCC_MCP_UI_CONTROL_CDP_PRESET=isolated: launch Chrome with a temporary--user-data-dirfor hermetic tests and demos.DCC_MCP_UI_CONTROL_CDP_PRESET=auroraview: attach to AuroraView's CDP endpoint. It usesDCC_MCP_UI_CONTROL_AURORAVIEW_CDP_PORT, thenAURORAVIEW_CDP_PORT, thenDCC_MCP_UI_CONTROL_CDP_PORT, and finally port9222.DCC_MCP_UI_CONTROL_CDP_PRESET=edge: attach to or launch Microsoft Edge via CDP. It usesDCC_MCP_UI_CONTROL_EDGE_CDP_URL/_PORTbefore the shared CDP URL/port, andDCC_MCP_UI_CONTROL_EDGE_PATHwhen launching.DCC_MCP_UI_CONTROL_CDP_PRESET=agent-browser: use Vercel'sagent-browserCLI, reading its CDP WebSocket URL throughagent-browser get cdp-urlafteragent-browser open about:blank. Override the binary withDCC_MCP_UI_CONTROL_AGENT_BROWSER_BIN; this preset is suitable for CI whenagent-browser installhas provisioned Chrome for Testing.
Evidence Attribution
Successful snapshots and recordings return capture_provenance. Preserve it
with every saved or presented image. It identifies the tool, backend, logical
session, pixel availability, exact target, output dimensions, capture backend,
and whether the bounded PNG was downscaled.
Pixel snapshots also return a content-addressed artifacts FileRef named
ui-control-snapshot-<session>-<snapshot>.<ext>. Exact-window recordings return
the corresponding ui-control-recording-<session>-<recording>.json manifest
FileRef while the bounded frame directory remains host-owned. Treat the
artefact://sha256/... URI as authoritative; local image paths are materialized
views. The existing Admin artifact API and Reliability panel index these refs by
digest, DCC type, session, backend, and capture id for 24 hours.
For native Windows evidence, require
backend="windows-ui-control-host" and pixels_captured=true. A mock or
accessibility-only CDP result is useful for tests and semantic inspection but
is not native screenshot evidence. Unity Game View captures, RenderDoc exports,
ImageGen output, and files later opened with an image viewer are separate
sources; never label them as UI Control evidence.
The exact-window PNG intentionally excludes the capsule, corner brackets, and
cursor marker because they are separate safety overlay windows. Their absence
inside the PNG does not prove UI Control was inactive; use
capture_provenance plus the matching redacted ui_control_operation audit
event. The audit event carries the same snapshot_id without recording text or
coordinates.
For acceptance runs, use one meaningful UI Control session_id, route every
measured CLI call with --require-gateway, and use one stable
--agent-session-id. These are separate namespaces. If provenance reports
downscaled=true, prefer semantic find; enlarge the target and take a fresh
snapshot before using coordinates on small controls.
Workflow Examples
Custom-drawn DCC controls and face shaping: prefer a native rig/parameter tool,
then try ui_control__find for a semantic slider or handle. Only when the canvas,
viewport manipulator, or face control is not exposed semantically, enable raw
input at adapter startup and use one observation-fenced drag. Coordinates and
the path below must come from the latest returned PNG; never infer them from an
older frame. keys may hold Ctrl, Shift, or Alt for pointer actions when the
DCC uses those modifiers for fine adjustment or an alternate manipulation
mode.
dcc-mcp-cli ui-control snapshot --instance-id <id> --json '{"session_id":"face-shape","process_id":1234}'
dcc-mcp-cli ui-control act --instance-id <id> --json '{"session_id":"face-shape","process_id":1234,"action":"drag","intent":"ordinary_edit","button":"left","keys":["Shift"],"path":[{"x":612,"y":428},{"x":628,"y":424},{"x":646,"y":419}],"duration_ms":350,"snapshot_id":"<latest-snapshot-id>"}'
dcc-mcp-cli ui-control snapshot --instance-id <id> --json '{"session_id":"face-shape","process_id":1234}'
The second snapshot is mandatory immediately after the drag. Verify the visual result before deriving the next path; one native action consumes the preceding observation even when the face control moved only a few pixels.
Modal dialog: snapshot the scoped DCC/app window, find the button by label or
role, click with the returned snapshot_id, then wait_for the button or
dialog root to disappear. Verify completion through a native DCC skill when
possible.
Settings panel: snapshot, find the labeled field or checkbox, set_text /
toggle / set_checked, click Apply, then wait_for a status label such as
Applied and snapshot again. Typed text is redacted from audit unless policy
allows sensitive values. Use intent: account_or_access_change for a remote
control/connection switch; the host also recognizes that label and always
confirms it. Non-sensitive account fields are in scope, but password controls
remain a user hand-off or application-owned OAuth/browser flow.
Recovery: on missing_window, confirm process/window scope instead of widening
to the desktop. On timeout, inspect the last snapshot and either wait once
more with a justified budget or switch to host diagnostics.
Alternatives
Compare before choosing
HKUDS/Vibe-Trading
strategy-generate
Create, modify, and optimize quantitative trading strategies, then backtest and evaluate them.
AI-Unified-Process/marketplace
browserless-test
Creates Vaadin Browserless server-side unit tests for Vaadin views covering navigation, component interactions, form validation, grid operations, and notifications. Use when the user asks to "write Browserless tests", "write Vaadin UI unit tests", "unit test a Vaadin view without a browser", "create view tests with the official Vaadin testing framework", or mentions Browserless testing, SpringBrowserlessTest, browserless-test-junit6, UI Unit Testing, or server-side Vaadin testing.
freenet/freenet-agent-skills
dapp-builder
Build and maintain decentralized applications on Freenet using river as a template. Guides through designing contracts (shared state), delegates (private state), and UI, and through upgrading a live dApp safely. Use when user wants to create a new Freenet dApp, design contract state, implement delegates, build a Freenet-connected UI, OR upgrade an existing dApp — bump freenet-stdlib, ship a new contract/delegate version (v2), fix a bug that re-keys the WASM, or migrate state across a contract/de
mgiovani/cc-arsenal
team-review
Multi-agent review team: architecture, security, performance, testing, style, docs/UX, plus an adversary that cross-examines the other 6, for security-sensitive, architectural, or large PRs (15+ files) where a single-agent pass risks missing cross-cutting issues. Use for auth/payments/PII changes, schema/pattern changes, compliance sign-off, or when asked to 'get the review team on this' / 'multi-agent review' / 'thorough review before merge'. For a standard PR or a quick pre-merge check, use /r