agent-activity
Streams what the agent is doing into the room, as rows the desktop client renders in an **events drawer** above the composer (collapsed: avatar, pulsing dots,…
GUI control for macOS apps via mediar-ai's mcp-server-macos-use. Click, type, scroll, key-press, open apps — driven by accessibility tree, works in non-interactive Claude Code mode. Use this for any Sutando task that needs to drive another macOS application (Safari, Zoom, Mail,
$ npx -y skills add sonichi/sutando --skill macos-use --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/macos-useContext preview
The summary Claude sees to decide when to auto-load this skill.
GUI control for macOS apps via mediar-ai's mcp-server-macos-use. Click, type, scroll, key-press, open apps — driven by accessibility tree, works in non-interactive Claude Code mode. Use this for any Sutando task that needs to drive another macOS application (Safari, Zoom, Mail,
name: macos-use description: "GUI control for macOS apps via mediar-ai's mcp-server-macos-use. Click, type, scroll, key-press, open apps — driven by accessibility tree, works in non-interactive Claude Code mode. Use this for any Sutando task that needs to drive another macOS application (Safari, Zoom, Mail, Finder, etc.)." user-invocable: false
Drive macOS applications from Claude Code via mediar-ai's [mcp-server-macos-use](https://github.com/mediar-ai/mcp-server-macos-use). A Swift MCP server that wraps the macOS Accessibility API. Unlike Claude's built-in `computer-use`, this works in non-interactive mode (which is how Sutando's proactive loop and task bridge run), does not hold a machine-wide lock, and does not require a Pro/Max subscription.
Prefer this skill over:
After install, these appear as `mcp__macos-use__*` in Claude Code:
| Tool | Parameters | Purpose | |------|------------|---------| | `open_application_and_traverse` | `identifier` (name/bundle ID/path) | Launch or activate an app, return its a11y tree | | `click_and_traverse` | `pid`, `x`, `y` | Click at coordinates in a target app, return updated tree | | `type_and_traverse` | `pid`, `text` | Type into the frontmost element | | `press_key_and_traverse` | `pid`, `key` | Press a named key (Return, Tab, Escape, arrows, ...) | | `scroll_and_traverse` | `pid`, `direction`, `amount` | Scroll in a direction | | `refresh_traversal` | `pid` | Re-read the a11y tree without acting |
Every tool returns an accessibility-tree snapshot of the target app — structured UI elements with roles, titles, positions, and identifiers. No pixels. Model reasons over the tree, not over screenshots.
Two steps, one-time:
# 1. Build the Swift binary (~35s) bash skills/macos-use/scripts/build.sh # 2. Register with Claude Code's MCP config (writes ~/.claude.json) bash skills/macos-use/scripts/install-mcp.sh # 3. Grant Accessibility permission # System Settings → Privacy & Security → Accessibility # Click +, navigate to ~/.macos-use-mcp/.build/release/mcp-server-macos-use, enable.
Restart Claude Code after install for the MCP tools to appear.
After install + restart:
Sutando, open Safari and navigate to https://github.com/sonichi/sutando
You should see Claude invoke `mcp__macos-use__open_application_and_traverse` with `identifier: "Safari"`, then `type_and_traverse` into the URL bar, then `press_key_and_traverse` with `Return`.
My AI Stand — Realtime by Day, Rewriting Itself by Night. Summon my AI superpower. Voice, vision, screen, meetings, calls when I'm engaged. Learns my patterns, ships its own code when I'm not. Runs across my Macs, interacts with people & their Stands.
Repo: sonichi/sutando
Streams what the agent is doing into the room, as rows the desktop client renders in an **events drawer** above the composer (collapsed: avatar, pulsing dots,…
Local Agent Registry — a standalone, dependency-free service that tracks running Claude Code (and other) agent instances. Agents self-register on startup and…
**Prefer the `ag2-space` MCP tools when they are connected and the room exposes them** — availability is per-room and per-actor, so check…
Deterministic final-answer normalizer — a last-step pass for any task that ends in a *precise* answer (a number, a short string, a comma-list). Applies the…
Transcribes audio files and voice notes to text via Gemini 2.5-flash. Integrates with Slack, Discord, and Telegram bridges so voice clips surface as readable…
Act back on the owner's Bee wearable — the TOOL half of the Bee integration (channels-vs-tools split). The Bee CHANNEL (ag2-sparrow's `sources/bee.py` watcher)…