Как отучить нейросеть писать кривой Go-код
Каждый, кто пробовал генерировать Go-код через Cursor, Claude Code или Copilot, наверняка сталкивался с их специфическими привычками. Нейросети упорно пытаются тащить в Go паттерны из Java, забывают оборачивать ошибки через %w, игнорируют гонки преследования в горутинах и генерируют монструозные структуры там, где хватило бы простой функции.
Промптить модель каждый раз вручную — сомнительное удовольствие. Хочется один раз дать ассистенту правильный свод правил и забыть о постоянных поправках в ревью. Именно для этого французский разработчик Samuel Berthe (автор популярной библиотеки samber/lo) создал проект cc-skills-golang.

Что такое агентские скиллы и зачем они нужны
Концепция Agent Skills выросла из простой проблемы: системный промпт нейросети не резиновый. Если загрузить в контекст подробное руководство по стилю, правила безопасности, особенности работы с базой данных и фреймворками, у модели банально не останется места для самого вашего кода. Ответы станут медленнее, а качество генерации упадёт.
Скиллы решают эту задачу через ленивую загрузку. Проект представляет собой набор небольших Markdown-файлов. На старте сессии в память LLM попадает только краткая выжимка о каждом модуле (около 100 токенов на скилл). Как только вы просите ассистента «напиши бенчмарк для этой функции» или «добавь обработку ошибок в gRPC-хендлер», модель видит подходящий триггер и подгружает подробный документ с инструкциями именно под эту задачу.
Никакого мусора от ИИ
Главная деталь в README репозитория — честное предупреждение автора: «No AI slop here».
Сегодня GitHub завален автоматически сгенерированными базами знаний, от которых вреда больше, чем пользы. Сэмиель поступил иначе. Он действительно использовал Claude для первичной дистилляции правил из своих коммитов в реальных Go-проектах, но затем вручную переписал, отредактировал и протестировал каждую инструкцию.
Автор даже провёл замеры точности на наборе тестов:
- Без подключаемых скиллов языковая модель правильно выполняла тестовые задания в 56% случаев.
- С подключённым набором правил показатель поднялся до 98%.
Особенно сильный прирост точности виден в специфических темах: модернизации старого кода под новые фичи Go (range-over-int, iterators), написании бенчмарков и обработке ошибок.
Что внутри репозитория
Все инструкции разбиты на две большие категории: общие языковые правила и работа с конкретными библиотеками.
Общие правила языка и архитектуры
Модули закрывают практически весь цикл разработки на Go:
- Качество кода и стиль: правила именования, безопасная работа с
nilи слизами, защита от утечек памяти, корректная документация и настройкаgolangci-lint. - Архитектура и паттерны: обработка контекстов, конкурентность без утечек горутин, проектирование структур и интерфейсов, шаблоны рефакторинга через
gopls. - Тестирование и отладка: табличные тесты, поиск гонок, профилирование через
pprof, настройка OpenTelemetry и сбора метрик. - Настройка проекта: идиоматичная структура каталогов (cmd/internal/pkg), CI/CD пайплайны и управление модулями.
Поддержка популярных библиотек
Помимо стандартов самого языка, в репозиторий зашиты правила для работы с ходовым инструментарием:
- CLI и конфиги:
spf13/cobraиspf13/viper. - Dependency Injection:
google/wire,uber/dig,uber/fxи собственного контейнераsamber/do. - Сетевые протоколы: gRPC, GraphQL (
gqlgen) и OpenAPI/Swagger. - Экосистема samber: функциональные хелперы
samber/lo, монадыsamber/mo, логированиеsamber/slogи цепочки ошибокsamber/oops.
Интересный момент: скиллы спроектированы так, чтобы не дублировать друг друга. Если правило обработки ошибок влияет на логирование, оно описано в модуле golang-error-handling, а модуль golang-observability просто ссылается на него. Это бережёт токены.
Как это установить
Проект поддерживает почти все популярные инструменты, работающие со стандартом Agent Skills.
Самый универсальный способ — утилита skills:
npx skills add https://github.com/samber/cc-skills-golang --all
Если вы работаете в Cursor, достаточно клонировать репозиторий в папку с навыками:
git clone https://github.com/samber/cc-skills-golang.git ~/.cursor/skills/cc-skills-golang
Для Claude Code установка выполняется стандартной командой плагина:
/plugin marketplace add samber/cc
/plugin install cc-skills-golang@samber
Аналогичным образом поддерживаются Copilot, Gemini CLI, OpenCode и Codex от OpenAI.
Использование на CI для авто-ревью
Интересный сценарий применения, описанный автором — запуск AI-агентов в роли ревьюеров на GitHub Actions.
Обычные линтеры отлично ловят форматирование или неиспользованные переменные. Однако они бессильны, если нейросеть при рефакторинге тихо нарушила архитектурную связность или забыла отменить контекст при выходе из функции. Подключённый к PR агент с набором этих скиллов проверяет код именно на соблюдение идиом Go и подсвечивает архитектурные проблемы до того, как PR попадёт к живым коллегам.
Стоит ли пробовать
Если вы активно используете нейросети при разработке на Go и устали править за ними банальные ошибки, поставить этот набор точно стоит. Он не превратит AI в старшего архитектора, но существенно снизит количество глупых опечаток и неидиоматичного кода.
Особенно приятно, что проект не пытается перегрузить контекст и оставляет возможность переопределить любой скилл правилами вашей компании. Достаточно создать свой внутренний модуль и указать в нём, что он имеет приоритет над стандартным.
