JetBrains go-modern-guidelines: современный Go для AI-агентов
Обзор JetBrains/go-modern-guidelines — open-source инструмента, обучающего AI-агентов писать современный Go-код с учётом версии проекта.
JetBrains go-modern-guidelines: современный Go для AI-агентов
Что это и для кого
Modern Go Guidelines — набор «навыков» (skills), помогающих AI-агентам писать актуальный Go-код, соответствующий версии Go в вашем проекте. Проект опубликован JetBrains на GitHub под открытой лицензией и ориентирован прежде всего на Go-разработчиков, активно использующих AI-ассистентов в своём рабочем процессе.
Проблема проста: AI пишет рабочий Go, но часто устаревший. Modern Go Guidelines устраняет это системно, а не точечными правками.
AI-модели обучаются на открытых кодовых базах, в которых «старого» кода объективно больше, чем нового. Из-за этого они предпочитают устаревшие паттерны даже тогда, когда знакомы с современными альтернативами.
Новые возможности языка и стандартной библиотеки могут также лежать за пределами датасета обучения модели.
Ключевые возможности
1. Покрытие версий Go 1.0–1.27
Навыки охватывают полезные возможности языка и дополнения стандартной библиотеки от Go 1.0 до Go 1.27. Рекомендации для более новых версий автоматически исключаются, если проект использует более старую версию.
По мере выхода новых релизов Go рекомендации обновляются, чтобы AI-агенты генерировали код, соответствующий актуальным практикам.
2. Конкретные паттерны вместо размытых советов
Агент с этими рекомендациями использует max(a, b) вместо if-else блока, slices.Contains вместо ручного цикла, cmp.Or(a, b, c) вместо цепочки nil-проверок.
Инструмент также информирует агента о недавних добавлениях, таких как new(42) для получения указателя на значение и errors.AsType[T](err) для типобезопасного сопоставления ошибок из Go 1.26.
Примеры конкретных замен, которые применяет агент:
// Устаревший паттерн → Современный аналог
// time
time.Now().Sub(start) → time.Since(start)
deadline.Sub(time.Now()) → time.Until(deadline)
// errors
err == target → errors.Is(err, target)
// interface
interface{} → any
// строки
bytes.Index + slice → before, after, ok := bytes.Cut(b, sep)
// fmt
[]byte(fmt.Sprintf(...)) → fmt.Appendf(buf, ...)
// atomics (type-safe)
atomic.StoreInt32(...) → var flag atomic.Bool; flag.Store(true)
3. Прогрессивное раскрытие контекста
Инструмент использует команду list для коротких рекомендаций и explain для детальных примеров. Этот подход даёт агентам подробное руководство только тогда, когда оно действительно нужно, и помогает применять навыки надёжнее.
# Получить список всех правил
go-modern-guidelines list
# Получить детальное объяснение конкретных правил
go-modern-guidelines explain generic_methods atomic_types errors_as_type
4. Широкая поддержка агентов
Инструмент работает с множеством совместимых агентов: Claude Code, Cursor, GitHub Copilot, Windsurf, Codex, Gemini CLI, Cline, Amp и другими.
Один и тот же пакет навыков работает и в других агентах, таких как OpenCode.
5. Без модификации проекта
CLI устанавливается в локальный кеш (например, ~/.cache/go-modern-guidelines) и никогда не изменяет ваш проект.
Как это работает
graph TD
A[AI-агент получает задачу] --> B[Загружает skill use-modern-go]
B --> C[Читает версию Go из go.mod]
C --> D{Фильтрует правила\nпо версии Go}
D --> E[list: короткий список рекомендаций]
D --> F[explain: детальные примеры]
E --> G[Агент пишет современный Go-код]
F --> G
G --> H[Код не содержит устаревших паттернов]
Установка
Плагин можно установить из маркетплейса или локального репозитория. Интеграция требует наличия Go toolchain, запускается из локального кеша и не изменяет ваш проект.
Для Claude Code:
claude mcp add go-modern-guidelines -- go-modern-guidelines serve
Для Cursor:
cursor-agent plugin marketplace add https://github.com/JetBrains/go-modern-guidelines
# Затем внутри сессии Cursor:
/plugins
Через npm skills CLI (универсальный способ):
npx skills add https://github.com/jetbrains/go-modern-guidelines --skill use-modern-go
CLI ориентирован на Go 1.25 и новее; на более старом Go он всё равно работает, если включено автоматическое переключение тулчейна (GOTOOLCHAIN=auto, по умолчанию).
Тарифы и цены
Проект полностью бесплатный и распространяется с открытым исходным кодом на GitHub. Никаких платных тарифов, SaaS-подписок или ограничений по использованию нет. Единственное требование — наличие Go toolchain на вашем PATH.
Плюсы и минусы
| ✅ Плюсы | ❌ Минусы |
|---|---|
| Бесплатный, open-source | Требует Go toolchain на PATH |
| Покрывает Go 1.0–1.27 | Не охватывает архитектурные паттерны и concurrency-антипаттерны |
| Работает с 39+ AI-агентами | Зависит от того, насколько агент следует инструкциям |
| Не изменяет проект | Обновления правил идут с небольшой задержкой после релиза Go |
| Прогрессивное раскрытие контекста (list/explain) | Нет интеграции с CI/CD «из коробки» |
| Регулярно обновляется под новые версии Go | Ограниченная документация для кастомизации |
Дополняет go fix, а не дублирует его | Помогает только при генерации нового кода |
Сравнение с альтернативами
| Параметр | go-modern-guidelines | golangci-lint | mhmtszr/go-guidelines |
|---|---|---|---|
| Назначение | Навыки для AI-агентов | Статический анализ/линтинг | Навыки для AI-агентов |
| Область | Современные паттерны Go | Качество кода (50+ линтеров) | Современные паттерны + production-практики |
| Версионирование Go | ✅ Автоматически из go.mod | ⚠️ Частично | ✅ Автоматически из go.mod |
| Работа с AI | ✅ Встроена (MCP/skill) | ❌ Не предназначен | ✅ Встроена |
| Работа в CI/CD | ❌ Нет | ✅ Да | ❌ Нет |
| Исправление существующего кода | ❌ Только новый | ✅ Да | ⚠️ Частично (через go fix) |
| Поддерживающая организация | JetBrains | Open-source сообщество | Community (1 разработчик) |
| Цена | Бесплатно | Бесплатно | Бесплатно |
Современные рекомендации Go дополняют инструменты вроде go fix: репозиторий помогает агентам писать современный код с самого начала, тогда как команда go fix помогает обновить паттерны, которые уже существуют в кодовой базе.
Альтернативный проект mhmtszr/go-guidelines позиционируется как инструмент для написания «production-grade Go вместо tutorial-grade Go» и дополнительно охватывает настройку производительности, обработку ошибок, паттерны конкурентности, тестирование и graceful shutdown.
Вердикт
go-modern-guidelines — узкоспециализированный, но очень точно бьющий в цель инструмент. Если вы Go-разработчик и регулярно используете AI-агентов для написания кода, этот плагин устраняет одну из самых раздражающих проблем: агент умеет писать на Go, но пишет как пять лет назад.
Анализатор modernize существует для автоматического обновления существующего кода до новых идиом — эти рекомендации служат той же цели для нового кода: агенты пишут современный Go сразу, что означает меньше работы по исправлению позже.
Кому подойдёт:
- Go-разработчикам, использующим Claude Code, Cursor, Codex, Junie или любой другой совместимый агент
- Командам, которые хотят поддерживать современный стиль кода без ручного код-ревью на предмет устаревших паттернов
- Тем, кто переходит на новые версии Go и хочет, чтобы AI «знал» о новых возможностях языка
Кому не подойдёт:
- Разработчикам, не использующим AI-агентов совсем
- Тем, кому нужен инструмент для рефакторинга существующего кода (здесь нужен
go fix+golangci-lint)
Рейтинг: 8/10
| Критерий | Оценка |
|---|---|
| Решение проблемы | ⭐⭐⭐⭐⭐ |
| Простота установки | ⭐⭐⭐⭐ |
| Покрытие версий Go | ⭐⭐⭐⭐⭐ |
| Поддержка агентов | ⭐⭐⭐⭐⭐ |
| Документация | ⭐⭐⭐ |
| Зрелость проекта | ⭐⭐⭐⭐ |