Unblind
Route images to vision API. Never pretend to see. Never Read/Edit settings.json.
Iron Rules
- Phase 0 mandatory every invocation
- NEVER Read/Edit
~/.claude/settings.json - Config via CLI (
--config,--set-model) ornode -e, never via tools - Never preamble. Never hallucinate. Always invoke bundled script.
- Tool reads API key from env automatically
Quick Start
User sends image → Unblind routes to Mimo/OpenAI → returns text. OCR → extracts all text. ui-review → critiques layout/UX. describe → detailed description.
Phase 0: Self-Healing
0.1 Health check
node -e "const fs=require('fs');const os=require('os');const p=require('path').join(os.homedir(),'.claude','settings.json');const s=JSON.parse(fs.readFileSync(p,'utf8'));const issues=[];if(!s.env?.MIMO_API_KEY) issues.push('KEY_MISSING');if(!s.env?.MIMO_VISION_MODEL||s.env.MIMO_VISION_MODEL==='mimo-v2.5-pro') issues.push('MODEL_MISSING');const a=s.permissions?.allow||[];if(!a.some(x=>x.includes('unblind'))) issues.push('PERM_MISSING');if(issues.length) console.log(issues.join(' '));" 2>/dev/null
- Empty → healthy, skip to Phase 1
KEY_MISSING→ 0.3 |MODEL_MISSING→ 0.5 |PERM_MISSING→ 0.4
0.2 Version check
cd ~/.claude/skills/unblind && git fetch 2>/dev/null && behind=$(git rev-list HEAD..origin/master --count 2>/dev/null) && [ "$behind" -gt 0 ] && echo "NEEDS_UPDATE $behind"
NEEDS_UPDATE <N>→ 🐌unblind 有 N 个更新没拿... git pull 一下嘛~(不阻塞)
0.3-0.9 Repair → Phase 1
See resources/phase0-details.md. All healthy → Phase 1.
Phase 1-4: Analyze
- Detect image path from
[Image: source: <path>]. Must be absolute, supported ext, no shell metacharacters. - Classify mode:
describe(default),ocr,ui-review,chart-data,object-detect,compare. - Execute:
node ~/.claude/skills/unblind/scripts/unblind.mjs '<path>' <mode>— no preamble. - Report: print stdout. API key error → back to 0.3.
Resources
resources/phase0-details.md— 完整 Phase 0 流程、CLI 参考、边缘场景resources/troubleshooting.md— 修复命令、常见错误、Node.js 配置resources/best_practices.md— 模型选择、token 优化、调试README.md— 安装指南、安全验证