بنقرة واحدة
colgen
Colgen — генератор коллекций для Go-структур. Используй при работе с collection.go и конвертерами между слоями.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Colgen — генератор коллекций для Go-структур. Используй при работе с collection.go и конвертерами между слоями.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
API Health — проверка здоровья JSON-RPC сервиса через SMD. Используй когда нужно убедиться что RPC-endpoint жив, собрать тайминги методов или диагностировать недоступность API.
Appkit — библиотека vmkteam/appkit: метрики, pprof, HTTP client, service metadata, X-Request-ID. Используй при подключении метрик/pprof в сервис, работе с HTTP-клиентом appkit или добавлении корреляционных ID.
CI/CD — GitLab CI + Nomad deploy для Go-сервисов vmkteam. Используй при редактировании .gitlab-ci.yml, *.nomad.hcl, настройке пайплайна или дебаге деплоя.
Commit message — краткое сообщение коммита на английском из git diff. Используй перед `git commit`, после /solve, или при явной просьбе 'сгенерируй commit message'.
Cron — менеджер cron-задач с UI, middleware и Prometheus-метриками. Используй при добавлении/правке cron-задачи, подключении пакета vmkteam/cron или настройке CronConfig.
Decompose — исследование и декомпозиция User Story на подзадачи с созданием в YouTrack. Используй когда задача крупная, неконкретная или User Story — перед /solve.
| name | colgen |
| description | Colgen — генератор коллекций для Go-структур. Используй при работе с collection.go и конвертерами между слоями. |
Upstream: https://github.com/vmkteam/colgen Docs: https://vmkteam.dev/colgen/
Генерирует коллекции (XxxList []Xxx) с утилитарными методами из директив в collection.go. Также: inline-сниппеты, LLM-режимы.
//go:generate colgen — запуск генератора в файле//colgen:News,Tag — базовая генерация типов + IDs() + Index() (если есть поле ID)//colgen:News:<Method>[,<Method>...] — дополнительные методы| Директива | Эффект |
|---|---|
NewsID | NewsIDs() []int (если поле ID нестандартное) |
Index(Field) | IndexByField() map[T]News |
UniqueField | уникальные значения (поддерживает *T c nil-check) |
Count(Field) | CountByField(v) int |
Group(Field) | GroupByField() map[T]NewsList; для []T — fan-out |
Fill(Target,Junction) | заполняет связи; режим определяется типом junction |
Cast(Interface) | Interfaces() []Interface через pointer receiver |
Map(pkg) / MapP(pkg) | конструктор NewNewsList(in []pkg.News) NewsList |
map/mapp | то же в lowercase (приватный конструктор) |
<Field> по типуStatusID int → StatusIDs() []intTagIDs []int → flatten в []int (не [][]int)Author *Author → []Author с nil-check и разыменованиемFill(Tags,TagIDs) где TagIDs []int → many-to-many через related.Index() + append
Fill(Author,AuthorID) где AuthorID *int → one-to-one с nil-check
Все FillXxx возвращают ll для чейнинга: news.FillTags(tags).FillAuthor(authors)
//go:generate colgen -imports=newsportal/pkg/db
//colgen:News,Tag
//colgen:News:UniqueTagIDs,Map(db)
Требования:
Map[T,M] / MapP[T,M] (pointer-версия)MapP(db) — если NewNews принимает *db.Newsmap/mapp (lowercase) — приватные конструкторыdb-слое: Map(db.News) (полный путь)[]News вместо NewsListMap/MapP: -funcpkg=<pkg> + имя пакета в -imports через запятую//colgen@NewNews(db))Map/MapP в проектMap(db) в colgenЕсли добавить Map(db) сразу — не скомпилируется (нет NewNews), AST-парсинг упадёт.
Если всё сломалось — удалить *_colgen.go и перегенерировать. Но: если сгенерированные функции уже используются в коде — удаление даст нерабочий код, и генератор не запустится. Временно удалить использования, перегенерировать, вернуть.
Рекомендация: один colgen на пакет, директивы в collection.go.
//colgen@<Name>(<pkg>) заменяется прямо в файле на тип + конструктор.
//colgen@NewNews(db) // embed-стиль (домен-слой)
//colgen@newNewsSummary(db.News,full,json) // full + json-теги (API-слой)
Embed-вариант:
type News struct { db.News }
func NewNews(in *db.News) *News { ... }
Full-вариант — явные поля с тегами json:"..." (поле ID получает тег json:"<entityName>Id").
На сложных объектах сниппет может быть невалиден — редактировать вручную.
Нужен API-ключ. Отправляется содержимое файла (+ тест) + промт.
//colgen@ai:review → .md с ревью//colgen@ai:readme → README.md по файлу//colgen@ai:tests → _test.goСуффикс (deepseek) или (claude). DeepSeek по умолчанию.
*_colgen.go с // Code generated by colgen; DO NOT EDIT.collection.go (директивы), файлы inline-сниппетов после первой генерации