ghost
Skill0 starsChanged 5 months agoMITView on GitHub
Drive real native macOS apps and the web fast, invisibly, with zero screen hijack and zero interference. Use for ANY GUI/desktop/browser automation, app-clicking, native-app testing, "use my computer", "click through X", "fill in Y in app Z", scraping, or "open this and look at it". Replaces the built-in computer-use (which hijacks the screen). Ghost runs apps hidden and acts via the accessibility tree with focus-free input, so Fletcher never sees the app, his cursor never moves, his front app never changes, and he can keep typing into his own app at the same time without any collision. Web tasks route to a separate headless browser he physically cannot touch.
10 other projects use a version of this.
Adopted by
Most recently taken up by
- Sumit189/claude-codestheir own version, first seen Nov 1, 2026
- vu1n/pillboxtheir own version, first seen Oct 26, 2026
- dcbruck/claude-skillstheir own version, first seen Oct 20, 2026
- Mindrally/skillstheir own version, first seen Oct 8, 2026
- AceDataCloud/Skillstheir own version, first seen Oct 6, 2026
- conjure-3301/skillstheir own version, first seen Aug 17, 2026
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- Mindrally/skills★ 275same name
- magnus919/agent-skills★ 172same name
- block/ghost★ 43same name
- AceDataCloud/Skills★ 17same name
- Cam3L1/ghost-skill★ 3same name
- vu1n/pillbox★ 3same name
- dcbruck/claude-skills★ 1same name
- Sumit189/claude-codes★ 1same name
- conjure-3301/skills★ 0same name
- slogsdon/skills-vault-knowledge★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 31
After a new window, ghost-ax hide or re-stage.
“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Ghost — invisible, non-interfering, fast computer use
Verified end-to-end (21/21 cross-app test suite: TextEdit, Stickies, System Settings, Finder, live concurrency).
Four guarantees:
- Invisible — the app runs hidden; Fletcher never sees it. AX driving and pixel capture both work on a fully hidden app (
visible=false). - No hijack — cursor never moves, apps never hidden from him, machine never locked, his visible Space never switches.
- No interference — input is written straight into the target UI element via the Accessibility API (no synthetic keystrokes, no focus change). He can type into his own app at the same time; verified zero cross-contamination.
- Fast — AX reads/actions ~0.2–0.3s each; native open→read→close ~2–3s; no screenshot→reason→click loop.
The engine is ghost-ax (~/.claude/skills/ghost/bin/ghost-ax), a focus-free AX tool over already-trusted System Events (no new permission prompt, ever), plus Peekaboo for visual element discovery, plus a headless browser for the web.
Routing — pick the fastest surface
- Web / browser →
mcp__ghost-web__*(headless, isolated Playwright). A separate browser he can't touch; open→read→close in ~1–2s. Use for "open X and look at it", scraping, web forms. Never drive a browser via AX/pixels. - Native macOS apps →
ghost-ax+ Peekaboo (below). - Never the built-in
computer-useunless he explicitly says "use the real computer-use / take my screen".
Run an app INVISIBLY (he never sees it)
- Open hidden:
- Existing file / content:
ghost-ax open "<App>" "/path/file"→ fully invisible, no flash. (Reading an already-running app is also invisible.) - To create NEW content invisibly in a document app: write a temp file and open it (
printf ... > /tmp/x.ext; ghost-ax open "<App>" /tmp/x.ext). This avoids the new-window flash entirely. - Bare
ghost-ax open "<App>"launches hidden and force-hides repeatedly; good for apps you'll only read/act on.
- Existing file / content:
- New windows: creating a brand-new window (File ▸ New) briefly forces the app visible. Two fixes:
prefer opening files / the temp-file trick (no flash); OR use the off-screen stage —
ghost-ax stage "<App>"moves every window onto the invisible virtual display, so windows render off your monitor even when created. After a new window,ghost-ax hideor re-stage. The stage is the zero-flash path for non-file apps (Settings/Calculator). - Act (all focus-free, invisible) — see commands below.
- Close:
ghost-ax quit "<App>".
ghost-ax command reference (focus-free, no prompt, never reveals the app)
Lifecycle: open "<App>" [file] · hide "<App>" · quit "<App>"
Off-screen stage (the virtual display — already set up): ensure-display · stage "<App>" (moves all the app's windows onto the invisible virtual display, dead-centre so macOS won't clamp them back) · shot "<App>" [path] (capture the window)
Input:
type "<App>" "<text>"— insert at the caret of the app's text field (auto-targets the right field)return|tab|clear "<App>"set "<App>" "<role>" "<title>" "<value>"— set a control (checkbox1/0, slider number, field text, popup)press "<App>" "<title>"— focus-free click (AXPress) of a button/link/checkboxaction "<App>" "<title>" "<AXAction>"— any AX action (AXPress,AXIncrement,AXDecrement,AXShowMenu,AXScrollToVisible,AXConfirm,AXCancel,AXRaise)reveal "<App>" "<title>"— scroll an element into viewfocus "<App>" "<role>" "<title>"— focus a field without raising the appmenu "<App>" "<TopMenu>" "<Item>" ["<SubItem>"]— invoke a menu-bar item via AX (focus-free; Peekaboo's ownmenusteals focus, this one doesn't) Read (safe):read "<App>"— text of the focused/main field ·get "<App>" "<role>" "<title>"— a specific element's valueexists "<App>" "<role>" "<title>"→1/0·wait "<App>" "<role>" "<title>" [sec]— block until it appears (use instead of sleeping)dump "<App>"— list every element as a label line, to discover exact titles/roles
Match rules: role = substring of the AX role (AXTextArea,AXButton,AXCheckBox,AXSlider,AXPopUpButton,AXTextField…), "" = any role. title = substring of title/description/value, "" = any. Success prints ok:...; failure prints ERR: ... to stderr and exits non-zero.
Discovering what to click
ghost-ax dump "<App>" (focus-free) or peekaboo see --app "<App>" --json (richer: element IDs + bounds, visual). Use these to get exact titles, then feed press/set/type.
Performance (measured)
AX ops are fast: type/read/exists/wait ~0.2s, press/set ~0.3–0.7s (walks the tree), stage ~0.16s (coord cached in ~/.peekaboo/ghost-stage). The matcher reads only role/title/description (never AXValue — that copies whole text areas and was a 2.4s→0.7s regression). The slow lanes are: app launch ~1–1.5s (macOS floor) and any peekaboo call ~0.5–0.6s startup — so use ghost-ax (AX) over peekaboo wherever possible, and never sleep when a ghost-ax wait will do. For pixel-fallback apps (Calculator) each peekaboo click is ~0.6s; batch with peekaboo run if doing many.
Lightning-fast recipe
- Web:
mcp__ghost-web__*navigate → snapshot/evaluate → close (~1–2s). - Native:
ghost-ax open→waitfor the key element → act →read/peekaboo image→quit. Usewait, never fixed sleeps; AX reads over pixel screenshots.
Isolation — he can't interfere even if he tries
- AX input writes directly into the element and ignores the global keyboard/cursor — his typing on his own Space can't collide (proven concurrently).
- Hidden app = no window on his screen to touch. Headless
ghost-webbrowser = separate process, untouchable. - Virtual display (set up — the full "screen-share" model): BetterDisplay is installed and set to launch hidden at login; a "GhostDisplay" virtual screen renders off the physical monitor.
ghost-ax ensure-displaycreates/connects it on demand (auto-launches BetterDisplay if needed);ghost-ax stage "<App>"moves the app's windows there; capture withghost-ax shotorpeekaboo image --screen-index 1. No permission grant was needed. This is the zero-flash-ever surface for non-file apps, and the place to do the rare pixel-coordinate click (off his physical screen).
Known limits (honest)
- Process name ≠ app name for some apps.
ghost-axtargets the process name (as in Activity Monitor / System Events). Most match (Notes, TextEdit, Finder, Safari, Music, Messages, Maps…); a few differ (e.g. "Visual Studio Code" → process "Code", "Microsoft Word" stays "Microsoft Word"). If a command says "no window", check the process name withosascript -e 'tell application "System Events" to name of every process'. - Icon/symbol buttons (e.g. Calculator's keypad) and some custom/canvas UIs aren't name-addressable via AX → use
peekaboo seeelement IDs, or pixel-coordinate clicks scoped to a parked off-Space window (those briefly take focus — keep the window off his Space). - Rich-text content reading (Stickies/RTF) can return empty from
read; typing/acting still works — verify visually withpeekaboo imageif needed. - Multi-window apps: ghost-ax acts on the front window (
window 1). - Minimising a window can disrupt its AX tree briefly; un-minimise before dumping.
Reference
mcp__ghost__*(Peekaboo) andmcp__ghost-web__*(headless Playwright) are pre-allowlisted and load on Claude Code startup;ghost-axworks immediately via Bash. All three MCP servers verified Connected.- Accessibility + Screen Recording already granted.
~/.peekaboo/config.json:captureFocus: background,savePath: ~/.peekaboo/captures(no Desktop litter). - Peekaboo 3.x beta: if a Peekaboo flag is rejected, run
peekaboo learnorpeekaboo <cmd> --help.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

