ワンクリックで
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-сниппетов после первой генерации