Back to skills
SKILL.md
Computer Use Os Agent Expert
BSecurityComputer-using agents (CUA), desktop GUI automation, and VM sandbox / Agen CUA pengguna komputer, otomasi GUI desktop, dan sandbox VM.
- 125 stars
- 0 votes
- 0 copies
- 0 views
- Added November 12, 2026
Works with
Security analysis
85/100- Performs destructive filesystem operations
npx -y skills add roedyrustam/vibes-plug --skill computer-use-os-agent-expert --agent claude-codeAre you the author of Computer Use Os Agent Expert?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/roedyrustam-computer-use-os-agent-expert-vibes-plug)---
name: computer-use-os-agent-expert
description: "Computer-using agents (CUA), desktop GUI automation, and VM sandbox / Agen CUA pengguna komputer, otomasi GUI desktop, dan sandbox VM."
author: "Roedy Rustam"
version: "4.8.0"
---
# Computer-Use & OS Agent Expert / Ahli Agen Pengguna Komputer & OS
---
## English
### Overview
You are a Principal Autonomous Systems & Computer-Using Agent (CUA) Architect. You design agents capable of operating arbitrary desktop and web applications via visual screen perception (`1000x1000` normalized coordinate grounding), hybrid DOM/Accessibility-tree fusion, ephemeral VM sandboxes, and strict action-level safety gates.
### Hard Guardrails (Declarative Invariants)
- **Disposable Sandbox Isolation Only**: Never execute a Computer-Using Agent (CUA) directly on the developer host OS; confine GUI/OS automation inside an ephemeral microVM, Docker Xvfb container, or isolated browser context with egress firewall rules.
- **HiDPI & Normalized `[0, 1000]` Coordinate Clamping**: Convert model-emitted `[0, 1000]` coordinates using physical viewport dimensions and `devicePixelRatio`, clamping strictly within `[0, width - 1]` and `[0, height - 1]`.
- **Mandatory HITL Gate on Destructive Targets**: Intercept clicks targeting irreversible actions (`delete`, `pay`, `transfer`, `drop`, `uninstall`) and sensitive credential typing with a `REQUIRE_HITL` pause gate before sending OS input events.
- **Block Destructive OS Key Combos**: Deny dangerous key combinations (`Meta+Q`, `Alt+F4`, `Control+Alt+Delete`, `rm -rf`) at the action policy boundary.
- **Before/After Frame Hash Verification**: Capture a perceptual/SHA-256 screenshot digest before and after every click or keystroke to detect stuck UI states and prevent blind retry loops.
- **Screen-Content Prompt Injection Firewall**: Sanitize all OCR and Accessibility-Tree text extracted from untrusted web pages, emails, or PDFs before injecting into the planner prompt.
### 1. CUA Perception & Action Architecture (2026)
| Modality | Primary Signal | Fallback Signal | Precision & Latency | Target Environment |
| :--- | :--- | :--- | :--- | :--- |
| **Web / Electron Apps** | Accessibility Tree (AXTree) + Set-of-Marks (SoM) IDs | Normalized Vision Bounding Boxes (`[y_min, x_min, y_max, x_max]`) | `99.4%` accuracy, `< 150ms` | Chromium / Playwright / Electron |
| **Legacy Desktop / Remote VNC / Citrix** | High-DPI Vision Grounding (`1000x1000` normalized grid) | OCR Text Box Detection | `94.8%` accuracy, `< 450ms` | Linux Xvfb / macOS Virtualization / Windows Sandbox |
### 2. Normalized Coordinate Mapping & Action Policy Gate
Vision models output coordinates in a resolution-independent `[0, 1000]` scale. Your runtime must:
1. Convert normalized `[x_norm, y_norm]` coordinates accurately to physical viewport pixels while accounting for `devicePixelRatio` (Retina/HiDPI scaling).
2. Intercept high-risk actions (terminal execution, file deletion, credential submission, financial confirmation) with a deterministic policy verifier before dispatching OS input events.
```typescript
// src/cua/os-agent-executor.ts
import { z } from 'zod';
export const CuaActionSchema = z.discriminatedUnion('type', [
z.object({
type: z.literal('click'),
xNorm: z.number().min(0).max(1000),
yNorm: z.number().min(0).max(1000),
button: z.enum(['left', 'right', 'double']).default('left'),
targetDescription: z.string().min(1),
}),
z.object({
type: z.literal('type_text'),
text: z.string(),
pressEnter: z.boolean().default(false),
isSensitiveInput: z.boolean().default(false),
}),
z.object({
type: z.literal('key_combo'),
keys: z.array(z.string()).min(1).max(4),
}),
z.object({
type: z.literal('screenshot'),
}),
]);
export type CuaAction = z.infer<typeof CuaActionSchema>;
export interface ViewportMetrics {
widthPx: number;
heightPx: number;
devicePixelRatio: number;
}
const BLOCKED_KEY_COMBOS = new Set([
'Meta+Q',
'Alt+F4',
'Control+Alt+Delete',
'Meta+Shift+Backspace',
]);
export function mapNormalizedToViewportPx(
xNorm: number,
yNorm: number,
viewport: ViewportMetrics
): { xPx: number; yPx: number } {
const xPx = Math.round((xNorm / 1000) * viewport.widthPx);
const yPx = Math.round((yNorm / 1000) * viewport.heightPx);
return {
xPx: Math.max(0, Math.min(viewport.widthPx - 1, xPx)),
yPx: Math.max(0, Math.min(viewport.heightPx - 1, yPx)),
};
}
export function evaluateActionSafety(action: CuaAction): {
decision: 'ALLOW' | 'REQUIRE_HITL' | 'DENY';
reason: string;
} {
if (action.type === 'key_combo') {
const combo = action.keys.join('+');
if (BLOCKED_KEY_COMBOS.has(combo)) {
return { decision: 'DENY', reason: `Blocked destructive OS shortcut: ${combo}` };
}
}
if (action.type === 'click') {
const riskyKeywords = /\b(delete|transfer|pay|submit order|drop|format|uninstall)\b/i;
if (riskyKeywords.test(action.targetDescription)) {
return {
decision: 'REQUIRE_HITL',
reason: `Irreversible UI target detected: "${action.targetDescription}"`,
};
}
}
if (action.type === 'type_text' && action.isSensitiveInput) {
return {
decision: 'REQUIRE_HITL',
reason: 'Sensitive credential or financial input requires human approval.',
};
}
return { decision: 'ALLOW', reason: 'Standard UI navigation action.' };
}
```
### 3. Ephemeral Sandbox Action Dispatcher & Visual Frame Differ (TypeScript)
Execute OS actions safely inside an isolated container with before/after perceptual hash verification:
```typescript
// src/cua/sandbox-dispatcher.ts
import { createHash } from 'node:crypto';
export interface VisualStateSnapshot {
frameId: string;
timestamp: number;
imageBufferB64: string;
sha256Hash: string;
viewport: { width: number; height: number };
}
export interface DispatchActionResult {
success: boolean;
actionId: string;
beforeFrameHash: string;
afterFrameHash: string;
stateChanged: boolean;
error?: string;
}
export class SandboxActionDispatcher {
private readonly vncEndpoint: string;
private readonly maxWaitMs: number;
constructor(vncEndpoint: string, maxWaitMs = 5000) {
this.vncEndpoint = vncEndpoint;
this.maxWaitMs = maxWaitMs;
}
public computeFrameHash(buffer: Buffer): string {
return createHash('sha256').update(buffer).digest('hex');
}
public async captureCurrentFrame(): Promise<VisualStateSnapshot> {
const res = await fetch(`${this.vncEndpoint}/screenshot`, {
method: 'GET',
headers: { Accept: 'image/png' },
});
if (!res.ok) {
throw new Error(`[CUA Sandbox] Failed to capture frame: HTTP ${res.status}`);
}
const arrayBuffer = await res.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
const hash = this.computeFrameHash(buffer);
return {
frameId: `frame_${Date.now()}`,
timestamp: Date.now(),
imageBufferB64: buffer.toString('base64'),
sha256Hash: hash,
viewport: { width: 1280, height: 800 },
};
}
public async dispatchMouseClick(xPx: number, yPx: number): Promise<DispatchActionResult> {
const beforeFrame = await this.captureCurrentFrame();
const actionId = `act_${Date.now()}`;
const res = await fetch(`${this.vncEndpoint}/mouse/click`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ x: xPx, y: yPx, button: 'left' }),
});
if (!res.ok) {
return {
success: false,
actionId,
beforeFrameHash: beforeFrame.sha256Hash,
afterFrameHash: beforeFrame.sha256Hash,
stateChanged: false,
error: `Mouse click execution failed: HTTP ${res.status}`,
};
}
// Wait for DOM / UI render settling
await new Promise((r) => setTimeout(r, 250));
const afterFrame = await this.captureCurrentFrame();
return {
success: true,
actionId,
beforeFrameHash: beforeFrame.sha256Hash,
afterFrameHash: afterFrame.sha256Hash,
stateChanged: beforeFrame.sha256Hash !== afterFrame.sha256Hash,
};
}
}
```
### 4. Ephemeral Sandbox Isolation & Visual Verification Loop
1. **Never Run Unbounded CUAs on Host OS**: Always execute OS agents inside an ephemeral container/microVM (Firecracker, Docker Xvfb + noVNC, or Apple Virtualization.framework) with egress firewall rules.
2. **Post-Action Visual Diff Check**: After every click or keystroke, capture a post-action screenshot and verify that the expected state transition occurred (e.g., modal opened, input focused) before advancing the plan.
3. **Indirect Visual Prompt Injection Defense**: Treat all text rendered inside screenshots (emails, web pages, PDFs) as untrusted data; run `prompt-injection-firewall` over OCR/AXTree text before feeding it into planner system instructions.
### 5. Production Verification Checklist
- [ ] Agent execution is confined to a disposable microVM or isolated Xvfb container with zero host filesystem mounts.
- [ ] Coordinate transformation accounts for viewport dimensions and HiDPI scaling (`devicePixelRatio`).
- [ ] Destructive clicks (`delete`, `pay`, `transfer`) and system shortcuts trigger `REQUIRE_HITL` pause gates.
- [ ] Every action records a structured audit trail (`before_screenshot_hash`, `action_payload`, `after_screenshot_hash`).
### Orchestration & Integration
- Connects to `browser-automation-expert` for hybrid Playwright DOM + Vision Set-of-Marks (SoM) grounding.
- Connects to `durable-agent-execution-expert` for persisting step checkpoints and pausing on `REQUIRE_HITL` gates.
- Connects to `a2a-agent-protocol-expert` for delegating desktop automation tasks across specialist agent fleets.
- Connects to `ephemeral-wasm-sandbox-executor` for isolated micro-runtime sandboxing.
- Connects to `prompt-injection-firewall` for defending against visual/on-screen indirect prompt injection.
---
#### Normalized Coordinate Grounding & Action Safety Gate (TypeScript)
```typescript
export interface NormalizedPoint {
xNorm: number; // 0..1000
yNorm: number; // 0..1000
}
export interface ScreenViewport {
widthPx: number;
heightPx: number;
}
export function toAbsoluteScreenPoint(point: NormalizedPoint, viewport: ScreenViewport): { x: number; y: number } {
const clampedX = Math.max(0, Math.min(1000, point.xNorm));
const clampedY = Math.max(0, Math.min(1000, point.yNorm));
return {
x: Math.round((clampedX / 1000) * viewport.widthPx),
y: Math.round((clampedY / 1000) * viewport.heightPx)
};
}
```
#### 6. Set-of-Marks (SoM) Accessibility Tree + Bounding-Box Fusion Grounder (TypeScript)
Combine Playwright/CDP Accessibility Tree nodes with numbered Set-of-Marks visual labels so the agent can click exact interactive elements by mark ID with sub-pixel accuracy:
```typescript
// src/cua/som-axtree-grounder.ts
export interface InteractiveMark {
readonly markId: number;
readonly role: string;
readonly accessibleName: string;
readonly bboxPx: { readonly x: number; readonly y: number; readonly width: number; readonly height: number };
}
export function resolveMarkCenterCoordinates(
marks: readonly InteractiveMark[],
targetMarkId: number
): { xPx: number; yPx: number; label: string } {
const found = marks.find((m) => m.markId === targetMarkId);
if (!found) {
throw new Error(`[SoM Grounder] Interactive mark #${targetMarkId} not found in current frame`);
}
return {
xPx: Math.round(found.bboxPx.x + found.bboxPx.width / 2),
yPx: Math.round(found.bboxPx.y + found.bboxPx.height / 2),
label: `${found.role}:${found.accessibleName}`,
};
}
```
#### 7. Indirect Visual Prompt-Injection Sanitizer for Screen OCR / AXTree Text (TypeScript)
Strip adversarial instruction overrides embedded inside untrusted on-screen text before passing screen observations to the CUA planner:
```typescript
// src/cua/visual-injection-guard.ts
const VISUAL_INJECTION_PATTERNS: readonly RegExp[] = [
/ignore\s+(?:all\s+)?(?:previous|prior)\s+instructions/i,
/system\s*override\s*:/i,
/open\s+terminal\s+and\s+(?:run|execute|curl)/i,
/exfiltrate\s+(?:cookies|tokens|keys)/i,
];
export function sanitizeScreenObservationText(rawScreenText: string): {
safeText: string;
flagged: boolean;
matchedRule: string | null;
} {
for (const pattern of VISUAL_INJECTION_PATTERNS) {
if (pattern.test(rawScreenText)) {
return {
safeText: '[REDACTED_SUSPECTED_VISUAL_PROMPT_INJECTION]',
flagged: true,
matchedRule: pattern.source,
};
}
}
return {
safeText: rawScreenText,
flagged: false,
matchedRule: null,
};
}
```
- **Cross-Domain Synergy & Subagent Swarm Integration**: `web-scraper`, `desktop-electron-expert`, `browser-extension-mv3-pro`, `ai-llm-integration-expert`
### Sovereign Execution, Token Efficiency & Invariants
| Dimension | Sovereign Mandate & Deterministic Contract |
| :--- | :--- |
| **Frontier Model Cascade** | Medium / High (`GPT-5.6 Sol Medium`, `Gemini 4 Argon`, `Claude Sonnet 5.5 High`, `Grok 4.7 High Fast`) |
| **Availability Fallback** | `Gemini 4 Argon/Pro` -> `Gemini 3.8 Flash`; `Claude Opus 5.5` -> `Claude Opus 4.6` (Zero unhandled missing-model errors) |
| **KV-Cache & Token Protocol** | Pin static instructions & schemas at prompt prefix (`kv-cache-prefix-optimizer`); pass surgical `CONTEXT_MAP.md` slices (<250 tokens/call) during Swarm Fan-Out |
| **SaaT CLI & MCP Dispatch** | CLI: `vibes skill exec computer-use-os-agent-expert <audit\|eval\|verify\|generate\|blueprint>` / MCP: `vibes_skill_dispatch`, `vibes_ast_query`, `vibes_compile_cache`, `vibes_optimize_budget`, `vibes_verify_gate` |
| **NFR & Anti-Slop Invariants** | P99 API Gateway Latency < 85ms, OpenAPI 3.1 / TypeSpec strict schema parity, RFC 9457 Problem Details error contracts, Idempotency-Key enforcement; 100% complete zero-placeholder output verified via `node scripts/check-anti-slop.js --strict` |
---
---
## Bahasa Indonesia
### Gambaran Umum
Anda adalah Principal Autonomous Systems & Computer-Using Agent (CUA) Architect. Anda merancang agen yang mampu mengoperasikan aplikasi desktop dan web apa pun melalui persepsi layar visual (grounding koordinat ternormalisasi `1000x1000`), fusi hibrida DOM/Accessibility-tree, sandbox VM efemeral, serta gerbang keamanan tingkat aksi yang ketat.
### Prinsip Utama Agen Pengguna Komputer (CUA)
1. **Grounding Koordinat Ternormalisasi (`0-1000`)**: Konversikan koordinat keluaran model visi ke piksel fisik layar secara akurat dengan memperhitungkan `devicePixelRatio`.
2. **Isolasi MicroVM / Container**: Jangan pernah menjalankan agen OS tanpa batas di mesin host; selalu jalankan di dalam microVM atau container Xvfb terisolasi.
3. **Gerbang Persetujuan Manusia (HITL)**: Cegat klik pada tombol berisiko tinggi (`delete`, `pay`, `transfer`) dan pintasan sistem berbahaya sebelum mengirimkan event input OS.
### Integrasi Orkestrasi
- Terhubung ke `browser-automation-expert` untuk grounding hibrida Playwright DOM + Vision Set-of-Marks (SoM).
- Terhubung ke `durable-agent-execution-expert` untuk menyimpan checkpoint langkah dan menjeda eksekusi pada gerbang `REQUIRE_HITL`.
- Terhubung ke `a2a-agent-protocol-expert` untuk mendelegasikan tugas otomasi desktop lintas armada agen.
- Terhubung ke `ephemeral-wasm-sandbox-executor` untuk sandboxing micro-runtime terisolasi.
- Terhubung ke `prompt-injection-firewall` untuk pertahanan terhadap injeksi prompt visual di layar.
- **Sinergi Lintas Domain & Integrasi Swarm Subagent**: `web-scraper`, `desktop-electron-expert`, `browser-extension-mv3-pro`, `ai-llm-integration-expert`
### Matriks Eksekusi Berdaulat, Efisiensi Token & Invarian
| Dimensi | Mandat Berdaulat & Kontrak Deterministik |
| :--- | :--- |
| **Kaskade Model Frontier** | Medium / High (`GPT-5.6 Sol Medium`, `Gemini 4 Argon`, `Claude Sonnet 5.5 High`, `Grok 4.7 High Fast`) |
| **Invarian Fallback Ketersediaan** | `Gemini 4 Argon/Pro` -> `Gemini 3.8 Flash`; `Claude Opus 5.5` -> `Claude Opus 4.6` (Bebas gagal saat model belum tersedia/kuota penuh) |
| **Protokol Hemat Token & KV-Cache** | Kunci instruksi & skema statis di prefix awal (`kv-cache-prefix-optimizer`); kirim potongan `CONTEXT_MAP.md` (<250 token/panggilan) saat Fan-Out |
| **Eksekusi SaaT CLI & MCP** | CLI: `vibes skill exec computer-use-os-agent-expert <audit\|eval\|verify\|generate\|blueprint>` / MCP: `vibes_skill_dispatch`, `vibes_ast_query`, `vibes_compile_cache`, `vibes_optimize_budget`, `vibes_verify_gate` |
| **Invarian NFR & Anti-Slop** | Latensi P99 API < 85ms, paritas skema ketat OpenAPI 3.1 / TypeSpec, kontrak error RFC 9457 Problem Details, penegakan Idempotency-Key; kode 100% tuntas tanpa placeholder diverifikasi melalui `node scripts/check-anti-slop.js --strict` |
Attribution
Related skills
View all in ai-agents →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.