kachofugetsu09/codex-desktop-rev/linux

Claude Code and agent skill by kachofugetsu09/codex-desktop-rev

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Control the Linux desktop through @oai/sky from node_repl. Use for tasks that require screenshots, clicking, dragging, moving the pointer, pressing keys, scrolling, or typing text.

Install

npx vskill@latest install kachofugetsu09/codex-desktop-rev/linux

SKILL.md

Sky Full Desktop API

API Reference

Use this as the supported sky full desktop API surface.

ts
import { sky } from "@oai/sky";
const screenshots = await sky.get_screenshot();
await nodeRepl.emitImage(screenshots[0].data_url);
interface FullDesktopComputerUseClient {
get_screenshot(): Promise<Array<Screenshot>>; // Capture screenshots for the full desktop target.
click(input: ClickInput): Promise<void>; // Click at a desktop coordinate.
drag(input: DragInput): Promise<void>; // Drag through an ordered path of desktop coordinates.
drag_handle(): DragHandle; // Create a drag handle for observing screenshots before releasing the mouse button.
move(input: MoveInput): Promise<void>; // Move the pointer to a desktop coordinate.
press_key(input: PressKeyInput): Promise<void>; // Press a `+`-separated keyboard chord on the desktop.
scroll(input: ScrollInput): Promise<void>; // Scroll the desktop by direction, optionally from a coordinate.
type_text(input: TypeTextInput): Promise<void>; // Type text into the current focus on the desktop.
target: "linux";
}
type Screenshot = {
bytes: Uint8Array; // Raw bytes
data_url: string; // Base64-encoded JPEG data URL
filepath: string; // Local file path
};
type ClickInput = {
click_count?: number; // Number of clicks to perform.
duration?: number; // Milliseconds to hold the mouse button down for each click.
key?: string; // Optional key chord to hold during the click, using the same format as `press_key()`.
mouse_button?: MouseButton; // Mouse button to click.
x: number; // X coordinate on the desktop screenshot.
y: number; // Y coordinate on the desktop screenshot.
};
type DragInput = {
key?: string; // Optional key chord to hold during the drag, using the same format as `press_key()`.
path: Array<Point>; // At least two desktop coordinates to visit in order during the drag.
};
type DragHandle = {
end(): Promise<void>; // Release the mouse button and finish the drag.
move_to(point: Point): Promise<void>; // Move the pressed mouse button to another desktop coordinate.
start(point: Point): Promise<void>; // Press the mouse button at the starting desktop coordinate.
};
type MoveInput = {
key?: string; // Optional key chord to hold while moving, using the same format as `press_key()`.
x: number; // X coordinate on the desktop screenshot.
y: number; // Y coordinate on the desktop screenshot.
};
type PressKeyInput = {
duration?: number; // Milliseconds to hold the key or chord before releasing it.
key: string; // Key or `+`-separated key chord using X Window System keysym-style names, such as `a`, `space`, `Return`, `Tab`, `Control_L+a`, or `Super_L+d`; whitespace around `+` is ignored and common aliases such as `Ctrl`, `Alt`, and `Shift` are accepted.
};
type ScrollInput = {
direction: Direction; // Direction to scroll.
key?: string; // Optional key chord to hold during the scroll, using the same format as `press_key()`.
pixels?: number; // Distance to scroll in pixels.
x?: number; // Optional X coordinate for the scroll origin.
y?: number; // Optional Y coordinate for the scroll origin.
};
type TypeTextInput = {
text: string; // Text to type into the current focus.
};
type MouseButton = "left" | "right" | "middle" | "l" | "r" | "m";
type Point = {
x: number; // X coordinate on the desktop screenshot.
y: number; // Y coordinate on the desktop screenshot.
};
type Direction = "up" | "down" | "left" | "right" | "u" | "d" | "l" | "r";

For a drag, pass at least two points in path. Use drag_handle() when you need to inspect a screenshot before releasing the mouse button. Call start once, then move_to as needed, and always call end in a finally block:

js
var drag = sky.drag_handle();
await drag.start({ x: 200, y: 300 });
try {
await drag.move_to({ x: 400, y: 300 });
await nodeRepl.emitImage((await sky.get_screenshot())[0].data_url);
} finally {
await drag.end();
}

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/kachofugetsu09/codex-desktop-rev/linux/badge)](https://verified-skill.com/skills/kachofugetsu09/codex-desktop-rev/linux)

Something wrong with this skill or its page? Tell us.