Skip to content
cccskills
FreePublished on GitHub

vision

Call vision models (Doubao, Qwen, DeepSeek, OpenAI) to analyze images. Use when you need to understand screenshots, UI layouts, diagrams, or any image content. Supports png/jpg/webp/gif.

The English summary is being prepared. Showing the original description.

xiincs/claude-code-vision-skill166 stars(GitHub 166 + cccskills 0)
Works withOpenAI

Run score Not tested

See how to install

Files included (2)

  • SKILL.md4.7 KB
  • vision.py14.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

vision

Multi-provider vision tool. Call various vision models to describe images. Feed it a prompt + image path, get back a text description.

When to use this tool

If you can already see and understand the image yourself (native multimodal model), skip this tool — analyze it directly.

A SessionStart hook normally announces this session's routing status up front. If that context isn't visible (e.g. compacted out of a long conversation, or the hook isn't installed), check before calling this tool:

python vision.py --check-routing
  • native → you already have native image understanding this session; don't call this tool.
  • external (default) → proceed with the quick start below.

Quick start

python vision.py [--provider <name>] <image_path> <prompt>

When --provider is omitted, the provider is resolved by: --provider flag > VISION_PROVIDER env > first API key found.

Providers

doubao (Volcengine Ark)

  • API key: DOUBAO_API_KEY
  • Default model: doubao-seed-2-0-pro-260215
  • Custom endpoint: DOUBAO_BASE_URL

qwen (DashScope)

  • API key: DASHSCOPE_API_KEY
  • Default model: qwen-vl-max
  • Custom endpoint: DASHSCOPE_BASE_URL
  • Available models: qwen-vl-max, qwen-vl-plus, qvq-max

deepseek (DeepSeek)

  • API key: DEEPSEEK_API_KEY
  • Default model: deepseek-v4-flash-vision-exp
  • Custom endpoint: DEEPSEEK_BASE_URL
  • Only deepseek-v4-flash-vision-exp accepts images — deepseek-v4-flash and deepseek-v4-pro are text-only and reject image input with an error.

openai (GPT-4o)

  • API key: OPENAI_API_KEY
  • Default model: gpt-4o
  • Custom endpoint: OPENAI_BASE_URL
  • Also works with any OpenAI-compatible endpoint.

anthropic (Claude)

  • API key: ANTHROPIC_API_KEY
  • Default model: claude-sonnet-5
  • Custom endpoint: ANTHROPIC_BASE_URL
  • Requires the anthropic package (pip install anthropic); it's imported lazily so other providers work without it.

any custom provider

Any --provider name outside the built-in ones is resolved dynamically from environment variables named after it — no code changes needed:

Env VarRequiredNotes
{NAME}_API_KEYyeschecked at request time, same as built-ins
{NAME}_BASE_URLyesno default — arbitrary endpoint
{NAME}_MODELyesno default (or set global VISION_MODEL instead)
{NAME}_PROTOCOLnoopenai (default) or anthropic — picks the request shape

openai covers essentially every OpenAI-compatible endpoint (vLLM, Ollama, LiteLLM, OpenRouter, Azure OpenAI, self-hosted proxies, ...). Use {NAME}_PROTOCOL=anthropic only if the endpoint speaks the Anthropic Messages API shape.

export MYAPI_API_KEY="sk-xxx"
export MYAPI_BASE_URL="https://my-endpoint.example.com/v1"
export MYAPI_MODEL="my-vision-model"
python vision.py --provider myapi "screenshot.png" "describe this"

If {NAME}_BASE_URL or {NAME}_MODEL is missing, the tool prints exactly which variables to set instead of a generic "unknown provider" error.

Configuration

Env VarScopeDefault
VISION_PROVIDERDefault provider (built-in or custom name)auto-detect (built-ins only)
VISION_MODELOverride model (all providers)provider default
{PROVIDER}_MODELOverride model (per provider)—
{PROVIDER}_BASE_URLOverride/define endpoint (per provider)built-in default, or required for custom
{PROVIDER}_PROTOCOLRequest shape for a custom provider: openai | anthropicopenai
VISION_TEMPERATUREResponse creativity 0–10
VISION_MAX_TOKENSMax response tokens4096

Note: auto-detect (no --provider / VISION_PROVIDER set) only scans the built-in providers' API keys — a custom provider must always be named explicitly.

Examples

# Auto-detect provider from API keys
python vision.py "screenshot.png" "Describe the page layout and any visible UI issues."

# Explicit provider
python vision.py --provider qwen "mockup.png" "List all components, colors, and spacing patterns."

# Custom model
QWEN_MODEL=qvq-max python vision.py --provider qwen "diagram.png" "Explain the architecture."

# GPT-4o for visual regression
python vision.py -p openai "after.png" "Compare with app design spec, flag differences."

# Fully custom provider (self-hosted, third-party proxy, any OpenAI-compatible endpoint)
MYAPI_API_KEY=sk-xxx MYAPI_BASE_URL=https://host/v1 MYAPI_MODEL=my-model \
  python vision.py --provider myapi "ui.png" "Analyze layout issues"

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Report a problem with this skill