Skip to content
Agentmart
Submit a tool

context-drop

Skill by rudyalways

IndexedMIT★ 2
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/rudyalways-context-drop

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

The publisher has not written a description yet.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions: not checked yet.

What's inside

Skill name
context-drop
Description
None
License
MIT
Instructions
41 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Agent Skills spec issues

  • missing YAML frontmatter
  • name: missing
  • description: missing

Files (6)

  • .gitignore
  • Package.swift
  • SKILL.md
  • main.swift · Sources/ax-read/
  • build.sh
  • manifest.json

SKILL.md (first lines)

# Context-Drop AX-Read

Tiny Swift CLI that reads the focused app's text selection via the macOS Accessibility API. Sutando.app's "drop context" action (hotkey configurable via `state/hotkeys.json`) shells out to this binary to capture what you have highlighted.

## What it does

Runs once per invocation and emits a single JSON line on stdout:

```json
{"app":"Discord","window_title":"@sutando — Discord","url":"","selected":"the highlighted text","path":"ax"}
```

`path` values:
- `"ax"` — `AXSelectedText` returned non-empty (native NSTextView path)
- `"clipboard"` — AX returned empty, Cmd+C fallback wrote new clipboard content
- `"none"` — both paths returned empty (or AX was denied)

The Cmd+C fallback uses `NSPasteboard.changeCount` to distinguish "Cmd+C actually wrote something" from "clipboard already had content" — otherwise the previous clipboard contents would be silently reported as the new selection. The prior pasteboard string is restored after the probe so a failed-copy attempt doesn't corrupt the clipboard.

## Build

```bash
bash skills/context-drop/build.sh
```

Produces `skills/context-drop/ax-read`. `src/startup.sh` runs this automatically when the binary is missing or older than the source.

## Why a separate binary instead of inlining in Sutando.app

LSUIElement=YES menu-bar agents (which Sutando.app is) have a TCC attribution chain that can misroute AX queries to the parent bundle even after a re-grant. A separately-signed CLI launched as a child gets its own clean trust binding, and the resulting AX queries succeed consistently. The binary is also reusable by any other tool that needs a one-shot selection read — voice agents, other hotkey handlers, automation scripts.

## Permissions

The first time `ax-read` runs it'll trigger the macOS Accessibility prompt for **Sutando.app** (its parent, who macOS attributes the AX queries to). Approve the prompt; the binding persists until the next codesign identity change. See PR #902 for the full TCC story.

## Relationship to the private `personal-deictic` skill

This skill emits the **shared text-selection subset** of `personal-deictic`'s richer output. The private package additionally captures a screenshot of the focused window and the cursor position for deictic phrases ("this", "here") — those fields stay private. Output schemas overlap on the five fields Sutando.app's `invokeAxRead` consumes (`app`, `window_title`, `url`, `selected`, `path`); `personal-deictic` adds `screenshot_path` and `cursor` for the voice agent's `read_selection` tool.

`Sutando.app::resolveAxReadPath()` tries the private path first (when available) and falls back to this public binary, so users with the private skill keep their richer deictic captures while public users get the text-only path. If anything other than Sutando.app's `dropContext` ever spawns this public binary, it should not assume `screenshot_path`/`cursor` will be present — the contract is the five-field subset only.

From rudyalways/PhonePcLiveAgentsV2, MIT.

Signals

Stars
2
Forks
0
Open issues
0
Last commit (this folder)
Aug 5, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from rudyalways

Cite this page

context-drop skill. Agent Mart. https://agentmart.dev/skills/rudyalways-context-drop (last updated 2026-10-24)