junmo-kim/mac-local-vision/macvis

Claude Code and agent skill by junmo-kim/mac-local-vision

Trust tier 3
  • community
Source check pending

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

On-device, zero-token vision for AI agents (mac-local-vision, macOS). Read text from an image / screenshot / PDF (OCR), find the exact click-pixel of a word for E2E/UI assertions, scan QR codes and barcodes, tag/classify an image, group photos by face, flatten a photographed document, extract a document's structured layout, segment an object into a mask, or ask a question about an image. Apple Vision + Foundation Models, fully on-device — no cloud, no vision tokens, ~0.3s per call. Reach for this whenever an agent needs to read or locate something in a screenshot/image instead of sending it to a cloud vision API, or needs to generate a QR code or straighten a photographed document/receipt. Triggers: read text from an image, OCR a screenshot/PDF, find a button's pixel coordinates, click-point for E2E, assert text is on screen, scan a QR code, read a barcode, decode a barcode payload, generate a QR code, create a QR code image, classify/tag an image, what's in this image, find a document's corners, flatten/straighten/scan a photographed document or receipt, perspective-correct an image, extract a table from an image, parse a document's structure, read a receipt/invoice layout, segment an object, create an object mask from a point or box, on-device/local vision, sort photos by person. Apple Silicon + macOS 26+ (`ask` and `segment` need macOS 27).

Install

npx vskill@latest install junmo-kim/mac-local-vision/macvis

SKILL.md

macvis

macvis reads and locates things in images, on-device. Put the binary on your PATH (repo README → Install) and call it. Output is YAML by default; add --format json to parse.

Which command

You needCommand
Read all text from an image / screenshot / PDFmacvis ocr <path>
The click-point (x,y) of a specific word — E2E / UI targetingmacvis find <path> --target "<text>"
Scan a QR code or barcode (any symbology)macvis barcode <path>
Scan for a QR code only (skip other symbologies)macvis qr <path>
Tag/classify what an image contains (labels, not free text)macvis classify <path>
Generate a scannable QR code PNGmacvis make-qr "<text>" --out <path>
Find a document's four corners in a photomacvis document-bounds <path>
Flatten/straighten a photographed document into a scanmacvis rectify-document <path> --out <path>
Extract a document's title/paragraphs/tables/lists with layout preservedmacvis document-ocr <path>
Create an object mask from one point or box — macOS 27macvis segment <path> --point <x,y> --out <mask.png>
To interpret an image (describe, reason, summarize) — macOS 27macvis ask <path> --prompt "<question>"
To extract structured JSON fields from an image (schema-constrained) — macOS 27`macvis ask <path> --prompt "<question>" --schema <path\inline-json>`
Group photos by personmacvis sort-faces <dir>
Find photos matching a given facemacvis find-person --target <face.jpg> --dir <dir>
Check what runs on this machinemacvis doctor

Rule of thumb: ocr to read everything, find to get one word's pixel to click/assert, document-ocr when the layout (table cells, list items) matters rather than flat lines, ask only when you need interpretation rather than raw text.

Examples

bash
macvis ocr ./receipt.png # full text + per-line entries
macvis ocr ./receipt.png --words --format json # per-word pixel boxes, JSON
macvis find ./screen.png --target "Submit" # → x,y click center + bounding box
macvis find ./screen.png --target "결제하기" # non-Latin works (locale-aware)
macvis ocr ./doc.pdf --page 2 # PDF page (rasterized)
macvis barcode ./ticket.png # scan every QR/barcode symbology
macvis qr ./ticket.png # scan for a QR code only
macvis classify ./photo.jpg # tag against a 1,303-label taxonomy
macvis make-qr "https://example.com" --out ./qr.png # write a scannable QR PNG
macvis document-bounds ./receipt.jpg # find a document's 4 corners
macvis rectify-document ./receipt.jpg --out ./flat.png # flatten a photographed document
macvis document-ocr ./invoice.png # title/paragraphs/tables/lists, structured
macvis segment ./photo.jpg --point 640,420 --out ./mask.png # top-left pixel seed → grayscale mask
macvis ask ./receipt.png --prompt "extract the fields" --schema ./receipt-schema.json # structured JSON answer
macvis sort-faces ./photos --output-dir ./by-person # cluster a folder of photos by person

Reading the output

  • stdout = data, stderr = structured errors (error / reason / hint) — keep them apart.
  • Exit codes: 0 ok · 1 ran but no result (e.g. find miss) · 64 bad args ·

70 permanently unavailable · 71 retry later.

  • `find`: always check found — it's false (with exit 1) when the target isn't on

screen. x,y is the click center; approximate: true means the box is the whole text line, not word-tight.

  • PDF input: output starts with page and page_count. A PDF without --page means page 1 only — read every page with --page 1 … --page <page_count>. An out-of-range page fails with page_out_of_range (exit 64).
  • Recognition languages auto-detect from the system locale; override with --lang ko-KR,en-US.
  • find filters at --min-confidence 0.3 by default (ocr keeps everything); lower it for blurry/headless renders.
  • segment never downloads model assets implicitly. If it returns

segment_unavailable/assets_not_ready, use --download-assets only when the user explicitly wants to install the assets, then retry without changing the point/box seed.

  • doctor.segment: "unknown: assets_not_ready" means Vision has not established readiness

in this process, not that the model is necessarily missing. Try a normal segment call first.

  • segment reports native mask width/height separately from input image_width/image_height (upright pixels after PDF rasterization). Mask resolution varies by quality. Map input pixels with x * width / image_width, y * height / image_height, or resize the mask to the input raster before overlaying. Foreground is white, background black.

classify scores an image against Vision's 1,303-label taxonomy (identifiers are unlocalized technical names, e.g. outdoor/document/people — not meant for direct UI display). Vision scores every label for every image, so results are filtered by --min-confidence (default 0.1) and capped by --top (default 20) before they come back; label_count: 0 is a valid outcome (not an error), same as barcode's code_count: 0.

Full flags for any command live in macvis <command> --help (the canonical, code-generated reference). To drive it as a tool server instead of the CLI, run macvis mcp — same engine, exposes ocr / find / barcode / qr / classify / make-qr / document-bounds / rectify-document / document-ocr / segment / doctor / ask as MCP tools. On macOS 26, ask and segment return structured availability errors.

Security

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

Quality evaluation

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

Source

Popularity

Repository stars
60
Repository forks
4
7-day trend score
21

Stars and forks are for the whole GitHub repository, not this skill alone. 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/junmo-kim/mac-local-vision/macvis/badge)](https://verified-skill.com/skills/junmo-kim/mac-local-vision/macvis)

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