app-control

app-control is a skill for Claude Code, Codex from vellum-ai/vellum-assistant. It costs 18 tokens per session (801 once invoked), scanned A, original, MIT.

A control layer for driving one named macOS app with keyboard, mouse, and screenshots, including apps whose interface is not exposed through normal system controls.

In plain words
What is it for?
Driving a specific difficult-to-automate macOS application by observing its screen and sending raw input.
Why use it?
It helps when standard macOS interface controls cannot see or operate an emulator, game, OpenGL canvas, or custom-rendered Electron app.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Driving a specific difficult-to-automate macOS application by observing its screen and sending raw input.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/vellum-ai/vellum-assistant/app-control
About the project

Vellum Assistant is a personal AI assistant that remembers information about users, learns their preferences, and takes actions across connected apps. It is intended for people who want an assistant that can manage conversations, unfinished work, and proactive notifications over time. The catalogue skills, hooks, instruction, and setting configure or extend how the assistant works.

vellum-ai/vellum-assistant · 1,214 stars · on GitHub · vellum.ai

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add vellum-ai/vellum-assistant --skill app-control
Clone the repo
git clone --depth 1 https://github.com/vellum-ai/vellum-assistant

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for app-control

README.md
[![agentmods](https://agentmods.dev/badge/skills/vellum-ai/vellum-assistant/app-control/github.svg)](https://agentmods.dev/skills/vellum-ai/vellum-assistant/app-control)
Your own site
<a href="https://agentmods.dev/skills/vellum-ai/vellum-assistant/app-control"><img src="https://agentmods.dev/badge/skills/vellum-ai/vellum-assistant/app-control/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for app-control

Your own site · 80×15
<a href="https://agentmods.dev/skills/vellum-ai/vellum-assistant/app-control"><img src="https://agentmods.dev/badge/skills/vellum-ai/vellum-assistant/app-control.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 18 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 801 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00018 $0.00801
Opus 5 $0.00009 $0.00400
Sonnet 5 $0.00004 $0.00160
Haiku 4.5 $0.00002 $0.00080

Measured 10d ago against content hash 0d6f28c522b3, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

app-control scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

The scan reads SKILL.md. This mod also ships 9 executable files (tools/app-control-click.ts, tools/app-control-combo.ts, tools/app-control-drag.ts, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

assistant/src/config/bundled-skills/app-control/SKILL.md · 77 lines

How it starts

The opening of the file, as written. The whole thing — 77 lines — stays where its author put it; the contents beside it link to each section on GitHub.

This skill exposes the app_control_* proxy tools for driving a single named macOS application via raw input — keyboard, mouse, screenshot — that bypasses the system Accessibility tree. Use it only when explicitly directed to a specific app where the AX tree is unhelpful (emulators, games, OpenGL canvases, custom-rendered Electron apps). For general macOS UI navigation prefer the computer-use skill.

Tools in this skill are proxy tools — execution is forwarded to the connected macOS client, never handled locally by the assistant.

Cadence

Take 2-3 actions per turn, then yield with a short narration so the user can interject. Do not chain long sequences without surfacing what you are doing.

Always observe before acting

Call app_control_observe before your first input action whenever the screen state matters (e.g. you need to know what is on screen, where a UI element is, or whether the app is even running). Re-observe after actions that may have moved the window or changed visibility.

observe waits a short settle delay (default ~200ms) before capturing so the target app and the WindowServer can flush pending input and composite a fresh frame. If the captured screenshot looks one input behind the latest state (common with emulators or other slow-feedback apps), pass a larger settle_ms. For static UIs where you just want a quick snapshot, pass settle_ms: 0 to skip the wait.

Input choice

  • Prefer app_control_sequence over multiple back-to-back app_control_press calls when sending an ordered batch of presses (e.g. menu navigation, repeated movement). Sequence runs in a single round-trip — the target app is activated once at the start and the keys are sent serially without any window for keyboard focus to drift to another app between presses. Each step may carry its own duration_ms (hold) and gap_ms (pause after).
  • Prefer app_control_combo over rapid sequential app_control_press for simultaneous inputs (e.g. cmd+shift+4). combo holds every key at once; sequential presses interleave key-down and key-up events.
  • Use app_control_type for literal text into a focused field.

Read the full file on GitHub · 77 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 77 lines · 18 tokens per session scan A 0d6f28c522b3

Subscribe to this mod's changes

app-control is a skill published in the GitHub repository vellum-ai/vellum-assistant (1,214 stars, last pushed today), licensed MIT. It adds 18 tokens to every session and 801 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

lictor-security-check

Pre-release security audit for ANY project — AI-built or hand-written, web or mobile. Scans the codebase for the full range of real-world risks that get apps breached: leaked API & AI-provider keys, exposed configs/secrets, broken auth & access control (IDOR), injection (SQL/XSS/command), SSRF, open databases & cloud…

Raffa-jarrl/Lictor-AI · 135 tokens

lictor-rotate

Walks the user through rotating a leaked API key — step by step, provider-specific. Knows the exact URL to visit, the exact button to click, and how to verify the rotation worked. Supports Stripe, OpenAI, Anthropic, Google Cloud / AI Studio, GitHub, AWS, Slack, Supabase, Firebase, Postmark, and generic OAuth providers.

Raffa-jarrl/Lictor-AI · 80 tokens

lictor-explain

Takes any security finding, error message, or jargon-heavy security advice and explains it in plain English. Use this when someone is confused by what /lictor-security-check found, or when they got a security warning from another tool and don't understand it.

Raffa-jarrl/Lictor-AI · 56 tokens

lictor-fix-it

Applies the fixes recommended by /lictor-security-check, with the user's explicit permission for each change. Walks through findings one at a time, shows the proposed change, gets approval, applies, runs tests if available, and moves on. Some fixes (rotating leaked credentials) require the user to act outside Claude …

Raffa-jarrl/Lictor-AI · 75 tokens

continual-learning

Nightly refinement of an existing per-repo review-style prompt using this reviewer's own finding outcomes. Read confirmed (resolved-by-commit / thumbs-up) and dismissed (thumbs-down) findings, promote the bug patterns the team actually fixes, demote the false-positive patterns, reconcile against the current prompt…

langchain-ai/open-swe · 89 tokens

ha-logs

A read-only troubleshooting skill for querying Hope Agent’s local SQLite databases, which store logs, conversations, and background-job status.

shiwenwen/hope-agent · 183 tokens