Addy Osmani зашил сениор-инженерную дисциплину в скиллы для AI-агентов
Addy Osmani — бывший лид Chrome DevEx, сейчас Director в Google Cloud AI — собрал на GitHub 20 скиллов для AI-агентов. Разбираем, чем именно они заставляют агента вести себя как сениор и что забрать в свой инструмент без установки.
Новости TprogerAI-агент пишет фичу за минуту, а спецификация, тесты и ревью где-то теряются. Addy Osmani — бывший Engineering Lead Chrome Developer Experience в Google, сейчас Director в Google Cloud AI — собрал на GitHub репозиторий из 20 «навыков», которые заставляют агента не пропускать сениорские этапы работы. К моменту разбора в блоге репозиторий собрал 27 тысяч звёзд, к моменту этой публикации — уже больше 29 тысяч.
Скилл — это markdown-файл со специальной шапкой (frontmatter — служебный блок с метаданными в начале файла), который Claude Code или Anthropic Agent SDK подгружают в контекст агента по триггеру. Не справочник, а пошаговый workflow с чекпоинтами и критерием выхода: написать падающий тест, запустить, увидеть, что он падает, написать минимальный код, увидеть, что тест прошёл.
Поведение по умолчанию у любого AI-агента — кратчайший путь к «готово». Просишь функцию — он пишет функцию. Не задаёт вопросов про спеку, не пишет тест перед реализацией, не думает про границы доверия и не смотрит, как diff будет выглядеть в ревью. Скиллы прибивают сениорский каркас обратно.
Главное
Ключевые выводы
Что внутри Agent Skills и зачем оно нужно
- Addy Osmani опубликовал на GitHub набор из 20 скиллов для AI-агентов — markdown-файлов, в которых процесс встроен прямо в инструкции.
- За несколько недель проект собрал 27 000 звёзд и устанавливается в Claude Code одной командой.
- Скиллы покрывают шесть этапов цикла разработки: определение, планирование, сборка, верификация, ревью и выкат, плюс сквозной режим упрощения кода.
- Главные принципы дизайна: процесс важнее текста, антирационализационные таблицы, обязательная верификация, прогрессивное раскрытие, дисциплина по объёму.
- Формат переносится: те же markdown-файлы работают в Claude Code, Cursor, Gemini CLI, Codex, Aider, OpenCode.
Что внутри: 20 скиллов на шесть этапов разработки
Двадцать скиллов организованы вокруг шести фаз жизненного цикла, поверх которых сидят семь slash-команд. Это та же модель, по которой работают здоровые инженерные команды, просто с другой лексикой.
- Define — /spec: что именно мы строим.
- Plan — /plan: разбиение работы на куски.
- Build — /build: реализация вертикальными слайсами.
- Verify — /test: доказательство, что работает.
- Review — /review: что ускользнуло от автора.
- Ship — /ship: безопасный выкат.
- Cross-cutting — /code-simplify: упрощение в любой фазе.
Большая фича может активировать одиннадцать скиллов подряд, мелкий багфикс — три. Решает мета-роутер с именем using-agent-skills: он смотрит на запрос и подгружает только релевантные.
Пять принципов, на которых всё держится
1. Процесс важнее текста
Скилл — это последовательность шагов, а не эссе. Если положить в контекст агента двухтысячный текст «о лучших практиках тестирования», агент прочитает, сгенерирует правдоподобный ответ и тестов не напишет. Если положить workflow (пиши падающий тест → запусти → убедись, что упал → пиши код → убедись, что прошёл → рефактори), у агента есть, что делать, а у тебя — что проверять.
Это правило одинаково работает и для людей: справочник на 200 страниц никто не открывает в дедлайн, маленький workflow с чекпоинтами выполняется.
2. Антирационализационные таблицы
В каждом скилле есть таблица «оправданий» с заранее написанными контраргументами. Примеры:
- «Эта задача слишком простая для спеки» → критерии приёмки всё равно нужны. Пять строк подойдёт; ноль строк нет.
- «Тесты напишу позже» → «позже» — это слово-обманка. Никакого «позже» не будет: пиши падающий тест сейчас.
- «Тесты прошли — мержим» → проходящий тест — это улика, а не доказательство. Запусти приложение, проверь поведение, дай человеку посмотреть diff.
LLM хорошо умеет в правдоподобную аргументацию: «именно эта задача спеки не требует, именно этот merge безопасный без ревью». Антирационализационная таблица — это заранее заготовленные ответы на отговорки, которые агент пока ещё даже не придумал. Тот же приём отлично работает в человеческих командах.
3. Верификация — не опция
Каждый скилл заканчивается конкретной уликой: тесты прошли, билд чистый, трейс рантайма показывает ожидаемое поведение, ревьюер подписался. «Кажется, ОК» — недостаточно никогда. Агент-генератор всегда скажет, что всё хорошо, поэтому нужен отдельный сигнал, что работа действительно сделана.
4. Прогрессивное раскрытие
Все 20 скиллов в контекст не загружаются. На старте сессии активен только маленький мета-навык using-agent-skills, который выбирает релевантный скилл под текущую задачу. Каждый лишний токен в контексте где-то уменьшает качество, поэтому подгружать нужно только то, что реально применимо.
5. Дисциплина по объёму
Мета-скилл фиксирует жёсткое правило: трогай только то, о чём попросили. Не рефактори соседние модули. Не сноси код, который не понимаешь до конца. Это самый частый параметр, по которому пулреквест агента становится немёрджибельным: где-то по пути он решил «заодно отрефакторить».
ДНК Google в каждом скилле
Скиллы насыщены практиками из книги Software Engineering at Google и публичной инженерной культуры. Это сделано осознанно: большая часть того, что заставляет работать большой код, задокументирована — и именно это агент пропускает первым делом.
- api-and-interface-design — закон Хайрама: любое наблюдаемое поведение API кто-то рано или поздно начнёт использовать.
- test-driven-development — пирамида ~80/15/5 (unit / integration / e2e) и правило Бейонсе: «если функционал тебе нравится — обязательно прикрой его тестом». DAMP важнее DRY в тестах: тест должен читаться как спецификация, даже ценой дублирования.
- code-review-and-quality — пулреквесты по 100 строк и метки Critical / Nit / Optional / FYI. Большие PR не ревьюят, их штампуют.
- code-simplification — забор Честертона: не сноси, пока не понял, зачем поставили. Удалённый код имеет привычку возвращаться багом.
- git-workflow-and-versioning — trunk-based development и атомарные коммиты.
- ci-cd-and-automation — shift-left и feature-флаги: лови проблемы как можно раньше, выкат и релиз — разные операции.
- deprecation-and-migration — код как обязательство: каждая строка живёт ровно столько, сколько её обслуживают.
Любая модель видела в обучении словосочетание «закон Хайрама», но не применяет его, проектируя API в три часа ночи. Скиллы — способ сделать так, чтобы применяла.
Три режима использования
Режим 1: установка плагином в Claude Code.
Получаешь все slash-команды, скиллы активируются автоматически по контексту.
Режим 2: ручной импорт markdown в свой инструмент. Скиллы — это plain-markdown, переносится куда угодно. В Cursor — в .cursor/rules/. Gemini CLI, Codex, Aider, Windsurf, OpenCode — у каждого свой путь, но workflow одинаковый.
Режим 3: ничего не устанавливать, читать как спеку. Открыть code-review-and-quality.md и применить пятиосевую шкалу серьёзности замечаний (Critical / Nit / Optional / FYI плюс blocking-комментарий) к ревью своей команды. Открыть test-driven-development.md и закрыть следующий спор «нужно ли писать тест первым». Открыть мета-навык и взять оттуда пять non-negotiables в свой AGENTS.md.
Частые вопросы
Что такое скилл в Claude Code и Anthropic Agent SDK?
Markdown-файл с frontmatter, описывающий пошаговый workflow и подгружаемый в контекст агента по триггеру. Не справочник, а runbook с чекпоинтами и явным критерием выхода.
Сколько скиллов в Agent Skills и какие фазы они покрывают?
Двадцать скиллов на шести фазах SDLC: spec, plan, build, test, review, ship. Поверх — семь slash-команд, включая cross-cutting code-simplify.
Как поставить набор в Claude Code?
Через marketplace: /plugin marketplace add addyosmani/agent-skills, затем /plugin install agent-skills@addy-agent-skills. После этого появляются slash-команды и автоматическая активация скиллов.
Подойдёт ли формат другим инструментам, кроме Claude Code?
Да. Markdown с frontmatter переносится: Cursor через .cursor/rules/, Gemini CLI, Codex, Aider, Windsurf, OpenCode — везде, где есть system-prompt и подгрузка инструкций.
Зачем именно антирационализационные таблицы?
LLM умеет генерировать правдоподобные оправдания пропуска шагов. Заранее зафиксированные отговорки и встречные реплики не дают агенту обойти процесс «по ситуации».
Выводы
Главная идея проекта не в самих скиллах, а в подходе. AI-агент — это крайне способный джуниор без инстинкта на ту часть работы, которая не попадает в diff. Сениор-инженерные шаги — спека, размер изменений, оставленные доказательства, отказ мержить непрослеживаемое — именно то, что агент пропустит, если пропуск возможен в принципе.
Задача всё чаще сводится к тому, чтобы закодировать эту дисциплину так, чтобы агент не мог уговорить себя её обойти.
Репозиторий лежит на github.com/addyosmani/agent-skills под лицензией MIT, разбор подхода опубликован в блоге Addy Osmani. Те же markdown-файлы можно прочитать как описание того, как должна выглядеть инженерия с AI-агентами — и забрать оттуда пять non-negotiables в свой AGENTS.md без установки чего-либо.
Берите одну фазу — спеку, ревью или верификацию — и закрепляйте её в правилах своего агента. Дальше расширяйте по мере того, какие шаги команда чаще всего пропускает.