vision
gridaco/grida/.agents/skills/vision/SKILL.md
Query images with a local Ollama vision model without loading the image into the main agent context. Use when you need to describe a screenshot, check whether rendered content is present, detect overlapping elements, or ask any visual question about a PNG/JPEG/WebP file. Requires Ollama running locally with the Gemma 4 multimodal model (`gemma4` on Ollama). Script: .agents/skills/vision/scripts/ask.py. Trigger phrases: "describe image", "what does this screenshot show", "does the canvas contain content", "check screenshot visually", "look at this image", "any overlapping elements", "vision query".
- Installs packages
What's in it
- Vision — Local Image Querying via Ollama
- When to Use This Skill
- Quick Reference
- Prerequisites
- Model Selection
- System Info
- Behavior
- Typical Agent Workflow
- Troubleshooting
--- name: vision description: > Query images with a local Ollama vision model without loading the image into the main agent context. Use when you need to describe a screenshot, check whether rendered content is present, detect overlapping elements, or ask any visual question about a PNG/JPEG/WebP file. Requires Ollama running locally with the Gemma 4 multimodal model (`gemma4` on Ollama). Script: .agents/skills/vision/scripts/ask.py. Trigger phrases: "describe image", "what does this screenshot show", "does the canvas contain content", "check screenshot visually", "look at this image", "any overlapping elements", "vision query". --- # Vision — Local Image Querying via Ollama Ask natural-language questions about images without passing them to the main agent as visual input. Useful for verifying screenshots, annotating assets, or building automated checks around visual output. ## When to Use This Skill - Describing a screenshot for a PR description or user-facing document - Checking whether an automated browser run produced visible canvas content - Asking "do any elements overlap?" on a rendered output - Any question where the answer is in the pixels but you don't want to use vision tokens in the main context --- ## Quick Reference All commands use `uv run` — dependencies are installed automatically. ```sh SCRIPT=.agents/skills/vision/scripts/ask.py # health check (fast, no image, confirms Ollama + model respond) uv run $SCRIPT --ping # system info — memory, storage, installed models uv run $SCRIPT --info uv run $SCRIPT --memory uv run $SCRIPT --storage # describe an image (default prompt) uv run $SCRIPT path/to/image.png # explicit shortcut uv run $SCRIPT path/to/image.png describe # custom question uv run $SCRIPT path/to/image.png \ --prompt "Do you see any overlapping UI elements?" uv run $SCRIPT canvas.png \ --prompt "Does this canvas contain any designed content, or is it empty?" # optional: pin a specific Gemma 4 tag (default is any installed gemma4) uv run $SCRIPT image.png --model gemma4:e4b # list installed Gemma 4 vision models uv run $SCRIPT --list-models ``` --- ## Prerequisites Ollama must be running locally. The script connects to `http://localhost:11434` and fails immediately if it cannot reach it. ```sh # start Ollama (if not already running) ollama serve # install Gemma 4 (multimodal — required for this skill) ollama pull gemma4 ``` The script **does not install models**. If Gemma 4 is not installed it prints the list of installed models and a `pull` suggestion, then exits. **`uv` is required** to run the script (handles dependency installation automatically). No `requirements.txt` or manual `pip install` needed. --- ## Model Selection This skill uses **only** [Gemma 4](https://ollama.com/library/gemma4) on Ollama (`gemma4` and tags such as `gemma4:latest`, `gemma4:e4b`). Other multimodal models are ignored so agents do not silently fall back to a different family. When `--model` is omitted, the script picks any installed `gemma4` tag (for example `gemma4:latest`). Use `--model gemma4:e4b` (or another tag) to pin a specific variant. --- ## System Info Before running a heavy query, check whether the machine has enough resources. This is optional — the script does not enforce limits — but useful context for deciding whether to proceed or skip. ```sh uv run $SCRIPT --info # memory + storage + model list uv run $SCRIPT --memory # just memory uv run $SCRIPT --storage # just storage ``` Tip: on machines with ≤8 GB RAM, large vision models may cause swapping or OOM. Consider a smaller Gemma 4 variant (for example `gemma4:e2b`) or skip the query. --- ## Behavior - **Fails fast** if Ollama is unreachable or Gemma 4 is not installed. Exit code is non-zero; the error message includes a `hint` or `pull` command. - **Sequential only** — Ollama is a single-worker process. Never call `ask.py` in parallel (e.g. two concurrent tool calls). Queue calls one at a time. - **No side effects** beyond the local Ollama process. - **Auto-installs deps** via `uv` inline script metadata (PEP 723). Only dependency is the `ollama` Python package. - Supported formats: `.png`, `.jpg`, `.jpeg`, `.webp`, `.gif`, `.bmp`. --- ## Typical Agent Workflow 1. A tool (browser automation, screenshot capture, golden renderer) writes an image to disk. 2. Call `ask.py` with a targeted prompt suited to the task. 3. Parse the text response to decide the next action. ```sh # Quick sanity check first uv run $SCRIPT --ping # Verify a browser screenshot has content before including it in a doc uv run $SCRIPT /tmp/preview.png \ --prompt "Answer with YES or NO: does this screenshot show any visible UI content, shapes, or text?" # Describe a captured screenshot for a PR description uv run $SCRIPT /tmp/canvas-screenshot.png \ --prompt "Describe what visual effect is shown. Be specific about blur, colors, and shapes." ``` --- ## Troubleshooting | Symptom | Cause | Fix | | ------------------------------- | -------------------------------- | --------------------------------------- | | `cannot reach Ollama` | Ollama not running | `ollama serve` | | `no Gemma 4 vision model found` | Gemma 4 not installed | `ollama pull gemma4` | | `model 'X' is not available` | Model name typo or not installed | `--list-models` to see what's installed | | Slow response | Large model on CPU | Try a smaller tag (e.g. `gemma4:e2b`) | | Vague or wrong answer | Generic prompt | Write a more specific `--prompt` | | `'ollama' package not found` | Not using `uv run` | Run with `uv run ask.py` instead |
More agent context in gridaco/grida
37 other files this repository gives its agents.
CLAUDE.md
Skill
- agent-system.agents/skills/agent-system/SKILL.md
- ai-models.agents/skills/ai-models/SKILL.md
- code-react.agents/skills/code-react/SKILL.md
- code-ts.agents/skills/code-ts/SKILL.md
- database.agents/skills/database/SKILL.md
- desktop.agents/skills/desktop/SKILL.md
- docs-canvas.agents/skills/docs-canvas/SKILL.md
- docs.agents/skills/docs/SKILL.md
- docs-svg-kit.agents/skills/docs-svg-kit/SKILL.md
- docs-wg.agents/skills/docs-wg/SKILL.md
- editor-perf.agents/skills/editor-perf/SKILL.md
- ee-billing.agents/skills/ee-billing/SKILL.md
- ee.agents/skills/ee/SKILL.md
- etiology.agents/skills/etiology/SKILL.md
- fixtures.agents/skills/fixtures/SKILL.md
- gg.agents/skills/gg/SKILL.md
- grounding.agents/skills/grounding/SKILL.md
- io-figma.agents/skills/io-figma/SKILL.md
- io-grida.agents/skills/io-grida/SKILL.md
- links.agents/skills/links/SKILL.md
- naming.agents/skills/naming/SKILL.md
- opt-library.agents/skills/opt-library/SKILL.md
- oss-standards.agents/skills/oss-standards/SKILL.md
- pedantic.agents/skills/pedantic/SKILL.md
- sdk-design.agents/skills/sdk-design/SKILL.md
- sdk-seam.agents/skills/sdk-seam/SKILL.md
- security.agents/skills/security/SKILL.md
- seo.agents/skills/seo/SKILL.md
- dotcanvasskills/dotcanvas/SKILL.md
- slidesskills/slides/SKILL.md
- svgskills/svg/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

