Как научить нейросети писать код по гайдлайнам Google
Знакомая ситуация: просишь ChatGPT или Claude набросать структуру для Android-приложения, а в ответ получаешь код пятилетней давности с перемешанными слоями и странными архитектурными решениями. Нейросети отлично справляются с базовым синтаксисом Jetpack Compose, но когда дело доходит до специфических инструментов вроде R8 или глубокой оптимизации, они начинают «галлюцинировать» или выдавать общие советы из учебников.
Команда Android решила эту проблему изящно. Вместо того чтобы ждать, пока OpenAI или Anthropic дообучат свои модели на свежей документации, они выпустили репозиторий android/skills. Это набор модульных инструкций, которые «приземляют» LLM, давая им актуальный контекст и конкретные спецификации для выполнения задач именно так, как это задумали инженеры Google.
Что внутри этого репозитория
Проект представляет собой реализацию открытого стандарта agent skills. По сути, это набор Markdown-файлов (SKILL.md), которые содержат технические спецификации конкретных задач. Эти файлы скармливаются ИИ-агенту, чтобы тот понимал воркфлоу и лучшие практики в узких областях.
Интересно, что Google не тратит время на обучение нейросетей тому, что они и так умеют. Вы не найдете здесь инструкций «как сделать кнопку в Compose». Разработчики сфокусировались на зонах, где LLM традиционно проседают по результатам тестов.
Зачем это нужно обычному разработчику
Главная ценность проекта — в автоматизации рутины, которую страшно доверить обычному чат-боту. Вот несколько примеров того, что можно делать с помощью этих «скиллов»:
- Анализ R8 и ProGuard. Настройка правил сжатия кода — та еще головная боль. Скилл
r8-analyzerпомогает нейросети понять, почему конкретный класс был удален или почему бинарник весит больше, чем ожидалось. - Работа через CLI. В репозитории есть инструменты для интеграции этих навыков прямо в терминал. Можно одной командой добавить нужный контекст в проект.
- Поддержка разных агентов. Хотя Google продвигает Gemini, архитектура скиллов универсальна. Инструкции можно адаптировать под любого агента, который поддерживает системные промпты или контекстные файлы.
Как начать пользоваться
Для работы со скиллами Google предлагает использовать свой Android CLI. Установка конкретного навыка в проект выглядит так:
android skills add --skill=r8-analyzer --project=.
Если хочется обновить базу знаний для своих локальных ИИ-помощников (например, для Gemini в Android Studio), можно установить всё разом:
android skills add --all
По умолчанию инструменты устанавливаются в директорию ~/.gemini/antigravity/skills. Это системный путь, откуда агенты подтягивают инструкции перед началом работы над вашим кодом.
Техническая сторона вопроса
В основе лежит формат SKILL.md. Это не просто текст, а структурированное описание:
- Цель: что именно должен сделать агент.
- Контекст: ссылки на актуальную документацию developer.android.com.
- Ограничения: чего делать нельзя (например, использовать устаревшие библиотеки).
- Примеры: эталонные куски кода.
Такой подход решает проблему «дрейфа знаний», когда модель смешивает подходы разных версий Android SDK. Вы буквально говорите нейросети: «В этой задаче забудь всё, что ты знала раньше, и делай строго по этому мануалу».
Стоит ли внедрять это в работу
Проект android/skills сейчас находится в активной фазе. Важный нюанс: Google пока не принимает внешние pull-реквесты, проект ведется закрытой командой, хотя и открыт под лицензией Apache 2.0. Это значит, что мы получаем «официальное мнение» платформы в чистом виде.
Кому это пригодится в первую очередь:
- Командам, которые активно используют ИИ-ассистентов для ревью кода.
- Разработчикам, которые занимаются оптимизацией сборки и профилированием.
- Тем, кто хочет автоматизировать написание документации или миграцию на новые версии библиотек.
Пока в репозитории не так много специфичных навыков, но само появление такого стандарта от Google — это сигнал. Скорее всего, в ближайшем будущем написание кода будет выглядеть как диалог с агентом, у которого под рукой всегда есть актуальный набор таких «скиллов» для каждой библиотеки в вашем build.gradle.
Если вы часто ловите себя на мысли, что ChatGPT советует вам использовать findViewById в 2024 году, попробуйте подкинуть ей файлы из этого репозитория. Результат может приятно удивить.
