From 2e30ccc17cf6db9c2f206d94b535f1f5b8b10205 Mon Sep 17 00:00:00 2001 From: vitya Date: Thu, 13 Aug 2026 08:55:15 +0300 Subject: [PATCH] feat(vision-subagent): add to canon (v0.1.0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skill lived only in ~/.agents/skills (pi reads it) with broken YAML frontmatter — ": " inside description made the parser choke (nested-mapping error in TUI skill list). Fix: folded block-scalar description + author/version per canon. Lint 47/0, dist rebuilt, installed to ~/.claude/skills + ~/.agents/skills (identical copies). --- dist/vision-subagent.skill | Bin 0 -> 1734 bytes skills/vision-subagent/SKILL.md | 58 ++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 dist/vision-subagent.skill create mode 100644 skills/vision-subagent/SKILL.md diff --git a/dist/vision-subagent.skill b/dist/vision-subagent.skill new file mode 100644 index 0000000000000000000000000000000000000000..05088b477c1f413849598ba4c8de1e4dac4903b6 GIT binary patch literal 1734 zcmV;%208gqO9KQH000080M=RDh%^QO04@yx02lxO0Cs6}X>V>Vb9G{2XJu}5 zFH=iNOiV6qWR+G;ZxdG(-OsPMGK1N1w|@YRgq1rzE_RBx(#Cu ze zZq^do@L~$y!dGh(jGR%1VS628o+%H zzif7JL=cQx7(ONJ^Z2H0c*;LuG~Q&lff;=m+>Hp1vBANKO>tauG?xu$56CBlj) zM@&wZ)gwd7@C)LEgAqQaYE#9rA5@t_>^u$Q4wy|Y|@es$- zZL>3NVRV51J82u^T`|K4#(IPUeSM7Cw(dHXehYtTM<2p`&m7W6l(q~c*!qB@3=pV> z8M-l!!nYpe``JZ>38?|iQNBP)~=)pfVU9{IPC(>OV06G+F=?t$8$WFa%^yz-aDW|G$i{%J1>wk zFajp2j*ow(TUZer-T8v(e>}0VL&&r^!tl9?7~$iX2O#~DC(G%NlG1TGOO_&YQ=lR^K$QS~hw?n_T!7ROWwT7StEg7m{qO+jO2wn~N2A;o#VmZ}$Ry-Dh^NKIXsz!DJ^i z)RtC|vfzp^g>1}ZK`Ua55sBOU?o*Biw= zMGwBdQ-IxXAa3R|Do7BvKyE9yd%z`O>ajpX;KtuCU|}rvF4@y#fo$n_682NBE}FI_ zeLkMCrn?o(%_!ZdEa47};-z&zdFCzM#BERuz14WhXuSgl1=l8b3aJUPsFnnSlk;jK zMEp5j7=0rHMmPly6p#!1R2DHOI+8w5JD(R^lf!qi!6-!6vaUI_xQP6so*s6QF; zIFzp9ig_W%yZk@hb*xW?)^ChY*vj27TLt}@yrtU{{1W&>4i5sIT@t2saQ~^uUn%7b zu_}qNr*Ruq5HeH3AX+V{>SxtGCkzWS&ClDpt$P_QL<8+QEfv%9IS`&B7Cr9U6T#Il zIs)R?4B1qN=NWvS3AEf6=4w8e>g4$rW|psz5via7t0i}*1a*|xs6KV9>k|Cj?*%Ie z3Mc*q@m}DAxDK+H%=vAqhcgN&;wRcvH2LQ=vbOOx#JVVAJ`}!Zm)<`+=OLTB+HsA; zT$i<Q=6=bC0L) z)YAgScML~9Hz2nx*R@;Bboi}2l-eTuM-rY(0tnsuW7>r&l5V<}zpVb&Z(!+9U>2!2 zpt0r4Sv+dOW}+g`FW3D5>HfA< zzwUA~=HgB64`rv}movOV%Xt!qfidWQM+KQHKnpLiRiN)#kAFs)wpl>r-6)t%Nu!hm zSKf`6yil_+Fm(Hp3eO*2d;El*6kzuDZ;0u%rg000080M=RDh%^QO04@yx02lxO0000000000000000001XX>)0BZY^_lVqs@xZgekGOG!*j cE^TB`O9ci1000010096-0001L1^@s60E7lAH2?qr literal 0 HcmV?d00001 diff --git a/skills/vision-subagent/SKILL.md b/skills/vision-subagent/SKILL.md new file mode 100644 index 0000000..0a599c3 --- /dev/null +++ b/skills/vision-subagent/SKILL.md @@ -0,0 +1,58 @@ +--- +name: vision-subagent +author: ours +version: 0.1.0 +description: > + Use when you need to SEE an image (photo, screenshot, PCB render, diagram, + picture file) but your model does not support images — e.g. a read tool + result was omitted with "tool image omitted: model does not support images", + or the user asks what is shown in a picture / asks you to look at a + screenshot / render. Delegate the vision work to a vision-capable subagent + via the describe_image tool instead of guessing or saying you can't. +--- + +# Vision Subagent + +Твоя модель не видит изображения — картинки выбрасываются из контекста. +Не угадывай содержимое и не отказывайся: делегируй зрение сабу с видящей моделью. + +## Когда вызывать + +- Тул `read` (или другой) вернул картинку, а в контексте появилось + `tool image omitted: model does not support images` — ты знаешь путь, но не видишь. +- Пользователь просит «что на картинке», «посмотри скриншот/фото/рендер/схему», + «опиши изображение» — с путём к файлу или без. +- Тебе нужны визуальные детали из файла (цвета, текст, ошибки на скриншоте, + дорожки на PCB, состояние на фото), чтобы ответить по делу. + +## Как вызывать + +Вызови тул `describe_image`: + +``` +describe_image: + path: "абсолютный путь к файлу (jpg/png/webp/gif/bmp) или URL" + question: "точечный вопрос" # опционально +``` + +Пример точечного вопроса: +`path: "C:\Users\vitya\Downloads\screen.png"`, `question: "Какое сообщение об ошибке в красной рамке сверху?"` + +## Правила + +1. **Всегда делегируй, никогда не угадывай.** Не описывай картинку «по-памяти», + если ты её не видел — это галлюцинация. +2. **Задавай точечные вопросы.** Не соглашайся на generic-описание, если тебе + нужны конкретные детали (текст, координаты, цвета, что на заднем плане). + Если ответа не хватило — вызови `describe_image` ещё раз с уточнением. +3. **Если `describe_image` упал** (нет vision-модели, ошибка сети) — честно скажи + пользователю, что зрение сейчас недоступно, и предложи путь дальше + (например, переключить модель на видящую через `/model`). + +## Настройка vision-модели + +Модель задаётся ЯВНО (по приоритету): +1. env `PI_VISION_MODEL` — например `routerai/minimax-m3` +2. файл `~/.pi/vision-model.json` — `{ "model": "routerai/minimax-m3" }` + +Авто-выбора нет — если модель не задана, `describe_image` вернёт ошибку с подсказкой.