FB browse
Быстрый headless-браузер для QA-тестирования и внутреннего тестирования сайтов. (gstack)
машинный переводПоказать оригиналСкрыть оригинал«Fast headless browser for QA testing and site dogfooding. (gstack)…»
Fast headless browser for QA testing and site dogfooding. (gstack)
Быстрый headless-браузер для QA-тестирования и внутреннего тестирования сайтов.
Как процесс B 69/100 · Почти готов — слабые места: входы и предусловия, согласованность, стоимость исполнения
Чем это грозит
Скилл содержит фрагменты, которые в чужих руках стоят денег или данных. Ниже, что рискует потерять тот, кто установит, и что должен сделать автор.
Инструкции или скрипты отправляют данные наружу: переменные окружения, ключи, содержимое файлов, историю чата. Вы можете не заметить этого в диалоге, потому что агент выполнит отправку как «часть задачи».
Если отправка не нужна для задачи, уберите её: каталоги помечают такие скиллы как подозрительные и снимают с выдачи. Если нужна, назовите адрес явно, объясните, что именно уходит, и дайте пользователю выключатель.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Скилл просит больше прав, чем нужно для задачи: широкий доступ к инструментам, секретные переменные окружения, бинарные файлы. Каждое лишнее право расширяет ущерб при ошибке или взломе.
Сузьте allowed-tools и список переменных до минимума, замените бинарники на исходники или скрипты, которые можно прочитать.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
В файлах есть невидимые символы, закодированные команды или спрятанные комментарии для модели. То, что вы читаете, отличается от того, что видит агент.
Уберите невидимые символы (часто они попадают из копипаста) и закодированные строки: их не пропустит ни один каталог. Инструкции для модели должны быть видны и человеку.
Как улучшить
- Разберите находки высокой серьёзности: каждая стоит 18 баллов безопасности. Если это ложное срабатывание, добавьте код правила в guard.allow в spec.yaml.
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- Тело SKILL.md длиннее 5 000 токенов: вынесите справочные детали в references/ и подключайте по необходимости.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 17
-
высокая Утечка данных
intent-browser-credential-storeSKILL.md:943Доступ к хранилищу паролей / cookies браузера| `cookie-import-browser [browser] [--domain d]` | Import cookies from installed Chromium browsers (opens picker, or use --domain for direct import) |
-
высокая Утечка данных
intent-browser-credential-storesrc/welcome.html:194Доступ к хранилищу паролей / cookies браузера<p>Click <span class="hl">🍪 Cookies</span> in the sidebar to import login sessions from Chrome, Arc, or Brave. Browse authenticated pages <span class="hl">without logging in again</span>.</p>
Средние и низкие: 15
-
средняя Широкие права
meta-broad-allowed-toolsSKILL.md:1Заранее разрешены широкие инструменты: Bashallowed-tools: Bash Read AskUserQuestion
-
средняя Утечка данных
intent-browser-credential-storesrc/commands.ts:133Доступ к хранилищу паролей / cookies браузера (в кавычках — упоминание, а не команда)'cookie-import-browser': { category: 'Interaction', description: 'Import cookies from installed Chromium browsers (opens picker, or use --domain for direct import)', usage: 'cookie-import-browser [broв кавычках -
средняя Утечка данных
intent-browser-credential-storesrc/cookie-import-browser.ts:181Доступ к хранилищу паролей / cookies браузера (комментарий в коде)// Chrome 80+ on Windows stores cookies under Network/Cookies
комментарий -
средняя Утечка данных
intent-browser-credential-storesrc/cookie-import-browser.ts:353Доступ к хранилищу паролей / cookies браузера (комментарий в коде)// Chrome 80+ on Windows stores cookies under Network/Cookies; fall back to Cookies
комментарий -
средняя Утечка данных
intent-browser-credential-storesrc/cookie-import-browser.ts:791Доступ к хранилищу паролей / cookies браузера (комментарий в коде)* Extract cookies via Chrome DevTools Protocol. Launches Chrome headless with
комментарий -
средняя Утечка данных
intent-browser-credential-storesrc/cookie-picker-routes.ts:251Доступ к хранилищу паролей / cookies браузера (в кавычках — упоминание, а не команда)message: `Cookies use App-Bound Encryption (v20). Close ${browser}, retry, or use /connect-chrome to browse with your real browser directly.`,в кавычках -
средняя Обфускация
uni-zero-widthsrc/server.ts:133Невидимые символы нулевой ширины (возможен скрытый текст) (3 шт.)const stripped = raw.replace(/[\s ␀-␀␀]/g, '');
-
низкая Опасные команды
cmd-background-processsrc/cli.ts:331Запуск фонового / автозапускаемого процесса (комментарий в коде)// loop — it does NOT call setsid(), so the spawned server stays in the
комментарий -
низкая Опасные команды
cmd-background-processsrc/cli.ts:338Запуск фонового / автозапускаемого процесса (комментарий в коде)// which calls setsid() so the server becomes its own session leader
комментарий -
низкая Подмена инструкций
en-ignore-previoussrc/cli.ts:726Фраза-перехват ("ignore previous instructions") (с отрицанием — текст это запрещает)- "ignore previous instructions" or "new instructions:"
с отрицанием -
низкая Опасные команды
cmd-persistencesrc/path-security.ts:37Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (комментарий в коде; документация security-скилла)// Without this, a symlink at /tmp/evil.png → /etc/crontab passes the
комментарийsecurity-скилл -
низкая Опасные команды
cmd-persistencesrc/path-security.ts:39Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (комментарий в коде; документация security-скилла)// write follows the symlink to /etc/crontab.
комментарийsecurity-скилл
Ещё 3 совпадений отнесены к цитатам в документации скилла по безопасности и не считаются находками.
Просканировано файлов: 68. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - предупреждение
body-longтело SKILL.md ≈ 13639 токенов (рекомендуется < 5000); вынесите детали в references/ - заметка
frontmatter-keyнеизвестное поле фронтматтера "preamble-tier" - заметка
frontmatter-keyнеизвестное поле фронтматтера "triggers"
Процессный рейтинг: все десять параметров 69/100
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 40Согласованность. Имя во frontmatter (browse) не совпадает с папкой (garrytan_gstack_browse)
- 40Стоимость исполнения. Тело инструкции 13639 токенов: вытесняет саму задачу из окна
- 50Когда включается. Не сказано, при каком запросе скилл включается
- 60Результат и критерий готовности. Формат результата описан, критерия завершения нет
- 100Инструменты и файлы. Инструменты объявлены во frontmatter
- 100Шаги. Шагов: 41
- 100Ошибки и развилки. Развилок: 13, есть раздел про ошибки
- 100Повторный запуск. Изменяющие операции проверяют текущее состояние
- 100Отчётность по ходу. Скилл сообщает о ходе работы
- medium Правила безопасности и запреты внутри скилла: их место в системном промпте, здесь они не защищают
- low Разделов верхнего уровня: 20. Похоже на несколько доменов в одном скилле
- low Ответ описан самодельной разметкой (56 тегов): типизированный вызов надёжнее
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Длина description 66: рекомендуется 120–800 символов
- -5В тексте остались TODO / заглушки
- -31 из 1 скриптов не упомянуты в SKILL.md
- +1Лицензия не указана
- +2Инструкции на одном языке
- +4Структура: 48 заголовков
- +3Пошаговые инструкции: 41 пунктов
- +3Формат ответа описан явно
- +4Есть примеры (38 блоков кода)
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 52.