vsetup — единый онбординг dev-инфры Verta (оркестратор + манифест)
Find a file
luvlaceeeee f249576181
All checks were successful
ci / lint (push) Successful in 34s
ci / go-test (push) Successful in 37s
chore(manifest): ship make-interfaces-feel-better skill (claude_skills 21→22)
2026-06-25 23:57:22 +03:00
.forgejo/workflows feat: vsetup skeleton — embedded manifest, cobra cli, goreleaser (ref VERTA-754) 2026-06-07 16:03:31 +03:00
.verta-recall feat(setup): doctor, bootstrap.sh, update, install <component> (ref VERTA-756) 2026-06-07 17:10:23 +03:00
cmd/vsetup feat(doctor): freshness-чеки реп и self-version (ref VERTA-763) 2026-06-07 18:58:54 +03:00
docs feat(scripts): canon-consistency audit + smoke write-probe (rollout verify) 2026-06-23 14:36:34 +03:00
internal chore(manifest): ship make-interfaces-feel-better skill (claude_skills 21→22) 2026-06-25 23:57:22 +03:00
scripts fix(scripts): write-probe live-green — type=secret-manager + separate calls 2026-06-23 15:35:37 +03:00
.gitignore feat: vsetup skeleton — embedded manifest, cobra cli, goreleaser (ref VERTA-754) 2026-06-07 16:03:31 +03:00
.golangci.yml feat: vsetup skeleton — embedded manifest, cobra cli, goreleaser (ref VERTA-754) 2026-06-07 16:03:31 +03:00
.goreleaser.yaml feat: vsetup skeleton — embedded manifest, cobra cli, goreleaser (ref VERTA-754) 2026-06-07 16:03:31 +03:00
bootstrap.sh fix(bootstrap): detect tty by opening /dev/tty, not -r (ref VERTA-756) 2026-06-07 17:18:04 +03:00
go.mod feat: vsetup skeleton — embedded manifest, cobra cli, goreleaser (ref VERTA-754) 2026-06-07 16:03:31 +03:00
go.sum feat: vsetup skeleton — embedded manifest, cobra cli, goreleaser (ref VERTA-754) 2026-06-07 16:03:31 +03:00
README.md feat(setup): env support for mcp manifest entries (ref VERTA-1645) 2026-06-23 01:04:54 +03:00

verta-setup

Единая точка входа онбординга dev-инфры Verta. Go-CLI vsetup: оркестратор + embedded-манифест. Каждая репа экосистемы владеет своим install.sh — vsetup ведёт человека по шагам, ставит бинари и проверяет результат.

Быстрый старт (новая машина)

curl -fsSL https://forgejo.vertaspace.com/verta/verta-setup/raw/branch/main/bootstrap.sh | sh

bootstrap.sh спросит Forgejo PAT, скачает vsetup из Releases (с проверкой checksums) и запустит гайдовый визард vsetup setup.

Команды

Команда Что делает
vsetup setup Гайдовый визард онбординга: prereqs → креды → клон → бинари → инсталлеры → хуки → doctor; --from <шаг>, --yes, идемпотентен
vsetup doctor Stateless-диагностика: бинари+версии vs latest, хуки, MCP, маркеры, счётчики; --json; провалы → exit ≠ 0
vsetup update Re-pull реп + переустановка бинарей (включая self-update) и инсталлеров
vsetup install <component> Точечная установка/починка компонента манифеста
vsetup manifest Печатает карту экосистемы: бинари, инсталлеры, хуки, счётчики
vsetup version Версия CLI

Архитектура

Оркестратор + манифест. internal/manifest/manifest.yaml (зашит через embed.FS) — единственный источник правды: какие репы клонить, какие бинари ставить из Forgejo Releases, какие инсталлеры звать и какими managed-маркерами проверять результат. Логика установки конкретной репы живёт в самой репе — vsetup её не дублирует.

MCP-записи с env. stdio-MCP в mcp: может объявить переменные окружения (env:), которые vsetup прокинет в claude mcp add -e K=V:

  • type: literal — несекретное значение прямо в манифесте (value — само значение).
  • type: required-passthrough — секрет: value хранит имя env-переменной, значение читается из окружения процесса при регистрации и в git не попадает. Пустое значение → сервер не регистрируется (fail-closed), печатается только имя.

Слои — по канону экосистемы (паттерн vobs):

cmd/vsetup            composition root (cobra-провода)
internal/handler/cli  тела команд (I/O параметрами, тестируемые)
internal/service/     creds, gitops, release, installer, hookwire, doctor
internal/manifest     карта экосистемы + валидация
internal/pkg/term     наратив визарда: шаги, счётчики, prompt/confirm

Разработка

go build ./cmd/vsetup
go test ./...
golangci-lint run

Релиз: тег v*.forgejo/workflows/release.yml → goreleaser → Forgejo Releases (архивы + checksums.txt).

Эта репа — публичная (единственная в org): bootstrap.sh должен качаться без кредов, иначе курица-яйцо. Секретов здесь нет и быть не должно.

План — Linear, проект «vsetup: единый онбординг dev-инфры + чистка CLI-имён» (label setup). Решения — docs/decisions/.