Кросс-каттинг правила работы с интерфейсом на htmx: единый партиал = страница = фрагмент (+инвариант «корень define = элемент с целевым id»), ветвление обработчика по isHTMX, обязательная деградация без JS, ошибка на htmx-пути = HTTP 200 + фрагмент, самозавершающийся поллинг живых обновлений, своп сохраняет контекст / выход = навигация, различение поверхности полем surface, вендоринг/кэш статики. Блок «Статус» разделяет уже сделанное (reviewBlockAction, поллинг progress/seeding) и проектируемое в change htmx-action-swap. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.7 KiB
1.7 KiB
Конвенции кода
Кросс-каттинг правила того, как мы пишем код (логирование, ошибки,
именование) — в отличие от docs/specs/ и openspec/specs/, которые
описывают, что система делает.
Конвенции не переносятся в OpenSpec: это не capability. Короткие
инварианты дублируются в CLAUDE.md (агент читает его
всегда) и кратко в openspec/config.yaml → context (подмешивается в
генерацию артефактов); детали — здесь. Обоснование «почему» — в docs/adr/.
Записи
- logging.md — логирование: уровни, поля, что не логируем.
- config.md — конфигурация: TOML, секреты через деплой (Ansible+Vault), валидация на старте.
- errors.md — ошибки: stdlib, обёртка
%w,errors.Is/As, трансляция на внешней границе. - database.md — БД и идентификаторы: TEXT ULID PK через
internal/ident(без AUTOINCREMENT), lowercase + нормализация на границах, естественные ключи у деталей. - web-ui.md — веб-UI на htmx: единый партиал = страница = фрагмент,
ветвление
isHTMX, деградация без JS, ошибка = 200 + фрагмент, самозавершающийся поллинг, вендоринг/кэш статики.