CC chat-image-reader
Первый универсальный читатель изображений для более чем 10 платформ чатов. Функции: (1) Автоматическое определение платформы (Feishu, DingTalk, WeChat, Discord, Telegram, WhatsApp, Slack, Signal, LINE, iMessage), (2) Единый API с логикой загрузки, специфичной для платформы, (3) Исчерпывающая справка по API с кодами ошибок и ограничениями скорости, (4) Резервные стратегии для отсутствующих изображений. Триггеры: "识别图片", "读取图片", "analyze image", "read image from chat". На ClawHub нет аналогичных skill — заполняет уникальную нишу для межплатформенного анализа изображений в чатах.
машинный переводПоказать оригиналСкрыть оригинал«First universal image reader for 10+ chat platforms. Features: (1) Aut…»
First universal image reader for 10+ chat platforms. Features: (1) Auto platform detection (Feishu, DingTalk, WeChat, Discord, Telegram, WhatsApp, Slack, Signal, LINE, iMessage), (2) Unified API with platform-specific download logic, (3) Comprehensive API reference with error codes and rate limits, (4) Fallback strategies for missing images. Triggers: "识别图片", "读取图片", "analyze image", "read image from chat". No similar skill exists on ClawHub - fills a unique gap for cross-platform chat image analysis.
Первый универсальный читатель изображений для более чем 10 платформ чатов.
Как процесс C 56/100 · Есть пробелы — слабые места: результат и критерий готовности, когда включается, входы и предусловия
Чем это грозит
Находки средней серьёзности: скорее всего скилл честный, но прочитайте, что именно насторожило сканер.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Инструкции или скрипты отправляют данные наружу: переменные окружения, ключи, содержимое файлов, историю чата. Вы можете не заметить этого в диалоге, потому что агент выполнит отправку как «часть задачи».
Если отправка не нужна для задачи, уберите её: каталоги помечают такие скиллы как подозрительные и снимают с выдачи. Если нужна, назовите адрес явно, объясните, что именно уходит, и дайте пользователю выключатель.
Как улучшить
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 11
✓ Критических и высоких находок нет
Средние и низкие: 11
-
средняя Утечка данных
exfil-webhook-urlreferences/platform-api.md:185URL вебхука / коллбэка, типичный для эксфильтрации (проверьте адрес) (хост вендора самого скилла)GET https://api.telegram.org/bot{token}/getFile?file_id=…vendor-host -
средняя Утечка данных
exfil-secret-in-urlSKILL.md:195Учётные данные в строке запроса URL (для части API это норма — проверьте, что хост нужный) (в кавычках — упоминание, а не команда)$token = (Invoke-RestMethod -Uri "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=…&corpsecret=…").access_token
в кавычках -
средняя Утечка данных
exfil-secret-in-urlSKILL.md:198Учётные данные в строке запроса URL (для части API это норма — проверьте, что хост нужный) (в кавычках — упоминание, а не команда)Invoke-WebRequest -Uri "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=…&media_id=…" -OutFile $outputPath
в кавычках -
низкая Утечка данных
exfil-webhook-urlscripts/download_image.py:117URL вебхука / коллбэка, типичный для эксфильтрации (проверьте адрес) (хост вендора самого скилла; в кавычках — упоминание, а не команда)url = f"https://api.telegram.org/bot{token}/getFile"vendor-hostв кавычках -
низкая Утечка данных
exfil-webhook-urlSKILL.md:136URL вебхука / коллбэка, типичный для эксфильтрации (проверьте адрес) (хост вендора самого скилла; в кавычках — упоминание, а не команда)2. Call Bot API: `GET https://api.telegram.org/bot{token}/getFile?file_id=…vendor-hostв кавычках -
низкая Утечка данных
net-credential-useSKILL.md:166Учётные данные используются в сетевом вызове (проверьте, что адрес — нужный сервис) (хост вендора самого скилла)$token = (Invoke-RestMethod -Uri "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" -Method Post -Body $body).tenant_access_token
vendor-host -
низкая Утечка данных
net-credential-useSKILL.md:169Учётные данные используются в сетевом вызове (проверьте, что адрес — нужный сервис) (хост вендора самого скилла)$message = Invoke-RestMethod -Uri "https://open.feishu.cn/open-apis/im/v1/messages/$messageId" -Headers @{ Authorization = "Bearer $token" }vendor-host -
низкая Утечка данных
net-credential-useSKILL.md:173Учётные данные используются в сетевом вызове (проверьте, что адрес — нужный сервис) (хост вендора самого скилла)Invoke-WebRequest -Uri "https://open.feishu.cn/open-apis/im/v1/messages/$messageId/resources/$imageKey" -Headers @{ Authorization = "Bearer $token" } -OutFile $outputPathvendor-host -
низкая Утечка данных
net-credential-useSKILL.md:181Учётные данные используются в сетевом вызове (проверьте, что адрес — нужный сервис) (хост вендора самого скилла)$token = (Invoke-RestMethod -Uri "https://api.dingtalk.com/v1.0/oauth2/accessToken" -Method Post -Body $body).accessToken
vendor-host -
низкая Утечка данных
net-credential-useSKILL.md:185Учётные данные используются в сетевом вызове (проверьте, что адрес — нужный сервис) (хост вендора самого скилла)Invoke-WebRequest -Uri "https://api.dingtalk.com/v1.0/robot/messageFiles/download?downloadCode=…" -Headers @{ "x-acs-dingtalk-access-token" = $token } -OutFile $outputPathvendor-host -
низкая Утечка данных
exfil-webhook-urlSKILL.md:213URL вебхука / коллбэка, типичный для эксфильтрации (проверьте адрес) (хост вендора самого скилла; в кавычках — упоминание, а не команда)$fileInfo = Invoke-RestMethod -Uri "https://api.telegram.org/bot$token/getFile?file_id=…"
vendor-hostв кавычках
Просканировано файлов: 4. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
frontmatter-yamlSKILL.md: фронтматтер не разбирается как YAML (YAML parse error: Nested mappings are not allowed in compact mappings at line 2, column 14: description: First universal image reader for 10+ chat platforms. Features: (1)… ^ ); поля прочитаны построчно. Обычная причина — двоеточие в незакавыченном значении - предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - заметка
frontmatter-keyнеизвестное поле фронтматтера "homepage"
Процессный рейтинг: все десять параметров 56/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 60Инструменты и файлы. Используются инструменты (web), но во frontmatter они не объявлены
- 100Шаги. Шагов: 51
- 100Ошибки и развилки. Развилок: 1, есть раздел про ошибки
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 2130 токенов
- 100Повторный запуск. Изменяющих операций нет
- medium Правила безопасности и запреты внутри скилла: их место в системном промпте, здесь они не защищают
- low Разделов верхнего уровня: 11. Похоже на несколько доменов в одном скилле
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -41 справочных файлов, но SKILL.md на них не ссылается: модель их не откроет
- -31 из 1 скриптов не упомянуты в SKILL.md
- +1Лицензия не указана
- +2Инструкции на одном языке
- +5В description 2 примера фраз-триггеров в кавычках
- +3Длина description 506 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 41 заголовков
- +3Пошаговые инструкции: 51 пунктов
- +4Есть примеры (14 блоков кода)
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 59.