DCC-CUA — Project UI Control Router
SkillWeb & browsingProject-owned DCC-CUA routing skill for bounded application UI automation. Use this skill whenever the user says dcc-cua, DCC CUA, our dcc-cua, or 我们的 dcc-cua, including browser and other non-DCC UI tasks. These phrases are a hard route to the dcc-mcp project UI Control stack and take precedence over generic Codex/OpenAI Computer Use, the computer-use Skill, @oai/sky, and Browser/Chrome plugins. If DCC-CUA is unavailable, repair or report the project route; never silently fall back to a generic computer-use provider.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the DCC-CUA skill
What this skill tells your AI
The instructions your AI receives, as published by dcc-mcp/dcc-mcp-core in skills/dcc-cua/SKILL.md and read by ahel’s review.
Use this Skill as the canonical route whenever the user explicitly names
dcc-cua, DCC CUA, our dcc-cua, or 我们的 dcc-cua.
Non-substitution contract
An explicit DCC-CUA request is a hard routing boundary, regardless of whether the target is Maya, Chrome, a browser, or another desktop application.
- Use the project-owned
dcc-cuaruntime and DCC-MCPui-controlsurface. - Never load or call generic Codex/OpenAI Computer Use, the
computer-useSkill,@oai/sky, or Browser/Chrome automation plugins for that request. - Never treat a DCC-CUA runtime, binding, readiness, or permission failure as permission to change providers.
- Repair the project route when safely possible. Otherwise report the exact blocker and stop.
- Use a generic provider only after the user explicitly retracts the DCC-CUA requirement or explicitly requests that provider by name.
This boundary is provider selection, not an authorization bypass. DCC-CUA task grants, target binding, interruption, and confirmation policy still apply.
Automatic route from search
The contract above also covers requests that never name dcc-cua. When a
skill or tool search returns no usable interface, the search surface attaches
fallback advice naming this Skill, with a reason code:
| reason | meaning |
|---|---|
no_candidate | nothing in the catalog matched the request |
low_confidence | the closest matches are lexical near-misses, not a real interface |
no_executable_interface | the closest match is documentation-only and declares no callable tool |
The advice is additive: the hits are still returned, and the routing criteria never reorder or drop them.
The advice is blocked, with reason code cua_runtime_unavailable, when this
runtime is not usable. A blocked response is a blocker to report or repair —
it is not permission to switch provider. The non-substitution contract above
applies unchanged to the automatic route.
Ranking is deliberately not involved. This Skill declares
layer: infrastructure, which the search rank policy demotes to 0.35 so it
stays out of neutral discovery. That must not be "fixed" by raising the
coefficient: the route is explicit, not a ranking effect.
Runtime preflight
Use the official component contract; do not download an arbitrary executable:
dcc-mcp-cli components status dcc-cua
dcc-mcp-cli components ensure dcc-cua --yes
dcc-cua manifest
dcc-cua ping
Run components ensure only when installation or repair is authorized. It
consumes the official versionless manifest, verifies the declared SHA-256, and
reconciles the independently released companion executable.
For semantic application profiles:
dcc-cua profiles
dcc-cua profile --id <profile-id>
Do not invent a profile ID. Runtime-advertised capabilities are authoritative.
Execution order
- Prefer a typed DCC-MCP host tool when it directly expresses the operation.
- Use DCC-CUA only for the UI behavior that typed host tools cannot expose.
- Bind one exact target with process ID and native window handle whenever the surface supports them.
- Open one scoped session with the minimum task grant required for the work.
- Take a fresh observation before each action that depends on UI state.
- Act using stable semantic control or DOM references when available.
- Wait for a typed state transition and verify the real final state.
- Stop the session on success, failure, interruption, or abandonment.
An input sent acknowledgement is not completion evidence.
For native application menu bars, prefer the negotiated native_menu_path
route through ui_control__act(action="invoke_menu", menu_path=[...]) when a
semantic menu click or Alt mnemonic cannot prove that a popup opened. A menu
invocation invalidates the current observation; honor verification_required
and verify the popup or resulting application state with a fresh snapshot.
DCC-host route
For a registered DCC instance, use the DCC-MCP UI Control tools or their CLI projection:
dcc-mcp-cli load-skill ui-control --instance-id <instance-id> --output toon
dcc-mcp-cli ui-control snapshot --instance-id <instance-id> --json '{"session_id":"ui","process_id":1234,"window_handle":5678}'
dcc-mcp-cli ui-control act --instance-id <instance-id> --json '{"session_id":"ui","control_id":"ok","action":"click","snapshot_id":"<snapshot-id>"}'
dcc-mcp-cli ui-control act --instance-id <instance-id> --json '{"session_id":"ui","action":"invoke_menu","menu_path":["Window","Arrange","Left"]}'
dcc-mcp-cli ui-control stop --instance-id <instance-id> --json '{"session_id":"ui"}'
Use the same exact instance and session throughout the action chain. Do not switch to another DCC process because it looks similar.
Browser and non-DCC route
Browser work remains inside DCC-CUA. Use the Host's typed browser surface and
browser_dom capabilities, not an in-app Browser or Chrome plugin.
- Bind the exact browser PID and window handle first.
- Bind the exact tab/target returned by DCC-CUA; do not infer it from a title alone when an exact target identifier exists.
- Keep connection-scoped sessions and capabilities on one Host connection.
- Use DOM/semantic references from the latest observation rather than stale coordinates.
browser_prepareand existing-profile attachment require both the Host grant and the session task grant advertised by the runtime contract.- Authentication challenges, CAPTCHAs, purchases, account/security changes, and unexpected permission prompts remain trusted human boundaries.
Target and evidence invariants
- Preserve PID and native window handle in observations and audit records.
- Treat a changed PID, window handle, tab target, or session owner as a fresh binding that requires a fresh observation.
- Keep
fullreadiness strict. If only an exact-window or typed-browser route is independently ready, report that route-specific degraded readiness. - Honor Escape/user interruption immediately and do not resume without fresh authorization and observation.
- Do not expose local usernames, internal package paths, browser profile data, credentials, tokens, or unrelated window titles in public evidence.
- Verify success by reading the destination state after the mutation.
Failure behavior
When DCC-CUA cannot complete the request, report:
- the exact component/runtime version,
- the exact target identity that was bound,
- the failing readiness, capability, permission, or action stage,
- the last safe observation or typed error, and
- the safe next repair step.
Do not mention a generic Computer Use fallback unless the user asks for one.
Signals
- GitHub stars
- 48
- Forks
- 4
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
dcc-cua- Source
- github.com/dcc-mcp/dcc-mcp-core
github.com/dcc-mcp/dcc-mcp-core
Related picks
Skill · wshobson
The pick for Pythonpython-pro
Skill · jeffallan
The pick for Pythonbrowser-use
Skill · browser-use
More in Web & browsingwebapp-testing
Skill · anthropics
More in Web & browsingplaywright-cli
Skill · microsoft
More in Web & browsingbenchmark
Skill · affaan-m
More in Web & browsing