fuel-watch
Fuel Watch
Показывай только АЗС со свежим положительным или вероятно положительным свидетельством в основном списке. Все варианты одного октанового числа считай одной пользовательской маркой: базовый, премиальный и брендовый 95-й выводятся только как АИ-95, без отдельных строк 95+, «Экто», G-Drive и подобных. Исходную метку варианта сохраняй внутри только для provenance и консервативной проверки отрицательных данных. Отказ источника, пустая выборка и отсутствие бензина — разные результаты. Всегда называй здоровье каждого источника, свежесть и уверенность, а также предупреждай, что страничные/краудсорсинговые данные могут запаздывать. Каждый отчёт также содержит до трёх прогнозов ближайшего появления по накопленной истории либо явное сообщение, что статистики пока недостаточно.
Неприкосновенный формат отчёта
Вывод report.mjs — единственный канонический пользовательский отчёт. Публикуй его содержимое как обычный Markdown без каких-либо изменений: не пересказывай своими словами, не сокращай, не переставляй строки, не объединяй с собственным списком и не удаляй Markdown-разметку. В частности, каждая сгенерированная ссылка на Яндекс Карты должна дойти до пользователя неизменной.
Не заключай отчёт в code fence или blockquote: ссылки должны остаться кликабельными. Допустима только отдельная короткая служебная фраза до или после полного отчёта, если нужно объяснить ошибку запуска; она не заменяет и не модифицирует сам отчёт. Если отчёт получен как JSON, декодируй поле markdown и опубликуй именно его значение. Перед отправкой проверь, что ни одна строка или ссылка из результата report.mjs не потеряна.
Подготовка
Определи корень skill по расположению этого SKILL.md и используй его абсолютный путь как FUEL_WATCH_ROOT. Каталог skill — заменяемый read-only артефакт: никогда не создавай и не меняй в нём config, state, историю, node_modules или другие runtime-файлы. Пользовательские настройки и накопленные данные автоматически живут в ~/.fuel-watch/: config/, history/, state/ и monitors/. Переменная FUEL_WATCH_HOME может перенести весь этот каталог. Не меняй пользовательскую конфигурацию без явного запроса.
Сначала проверь внешний runtime командами command -v agent-browser и agent-browser --version в том же окружении, где будет выполняться collection. Если команда доступна, используй установленную версию без переустановки. Никогда самостоятельно не выполняй npm install -g agent-browser, npm update -g agent-browser, npx agent-browser или agent-browser install. Если команда отсутствует или не запускается, ничего глобально не устанавливай: верни BROWSER_UNAVAILABLE, покажи результат проверки и запроси у пользователя отдельное разрешение на изменение окружения.
Runtime поставляется заранее собранным в dist/ вместе со всеми Node.js-зависимостями. На целевой машине никогда не выполняй npm install, npm ci, npm update или npx для Fuel Watch. Отсутствие node_modules в установленном skill штатно. Если dist/scripts/collect.mjs отсутствует, верни ошибку повреждённого/неполного skill-пакета; не пытайся собирать его на целевой машине.
В штатной collection сайты открываются только через agent-browser, которым управляют скрипты. Не добавляй curl, fetch, прямой HTTP-клиент, CAPTCHA solver, dashboard, HAR, video, trace, restore/profile или фоновый браузер.