From vmkteam-developer
Scaffolds new Go API services from vmkteam/gold-apisrv template, customizing module name, business layer, PostgreSQL database, port, path, and optional VT admin CRUD or VFS file storage.
npx claudepluginhub vmkteam/claude-plugins --plugin vmkteam-developerThis skill uses the workspace's default tool permissions.
Создание нового проекта из шаблона vmkteam/gold-apisrv (https://github.com/vmkteam/gold-apisrv).
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Создание нового проекта из шаблона vmkteam/gold-apisrv (https://github.com/vmkteam/gold-apisrv).
Спроси у пользователя:
reviewsrv, ordersrv)ordersrv → бизнес-слой orders). По умолчанию = имя проекта без суффикса srv~/{workspace}/{name}/)public)git clone https://github.com/vmkteam/gold-apisrv.git {path}/{name}
cd {path}/{name}
rm -rf .git
git init
В шаблоне есть make init который выполняет начальную настройку, включая генерацию Makefile.mk из Makefile.mk.dist. Запустить:
make init
Makefile.mk — локальный конфиг проекта (переменные, пути), подключается из основного Makefile. Находится в .gitignore.
# go.mod
sed -i '' 's/module apisrv/module {name}/' go.mod
# Все импорты в .go файлах
find . -name '*.go' -not -path './vendor/*' -exec sed -i '' 's|"apisrv/|"{name}/|g' {} +
Файлы для правки:
| Файл | Что менять |
|---|---|
cmd/apisrv/main.go | const appName = "apisrv" → "{name}" |
Makefile | NAME := apisrv → NAME := {name} |
Makefile | PGDATABASE ?= apisrv → PGDATABASE ?= {name} |
Makefile | TEST_PGDATABASE ?= test-apisrv → TEST_PGDATABASE ?= test-{name} |
deployments/Dockerfile | CI_PROJECT_NAME=apisrv → CI_PROJECT_NAME={name} |
cfg/local.toml.dist | Database = "apisrv" → Database = "{name}" |
mv cmd/apisrv cmd/{name}
mv docs/model/apisrv.mfd docs/model/{name}.mfd
mv docs/apisrv.sql docs/{name}.sql
mv docs/apisrv.pgd docs/{name}.pgd 2>/dev/null
# Обновить ссылки в Makefile
sed -i '' 's/apisrv\.mfd/{name}.mfd/g' Makefile
Если бизнес-слой называется иначе (например billing вместо order):
# Переименовать domain-пакет если существует
mv pkg/apisrv pkg/{domain_name} 2>/dev/null
# Обновить импорты
find . -name '*.go' -not -path './vendor/*' -exec sed -i '' 's|"{name}/pkg/apisrv"|"{name}/pkg/{domain_name}"|g' {} +
Если VT не нужен — удалить:
rm -rf pkg/vt/
# Убрать registerVTApiHandlers из pkg/app/handlers.go
# Убрать VT-импорты из pkg/app/app.go
cp cfg/local.toml.dist cfg/local.toml
Обновить в cfg/local.toml:
Port = {port}Database = "{name}"EnableVFS = {true/false}В docs/model/{name}.mfd:
<Name>{name}.mfd</Name>
make db # создать БД и загрузить схему
make db-test # создать тестовую БД
make mod # go mod tidy && go mod vendor
make build # скомпилировать
make run # запустить в dev-режиме
curl http://localhost:{port}/status
curl http://localhost:{port}/v1/rpc/
curl http://localhost:{port}/metrics
{name}/
├── Makefile # основной (include Makefile.mk)
├── Makefile.mk # локальные переменные (gitignored)
├── cmd/{name}/main.go # точка входа
├── pkg/
│ ├── app/ # App, handlers, metrics, config
│ ├── db/ # ORM-модели, репозитории
│ ├── {domain_name}/ # Domain (бизнес-логика, если нужна)
│ ├── rpc/ # Публичный API
│ └── vt/ # Admin API (если нужен)
├── docs/
│ ├── {name}.sql # DDL
│ ├── {name}.pgd # Схема pgDesigner
│ ├── init.sql # seed data
│ ├── patches/ # Миграции (pgmigrator)
│ └── model/{name}.mfd # MFD-схема
├── cfg/
│ ├── local.toml # конфиг (gitignored)
│ └── local.toml.dist # шаблон конфига
├── deployments/Dockerfile
└── go.mod
docs/{name}.sql — всегда актуальный. Это source of truth. Миграций нет.
При изменении схемы:
docs/{name}.pgd → pgdesigner generate → обновить docs/{name}.sqlmake db — пересоздать БД с нуляmake mfd-xml && make mfd-model — перегенерировать Go-кодНельзя пересоздать БД на devel → появляются миграции в docs/patches/.
При изменении схемы:
docs/patches/ (/pgmigrator)docs/{name}.sql (держать в актуальном состоянии)pgmigrator run на develmake mfd-xml && make mfd-modelpgdesigner generatemake db → make mfd-xml → make mfd-model → /mfdmake mfd-vt-rpc NS=...)