vision Skill (kotot): Read Images Without Vision
Makes Claude Code read images and screenshots by sending them to a vision model you configure, when the current model cannot see.
- Installs
- 13.8K
- on skills.sh
- Stars
- 3
- on GitHub
- Files
- 1
- besides SKILL.md
- Updated
- Jul 2026
- last repo commit
vision runs a Python script, scripts/see.py, with an image (local path or URL) and a question. The script sends the image to an OpenAI-compatible vision model and prints the text answer, which Claude then uses. It covers describing images, OCR, error screenshots, charts, diagrams, UI mockups and scanned pages.
It is built for a model that has no native vision, and the README names some GLM and text-only Qwen models as examples. You must point it at a vision model endpoint, local or cloud, with VISION_BASE_URL and VISION_MODEL. Your images go to that endpoint.
Good for
- Claude Code users running a model that has no image input
- Developers who want OCR or screenshot reading from a local vision server
- People diagnosing errors from screenshots
Install vision
Claude Code
- 1
Get the repo (for example with git clone https://github.com/kotot/vision).
- 2
Run mkdir -p ~/.claude/skills and then cp -r vision ~/.claude/skills/ from the repo folder, so SKILL.md sits at ~/.claude/skills/vision/SKILL.md.
- 3
For one project only, use <project>/.claude/skills/vision/ instead.
Requires git, python3.
The README installs by copying the vision/ folder into Claude Code's skills folder, user-level (~/.claude/skills/vision/) or project-level (<project>/.claude/skills/vision/). The skill needs python3 and a vision model endpoint you configure (VISION_BASE_URL and VISION_MODEL; see the env list). There is no Claude app upload route, because the skill runs a local Python script.
From the project README. Source.
What's in the skill
When it loads
See and understand images when you (the current model) have no native vision. Use this WHENEVER you need to look at, read, describe, OCR, or reason about the contents of an image, screenshot, photo, diagram, chart, UI mockup, or scanned page — including when the user references a local image file or an image URL and you cannot view it yourself. Also triggers on: 看图 / 识图 / 截图 / 图片内容 / OCR 文字识别 / 这张图是什么. Delegates the actual seeing to a configurable OpenAI-compatible vision model via a small script.
Sections in SKILL.md
- When to use
- How to use
- Configuration (required, set once)
- Notes
Key facts
- License
- None found: the repo has no LICENSE file in its git tree, and SKILL.md and README name no license
- Installs on skills.sh
- 13,812 (Nov 2, 2026)
- GitHub stars
- 3 (Nov 2, 2026)
- Last repo commit
- Jul 2, 2026
What it includes
Sends a local image or URL plus your question to the vision model
Local files become base64 data URLs; http(s) URLs pass through.
Runs code ·
see.py <image> "question"Shows the request without sending it
VISION_DRY_RUN=1 does the same.
Runs code ·
--dry-runDescriptions, text transcription, charts as tables, error screenshots
Read ·
Describe and OCREnvironment variables or a .claude/settings.json env block
Environment variables win over files.
Files ·
ConfigurationSearches .claude/settings.json from the current directory up, then ~/.claude/
Files ·
Settings lookup
From the official docs
Permissions
High risk
vision sends your images to whatever vision endpoint you configure. Our advice: use --dry-run first, and a local endpoint for private images.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
Hidden reads of OpenClaw .env files
see.py also opens /root/.openclaw/.env and ~/.openclaw/.env if they exist, and parses every line. It keeps only VISION_ keys, but these are credential files for another tool. SKILL.md and the README never mention these paths. The code comment says OpenClaw hands tools credentials this way. Delete the _load_openclaw_env call if you do not use OpenClaw. github.com
Your images go to the endpoint you set
The script base64-encodes local images and POSTs them with your question to VISION_BASE_URL. If that is a cloud service, the images leave your machine. A key, if set, is sent as a bearer token. github.com
Reads settings files for config
The script reads settings.local.json and settings.json in .claude/ folders: CLAUDE_PROJECT_DIR, the current directory and every parent up to the filesystem root, then your home folder. It opens each whole file but keeps only keys that start with VISION_. SKILL.md documents this lookup. github.com
Technical details
| Turning on read-only | No read-only switch. |
|---|---|
| Talks to | The VISION_BASE_URL endpoint you configure |
| Sign-in and keys | Optional VISION_API_KEY from the environment or settings files, sent as a bearer token to your endpoint. |
| Scopes |
|
Questions
What does the vision skill do?
It lets a model that cannot view images still handle them. Claude runs a Python script that sends the image to a vision model you configure and reads the text answer.
How do I install it?
Use the install box at the top. The README copies the vision folder into ~/.claude/skills/ or a project's .claude/skills/. Then set VISION_BASE_URL and VISION_MODEL.
Which vision model does it use?
Any OpenAI-compatible one. VISION_BASE_URL must be the full chat-completions endpoint, for example one ending in /v1/chat/completions. The README names vLLM, Ollama, LM Studio, LMDeploy and cloud models such as GPT-4o as options.
Do I need an API key?
Only if your endpoint wants one. SKILL.md marks VISION_API_KEY as optional, for example for local servers. If you set it, it is sent as a bearer token.
Where do my images go?
To the VISION_BASE_URL endpoint you configure. The script base64-encodes local files into the request, so whoever runs that endpoint receives them.
Do I need it with a model that already sees images?
The skill is written for a model with no native vision. SKILL.md says to use it when you cannot view the image yourself.
Is it safe?
Claude runs a Python script that reads image files, searches settings files for VISION_ variables and posts to your configured endpoint. Our advice: use --dry-run first, and a local endpoint for private images.
Information
updated Nov 2, 2026
- Repository
- kotot/vision
- Folder
vision
Sources
Docs, issue trackers and discussions this page is built from.
Show all 3Hide
- vision SKILL.md · github.com
- vision README · github.com
- skills.sh listing · skills.sh