From zerovibe
Конвенции проекта zerovibe (Go + HTMX + SQLite, чистая архитектура) И правила общения с пользователем. Используй при ЛЮБОЙ работе над zerovibe-приложением — обсуждении идеи, написании или изменении кода (хендлеров, usecase, репозиториев, доменных сущностей, шаблонов), ответах пользователю.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zerovibe:conventionsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Приложение на стэке **Go + HTMX + SQLite** с чистой архитектурой. Соблюдай эти
Приложение на стэке Go + HTMX + SQLite с чистой архитектурой. Соблюдай эти правила при генерации и изменении кода — они отражают эталонный скелет.
Пользователь Zerovibe — создатель продукта, НЕ программист. Он мыслит продуктом и пользователями, а не кодом. Поэтому:
/zerovibe:install, /zerovibe:init, /zerovibe:deploy).
Запуск, сборку, тесты, исправления делай сам.Короткое правило: продуктовые вопросы — пользователю; технические — себе.
internal/
domain/ сущности + инварианты + ошибки. ТОЛЬКО stdlib. Без БД, без HTTP, без тегов.
usecase/ бизнес-логика + порты (интерфейсы репозиториев). Зависит только от domain.
repository/sqlite/ реализация портов поверх SQLite.
platform/db/ SQLite + ОЧЕРЕДЬ ЗАПИСИ (единый писатель). Не трогать без необходимости.
transport/web/ HTTP/HTML на HTMX. Зависит от usecase.
cmd/server/ composition root: склейка слоёв.
domain не импортирует ничего из проекта и никаких json/db-тегов не несёт.usecase объявляет порты (интерфейсы), реализации внедряются снаружи.db.Write(ctx, func(*sql.DB) error {...})
— это сериализует их в единой writer-горутине, поэтому SQLITE_BUSY не возникает.db.Read(...), параллельно.db.Write.internal/platform/db/migrations/NNNNN_*.sql
(встроены через embed, применяются при старте через db.MigrateUp).CREATE TABLE в коде репозитория. Так у уже задеплоенных
приложений база корректно доедет до новой версии.-- +goose Up и -- +goose Down.В эталоне УЖЕ есть, бери как данность:
allow_signup), подтверждение почты по умолчанию
выключено (require_email_verification) — обе управляются настройками.internal/domain/setting.go, CRUD под admin (/admin/settings). Новая настройка =
запись в реестре.PLATFORM_API_URL/PLATFORM_API_KEY (для отправки писем), APP_BASE_URL,
SECURE_COOKIE. Креатор о них не думает — НЕ проси задавать их руками.GET страницы — отдаёт ПОЛНУЮ страницу (layout + content).POST/PUT/DELETE) возвращают РОВНО ТОТ HTML-фрагмент, который
меняется (например, один элемент списка), а не всю страницу. htmx подменяет его
на клиенте через hx-target / hx-swap.html/template (stdlib), встроены через embed. Фрагмент = отдельный
{{define "..."}}.static/app.css, локальная статика). Дизайн экранов
переносится из макета Pencil — см. skill design. Не сочиняй внешний вид сам,
бери его из макета.domain (ErrValidation, ErrNotFound, ...).fail в transport/web),
через errors.As / errors.Is. Новую доменную ошибку добавляй туда же.NewX) — единственное место инвариантов сущности.context.Context первым аргументом во все методы, ходящие в БД/сеть.modernc.org/sqlite (без CGO).CREATE TABLE IF NOT EXISTS в коде — только
goose-миграции (см. раздел «Миграции»).Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub chudno/zerovibe --plugin zerovibe