- 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 |
GitHubで見る