Vlm
Skill and tool bundles for gap (graph as policy) — Anthropic Agent Skills format, discovered by path
npx -y skills add graph-robots/open-robot-skills --skill vlmAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Free-form and yes/no visual question answering against a hosted vision-language model (OpenRouter API by default; Vertex AI Gemini selectable by config). Use when a workflow needs scene descriptions, semantic checks ("is the drawer open?"), or LLM-judged verification of a camera frame — no GPU required.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.0 KB, as published. Nobody here has run it
vlm
API-backed vision-language Q&A. Zero GPU: every provider is a remote
endpoint. Images are gap-native uint8 [H, W, 3] numpy arrays, PNG-encoded
on the wire.
Providers
Selected by GAP_VLM_PROVIDER (default openrouter); each tool also accepts
a per-call provider= override.
| Provider | Backend | Config (env) |
|---|---|---|
openrouter | OpenRouter's OpenAI-compatible chat-completions API | OPENROUTER_API_KEY (or GAP_VLM_API_KEY); GAP_VLM_MODEL (default gemini-3.1-flash-lite-preview, see DEFAULT_MODEL in tools.py); set GAP_VLM_BASE_URL to point at another OpenAI-compatible server (e.g. a local vLLM) |
vertex | Vertex AI via google-genai (Gemini models) | GAP_VLM_MODEL, GAP_VLM_PROJECT_ID, GAP_VLM_REGION |
The vertex provider lazy-imports google-genai — install the engine's vertex
extra first: pip install "graph-as-policy[vertex]".
When to use
- Semantic scene checks and checkpoint verification (
vlm.query_yes_no). - Free-form scene descriptions or attribute queries (
vlm.query). - Prefer
gemini-er.detectwhen you need pixel-space bounding boxes, andmolmo.point_promptwhen you need a single click point.
Notes
vlm.query_yes_nocoerces with the source-verbatim rule: answer is true iff"yes"appears in the lowercased reply.- Requests carry no system prompt and no temperature knob (mirrors the
original
vlm.v1proto); both providers pintemperature: 0.0.